Skip to content

[harness eval #34765] Vitest: Reset playwright cursor position to avoid hover bug#26

Open
valentinpalkovic wants to merge 4 commits into
nextfrom
try-pr-34765
Open

[harness eval #34765] Vitest: Reset playwright cursor position to avoid hover bug#26
valentinpalkovic wants to merge 4 commits into
nextfrom
try-pr-34765

Conversation

@valentinpalkovic
Copy link
Copy Markdown
Owner

Synthetic fork PR for agentic harness eval against storybookjs#34765.

@valentinpalkovic valentinpalkovic added the ci:verify Trigger PR Verification Harness label May 14, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 14, 2026

Fails
🚫

PR is not labeled with one of: ["cleanup","BREAKING CHANGE","feature request","bug","documentation","maintenance","build","dependencies"]

🚫

PR is not labeled with one of: ["ci:normal","ci:merged","ci:daily","ci:docs"]

🚫 PR title must be in the format of "Area: Summary", With both Area and Summary starting with a capital letter Good examples: - "Docs: Describe Canvas Doc Block" - "Svelte: Support Svelte v4" Bad examples: - "add new api docs" - "fix: Svelte 4 support" - "Vue: improve docs"

Generated by 🚫 dangerJS against 0d45949

github-actions Bot pushed a commit that referenced this pull request May 14, 2026
@github-actions
Copy link
Copy Markdown

Verify Harness

Verdict: regression (target internal-ui)

Reason: PR-added unit tests failed (see unitTests.details)

Evidence (vision-check, claude-haiku-4-5-20251001): missing

Vision reasoning

Recipe produced no screenshots — cannot verify visible evidence.

PR-added unit tests: ❌ failed — vitest exited 1 without writing a JSON report (likely setup error); see Action log

Files: code/addons/vitest/src/vitest-plugin/setup-file.test.ts

vitest output (last 4KB)
 /tmp/claude/eval-sync-baselines-nested-no-legacy-wNNJNd/remotes/excalidraw.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-storybook-version-CIPwLS/remotes/mealdrop.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-storybook-version-CIPwLS/remotes/wikitok.git
 * [new branch]      main -> main
Cloning into '/tmp/claude/eval-sync-staging-ow5vaV'...
warning: You appear to have cloned an empty repository.
done.
To /tmp/claude/eval-sync-baselines-auto-clone-I9S0y9/remotes/mealdrop.git
 * [new branch]      main -> main
Cloning into '/tmp/claude/eval-sync-staging-zSJ6Mm'...
warning: You appear to have cloned an empty repository.
done.
To /tmp/claude/eval-sync-baselines-auto-clone-I9S0y9/remotes/wikitok.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-storybook-version-noop-h70zCV/remotes/mealdrop.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-storybook-version-dirty-MZgMvz/remotes/mealdrop.git
 * [new branch]      main -> main
Cloning into '/tmp/claude/eval-sync-storybook-version-staging-r2wJeH'...
warning: You appear to have cloned an empty repository.
done.
To /tmp/claude/eval-sync-storybook-version-auto-clone-Y4ksMJ/remotes/mealdrop.git
 * [new branch]      main -> main
(node:21) ExperimentalWarning: SQLite is an experimental feature and might change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
To /tmp/claude/eval-sync-baselines-target-behind-Zi6FLu/remotes/mealdrop.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-baselines-target-behind-Zi6FLu/remotes/edgy.git
 * [new branch]      main -> main
Cloning into '/tmp/claude/eval-sync-baselines-target-behind-Zi6FLu/edgy-remote-worktree'...
done.
To /tmp/claude/eval-sync-baselines-target-behind-Zi6FLu/remotes/edgy.git
   da085e4..23fcdfa  main -> main
To /tmp/claude/eval-sync-storybook-version-skip-push-aTOpbd/remotes/mealdrop.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-storybook-version-resume-push-ccpT2o/remotes/mealdrop.git
 * [new branch]      main -> main
(node:21) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
(node:21) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
(node:21) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)

������ Unhandled Error �������
Error: EROFS: read-only file system, open '/home/runner/work/_temp/unit-tests-report.json'
 � open node:internal/fs/promises:636:25
 � Object.writeFile node:internal/fs/promises:1205:14
 � JsonReporter.writeReport node_modules/vitest/dist/chunks/index.UpGiHP7g.js:3626:4
 � JsonReporter.onTestRunEnd node_modules/vitest/dist/chunks/index.UpGiHP7g.js:3613:3
 � Vitest.report node_modules/vitest/dist/chunks/cli-api.Cjt90eJu.js:13968:3
 � TestRun.end node_modules/vitest/dist/chunks/cli-api.Cjt90eJu.js:12591:3
 � node_modules/vitest/dist/chunks/cli-api.Cjt90eJu.js:13591:6
 � node_modules/vitest/dist/chunks/cli-api.Cjt90eJu.js:13601:11
 � node_modules/vitest/dist/chunks/cli-api.Cjt90eJu.js:13463:19

������������������������������
Serialized Error: { errno: -30, code: 'EROFS', syscall: 'open', path: '/home/runner/work/_temp/unit-tests-report.json' }




Replay: npx playwright show-trace on the trace.zip listed under "Artifacts" on the run summary page.

Screenshots

2026-05-14T13-47-37.119Z/pr-26-internal-ui-smoke-af-b85c1-up-file-cursor-reset-change-chromium/preview.png

2026-05-14T13-47-37.119Z/pr-26-internal-ui-smoke-af-b85c1-up-file-cursor-reset-change-chromium/preview.png

2026-05-14T13-47-37.119Z/pr-26-internal-ui-smoke-af-b85c1-up-file-cursor-reset-change-chromium/test-finished-1.png

2026-05-14T13-47-37.119Z/pr-26-internal-ui-smoke-af-b85c1-up-file-cursor-reset-change-chromium/test-finished-1.png

@valentinpalkovic valentinpalkovic force-pushed the next branch 3 times, most recently from fe2f521 to e537022 Compare May 14, 2026 14:09
@valentinpalkovic valentinpalkovic added ci:verify Trigger PR Verification Harness and removed ci:verify Trigger PR Verification Harness labels May 14, 2026
github-actions Bot pushed a commit that referenced this pull request May 14, 2026
@github-actions
Copy link
Copy Markdown

Verify Harness

Verdict: regression (target internal-ui)

Reason: PR-added unit tests failed (see unitTests.details)

Evidence (vision-check, claude-haiku-4-5-20251001): undetermined

Vision reasoning

The diff's core changes are non-visual: they modify Vitest plugin setup hooks (resetMousePositionBeforeTests, resetMousePosition command), CI workflow paths, and screenshot directory resolution logic. The Playwright recipe explicitly documents that these are 'node-side Vitest plugin code paths' with 'no UI surface in Storybook itself.' The screenshots show Storybook loading correctly with the Button story and sidebar visible, which is consistent with the smoke-test intent, but the diff's functional changes (mouse position reset, Vitest caching, directory path simplification) have no observable

PR-added unit tests: ❌ failed — vitest exited 1 without writing a JSON report (likely setup error); see Action log

Files: code/addons/vitest/src/vitest-plugin/setup-file.test.ts

vitest output (last 4KB)
 /tmp/claude/eval-sync-baselines-nested-no-legacy-3Nqtbb/remotes/excalidraw.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-storybook-version-qCxMiN/remotes/mealdrop.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-storybook-version-qCxMiN/remotes/wikitok.git
 * [new branch]      main -> main
Cloning into '/tmp/claude/eval-sync-staging-qRSMlK'...
warning: You appear to have cloned an empty repository.
done.
To /tmp/claude/eval-sync-baselines-auto-clone-TH1iIw/remotes/mealdrop.git
 * [new branch]      main -> main
Cloning into '/tmp/claude/eval-sync-staging-W32rF2'...
warning: You appear to have cloned an empty repository.
done.
To /tmp/claude/eval-sync-baselines-auto-clone-TH1iIw/remotes/wikitok.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-storybook-version-noop-PVyhnf/remotes/mealdrop.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-storybook-version-dirty-5I04t7/remotes/mealdrop.git
 * [new branch]      main -> main
Cloning into '/tmp/claude/eval-sync-storybook-version-staging-ZH8T6X'...
warning: You appear to have cloned an empty repository.
done.
To /tmp/claude/eval-sync-storybook-version-auto-clone-mjJr4l/remotes/mealdrop.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-baselines-target-behind-9Oj1lz/remotes/mealdrop.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-baselines-target-behind-9Oj1lz/remotes/edgy.git
 * [new branch]      main -> main
Cloning into '/tmp/claude/eval-sync-baselines-target-behind-9Oj1lz/edgy-remote-worktree'...
done.
To /tmp/claude/eval-sync-baselines-target-behind-9Oj1lz/remotes/edgy.git
   97e6cfd..23a055b  main -> main
(node:21) ExperimentalWarning: SQLite is an experimental feature and might change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
To /tmp/claude/eval-sync-storybook-version-skip-push-0lXXZn/remotes/mealdrop.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-storybook-version-resume-push-rFAtT6/remotes/mealdrop.git
 * [new branch]      main -> main
(node:21) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
(node:21) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
(node:21) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)

������ Unhandled Error �������
Error: EROFS: read-only file system, open '/home/runner/work/_temp/unit-tests-report.json'
 � open node:internal/fs/promises:636:25
 � Object.writeFile node:internal/fs/promises:1205:14
 � JsonReporter.writeReport node_modules/vitest/dist/chunks/index.UpGiHP7g.js:3626:4
 � JsonReporter.onTestRunEnd node_modules/vitest/dist/chunks/index.UpGiHP7g.js:3613:3
 � Vitest.report node_modules/vitest/dist/chunks/cli-api.Cjt90eJu.js:13968:3
 � TestRun.end node_modules/vitest/dist/chunks/cli-api.Cjt90eJu.js:12591:3
 � node_modules/vitest/dist/chunks/cli-api.Cjt90eJu.js:13591:6
 � node_modules/vitest/dist/chunks/cli-api.Cjt90eJu.js:13601:11
 � node_modules/vitest/dist/chunks/cli-api.Cjt90eJu.js:13463:19

������������������������������
Serialized Error: { errno: -30, code: 'EROFS', syscall: 'open', path: '/home/runner/work/_temp/unit-tests-report.json' }




Replay: npx playwright show-trace on the trace.zip listed under "Artifacts" on the run summary page.

Screenshots

2026-05-14T14-24-21.434Z/pr-26-storybook-loads-with-vitest-addon-panel-reachable-chromium/preview.png

