Skip to content

[harness eval #34779] Core: Improve ActionBar focus indicator in high contrast mode#23

Open
valentinpalkovic wants to merge 2 commits into
nextfrom
try-pr-34779
Open

[harness eval #34779] Core: Improve ActionBar focus indicator in high contrast mode#23
valentinpalkovic wants to merge 2 commits into
nextfrom
try-pr-34779

Conversation

@valentinpalkovic
Copy link
Copy Markdown
Owner

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

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

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)

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

Screenshots

2026-05-14T13-47-15.989Z/pr-23-ActionBar-ActionButt-d805f-high-contrast-outline-tweak-chromium/test-failed-1.png

2026-05-14T13-47-15.989Z/pr-23-ActionBar-ActionButt-d805f-high-contrast-outline-tweak-chromium/test-failed-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: Playwright assertion failed in: ? — Error: expect(locator).toBeVisible() failed Locator: locator('#storybook-preview-iframe').contentFrame().getByRole('button', { name: /show code/i }).first() Expected: visible Timeout: 15000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 15000ms - waiting for locator('#storybook-preview-iframe').contentFrame().getByRole('button', { name: /show code/i }).first()

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

Screenshots

2026-05-14T14-24-17.994Z/pr-23-ActionBar-action-but-de3f2-onours-forced-colors-styles-chromium/test-failed-1.png

2026-05-14T14-24-17.994Z/pr-23-ActionBar-action-but-de3f2-onours-forced-colors-styles-chromium/test-failed-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
Copy link
Copy Markdown

Verify Harness

Verdict: regression (target internal-ui)

Reason: Playwright assertion failed in: ? — Error: expect(locator).toBeVisible() failed Locator: locator('#storybook-preview-iframe').contentFrame().getByRole('button', { name: /show code/i }).first() Expected: visible Timeout: 15000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 15000ms - waiting for locator('#storybook-preview-iframe').contentFrame().getByRole('button', { name: /show code/i }).first()

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

Screenshots

2026-05-14T14-39-20.778Z/pr-23-ActionBar-button-foc-439c6--mode-uses-2px-ButtonBorder-chromium/test-failed-1.png

2026-05-14T14-39-20.778Z/pr-23-ActionBar-button-foc-439c6--mode-uses-2px-ButtonBorder-chromium/test-failed-1.png

@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 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 modifies ActionBar focus outline styles in forced-colors mode (changing from '1px solid highlight' to '2px solid ButtonBorder' with outlineOffset). However, forced-colors media queries cannot be reliably emulated in standard Playwright screenshots, and the test explicitly notes this limitation. The screenshots show the Canvas region with ActionBar, but cannot visually demonstrate the forced-colors-specific CSS change that requires actual forced-colors mode to be active.

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

Screenshots

2026-05-15T16-55-55.594Z/pr-23-ActionBar-focus-outline-applies-in-forced-colors-mode-chromium/canvas-actionbar-focus.png

2026-05-15T16-55-55.594Z/pr-23-ActionBar-focus-outline-applies-in-forced-colors-mode-chromium/canvas-actionbar-focus.png

2026-05-15T16-55-55.594Z/pr-23-ActionBar-focus-outline-applies-in-forced-colors-mode-chromium/test-finished-1.png

2026-05-15T16-55-55.594Z/pr-23-ActionBar-focus-outline-applies-in-forced-colors-mode-chromium/test-finished-1.png

@valentinpalkovic valentinpalkovic force-pushed the next branch 4 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
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 version rollback (10.5.0-alpha.0 → 10.4.0-alpha.17) and removal of CI/workflow infrastructure code (GitHub Actions, package manager utilities, test file deletions). The recipe targets a sidebar icon swap (CloseIcon → SweepIcon) in ReviewChangesButton, but the screenshots show a baseline Controls panel and sidebar without evidence that the ReviewChangesButton/SweepIcon change was actually triggered or rendered in the test run.

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

Files: code/addons/vitest/src/vitest-plugin/agent-telemetry-reporter.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('ReviewChangesButton clear button renders SweepIcon after change-detection flip', 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 controlsTab = page.getByRole('tab', { name: /controls/i });
    await controlsTab.click();
    const labelInput = page
      .locator('input[name="label"], textarea[name="label"]')
      .first();
    await labelInput.fill('Verify harness saved this');

    const saveButton = page.getByRole('button', {
      name: /save changes to story|update story/i,
    });
    await expect(saveButton).toBeVisible({ timeout: 10000 });
    await saveButton.click();

    const reviewToggle = page.getByRole('switch', { name: /review.+stories/i });
    await expect(reviewToggle).toBeVisible({ timeout: 20000 });

    await reviewToggle.click();
    const clearButton = page.getByRole('button', { name: /^clear$/i });
    await expect(clearButton).toBeVisible({ timeout: 10000 });

    const clearSvg = clearButton.locator('svg');
    await expect(clearSvg).toHaveCount(1);
    const clearMarkup = await clearButton.innerHTML();
    expect(clearMarkup).not.toMatch(/M2\.146 2\.854/);

    await page.locator('.sidebar-container').screenshot({
      path: testInfo.outputPath('sidebar-clear-button.png'),
    });
  } finally {
    await testInfo.attach('pageErrors', {
      body: JSON.stringify(pageErrors),
      contentType: 'application/json',
    });
    a

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

@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 predominantly CI/config/docs changes (removing security gates, simplifying GitHub workflows, updating package.json versions, deleting test files). While there are UI-related changes in the diff (Tree.tsx status icon logic, ReviewChangesButton icon swap from CloseIcon to SweepIcon), the screenshots show a sidebar UI but are too low-resolution and cropped to confirm the specific icon change or status icon behavior modification.

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

Files: code/addons/vitest/src/vitest-plugin/agent-telemetry-reporter.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('ReviewChangesButton Clear button renders SweepIcon after Save-from-Controls', 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 controlsTab = page.getByRole('tab', { name: /controls/i });
    await controlsTab.click();
    const labelInput = page.locator('textarea[name="label"], input[name="label"]').first();
    await expect(labelInput).toBeVisible({ timeout: 10000 });
    await labelInput.fill('Verify harness saved this');

    const saveButton = page.getByRole('button', {
      name: /save changes to story|update story/i,
    });
    await expect(saveButton).toBeVisible({ timeout: 10000 });
    await saveButton.click();

    const reviewToggle = page.getByRole('switch', { name: /review.+stories/i });
    await expect(reviewToggle).toBeVisible({ timeout: 20000 });

    await reviewToggle.click();
    const clearButton = page.getByRole('button', { name: /^clear$/i });
    await expect(clearButton).toBeVisible({ timeout: 10000 });

    const svg = clearButton.locator('svg');
    await expect(svg).toBeVisible();

    await page.locator('.sidebar-container').screenshot({
      path: testInfo.outputPath('sidebar-with-sweep-icon.png'),
    });
    await clearButton.screenshot({
      path: testInfo.outputPath('clear-button-sweep-icon.png'),
    });
  } finally {
    await testInfo.attach('pageErrors', {
      body: JSON.stringify(pageErrors),
      contentType:

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

Screenshots

2026-05-15T20-55-28.068Z/pr-23-sidebar-review-chang-efeb0-on-after-story-modification-chromium/sidebar.png

2026-05-15T20-55-28.068Z/pr-23-sidebar-review-chang-efeb0-on-after-story-modification-chromium/sidebar.png

2026-05-15T20-55-28.068Z/pr-23-sidebar-review-chang-efeb0-on-after-story-modification-chromium/test-finished-1.png

2026-05-15T20-55-28.068Z/pr-23-sidebar-review-chang-efeb0-on-after-story-modification-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 react-vite/default-ts)

Reason: Playwright assertion failed in: ? — Error: expect(locator).toBeVisible() failed Locator: locator('#storybook-preview-iframe').contentFrame().locator('#storybook-root:visible, #storybook-docs:visible').locator('.docs-story, [class*="docs-story"]').first().getByRole('toolbar') Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for locator('#storybook-pre

How Playwright validated this
test('ActionButton focus-visible style includes new outline rule in forced-colors mode', 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.emulateMedia({ forcedColors: 'active' });

    await page.goto(`${baseURL}/?path=/docs/example-button--docs`);
    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, #storybook-docs');
    await expect(previewRoot).toBeVisible();

    const ruleAudit = await previewIframe.locator(':root').evaluate(() => {
      const results: { hasNewOutline: boolean; hasNewOffset: boolean; hasOldHighlight: boolean; sampleRules: string[] } = {
        hasNewOutline: false,
        hasNewOffset: false,
        hasOldHighlight: false,
        sampleRules: [],
      };
      const walk = (rules: CSSRuleList | undefined) => {
        if (!rules) return;
        for (const rule of Array.from(rules)) {
          if (rule instanceof CSSMediaRule) {
            if (rule.conditionText.includes('forced-colors')) {
              for (const inner of Array.from(rule.cssRules)) {
                const text = inner.cssText;
                results.sampleRules.push(text);
                if (/outline:\s*2px\s+solid\s+ButtonBorder/i.test(text)) results.hasNewOutline = true;
                if (/outline-offset:\s*2px/i.test(text)) results.hasNewOffset = true;
                if (/outline:\s*1px\s+solid\s+highlight/i.t

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

Screenshots

2026-05-18T06-33-29.862Z/pr-23-ActionBar-button-exp-57c0c-yling-in-forced-colors-mode-chromium/test-failed-1.png

2026-05-18T06-33-29.862Z/pr-23-ActionBar-button-exp-57c0c-yling-in-forced-colors-mode-chromium/test-failed-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 react-vite/default-ts)

Reason: Playwright assertion failed in: ? — Error: expect(locator).toBeVisible() failed Locator: locator('#storybook-preview-iframe').contentFrame().locator('#storybook-root:visible, #storybook-docs:visible').locator('.docs-story, [class*="docs-story"]').first().getByRole('toolbar') Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for locator('#storybook-pre

How Playwright validated this
test('ActionButton focus-visible adopts ButtonBorder outline under forced-colors', 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.emulateMedia({ forcedColors: 'active' });

    await page.goto(`${baseURL}/?path=/story/example-button--primary`);
    const sb = new RecipePage(page, expect);
    await sb.waitUntilLoaded();

    const cssText = await page.evaluate(() => {
      const chunks: string[] = [];
      for (const sheet of Array.from(document.styleSheets)) {
        try {
          const rules = (sheet as CSSStyleSheet).cssRules;
          if (!rules) continue;
          for (const rule of Array.from(rules)) {
            chunks.push(rule.cssText);
          }
        } catch {
        }
      }
      return chunks.join('\n');
    });

    expect(cssText).toMatch(/forced-colors:\s*active/i);
    expect(cssText).toMatch(/ButtonBorder/);
    expect(cssText).toMatch(/outline-offset:\s*2px/);
    expect(cssText).not.toMatch(/1px\s+solid\s+highlight/i);

    await expect(page.locator('#sb-errordisplay')).toBeHidden();
    const previewRoot = page.frameLocator('#storybook-preview-iframe').locator('#storybook-root');
    await expect(previewRoot).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([]);
});

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

Screenshots

2026-05-18T06-42-17.937Z/pr-23-ActionBar-button-foc-fc82a-nBorder-under-forced-colors-chromium/test-failed-1.png

2026-05-18T06-42-17.937Z/pr-23-ActionBar-button-foc-fc82a-nBorder-under-forced-colors-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: Playwright assertion failed in: ? — Error: expect(locator).toBeVisible() failed Locator: locator('#storybook-preview-iframe').contentFrame().locator('button').first() Expected: visible Received: hidden Timeout: 10000ms Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for locator('#storybook-preview-iframe').contentFrame().locator('button').first() 14 × locator resolved to <button>Set string</button>

How Playwright validated this
test('ActionBar action button focuses cleanly (forced-colors outline rule compiles)', 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.emulateMedia({ forcedColors: 'active' });

    await page.goto(`${baseURL}/?path=/story/core-actionbar--many-items`);

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

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

    const previewIframe = page.frameLocator('#storybook-preview-iframe');

    const actionButton = previewIframe.getByRole('button', { name: 'Set string' });
    await expect(actionButton).toBeVisible();

    await actionButton.focus();

    const outlineOffset = await actionButton.evaluate(
      (el) => getComputedStyle(el).outlineOffset,
    );
    expect(outlineOffset).toBe('2px');

    const outlineWidth = await actionButton.evaluate(
      (el) => getComputedStyle(el).outlineWidth,
    );
    expect(outlineWidth).toBe('2px');
  } 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-19T14-01-29.141Z/pr-23-ActionBar-renders-cl-26d59--forced-colors-focus-styles-chromium/test-failed-1.png

2026-05-19T14-01-29.141Z/pr-23-ActionBar-renders-cl-26d59--forced-colors-focus-styles-chromium/test-failed-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.

2 participants