fix: ensure Dialog modals render above popovers and edit overlays #14606
ci.yml
on: pull_request
Resolve runner profiles
11s
Matrix: playwright_critical
Matrix: playwright_visual
Matrix: ui_p0
Validate Nix flake
0s
Preflight
3m 13s
Workspace unit tests
1m 16s
Windows tools-pack payload tests
2m 43s
Web workspace tests
3m 5s
E2E Vitest
2m 23s
UI P0 smoke
1m 32s
Docker image build
0s
Runtime summary
7s
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
|
|