2026-05-14T14-24-21.434Z/pr-26-storybook-loads-with-vitest-addon-panel-reachable-chromium/preview.png

2026-05-14T14-24-21.434Z/pr-26-storybook-loads-with-vitest-addon-panel-reachable-chromium/sidebar.png

2026-05-14T14-24-21.434Z/pr-26-storybook-loads-with-vitest-addon-panel-reachable-chromium/sidebar.png

2026-05-14T14-24-21.434Z/pr-26-storybook-loads-with-vitest-addon-panel-reachable-chromium/test-finished-1.png

2026-05-14T14-24-21.434Z/pr-26-storybook-loads-with-vitest-addon-panel-reachable-chromium/test-finished-1.png

@valentinpalkovic valentinpalkovic added ci:verify Trigger PR Verification Harness and removed ci:verify Trigger PR Verification Harness labels May 14, 2026
github-actions Bot pushed a commit that referenced this pull request May 14, 2026
@github-actions github-actions Bot added the verified-by-harness Verified by PR Verify Harness label May 14, 2026
@github-actions
Copy link
Copy Markdown

Verify Harness

Verdict: verified (target internal-ui)

Evidence (vision-check, claude-haiku-4-5-20251001): undetermined

Vision reasoning

The diff is primarily a Vitest runtime change (mouse cursor reset in browser mode, test infrastructure simplifications, and CI workflow changes). The Playwright recipe explicitly tests only that 'the vitest addon panel registers and example story boots cleanly' — a smoke test verifying no module-resolution errors or page crashes. The screenshots show the Storybook manager and a Button example story rendering correctly, which is consistent with the addon booting cleanly, but the actual behavioral change (mouse.move(-1000,-1000) executed before each Vitest browser-mode test) is non-observable in

PR-added unit tests: ✅ passed — 6716 passed, 0 failed across 2119 suite(s)

Files: code/addons/vitest/src/vitest-plugin/setup-file.test.ts

Replay: npx playwright show-trace on the trace.zip listed under "Artifacts" on the run summary page.

Screenshots

2026-05-14T14-39-12.167Z/pr-26-vitest-addon-panel-r-33aa6-example-story-boots-cleanly-chromium/manager.png

2026-05-14T14-39-12.167Z/pr-26-vitest-addon-panel-r-33aa6-example-story-boots-cleanly-chromium/manager.png

2026-05-14T14-39-12.167Z/pr-26-vitest-addon-panel-r-33aa6-example-story-boots-cleanly-chromium/test-finished-1.png

2026-05-14T14-39-12.167Z/pr-26-vitest-addon-panel-r-33aa6-example-story-boots-cleanly-chromium/test-finished-1.png

@valentinpalkovic valentinpalkovic added ci:verify Trigger PR Verification Harness and removed ci:verify Trigger PR Verification Harness labels May 15, 2026
@valentinpalkovic valentinpalkovic force-pushed the next branch 2 times, most recently from 80ccd7d to 745162d Compare May 15, 2026 16:58
@github-actions
Copy link
Copy Markdown

Verify Harness

Verdict: regression (target internal-ui)

Reason: PR-added unit tests failed (see unitTests.details)

Evidence (vision-check, claude-haiku-4-5-20251001): undetermined

Vision reasoning

The diff consists entirely of non-user-visible changes: vitest browser-mode setup code, CI workflow simplifications, documentation removals, and test infrastructure updates. The Playwright recipe explicitly documents that these changes are 'build-time/test-runner-only code paths' with 'NO runtime surface' observable in the preview. The screenshots show a working Storybook preview with an example button, confirming baseline boot health, but cannot reveal vitest setup-file or browser command registration state.

PR-added unit tests: ❌ failed — 6715 passed, 1 failed across 2119 suite(s)

Files: code/addons/vitest/src/vitest-plugin/setup-file.test.ts

vitest output (last 4KB)
  node_modules/storybook that shadows the real Storybook package,
�  causing "Cannot find module storybook/internal/..." errors.

�  Please rename the "name" field in your package.json to something
�  other than "storybook" (e.g. "my-storybook", "docs",
�  "@myorg/storybook").
��  This is a pre-release version: 10.4.0-alpha.17
�  Initializing Storybook
��  Package manager: npm
��  This is a pre-release version: 10.4.0-alpha.17
(node:21) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
To /tmp/claude/eval-sync-baselines-qRkQue/remotes/mealdrop.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-baselines-qRkQue/remotes/edgy.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-baselines-qRkQue/remotes/wikitok.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-baselines-dirty-PPYIqX/remotes/mealdrop.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-baselines-dirty-PPYIqX/remotes/edgy.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-baselines-nested-no-legacy-rTzCAU/remotes/mealdrop.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-baselines-nested-no-legacy-rTzCAU/remotes/excalidraw.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-storybook-version-yR8ArV/remotes/mealdrop.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-storybook-version-yR8ArV/remotes/wikitok.git
 * [new branch]      main -> main
