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

test('R14.26.1 exposes browser-local Meaning search without silently downloading EmbeddingGemma', async ({ page }) => {
  const workspaceName = `meaning-r14-26-1-${Date.now()}`;
  const externalModelRequests: string[] = [];
  page.on('request', (request) => {
    if (/huggingface\.co|cdn\.jsdelivr\.net|onnx-community/u.test(request.url())) {
      externalModelRequests.push(request.url());
    }
  });

  await createBrowserWorkspace(page, { workspaceName });
  await page.getByRole('button', { name: /Project Tools|Tools/ }).click();
  const tools = page.getByTestId('interactive-project-tools-dialog');
  await expect(tools).toBeVisible();
  await tools.getByRole('button', { name: 'Meaning', exact: true }).click();

  const meaning = tools.getByTestId('interactive-project-meaning-search');
  await expect(meaning).toBeVisible();
  await expect(meaning).toContainText('EmbeddingGemma');
  await expect(meaning).toContainText('Project text and vectors stay in this browser');
  await expect(meaning.getByRole('button', { name: 'Download EmbeddingGemma' })).toBeVisible();
  await expect(meaning.getByLabel('Where do I discuss robustness?')).toBeVisible();

  // Inspecting status and opening Meaning may create a local worker/IndexedDB,
  // but it must not fetch Transformers.js or model weights until Download is clicked.
  await page.waitForTimeout(300);
  expect(externalModelRequests).toEqual([]);
});
