test: drop screenshot suite (preview), keep gate-bypass infra

Per tho: don't add the screenshot test suite to this PR — it's not a
common path elsewhere yet, and the dedicated config / CI step / 12 PNGs
go with it.

Removed:
- desktop/playwright-screenshot.config.ts
- desktop/tests/e2e/screenshot-feature-flags.ts
- 12 screenshot PNGs under desktop/tests/e2e/screenshots/
- the Desktop screenshot e2e step from .github/workflows/ci.yml

Kept (genuine test infra, not a 'test addition' in tho's sense):
- bridge.ts seedPreviewFeatures option — preview features default-on in
  E2E so existing smoke specs (workflows.spec.ts etc.) can still reach
  preview-gated entry points
- tests/helpers/features.ts — single SoT for the seeding's preview ID
  list, derived from preview-features.json
- src/shared/features/resolveEnabled.test.mjs — unit coverage for code
  this PR added

Updated stale doc comment in bridge.ts that referenced the removed spec
by name.

Signed-off-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co>
This commit is contained in:
npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w
2026-06-08 17:03:13 -07:00
parent e120d6dfaa
commit fc25329420
16 changed files with 1 additions and 198 deletions

View File

@@ -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:

View File

@@ -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",
},
});

View File

@@ -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",
});
});

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -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;