Cloning into '/tmp/claude/eval-sync-staging-l5sXy9'...
warning: You appear to have cloned an empty repository.
done.
To /tmp/claude/eval-sync-baselines-auto-clone-A6hKDy/remotes/mealdrop.git
 * [new branch]      main -> main
Cloning into '/tmp/claude/eval-sync-staging-GJ5pkS'...
warning: You appear to have cloned an empty repository.
done.
To /tmp/claude/eval-sync-baselines-auto-clone-A6hKDy/remotes/wikitok.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-storybook-version-noop-oZvSB1/remotes/mealdrop.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-storybook-version-dirty-sFS1wO/remotes/mealdrop.git
 * [new branch]      main -> main
Cloning into '/tmp/claude/eval-sync-storybook-version-staging-Q7igvG'...
warning: You appear to have cloned an empty repository.
done.
To /tmp/claude/eval-sync-storybook-version-auto-clone-vY1DIr/remotes/mealdrop.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-baselines-target-behind-X45cbH/remotes/mealdrop.git
 * [new branch]      main -> main
To /tmp/claude/eval-sync-baselines-target-behind-X45cbH/remotes/edgy.git
 * [new branch]      main -> main
Cloning into '/tmp/claude/eval-sync-baselines-target-behind-X45cbH/edgy-remote-worktree'...
done.
To /tmp/claude/eval-sync-baselines-target-behind-X45cbH/remotes/edgy.git
   ae52d6f..2573e27  main -> main
To /tmp/claude/eval-sync-storybook-version-skip-push-dPgYGA/remotes/mealdrop.git
 * [new branch]      main -> main
(node:21) ExperimentalWarning: SQLite is an experimental feature and might change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
To /tmp/claude/eval-sync-storybook-version-resume-push-hS0J5N/remotes/mealdrop.git
 * [new branch]      main -> main
(node:21) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
(node:21) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
(node:21) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
JSON report written to /home/runner/work/_temp/pr-head/.verify-output/unit-tests-report.json

Replay: npx playwright show-trace on the trace.zip listed under "Artifacts" on the run summary page.

@valentinpalkovic valentinpalkovic force-pushed the next branch 3 times, most recently from a11176d to 9de9d5b Compare May 15, 2026 17:25
@valentinpalkovic valentinpalkovic added ci:verify Trigger PR Verification Harness and removed ci:verify Trigger PR Verification Harness labels May 15, 2026
@github-actions
Copy link
Copy Markdown

Verify Harness

No verdict produced — the workflow failed before the harness ran (likely recipe-author dispatch, deny-regex, or lint). See run log for details.

@valentinpalkovic valentinpalkovic added ci:verify Trigger PR Verification Harness and removed ci:verify Trigger PR Verification Harness labels May 15, 2026
github-actions Bot pushed a commit that referenced this pull request May 15, 2026
@github-actions
Copy link
Copy Markdown

Verify Harness

Verdict: verified (target internal-ui)

Evidence (vision-check, claude-haiku-4-5-20251001): undetermined

Vision reasoning

The diff is primarily composed of version downgrades, changelog removals, and internal refactoring (BUNProxy changes, vitest plugin updates, workflow/script modifications). While there are sidebar-related changes mentioned in the recipe comments (Tree.tsx status icon logic and ReviewChangesButton clear button icon swap), the actual user-visible UI changes in the diff are minimal and not clearly identifiable in the provided screenshots. The screenshots show a sidebar with story hierarchy but don't provide sufficient resolution or focus to confirm the specific icon changes or status logic modifications.

PR-added unit tests: ✅ passed — 6716 passed, 0 failed across 2119 suite(s)

Files: code/addons/vitest/src/vitest-plugin/agent-telemetry-reporter.test.ts, code/addons/vitest/src/vitest-plugin/setup-file.test.ts, code/core/src/common/js-package-manager/NPMProxy.test.ts, code/core/src/common/js-package-manager/PNPMProxy.test.ts, code/core/src/common/js-package-manager/Yarn1Proxy.test.ts, code/core/src/common/js-package-manager/Yarn2Proxy.test.ts, code/core/src/core-server/server-channel/ai-setup-channel.test.ts, code/core/src/core-server/server-channel/ghost-stories-channel.test.ts, code/core/src/core-server/utils/checklist.test.ts, code/core/src/core-server/utils/ghost-stories/parse-vitest-report.test.ts, code/core/src/core-server/withTelemetry.test.ts, code/core/src/shared/utils/ai-checklist-flags.test.ts, code/core/src/shared/utils/analyze-test-results.test.ts, code/lib/create-storybook/src/commands/DependencyInstallationCommand.test.ts, code/lib/create-storybook/src/commands/PreflightCheckCommand.test.ts, code/lib/create-storybook/src/commands/ProjectDetectionCommand.test.ts, code/lib/create-storybook/src/commands/UserPreferencesCommand.test.ts, code/lib/create-storybook/src/generators/REACT_NATIVE/index.test.ts, code/lib/create-storybook/src/initiate.test.ts, code/lib/create-storybook/src/services/FrameworkDetectionService.test.ts, code/lib/create-storybook/src/services/ProjectTypeService.test.ts, code/lib/create-storybook/src/services/TelemetryService.test.ts

How Playwright validated this
test('sidebar status icons + review-changes Clear button render correctly', async ({ page }, testInfo) => {
  const pageErrors: string[] = [];
  const consoleErrors: string[] = [];

  page.on('pageerror', (err) => {
    pageErrors.push(err.stack ?? err.message ?? String(err));
  });
  page.on('console', (msg) => {
    if (msg.type() === 'error') consoleErrors.push(msg.text());
  });

  const baseURL =
    process.env.STORYBOOK_URL ?? testInfo.project.use.baseURL ?? 'http://localhost:6006';

  try {
    await page.goto(`${baseURL}/?path=/story/example-button--primary`);

    const recipe = new RecipePage(page, expect);
    await recipe.waitUntilLoaded();

    await expect(page.locator('#sb-errordisplay')).toBeHidden();

    const exampleGroup = page.locator('[data-item-id="example"]');
    if (await exampleGroup.count()) {
      await exampleGroup.first().click().catch(() => {});
    }
    const primaryLeaf = page.locator('[data-item-id="example-button--primary"]');
    await expect(primaryLeaf).toBeVisible();

    await page.locator('.sidebar-container').screenshot({
      path: testInfo.outputPath('sidebar-baseline.png'),
    });

    const controlsTab = page.getByRole('tab', { name: /controls/i });
    if (await controlsTab.count()) {
      await controlsTab.first().click();

      const labelInput = page
        .locator('input[name="label"], textarea[name="label"]')
        .first();
      if (await labelInput.count()) {
        await labelInput.fill('Verify harness saved this');

        const saveButton = page.getByRole('button', {
          name: /save changes to story|update story/i,
        });
        if (await saveButton.count()) {
          await saveButton.first().click();

          const reviewToggle = page.getByRole('switch', { name: /review.+stories/i });
          await reviewToggle
            .waitFor({ state: 'visible', timeout: 15000 })
            .catch(() => {});

          if (await reviewToggle.count()) {
            await reviewToggle.fir

Replay: npx playwright show-trace on the trace.zip listed under "Artifacts" on the run summary page.

Screenshots

2026-05-15T18-46-29.689Z/pr-26-sidebar-review-chang-a0dd9-utton-renders-with-new-icon-chromium/sidebar.png

2026-05-15T18-46-29.689Z/pr-26-sidebar-review-chang-a0dd9-utton-renders-with-new-icon-chromium/sidebar.png

2026-05-15T18-46-29.689Z/pr-26-sidebar-review-chang-a0dd9-utton-renders-with-new-icon-chromium/test-finished-1.png

2026-05-15T18-46-29.689Z/pr-26-sidebar-review-chang-a0dd9-utton-renders-with-new-icon-chromium/test-finished-1.png

@valentinpalkovic valentinpalkovic force-pushed the next branch 2 times, most recently from ad75ba9 to 099b6f7 Compare May 15, 2026 19:48
@valentinpalkovic valentinpalkovic added ci:verify Trigger PR Verification Harness and removed verified-by-harness Verified by PR Verify Harness ci:verify Trigger PR Verification Harness labels May 15, 2026
github-actions Bot pushed a commit that referenced this pull request May 15, 2026
@github-actions github-actions Bot added the verified-by-harness Verified by PR Verify Harness label May 15, 2026
@github-actions
Copy link
Copy Markdown

Verify Harness

Verdict: verified (target internal-ui)

Evidence (vision-check, claude-haiku-4-5-20251001): undetermined

Vision reasoning

The diff is primarily composed of non-UI changes: CI/workflow configuration removals, version downgrades, test file deletions, and internal refactoring. The recipe's Playwright test targets a UI change (SweepIcon swap in ReviewChangesButton), but the diff shown does not contain any visible UI code changes to support this—the actual manager/sidebar code modifications are not included in the provided diff excerpt.

PR-added unit tests: ✅ passed — 6716 passed, 0 failed across 2119 suite(s)

Files: code/addons/vitest/src/vitest-plugin/agent-telemetry-reporter.test.ts, code/addons/vitest/src/vitest-plugin/setup-file.test.ts, code/core/src/common/js-package-manager/NPMProxy.test.ts, code/core/src/common/js-package-manager/PNPMProxy.test.ts, code/core/src/common/js-package-manager/Yarn1Proxy.test.ts, code/core/src/common/js-package-manager/Yarn2Proxy.test.ts, code/core/src/core-server/server-channel/ai-setup-channel.test.ts, code/core/src/core-server/server-channel/ghost-stories-channel.test.ts, code/core/src/core-server/utils/checklist.test.ts, code/core/src/core-server/utils/ghost-stories/parse-vitest-report.test.ts, code/core/src/core-server/withTelemetry.test.ts, code/core/src/shared/utils/ai-checklist-flags.test.ts, code/core/src/shared/utils/analyze-test-results.test.ts, code/lib/create-storybook/src/commands/DependencyInstallationCommand.test.ts, code/lib/create-storybook/src/commands/PreflightCheckCommand.test.ts, code/lib/create-storybook/src/commands/ProjectDetectionCommand.test.ts, code/lib/create-storybook/src/commands/UserPreferencesCommand.test.ts, code/lib/create-storybook/src/generators/REACT_NATIVE/index.test.ts, code/lib/create-storybook/src/initiate.test.ts, code/lib/create-storybook/src/services/FrameworkDetectionService.test.ts, code/lib/create-storybook/src/services/ProjectTypeService.test.ts, code/lib/create-storybook/src/services/TelemetryService.test.ts

How Playwright validated this
//
//

test('sidebar Tree renders without runtime errors after status-icon refactor', async ({
  page,
}, testInfo) => {
  const pageErrors: string[] = [];
  const consoleErrors: string[] = [];

  page.on('pageerror', (err) => {
    pageErrors.push(err.stack ?? err.message ?? String(err));
  });
  page.on('console', (msg) => {
    if (msg.type() === 'error') consoleErrors.push(msg.text());
  });

  const baseURL =
    process.env.STORYBOOK_URL ?? testInfo.project.use.baseURL ?? 'http://localhost:6006';

  try {
    await page.goto(`${baseURL}/?path=/story/example-button--primary`);

    const sb = new RecipePage(page, expect);
    await sb.waitUntilLoaded();

    const sidebar = page.locator('.sidebar-container');
    await expect(sidebar).toBeVisible();

    const exampleGroup = page.locator('[data-item-id="example"]');
    if (await exampleGroup.count()) {
      await exampleGroup.click();
    }

    const selectedLeaf = page.locator(
      '[data-item-id="example-button--primary"][data-selected="true"]',
    );
    await expect(selectedLeaf).toBeVisible();

    await expect(page.locator('#sb-errordisplay')).toBeHidden();
    const previewIframe = page.frameLocator('#storybook-preview-iframe');
    const previewRoot = previewIframe.locator('#storybook-root, #root');
    await expect(previewRoot).toBeVisible();

    await sidebar.screenshot({
      path: testInfo.outputPath('sidebar-tree.png'),
    });
  } finally {
    await testInfo.attach('pageErrors', {
      body: JSON.stringify(pageErrors),
      contentType: 'application/json',
    });
    await testInfo.attach('consoleErrors', {
      body: JSON.stringify(consoleErrors),
      contentType: 'application/json',
    });
  }

  expect(filterPageErrors(pageErrors)).toEqual([]);
});

Replay: npx playwright show-trace on the trace.zip listed under "Artifacts" on the run summary page.

Screenshots

2026-05-15T20-56-01.360Z/pr-26-ReviewChangesButton--6694e-n-after-MOD-triggering-Save-chromium/sidebar-clear-sweep-icon.png

2026-05-15T20-56-01.360Z/pr-26-ReviewChangesButton--6694e-n-after-MOD-triggering-Save-chromium/sidebar-clear-sweep-icon.png

2026-05-15T20-56-01.360Z/pr-26-ReviewChangesButton--6694e-n-after-MOD-triggering-Save-chromium/test-finished-1.png

2026-05-15T20-56-01.360Z/pr-26-ReviewChangesButton--6694e-n-after-MOD-triggering-Save-chromium/test-finished-1.png

github-actions Bot pushed a commit that referenced this pull request May 18, 2026
@github-actions
Copy link
Copy Markdown

Verify Harness

Verdict: regression (target internal-ui)

Reason: PR-added unit tests failed (see unitTests.details)

PR-added unit tests: ❌ failed — vitest exited 1 without writing a JSON report (likely setup error); see Action log

Files: code/addons/vitest/src/vitest-plugin/setup-file.test.ts

vitest output (last 4KB)
Internal Error: ENOENT: no such file or directory, lstat '/tmp/claude'
    at Object.realpathSync (node:fs:2791:29)
    at Yn.realpathSync (/home/runner/work/_temp/pr-head/.yarn/releases/yarn-4.10.3.cjs:9:8625)
    at B$ (/home/runner/work/_temp/pr-head/.yarn/releases/yarn-4.10.3.cjs:9:44774)
    at Yn.mktempPromise (/home/runner/work/_temp/pr-head/.yarn/releases/yarn-4.10.3.cjs:9:45331)
    at Object.she (/home/runner/work/_temp/pr-head/.yarn/releases/yarn-4.10.3.cjs:189:2341)
    at NC.execute (/home/runner/work/_temp/pr-head/.yarn/releases/yarn-4.10.3.cjs:524:1048)
    at async NC.validateAndExecute (/home/runner/work/_temp/pr-head/.yarn/releases/yarn-4.10.3.cjs:94:787)
    at async t.run (/home/runner/work/_temp/pr-head/.yarn/releases/yarn-4.10.3.cjs:98:3263)
    at async gC.execute (/home/runner/work/_temp/pr-head/.yarn/releases/yarn-4.10.3.cjs:435:497)
    at async gC.validateAndExecute (/home/runner/work/_temp/pr-head/.yarn/releases/yarn-4.10.3.cjs:94:787)

How Playwright validated this
test('vitest addon setup-file changes do not break internal-ui boot', async ({ page }, testInfo) => {
  const pageErrors: string[] = [];
  const consoleErrors: string[] = [];

  page.on('pageerror', (err) => {
    pageErrors.push(err.stack ?? err.message ?? String(err));
  });
  page.on('console', (msg) => {
    if (msg.type() === 'error') {
      consoleErrors.push(msg.text());
    }
  });

  const baseURL =
    process.env.STORYBOOK_URL ?? testInfo.project.use.baseURL ?? 'http://localhost:6006';

  try {
    await page.goto(`${baseURL}/?path=/story/example-button--primary`);

    const sb = new RecipePage(page, expect);
    await sb.waitUntilLoaded();

    const errorDisplay = page.locator('#sb-errordisplay');
    await expect(errorDisplay).toBeHidden();

    const previewIframe = page.frameLocator('#storybook-preview-iframe');
    const previewRoot = previewIframe.locator('#storybook-root, #root');
    await expect(previewRoot).toBeVisible();
    const childCount = await previewRoot.evaluate((el) => el.childElementCount);
    expect(childCount).toBeGreaterThan(0);
  } finally {
    await testInfo.attach('pageErrors', {
      body: JSON.stringify(pageErrors),
      contentType: 'application/json',
    });
    await testInfo.attach('consoleErrors', {
      body: JSON.stringify(consoleErrors),
      contentType: 'application/json',
    });
  }

  expect(filterPageErrors(pageErrors)).toEqual([]);
});

Replay: npx playwright show-trace on the trace.zip listed under "Artifacts" on the run summary page.

Screenshots

2026-05-18T06-27-19.156Z/pr-26-vitest-addon-setup-f-0b854--not-break-internal-ui-boot-chromium/test-finished-1.png

2026-05-18T06-27-19.156Z/pr-26-vitest-addon-setup-f-0b854--not-break-internal-ui-boot-chromium/test-finished-1.png

@valentinpalkovic valentinpalkovic added ci:verify Trigger PR Verification Harness and removed verified-by-harness Verified by PR Verify Harness ci:verify Trigger PR Verification Harness labels May 18, 2026
github-actions Bot pushed a commit that referenced this pull request May 18, 2026
@github-actions
Copy link
Copy Markdown

Verify Harness

Verdict: regression (target internal-ui)

Reason: Playwright assertion failed in: ? — Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 4 - Array [] + Array [ + "Failed to load resource: net::ERR_INTERNET_DISCONNECTED", + "Failed to load resource: net::ERR_INTERNET_DISCONNECTED", + ] 79 | 80 | expect(filterPageErrors(pageErrors)).toEqual([]); > 81 | expect(consoleErrors).toEqual([]); | ^ 82 | });

PR-added unit tests: ✅ passed — 6764 passed, 0 failed across 2129 suite(s)

Files: code/addons/vitest/src/vitest-plugin/setup-file.test.ts

How Playwright validated this
test('addon-vitest setup-file changes do not break internal-ui boot', async ({ page }, testInfo) => {
  const pageErrors: string[] = [];
  const consoleErrors: string[] = [];

  page.on('pageerror', (err) => {
    pageErrors.push(err.stack ?? err.message ?? String(err));
  });
  page.on('console', (msg) => {
    if (msg.type() === 'error') {
      consoleErrors.push(msg.text());
    }
  });

  const baseURL =
    process.env.STORYBOOK_URL ?? testInfo.project.use.baseURL ?? 'http://localhost:6006';

  try {
    await page.goto(`${baseURL}/?path=/story/core-args--basic`);

    const sb = new RecipePage(page, expect);
    await sb.waitUntilLoaded();

    const errorDisplay = page.locator('#sb-errordisplay');
    await expect(errorDisplay).toBeHidden();

    const previewRoot = sb.previewRoot();
    await expect(previewRoot).toBeVisible();
    const childCount = await previewRoot.evaluate((el) => el.childElementCount);
    expect(childCount).toBeGreaterThan(0);

    await page.goto(`${baseURL}/?path=/story/core-decorators--basic`);
    await sb.waitUntilLoaded();
    await expect(errorDisplay).toBeHidden();
    await expect(sb.previewRoot()).toBeVisible();

    await sb.previewIframe().locator('body').screenshot({
      path: testInfo.outputPath('preview.png'),
    });
  } finally {
    await testInfo.attach('pageErrors', {
      body: JSON.stringify(pageErrors),
      contentType: 'application/json',
    });
    await testInfo.attach('consoleErrors', {
      body: JSON.stringify(consoleErrors),
      contentType: 'application/json',
    });
  }

  expect(filterPageErrors(pageErrors)).toEqual([]);
});

Replay: npx playwright show-trace on the trace.zip listed under "Artifacts" on the run summary page.

Screenshots

2026-05-18T06-40-30.692Z/pr-26-addon-vitest-setup-f-a3512--not-break-internal-ui-boot-chromium/test-failed-1.png

2026-05-18T06-40-30.692Z/pr-26-addon-vitest-setup-f-a3512--not-break-internal-ui-boot-chromium/test-failed-1.png

github-actions Bot pushed a commit that referenced this pull request May 19, 2026
@github-actions
Copy link
Copy Markdown

Verify Harness

Verdict: regression (target internal-ui)

Reason: PR-added unit tests failed (see unitTests.details)

PR-added unit tests: ❌ failed — 6944 passed, 1 failed across 2179 suite(s)

Files: code/addons/vitest/src/vitest-plugin/setup-file.test.ts

vitest output (last 4KB)
      main -> main
To /home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-baselines-dirty-GDlo3z/remotes/mealdrop.git
 * [new branch]      main -> main
To /home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-baselines-dirty-GDlo3z/remotes/edgy.git
 * [new branch]      main -> main
To /home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-baselines-nested-no-legacy-MqzAZa/remotes/mealdrop.git
 * [new branch]      main -> main
To /home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-baselines-nested-no-legacy-MqzAZa/remotes/excalidraw.git
 * [new branch]      main -> main
To /home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-storybook-version-CJs5Ct/remotes/mealdrop.git
 * [new branch]      main -> main
To /home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-storybook-version-CJs5Ct/remotes/wikitok.git
 * [new branch]      main -> main
Cloning into '/home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-staging-k9NWWx'...
warning: You appear to have cloned an empty repository.
done.
To /home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-baselines-auto-clone-fn4Q8o/remotes/mealdrop.git
 * [new branch]      main -> main
Cloning into '/home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-staging-yx22pw'...
warning: You appear to have cloned an empty repository.
done.
To /home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-baselines-auto-clone-fn4Q8o/remotes/wikitok.git
 * [new branch]      main -> main
To /home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-storybook-version-noop-p5bLxE/remotes/mealdrop.git
 * [new branch]      main -> main
To /home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-storybook-version-dirty-SOLuV4/remotes/mealdrop.git
 * [new branch]      main -> main
Cloning into '/home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-storybook-version-staging-YExvA3'...
warning: You appear to have cloned an empty repository.
done.
To /home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-storybook-version-auto-clone-zpmRJ9/remotes/mealdrop.git
 * [new branch]      main -> main
To /home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-baselines-target-behind-dJUb4A/remotes/mealdrop.git
 * [new branch]      main -> main
To /home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-baselines-target-behind-dJUb4A/remotes/edgy.git
 * [new branch]      main -> main
Cloning into '/home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-baselines-target-behind-dJUb4A/edgy-remote-worktree'...
done.
To /home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-baselines-target-behind-dJUb4A/remotes/edgy.git
   7cd90aa..1fadc70  main -> main
To /home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-storybook-version-skip-push-jnicVX/remotes/mealdrop.git
 * [new branch]      main -> main
To /home/runner/work/_temp/pr-head/.verify-output/vitest-tmp/eval-sync-storybook-version-resume-push-yPNHBB/remotes/mealdrop.git
 * [new branch]      main -> main
(node:21) ExperimentalWarning: SQLite is an experimental feature and might change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
(node:21) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
(node:21) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
(node:21) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
JSON report written to /home/runner/work/_temp/pr-head/.verify-output/unit-tests-report.json

How Playwright validated this
test('addon-vitest setup-file change does not break Storybook boot', async ({ page }, testInfo) => {
  const pageErrors: string[] = [];
  const consoleErrors: string[] = [];

  page.on('pageerror', (err) => {
    pageErrors.push(err.stack ?? err.message ?? String(err));
  });
  page.on('console', (msg) => {
    if (msg.type() === 'error') {
      consoleErrors.push(msg.text());
    }
  });

  const baseURL =
    process.env.STORYBOOK_URL ?? testInfo.project.use.baseURL ?? 'http://localhost:6006';

  try {
    await page.goto(`${baseURL}/?path=/story/example-button--primary`);

    const sb = new RecipePage(page, expect);
    await sb.waitUntilLoaded();

    const errorDisplay = page.locator('#sb-errordisplay');
    await expect(errorDisplay).toBeHidden();

    const previewIframe = sb.previewIframe();
    const previewRoot = previewIframe.locator('#storybook-root, #root');
    await expect(previewRoot).toBeVisible();
    const childCount = await previewRoot.evaluate((el) => el.childElementCount);
    expect(childCount).toBeGreaterThan(0);

    await expect(page.locator('.sidebar-container')).toBeVisible();
  } finally {
    await testInfo.attach('pageErrors', {
      body: JSON.stringify(pageErrors),
      contentType: 'application/json',
    });
    await testInfo.attach('consoleErrors', {
      body: JSON.stringify(consoleErrors),
      contentType: 'application/json',
    });
  }

  expect(filterPageErrors(pageErrors)).toEqual([]);
  expect(filterConsoleErrors(consoleErrors)).toEqual([]);
});

Replay: npx playwright show-trace on the trace.zip listed under "Artifacts" on the run summary page.

Screenshots

2026-05-19T14-01-25.482Z/pr-26-addon-vitest-setup-f-21af7-es-not-break-Storybook-boot-chromium/test-finished-1.png

2026-05-19T14-01-25.482Z/pr-26-addon-vitest-setup-f-21af7-es-not-break-Storybook-boot-chromium/test-finished-1.png

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:verify Trigger PR Verification Harness

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants