Skip to content

fix: ensure Dialog modals render above popovers and edit overlays #14606

fix: ensure Dialog modals render above popovers and edit overlays

fix: ensure Dialog modals render above popovers and edit overlays #14606

Triggered via pull request July 9, 2026 05:58
Status Failure
Total duration 10m 42s
Artifacts 8

ci.yml

on: pull_request
Resolve runner profiles
11s
Resolve runner profiles
Detect validation scopes
14s
Detect validation scopes
Static gate
12s
Static gate
Matrix: playwright_critical
Matrix: playwright_visual
Matrix: ui_p0
Validate Nix flake
0s
Validate Nix flake
Preflight
3m 13s
Preflight
Workspace unit tests
1m 16s
Workspace unit tests
Windows tools-pack payload tests
2m 43s
Windows tools-pack payload tests
Web workspace tests
3m 5s
Web workspace tests
E2E Vitest
2m 23s
E2E Vitest
UI P0 smoke
1m 32s
UI P0 smoke
Docker image build
0s
Docker image build
Validate workspace
5s
Validate workspace
Runtime summary
7s
Runtime summary
Fit to window
Zoom out
Zoom in

Annotations

15 errors, 1 warning, and 7 notices
UI P0 (project-runtime)
Process completed with exit code 1.
[chromium] › ui/amr-run-failure-recovery.test.ts:590:1 › [P0] @critical Settings preserves AMR account: e2e/ui/amr-run-failure-recovery.test.ts#L653
1) [chromium] › ui/amr-run-failure-recovery.test.ts:590:1 › [P0] @critical Settings preserves AMR account, recharge shortcut, and model catalog after switching runtimes Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: locator.click: Test timeout of 120000ms exceeded. Call log: - waiting for getByTestId('settings-agent-model-popover-amr').getByRole('option', { name: /glm-5/i }) - locator resolved to <button type="button" role="option" aria-selected="true" data-selected="true" class="model-select-searchable__option is-active" aria-describedby="model-picker-3jgcwtn3-option-0-tag" aria-labelledby="model-picker-3jgcwtn3-option-0-label">…</button> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div class="agent-card-config">…</div> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div class="agent-card-config">…</div> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 100ms 198 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div class="agent-card-config">…</div> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms 651 | modelPopover = page.getByTestId('settings-agent-model-popover-amr'); 652 | await expect(modelPopover).toBeVisible(); > 653 | await modelPopover.getByRole('option', { name: /glm-5/i }).click(); | ^ 654 | 655 | await expect 656 | .poll(async () => { at /home/runner/_work/open-design/open-design/e2e/ui/amr-run-failure-recovery.test.ts:653:62
[chromium] › ui/amr-run-failure-recovery.test.ts:590:1 › [P0] @critical Settings preserves AMR account: e2e/ui/amr-run-failure-recovery.test.ts#L0
1) [chromium] › ui/amr-run-failure-recovery.test.ts:590:1 › [P0] @critical Settings preserves AMR account, recharge shortcut, and model catalog after switching runtimes Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 120000ms exceeded.
[chromium] › ui/amr-run-failure-recovery.test.ts:590:1 › [P0] @critical Settings preserves AMR account: e2e/ui/amr-run-failure-recovery.test.ts#L653
1) [chromium] › ui/amr-run-failure-recovery.test.ts:590:1 › [P0] @critical Settings preserves AMR account, recharge shortcut, and model catalog after switching runtimes Error: locator.click: Test timeout of 120000ms exceeded. Call log: - waiting for getByTestId('settings-agent-model-popover-amr').getByRole('option', { name: /glm-5/i }) - locator resolved to <button type="button" role="option" aria-selected="true" data-selected="true" class="model-select-searchable__option is-active" aria-describedby="model-picker-6swpirey-option-0-tag" aria-labelledby="model-picker-6swpirey-option-0-label">…</button> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div class="agent-card-config">…</div> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div class="agent-card-config">…</div> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 100ms 205 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div class="agent-card-config">…</div> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms - waiting for element to be visible, enabled and stable 651 | modelPopover = page.getByTestId('settings-agent-model-popover-amr'); 652 | await expect(modelPopover).toBeVisible(); > 653 | await modelPopover.getByRole('option', { name: /glm-5/i }).click(); | ^ 654 | 655 | await expect 656 | .poll(async () => { at /home/runner/_work/open-design/open-design/e2e/ui/amr-run-failure-recovery.test.ts:653:62
[chromium] › ui/amr-run-failure-recovery.test.ts:590:1 › [P0] @critical Settings preserves AMR account: e2e/ui/amr-run-failure-recovery.test.ts#L0
1) [chromium] › ui/amr-run-failure-recovery.test.ts:590:1 › [P0] @critical Settings preserves AMR account, recharge shortcut, and model catalog after switching runtimes Test timeout of 120000ms exceeded.
UI P0 (entry-settings)
Process completed with exit code 1.
[chromium] › ui/settings-api-protocol.test.ts:1005:1 › [P0] @critical Settings keeps Local CLI and BYOK model choices isolated after reopening: e2e/ui/settings-api-protocol.test.ts#L1044
2) [chromium] › ui/settings-api-protocol.test.ts:1005:1 › [P0] @critical Settings keeps Local CLI and BYOK model choices isolated after reopening Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: locator.click: Test timeout of 60000ms exceeded. Call log: - waiting for getByTestId('settings-agent-model-popover-codex').getByRole('option', { name: /GPT 5\.5/i }) - locator resolved to <button type="button" role="option" aria-selected="false" class="model-select-searchable__option" aria-describedby="model-picker-f5w7hpwu-option-1-tag" aria-labelledby="model-picker-f5w7hpwu-option-1-label">…</button> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <details class="agent-cli-env settings-memory-advanced">…</details> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <details class="agent-cli-env settings-memory-advanced">…</details> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 100ms 46 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <details class="agent-cli-env settings-memory-advanced">…</details> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms - waiting for element to be visible, enabled and stable 1042 | await dialog.getByTestId('settings-agent-select-codex').click(); 1043 | await dialog.getByRole('combobox', { name: 'Model', exact: true }).click(); > 1044 | await page.getByTestId('settings-agent-model-popover-codex').getByRole('option', { name: /GPT 5\.5/i }).click(); | ^ 1045 | await expect.poll(async () => readSavedConfig(page)).toMatchObject({ 1046 | mode: 'daemon', 1047 | agentId: 'codex', at /home/runner/_work/open-design/open-design/e2e/ui/settings-api-protocol.test.ts:1044:107
[chromium] › ui/settings-api-protocol.test.ts:1005:1 › [P0] @critical Settings keeps Local CLI and BYOK model choices isolated after reopening: e2e/ui/settings-api-protocol.test.ts#L0
2) [chromium] › ui/settings-api-protocol.test.ts:1005:1 › [P0] @critical Settings keeps Local CLI and BYOK model choices isolated after reopening Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 60000ms exceeded.
[chromium] › ui/settings-api-protocol.test.ts:1005:1 › [P0] @critical Settings keeps Local CLI and BYOK model choices isolated after reopening: e2e/ui/settings-api-protocol.test.ts#L1044
2) [chromium] › ui/settings-api-protocol.test.ts:1005:1 › [P0] @critical Settings keeps Local CLI and BYOK model choices isolated after reopening Error: locator.click: Test timeout of 60000ms exceeded. Call log: - waiting for getByTestId('settings-agent-model-popover-codex').getByRole('option', { name: /GPT 5\.5/i }) - locator resolved to <button type="button" role="option" aria-selected="false" class="model-select-searchable__option" aria-describedby="model-picker-hesm51y6-option-1-tag" aria-labelledby="model-picker-hesm51y6-option-1-label">…</button> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <details class="agent-cli-env settings-memory-advanced">…</details> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <details class="agent-cli-env settings-memory-advanced">…</details> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 100ms 98 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <details class="agent-cli-env settings-memory-advanced">…</details> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms 1042 | await dialog.getByTestId('settings-agent-select-codex').click(); 1043 | await dialog.getByRole('combobox', { name: 'Model', exact: true }).click(); > 1044 | await page.getByTestId('settings-agent-model-popover-codex').getByRole('option', { name: /GPT 5\.5/i }).click(); | ^ 1045 | await expect.poll(async () => readSavedConfig(page)).toMatchObject({ 1046 | mode: 'daemon', 1047 | agentId: 'codex', at /home/runner/_work/open-design/open-design/e2e/ui/settings-api-protocol.test.ts:1044:107
[chromium] › ui/settings-api-protocol.test.ts:1005:1 › [P0] @critical Settings keeps Local CLI and BYOK model choices isolated after reopening: e2e/ui/settings-api-protocol.test.ts#L0
2) [chromium] › ui/settings-api-protocol.test.ts:1005:1 › [P0] @critical Settings keeps Local CLI and BYOK model choices isolated after reopening Test timeout of 60000ms exceeded.
[chromium] › ui/settings-api-protocol.test.ts:220:1 › [P0] @critical BYOK quick fill provider updates fields and saved settings persist after closing and reopening: e2e/ui/settings-api-protocol.test.ts#L106
1) [chromium] › ui/settings-api-protocol.test.ts:220:1 › [P0] @critical BYOK quick fill provider updates fields and saved settings persist after closing and reopening Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: locator.click: Test timeout of 120000ms exceeded. Call log: - waiting for locator('[data-testid="settings-byok-provider-preset-popover"]').last().getByRole('option', { name: /DeepSeek — OpenAI/i }) - locator resolved to <button type="button" role="option" aria-selected="false" class="model-select-searchable__option" aria-describedby="model-picker-t6ran9g9-option-7-tag" aria-labelledby="model-picker-t6ran9g9-option-7-label">…</button> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <p class="hint">Cap on the response length. Each model has a tune…</p> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 20ms - waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <input type="url" inputmode="url" aria-label="Base URL" value="https://api.openai.com/v1"/> from <div class="modal-backdrop">…</div> subtree intercepts pointer events 2 × retrying click action - waiting 100ms - waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <span class="field-label-row">…</span> from <div class="modal-backdrop">…</div> subtree intercepts pointer events 40 × retrying click action - waiting 500ms - waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <p class="hint">Cap on the response length. Each model has a tune…</p> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms - waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <input type="url" inputmode="url" aria-label="Base URL" value="https://api.openai.com/v1"/> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms - waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <span class="field-label-row">…</span> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms - waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <span class="field-label-row">…</span> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms 104 | const popover = page.locator(popoverSelector).last(); 105 | await expect(popover).toBeVisible(); > 106 | await popover.getByRole('option', { name: optionName }).click(); | ^ 107 | } 108 | 109 | async function expectModelComboboxT
[chromium] › ui/settings-api-protocol.test.ts:220:1 › [P0] @critical BYOK quick fill provider updates fields and saved settings persist after closing and reopening: e2e/ui/settings-api-protocol.test.ts#L0
1) [chromium] › ui/settings-api-protocol.test.ts:220:1 › [P0] @critical BYOK quick fill provider updates fields and saved settings persist after closing and reopening Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 120000ms exceeded.
[chromium] › ui/settings-api-protocol.test.ts:220:1 › [P0] @critical BYOK quick fill provider updates fields and saved settings persist after closing and reopening: e2e/ui/settings-api-protocol.test.ts#L106
1) [chromium] › ui/settings-api-protocol.test.ts:220:1 › [P0] @critical BYOK quick fill provider updates fields and saved settings persist after closing and reopening Error: locator.click: Test timeout of 120000ms exceeded. Call log: - waiting for locator('[data-testid="settings-byok-provider-preset-popover"]').last().getByRole('option', { name: /DeepSeek — OpenAI/i }) - locator resolved to <button type="button" role="option" aria-selected="false" class="model-select-searchable__option" aria-describedby="model-picker-yrjl7uyr-option-7-tag" aria-labelledby="model-picker-yrjl7uyr-option-7-label">…</button> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <p class="hint">Cap on the response length. Each model has a tune…</p> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 20ms - waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <input type="url" inputmode="url" aria-label="Base URL" value="https://api.openai.com/v1"/> from <div class="modal-backdrop">…</div> subtree intercepts pointer events 2 × retrying click action - waiting 100ms - waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <span class="field-label-row">…</span> from <div class="modal-backdrop">…</div> subtree intercepts pointer events 52 × retrying click action - waiting 500ms - waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <p class="hint">Cap on the response length. Each model has a tune…</p> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms - waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <input type="url" inputmode="url" aria-label="Base URL" value="https://api.openai.com/v1"/> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms - waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <span class="field-label-row">…</span> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms - waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <span class="field-label-row">…</span> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms - waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <p class="hint">Cap on the response length. Each model has a tune…</p> from <div class="modal-backdrop">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms - waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <input type="url" inputmode="url" aria-la
[chromium] › ui/settings-api-protocol.test.ts:220:1 › [P0] @critical BYOK quick fill provider updates fields and saved settings persist after closing and reopening: e2e/ui/settings-api-protocol.test.ts#L0
1) [chromium] › ui/settings-api-protocol.test.ts:220:1 › [P0] @critical BYOK quick fill provider updates fields and saved settings persist after closing and reopening Test timeout of 120000ms exceeded.
Validate workspace
Process completed with exit code 1.
Detect validation scopes
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
🎭 Playwright Run Summary
3 passed (33.4s)
🎭 Playwright Run Summary
20 passed (1.3m)
🎭 Playwright Run Summary
19 passed (1.6m)
🎭 Playwright Run Summary
26 passed (2.8m)
🎭 Playwright Run Summary
37 passed (3.6m)
🎭 Playwright Run Summary
1 failed [chromium] › ui/amr-run-failure-recovery.test.ts:590:1 › [P0] @critical Settings preserves AMR account, recharge shortcut, and model catalog after switching runtimes 3 did not run 18 passed (8.2m)
🎭 Playwright Run Summary
2 failed [chromium] › ui/settings-api-protocol.test.ts:220:1 › [P0] @critical BYOK quick fill provider updates fields and saved settings persist after closing and reopening [chromium] › ui/settings-api-protocol.test.ts:1005:1 › [P0] @critical Settings keeps Local CLI and BYOK model choices isolated after reopening 59 passed (8.7m)

