import { expect, test } from '@playwright/test';
import { createBrowserWorkspace } from './common';

test('R14.23.5 keeps New File primary and moves project operations into the adjacent menu', async ({
  page,
}) => {
  await page.setViewportSize({ width: 1280, height: 800 });
  const workspaceName = `project-home-r14-23-5-${Date.now()}`;
  await createBrowserWorkspace(page, { workspaceName });
  await page.getByRole('link', { name: 'Home', exact: true }).click();

  const home = page.getByTestId('page-ws-home');
  await expect(home).toBeVisible();
  await expect(home.getByRole('button', { name: 'New File', exact: true })).toBeVisible();
  await expect(home.getByRole('button', { name: 'Project menu', exact: true })).toBeVisible();

  // Storage health is no longer permanent project-home telemetry.
  await expect(home.getByTestId('browser-storage-health')).toHaveCount(0);
  await expect(home.getByText('Browser storage is persistent', { exact: true })).toHaveCount(0);

  await home.getByRole('button', { name: 'Project menu', exact: true }).click();
  await expect(page.getByRole('menuitem', { name: 'Import project…' })).toBeVisible();
  await expect(page.getByRole('menuitem', { name: 'Download project' })).toBeVisible();
  await expect(page.getByRole('menuitem', { name: 'Storage…' })).toBeVisible();
  await expect(page.getByRole('menuitem', { name: 'Project settings…' })).toBeVisible();

  await page.getByRole('menuitem', { name: 'Storage…' }).click();
  const storageDialog = page.getByRole('dialog', { name: 'Project storage' });
  await expect(storageDialog).toBeVisible();
  await expect(storageDialog).toContainText('Browser persistence');
  await expect(storageDialog).toContainText('Last project ZIP backup');
  await storageDialog.getByRole('button', { name: 'Close' }).click();

  await home.getByRole('button', { name: 'Project menu', exact: true }).click();
  await page.getByRole('menuitem', { name: 'Project settings…' }).click();
  await expect(
    page.getByRole('heading', { name: 'Workspaces' }).first(),
  ).toBeVisible();
});

test('R14.23.5 project ZIP actions use concise success feedback', async ({ page }) => {
  await page.setViewportSize({ width: 1280, height: 800 });
  const workspaceName = `project-download-r14-23-5-${Date.now()}`;
  await createBrowserWorkspace(page, { workspaceName });
  await page.getByRole('link', { name: 'Home', exact: true }).click();

  const downloadPromise = page.waitForEvent('download');
  await page.getByRole('button', { name: 'Project menu', exact: true }).click();
  await page.getByRole('menuitem', { name: 'Download project' }).click();
  const download = await downloadPromise;
  expect(download.suggestedFilename()).toBe(`${workspaceName}.zip`);
  await expect(page.getByText('Project ZIP downloaded', { exact: true })).toBeVisible();
});
