Skip to content

e2e smoke drift: Operations consolidation (#1109) broke operating-room smoke; ensure-default modal races api-keys spec #1134

@vybe

Description

@vybe

Two pre-existing @smoke failures have made frontend-e2e red on dev since 2026-06-10 (first seen on the #1114 run; reproduced identically on #1133). Because the workflow is ui-label-gated, several PRs merged while the suite was silently red.

1. smoke.spec.js — operating room page loads

The test navigates /operating-room and asserts getByText(/operating|queue|priority|all types|no items/i). Since #1109 the route redirects to /operations, whose visible text (heading Operations, tabs Needs Response / Notifications / Health / Executions / Resolved, empty state "All clear — your agents are working independently") matches none of those patterns. The redirect itself works — pure assertion drift.

2. api-keys-copy.spec.js — Copy key icon button (race)

McpKeysTab.vue onMounted awaits fetchApiKeys() then fires POST /api/mcp/keys/ensure-default; when no user-scoped key exists it auto-creates Default MCP Key and opens the "Your MCP API Key is Ready!" modal. In CI the test deletes its own key per-test, so test 2's page load re-creates the default key and the auto-modal lands on top of the test's Create modal (both fixed z-10 inset-0; later DOM node wins) — the Create click is intercepted for 30s (screenshot in the run artifacts shows the auto-modal covering the form). Timing was marginal; the #1107/#1109 UI changes tipped it into failing consistently. Note test 1's clipboard assertions can pass against the auto modal (same buttons, format-only assertions), so it green-washes the race.

Fix (test-only)

  • operating-room smoke: assert the post-refactor(ui): unify Health + Ops + Executions into a single Operations nav area #1109 reality — URL /operations + heading + a tab button (doubles as coverage for the legacy redirect).
  • api-keys spec: beforeEach calls ensure-default via page.request (token from localStorage) and reloads — the page's own ensure-default is then a guaranteed no-op and the auto-modal cannot appear mid-test.

Found while validating #1133 (vue-router 5 + vite 8): identical failures on vanilla dev (#1114 run) rule out the router bump as the cause.

Metadata

Metadata

Assignees

No one assigned

    Labels

    complexity-lowComplexity: low (board points 1-3)priority-p1Critical pathstatus-readyGreenlit and ready for development (vetted; counterpart to status-incubating)theme-reliabilityTheme: Reliabilitytype-bugBug fix

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions