From fbbd53d204b8b3257ff4b10cfec6962287906d87 Mon Sep 17 00:00:00 2001 From: lucaronin Date: Sun, 12 Apr 2026 20:10:01 +0200 Subject: [PATCH] test: restore smoke flows after Claude onboarding --- playwright.config.ts | 18 ++++++++++++++++-- playwright.smoke.config.ts | 12 ++++++++++++ tests/helpers/fixtureVault.ts | 6 ++++-- tests/smoke/getting-started-template.spec.ts | 3 +++ 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/playwright.config.ts b/playwright.config.ts index 1723ba5e..030db5c4 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -1,18 +1,32 @@ import { defineConfig } from '@playwright/test' +const baseURL = process.env.BASE_URL || 'http://localhost:5201' +const claudeCodeOnboardingStorageState = { + cookies: [], + origins: [ + { + origin: baseURL, + localStorage: [ + { name: 'tolaria:claude-code-onboarding-dismissed', value: '1' }, + ], + }, + ], +} + export default defineConfig({ testDir: './tests/smoke', timeout: 20_000, retries: 2, workers: 1, use: { - baseURL: process.env.BASE_URL || 'http://localhost:5201', + baseURL, headless: true, + storageState: claudeCodeOnboardingStorageState, }, projects: [{ name: 'chromium', use: { browserName: 'chromium' } }], webServer: { command: `pnpm dev --port ${process.env.BASE_URL?.match(/:(\d+)/)?.[1] || '5201'}`, - url: process.env.BASE_URL || 'http://localhost:5201', + url: baseURL, reuseExistingServer: true, }, }) diff --git a/playwright.smoke.config.ts b/playwright.smoke.config.ts index e74fb64c..369d394e 100644 --- a/playwright.smoke.config.ts +++ b/playwright.smoke.config.ts @@ -3,6 +3,17 @@ import { defineConfig } from '@playwright/test' const baseURL = process.env.BASE_URL || 'http://127.0.0.1:41741' const port = new URL(baseURL).port || '41741' const reuseExistingServer = process.env.PLAYWRIGHT_REUSE_SERVER === '1' +const claudeCodeOnboardingStorageState = { + cookies: [], + origins: [ + { + origin: baseURL, + localStorage: [ + { name: 'tolaria:claude-code-onboarding-dismissed', value: '1' }, + ], + }, + ], +} export default defineConfig({ testDir: './tests', @@ -13,6 +24,7 @@ export default defineConfig({ use: { baseURL, headless: true, + storageState: claudeCodeOnboardingStorageState, }, projects: [{ name: 'chromium', use: { browserName: 'chromium' } }], webServer: { diff --git a/tests/helpers/fixtureVault.ts b/tests/helpers/fixtureVault.ts index c3a2fd74..7cd851d0 100644 --- a/tests/helpers/fixtureVault.ts +++ b/tests/helpers/fixtureVault.ts @@ -7,6 +7,7 @@ const FIXTURE_VAULT = path.resolve('tests/fixtures/test-vault') const FIXTURE_VAULT_READY_TIMEOUT = 30_000 const FIXTURE_VAULT_REMOVE_RETRIES = 10 const FIXTURE_VAULT_REMOVE_RETRY_DELAY_MS = 100 +const CLAUDE_CODE_ONBOARDING_DISMISSED_KEY = 'tolaria:claude-code-onboarding-dismissed' function copyDirSync(src: string, dest: string): void { fs.mkdirSync(dest, { recursive: true }) @@ -41,8 +42,9 @@ export async function openFixtureVault( page: Page, vaultPath: string, ): Promise { - await page.addInitScript((resolvedVaultPath: string) => { + await page.addInitScript(({ dismissedKey, resolvedVaultPath }: { dismissedKey: string; resolvedVaultPath: string }) => { localStorage.clear() + localStorage.setItem(dismissedKey, '1') const nativeFetch = window.fetch.bind(window) window.fetch = (input: RequestInfo | URL, init?: RequestInit) => { @@ -93,7 +95,7 @@ export async function openFixtureVault( return applyFixtureVaultOverrides(ref) ?? ref }, }) - }, vaultPath) + }, { dismissedKey: CLAUDE_CODE_ONBOARDING_DISMISSED_KEY, resolvedVaultPath: vaultPath }) await page.goto('/', { waitUntil: 'domcontentloaded' }) await page.waitForFunction(() => Boolean(window.__mockHandlers)) diff --git a/tests/smoke/getting-started-template.spec.ts b/tests/smoke/getting-started-template.spec.ts index a00f53d5..73513517 100644 --- a/tests/smoke/getting-started-template.spec.ts +++ b/tests/smoke/getting-started-template.spec.ts @@ -51,5 +51,8 @@ test('Getting Started template shows inline retry on clone failure and opens aft await page.getByTestId('welcome-retry-template').click() await expect(page.getByTestId('welcome-screen')).not.toBeVisible() + await expect(page.getByTestId('claude-onboarding-screen')).toBeVisible() + await expect(page.getByText('Claude Code not detected')).toBeVisible() + await page.getByTestId('claude-onboarding-continue').click() await expect(page.locator('[data-testid="note-list-container"]')).toBeVisible() })