Artifacts

Produced during runtime
Name Size Digest
handoff-report-visual-pr Expired
434 Bytes
sha256:e9188d690af644d7fd7f2592e6dfdd475e9af47a731b4d3976b5f4a21851ab24
ui-p0-ci-28997473029-entry-settings Expired
258 MB
sha256:e57fa25302fba82a25997dcfd8a09f0ba9a87e06156ae7de9574a7d5b25256c2
ui-p0-ci-28997473029-project-runtime Expired
167 MB
sha256:50b19b9fced3a75d9cc0b8167a062e95cd97f362c77bd42ca4ce82f0825aa6b2
ui-p0-ci-28997473029-project-workspace Expired
382 KB
sha256:74a7f84f7943251f6c2d499809d39a9d4960fa418dbb1a2b6d1f203815902470
ui-p0-ci-28997473029-smoke Expired
285 KB
sha256:2a30ca69bbbc9653edb3d11097e1f56d87b8931850faebeb2995e1533c66e3e0
ui-p0-ci-28997473029-workspace-restoration Expired
369 KB
sha256:dcaa88516092674e4912be34a830ee949c3e919adc599e7a5f778498de54872c
visual-pr-capture-5091-28997473029-entry-navigation Expired
1.95 MB
sha256:565dc82c016354a68d3ccb3968eac834d56169b819daf88bdbd13a48d7cf5184
visual-pr-capture-5091-28997473029-settings-workspace Expired
2.87 MB
sha256:3894f6ed74a27f66568706d269a70a09bc86cca50e8018c92e904879227bd559