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

test('R14.23.1 mobile PDF keeps a valid canvas visible when text features degrade', async ({
  page,
}) => {
  const workspaceName = `mobile-pdf-r14-23-1-${Date.now()}`;
  await createBrowserWorkspace(page, { workspaceName });

  const editorPane = page.getByTestId('interactive-editor-pane');
  const outputPane = page.getByTestId('interactive-output-pane');
  await expect(editorPane).toBeVisible();
  await expect(outputPane).toBeHidden();

  await page.getByRole('button', { name: 'Compile', exact: true }).click();
  await expect(outputPane).toBeVisible();
  await expect(editorPane).toBeHidden();

  const preview = page.getByTestId('interactive-pdf-preview');
  const firstPage = preview.getByTestId('pdf-page-surface');
  await expect(preview.locator('canvas').first()).toBeVisible({ timeout: 180_000 });
  await expect(firstPage).toHaveAttribute('data-pdf-canvas-status', 'ready');
  await expect(firstPage).toHaveAttribute(
    'data-pdf-text-layer-status',
    /^(native|fallback|unavailable)$/,
  );
  await expect(preview.getByText('Learnitive could not render this PDF page.')).toHaveCount(0);

  // R14.24.1 mobile certification: compile → PDF → Log → editor.
  await preview.getByTestId('interactive-output-tabs').getByRole('button', { name: /Log/ }).click();
  await expect(preview.getByTestId('interactive-compile-log')).toBeVisible();
  await preview.getByRole('button', { name: 'Close PDF and return to editor' }).click();
  await expect(editorPane).toBeVisible();
  await expect(outputPane).toBeHidden();
});
