diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 19bad79509..597979f980 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -170,8 +170,6 @@ jobs: run: just desktop-build - name: Desktop smoke e2e run: cd desktop && pnpm exec playwright test --project=smoke - - name: Desktop screenshot e2e - run: cd desktop && pnpm exec playwright test --config=playwright-screenshot.config.ts - name: Desktop Tauri check run: just desktop-tauri-check env: diff --git a/desktop/playwright-screenshot.config.ts b/desktop/playwright-screenshot.config.ts deleted file mode 100644 index b1e7f2518f..0000000000 --- a/desktop/playwright-screenshot.config.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { defineConfig, devices } from "@playwright/test"; - -export default defineConfig({ - testDir: "./tests/e2e", - timeout: 30_000, - retries: 0, - workers: 1, - reporter: [["list"]], - use: { - baseURL: "http://127.0.0.1:4173", - screenshot: "off", - trace: "off", - }, - projects: [ - { - name: "screenshot", - testMatch: ["**/screenshot-*.ts"], - use: { ...devices["Desktop Chrome"] }, - }, - ], - webServer: { - command: "python3 -m http.server 4173 -d dist", - cwd: ".", - reuseExistingServer: true, - url: "http://127.0.0.1:4173", - }, -}); diff --git a/desktop/tests/e2e/screenshot-feature-flags.ts b/desktop/tests/e2e/screenshot-feature-flags.ts deleted file mode 100644 index 5e2ac7d26d..0000000000 --- a/desktop/tests/e2e/screenshot-feature-flags.ts +++ /dev/null @@ -1,167 +0,0 @@ -import { expect, test } from "@playwright/test"; -import { installMockBridge } from "../helpers/bridge"; -import { openSettings } from "../helpers/settings"; -import { PREVIEW_FEATURE_IDS } from "../helpers/features"; - -const WATERCOLOR_CHANNEL_ID = "a27e1ee9-76a6-5bdf-a5d5-1d85610dad11"; -const FORUM_POST_ID = "mock-forum-release-thread"; - -test.beforeEach(async ({ page }) => { - // This spec exercises the Experiments toggle flow itself (each preview - // feature is enabled via the settings UI), so don't pre-seed overrides. - await installMockBridge(page, undefined, { seedPreviewFeatures: false }); -}); - -// Helper: enable a preview feature via settings, then close settings -async function enableFeature( - page: import("@playwright/test").Page, - featureId: string, -) { - await openSettings(page); - await page.getByTestId("settings-nav-experimental").click(); - await expect(page.getByTestId("settings-experimental")).toBeVisible(); - await page.getByTestId(`feature-toggle-${featureId}`).click(); - await page.waitForTimeout(200); - await page.getByTestId("settings-back-to-app").click(); - await page.waitForTimeout(300); -} - -// --- Stable features (settings panels, always visible) --- - -test("screenshot: Settings → Agents (stable)", async ({ page }) => { - await page.goto("/"); - await openSettings(page, "agents"); - await page.waitForTimeout(500); - const view = page.getByTestId("settings-view"); - await view.screenshot({ path: "tests/e2e/screenshots/settings-agents.png" }); -}); - -test("screenshot: Settings → Templates (stable)", async ({ page }) => { - await page.goto("/"); - await openSettings(page, "channel-templates"); - await page.waitForTimeout(500); - const view = page.getByTestId("settings-view"); - await view.screenshot({ - path: "tests/e2e/screenshots/settings-templates.png", - }); -}); - -test("screenshot: Settings → Custom Emoji (stable)", async ({ page }) => { - await page.goto("/"); - await openSettings(page); - await page.getByTestId("settings-nav-custom-emoji").click(); - await page.waitForTimeout(500); - const view = page.getByTestId("settings-view"); - await view.screenshot({ - path: "tests/e2e/screenshots/settings-custom-emoji.png", - }); -}); - -test("screenshot: Settings → Doctor (stable)", async ({ page }) => { - await page.goto("/"); - await openSettings(page, "doctor"); - await page.waitForTimeout(500); - const view = page.getByTestId("settings-view"); - await view.screenshot({ path: "tests/e2e/screenshots/settings-doctor.png" }); -}); - -// --- Preview features (opt-in via Experiments) --- - -test("screenshot: Workflows view (preview)", async ({ page }) => { - await page.goto("/"); - await enableFeature(page, "workflows"); - await page.getByTestId("open-workflows-view").click(); - await page.waitForTimeout(500); - await page.screenshot({ - path: "tests/e2e/screenshots/view-workflows.png", - fullPage: false, - }); -}); - -test("screenshot: Projects view (preview)", async ({ page }) => { - await page.goto("/"); - await enableFeature(page, "projects"); - await page.getByTestId("open-projects-view").click(); - await page.waitForTimeout(500); - await page.screenshot({ - path: "tests/e2e/screenshots/view-projects.png", - fullPage: false, - }); -}); - -test("screenshot: Pulse view (preview)", async ({ page }) => { - await page.goto("/"); - await enableFeature(page, "pulse"); - await page.getByTestId("open-pulse-view").click(); - await page.waitForTimeout(500); - await page.screenshot({ - path: "tests/e2e/screenshots/view-pulse.png", - fullPage: false, - }); -}); - -test("screenshot: Forum post list (preview)", async ({ page }) => { - await page.goto("/"); - await enableFeature(page, "forum"); - await page.goto(`/#/channels/${WATERCOLOR_CHANNEL_ID}`); - await expect( - page.getByText("Release checklist: async feedback thread."), - ).toBeVisible(); - await page.waitForTimeout(500); - await page.screenshot({ - path: "tests/e2e/screenshots/view-forum-posts.png", - fullPage: false, - }); -}); - -test("screenshot: Forum with active thread (preview)", async ({ page }) => { - await page.goto("/"); - await enableFeature(page, "forum"); - await page.goto( - `/#/channels/${WATERCOLOR_CHANNEL_ID}/posts/${FORUM_POST_ID}`, - ); - await expect(page.getByTestId("chat-title")).toHaveText("watercooler"); - await page.waitForTimeout(600); - await page.screenshot({ - path: "tests/e2e/screenshots/view-forum-thread.png", - fullPage: false, - }); -}); - -test("screenshot: Settings → Compute (stable)", async ({ page }) => { - await page.goto("/"); - await openSettings(page); - await page.getByTestId("settings-nav-compute").click(); - await page.waitForTimeout(500); - const view = page.getByTestId("settings-view"); - await view.screenshot({ path: "tests/e2e/screenshots/settings-compute.png" }); -}); - -// --- Experiments panel --- - -test("screenshot: Settings → Experiments (default)", async ({ page }) => { - await page.goto("/"); - await openSettings(page); - await page.getByTestId("settings-nav-experimental").click(); - await expect(page.getByTestId("settings-experimental")).toBeVisible(); - await page.waitForTimeout(500); - const view = page.getByTestId("settings-view"); - await view.screenshot({ - path: "tests/e2e/screenshots/settings-experiments-default.png", - }); -}); - -test("screenshot: Settings → Experiments (all on)", async ({ page }) => { - await page.goto("/"); - await openSettings(page); - await page.getByTestId("settings-nav-experimental").click(); - await expect(page.getByTestId("settings-experimental")).toBeVisible(); - for (const id of PREVIEW_FEATURE_IDS) { - await page.getByTestId(`feature-toggle-${id}`).click(); - } - await page.waitForTimeout(500); - const view = page.getByTestId("settings-view"); - await view.screenshot({ - path: "tests/e2e/screenshots/settings-experiments-all-on.png", - }); -}); diff --git a/desktop/tests/e2e/screenshots/settings-agents.png b/desktop/tests/e2e/screenshots/settings-agents.png deleted file mode 100644 index e4bb33925f..0000000000 Binary files a/desktop/tests/e2e/screenshots/settings-agents.png and /dev/null differ diff --git a/desktop/tests/e2e/screenshots/settings-compute.png b/desktop/tests/e2e/screenshots/settings-compute.png deleted file mode 100644 index 55621cc48c..0000000000 Binary files a/desktop/tests/e2e/screenshots/settings-compute.png and /dev/null differ diff --git a/desktop/tests/e2e/screenshots/settings-custom-emoji.png b/desktop/tests/e2e/screenshots/settings-custom-emoji.png deleted file mode 100644 index d53fc00993..0000000000 Binary files a/desktop/tests/e2e/screenshots/settings-custom-emoji.png and /dev/null differ diff --git a/desktop/tests/e2e/screenshots/settings-doctor.png b/desktop/tests/e2e/screenshots/settings-doctor.png deleted file mode 100644 index f625e051bf..0000000000 Binary files a/desktop/tests/e2e/screenshots/settings-doctor.png and /dev/null differ diff --git a/desktop/tests/e2e/screenshots/settings-experiments-all-on.png b/desktop/tests/e2e/screenshots/settings-experiments-all-on.png deleted file mode 100644 index 34c5f4a1b7..0000000000 Binary files a/desktop/tests/e2e/screenshots/settings-experiments-all-on.png and /dev/null differ diff --git a/desktop/tests/e2e/screenshots/settings-experiments-default.png b/desktop/tests/e2e/screenshots/settings-experiments-default.png deleted file mode 100644 index 682d6f4819..0000000000 Binary files a/desktop/tests/e2e/screenshots/settings-experiments-default.png and /dev/null differ diff --git a/desktop/tests/e2e/screenshots/settings-templates.png b/desktop/tests/e2e/screenshots/settings-templates.png deleted file mode 100644 index a0f765f687..0000000000 Binary files a/desktop/tests/e2e/screenshots/settings-templates.png and /dev/null differ diff --git a/desktop/tests/e2e/screenshots/view-forum-posts.png b/desktop/tests/e2e/screenshots/view-forum-posts.png deleted file mode 100644 index f91872db9d..0000000000 Binary files a/desktop/tests/e2e/screenshots/view-forum-posts.png and /dev/null differ diff --git a/desktop/tests/e2e/screenshots/view-forum-thread.png b/desktop/tests/e2e/screenshots/view-forum-thread.png deleted file mode 100644 index 5c3e822278..0000000000 Binary files a/desktop/tests/e2e/screenshots/view-forum-thread.png and /dev/null differ diff --git a/desktop/tests/e2e/screenshots/view-projects.png b/desktop/tests/e2e/screenshots/view-projects.png deleted file mode 100644 index f6287313a2..0000000000 Binary files a/desktop/tests/e2e/screenshots/view-projects.png and /dev/null differ diff --git a/desktop/tests/e2e/screenshots/view-pulse.png b/desktop/tests/e2e/screenshots/view-pulse.png deleted file mode 100644 index ddf7eb5dc7..0000000000 Binary files a/desktop/tests/e2e/screenshots/view-pulse.png and /dev/null differ diff --git a/desktop/tests/e2e/screenshots/view-workflows.png b/desktop/tests/e2e/screenshots/view-workflows.png deleted file mode 100644 index 8a67d64924..0000000000 Binary files a/desktop/tests/e2e/screenshots/view-workflows.png and /dev/null differ diff --git a/desktop/tests/helpers/bridge.ts b/desktop/tests/helpers/bridge.ts index 8f14cc5193..d8e5a2c0f3 100644 --- a/desktop/tests/helpers/bridge.ts +++ b/desktop/tests/helpers/bridge.ts @@ -102,8 +102,7 @@ type BridgeOptions = { * When true (default), seed every preview feature in preview-features.json as * enabled in localStorage so E2E tests can interact with gated UI without * clicking through the Experiments settings panel. Set to false in specs - * that test the toggle behavior itself (e.g. - * `screenshot-feature-flags.ts`). + * that exercise the Experiments toggle UI itself. */ seedPreviewFeatures?: boolean; user?: keyof typeof TEST_IDENTITIES;