careervector-ui-e2e browser-budget semantic-index
CareerVector UI e2e
Broad CareerVector browser e2e: dashboard table, kanban board, views with group reorder, routing, layout (incl. zoomed), keyboard navigation, BYOK key entry + chain resolution, realtime collaboration over the canonical Y.Doc relay, synthetic workspace lifecycle and cleanup, MCP dispatch from the browser, profile/notes persistence, read-only workspace views, status centre frugality, perf smokes, and the import-to-tailor synthetic journey. Acts as the catch-all e2e gate for ui/e2e/*.spec.ts that is not story-, perf-, or persistence-scoped.
Behaviours 0 Tests 252 Graph 253 nodes · 252 edges Runner - CircleCI browser_ui_e2e Source qa/suites/careervector-ui-e2e.yaml
Test witnesses
These tests belong to the suite. Missing implementation links stay visible until a code-backed graph claim records them.
| Test | Status | Implementation | Open |
|---|---|---|---|
ChainEditor: when no API keys are configured, a warning banner prompts the user to add keys first @cv/ui · playwright · byok.spec.ts | catalog | missing implementation link | Test |
Keys in the Models tab chain editor are not exposed in plain text; provider names are shown, not raw API key strings @cv/ui · playwright · byok.spec.ts | catalog | missing implementation link | Test |
Opening CloudKeys and clicking the Models tab renders the ChainEditor with pipeline stage sections @cv/ui · playwright · byok.spec.ts | catalog | missing implementation link | Test |
User enters a provider API key in workspace settings; the key is displayed masked (first 4 + last 4 chars) in the UI immediately after saving @cv/ui · playwright · byok.spec.ts | catalog | missing implementation link | Test |
REST writes commit to workspace_sub_doc before best-effort realtime fanout @cv/ui · playwright · canonical-collaboration.spec.ts | catalog | missing implementation link | Test |
preserve-style job patches do not clear workspace jobs subdoc fields @cv/ui · playwright · canonical-collaboration.spec.ts | catalog | missing implementation link | Test |
server-side op path rejects secret fanout and strict pipeline maxCount violations @cv/ui · playwright · canonical-collaboration.spec.ts | catalog | missing implementation link | Test |
GET /api/chain is idempotent: two sequential calls on a seeded workspace return equivalent chain keys @cv/ui · playwright · chain-api.spec.ts | catalog | missing implementation link | Test |
GET /api/chain on a fresh workspace returns a chains object (may be empty when no provider keys available) @cv/ui · playwright · chain-api.spec.ts | catalog | missing implementation link | Test |
GET /api/chain returns a 200 with providerKeys and chains fields @cv/ui · playwright · chain-api.spec.ts | catalog | missing implementation link | Test |
GET /api/chain with an unknown workspace id returns 404 @cv/ui · playwright · chain-api.spec.ts | catalog | missing implementation link | Test |
GET /api/chain without a workspace parameter returns 400 @cv/ui · playwright · chain-api.spec.ts | catalog | missing implementation link | Test |
PATCH /api/workspaces/:id/cloud-keys accepts a chains payload and GET /api/chain returns a valid shape afterwards @cv/ui · playwright · chain-api.spec.ts | catalog | missing implementation link | Test |
A human edits a job field in Tab A while an agent edits a different field of the same job via API; both changes converge without conflict @cv/ui · playwright · extra-journeys-2.spec.ts | catalog | missing implementation link | Test |
Throughout the demo journey, no error toast, no blank cell where a value is expected, no raw stack trace, no Typst compile error is ever visible to the user @cv/ui · playwright · extra-journeys-2.spec.ts | catalog | missing implementation link | Test |
User creates a custom view with a rule matching jobs by status; jobs bucket into the correct group immediately @cv/ui · playwright · extra-journeys-2.spec.ts | catalog | missing implementation link | Test |
POST evaluate twice in rapid succession: second returns {locked:true} or succeeds; neither returns 5xx; DB state is consistent @cv/ui · playwright · extra-journeys-3.spec.ts | catalog | missing implementation link | Test |
Two browser contexts editing a tailored_cv for the same job concurrently: both writes return 2xx, the persisted tree is one of the two submitted @cv/ui · playwright · extra-journeys-3.spec.ts | catalog | missing implementation link | Test |
A job that changes status moves to the matching view group without a page reload @cv/ui · playwright · extra-journeys-4.spec.ts | catalog | missing implementation link | Test |
After AI evaluation fills a cell, posting a job update with origin='human' for that field clears the AI provider origin in the database @cv/ui · playwright · extra-journeys-4.spec.ts | catalog | missing implementation link | Test |
User creates a custom view with score-based gte rules; jobs bucket into the correct score group immediately @cv/ui · playwright · extra-journeys-4.spec.ts | catalog | missing implementation link | Test |
A subsequent PATCH to cloud-keys with a masked key value preserves the original unmasked key in the database @cv/ui · playwright · extra-journeys.spec.ts | catalog | missing implementation link | Test |
User generates a cover letter for a job; FIXED sections (recipient, signature) are verbatim from the CL quarry; OPEN intro section is LLM-written @cv/ui · playwright · extra-journeys.spec.ts | catalog | missing implementation link | Test |
User manually reorders two jobs within a view group; order persists after reload @cv/ui · playwright · extra-journeys.spec.ts | catalog | missing implementation link | Test |
User switches CV language to de-CH; the cover letter opening salutation updates to Swiss German convention @cv/ui · playwright · extra-journeys.spec.ts | catalog | missing implementation link | Test |
synthetic full journey: import → extract → enrich → evaluate (mocked providers) @cv/ui · playwright · journey-synthetic/import-to-tailor.spec.ts | catalog | missing implementation link | Test |
A K.O. criterion set to penalty=0 causes the overall score to read 0 regardless of other dimensions @cv/ui · playwright · journeys.spec.ts | catalog | missing implementation link | Test |
A job with no salary transitions through the enrichment stage; an estimated salary appears with a non-human origin marker @cv/ui · playwright · journeys.spec.ts | catalog | missing implementation link | Test |
CL preview re-renders after generation; page reload preserves the tailored_cl @cv/ui · playwright · journeys.spec.ts | catalog | missing implementation link | Test |
Navigating to a workspace URL in a new browser context loads the workspace without any login prompt @cv/ui · playwright · journeys.spec.ts | catalog | missing implementation link | Test |
Two browser tabs sharing the same workspace URL can both edit jobs; neither requires authentication @cv/ui · playwright · journeys.spec.ts | catalog | missing implementation link | Test |
User enables a scoring criterion and triggers evaluation; a numeric score appears on the job card @cv/ui · playwright · journeys.spec.ts | catalog | missing implementation link | Test |
User manually adds a job; pipeline auto-advances through extract, evaluate, score, salary, commute without user nudging; tailored CV and CL are generated; no error UI appears at any point; final CV has FIXED identity verbatim from quarry, summary 2-3 sentences, fits format.maxPages, locale matches job country, all AI-filled cells carry provider origin markers; reload preserves the full pipeline state @cv/ui · playwright · journeys.spec.ts | catalog | missing implementation link | Test |
Enter key on phase name heading does not throw (rename mode) @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
Tab key moves focus from search to swimlane buttons @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
add-phase button is absent on /view/ kanban route @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
board toolbar still renders in read-only mode @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
clearing search restores full count @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
clicking + New Status adds a status lane inside a phase @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
clicking + adds a new phase column @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
clicking a job card opens the job detail panel @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
collapse button changes phase to collapsed state @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
each phase shows a name heading and job-count badge @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
job status_id change via REST API moves card to correct lane after reload @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
phase columns render after navigation @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
phase name heading is keyboard-accessible (role=button, tabindex=0) @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
pointer-drag moves a job card to a different status lane @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
search with no matching jobs shows empty status lanes @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
status lanes render inside at least one phase @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
status name heading is keyboard-accessible (role=button, tabindex=0) @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
swimlane selector renders all four options @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
switching back to "No Grouping" removes swimlane groups @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
switching to "By Company" renders swimlane group divs @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
toolbar is visible and contains search input @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
typing in search input shows filtered count @cv/ui · playwright · kanban.spec.ts | catalog | missing implementation link | Test |
ArrowLeft/ArrowRight — page navigation (NOT IMPLEMENTED in v2) @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Ctrl+B — bold toggle on selected text @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Ctrl+B — bold wraps selection in description textarea @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Ctrl+I — italic toggle on selected text @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Ctrl+I — italic wraps selection in description textarea @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Ctrl+Shift+7 — blockquote wrapping @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Ctrl+Shift+8 — bullet list wrapping @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Ctrl+Shift+9 — ordered list wrapping @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Ctrl+Shift+D — opens Visuals modal on Diagnostic tab @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Ctrl+Shift+S — strikethrough toggle @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Ctrl+Shift+Z — redo alias @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Ctrl+Shift+Z — redo alias does not crash @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Ctrl+Y — redo does not crash @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Ctrl+Z / Ctrl+Y — undo/redo in notes editor (Yjs) @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Ctrl+Z — undo does not crash @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Ctrl+[ — lift list item (outdent) @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Ctrl+] — sink list item (indent) @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Ctrl+` — code mark toggle @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Enter in Add Job URL field — submits without crashing @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Enter in Add Job manual title field — submits without crashing @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Enter in a format number field — blurs (commits) without error @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Enter in list — splits list item @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Enter in title field — commits the new title @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Escape closes conventions editor overlay @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Escape in title field — cancels edit @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Escape — closes AddJob modal @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Escape — closes Job Detail modal @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Shift+Enter — hard break inserts <br> @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
Tab in bullet input — demotes bullet to sub-bullet @cv/ui · playwright · keyboard.spec.ts | catalog | missing implementation link | Test |
At 1024x768, zoom=fit: preview container has scrollWidth <= clientWidth @cv/ui · playwright · layout-zoom.spec.ts | catalog | missing implementation link | Test |
At 1280x720, zoom=fit: preview container has scrollWidth <= clientWidth @cv/ui · playwright · layout-zoom.spec.ts | catalog | missing implementation link | Test |
At 1366x1024, zoom=fit: preview container has scrollWidth <= clientWidth @cv/ui · playwright · layout-zoom.spec.ts | catalog | missing implementation link | Test |
At 1366x768, zoom=fit: preview container has scrollWidth <= clientWidth @cv/ui · playwright · layout-zoom.spec.ts | catalog | missing implementation link | Test |
At 1440x900, zoom=fit: preview container has scrollWidth <= clientWidth @cv/ui · playwright · layout-zoom.spec.ts | catalog | missing implementation link | Test |
At 1920x1080, zoom=fit: preview container has scrollWidth <= clientWidth @cv/ui · playwright · layout-zoom.spec.ts | catalog | missing implementation link | Test |
At 375x667, zoom=fit: preview container has scrollWidth <= clientWidth @cv/ui · playwright · layout-zoom.spec.ts | catalog | missing implementation link | Test |
At 1024x768, text fields in the same row share a bounding-rect top within ±1px @cv/ui · playwright · layout.spec.ts | catalog | missing implementation link | Test |
At 1024x768, the CV preview container has scrollWidth <= clientWidth (no horizontal overflow) @cv/ui · playwright · layout.spec.ts | catalog | missing implementation link | Test |
At 1280x720, text fields in the same row share a bounding-rect top within ±1px @cv/ui · playwright · layout.spec.ts | catalog | missing implementation link | Test |
At 1280x720, the CV preview container has scrollWidth <= clientWidth (no horizontal overflow) @cv/ui · playwright · layout.spec.ts | catalog | missing implementation link | Test |
At 1366x1024, text fields in the same row share a bounding-rect top within ±1px @cv/ui · playwright · layout.spec.ts | catalog | missing implementation link | Test |
At 1366x1024, the CV preview container has scrollWidth <= clientWidth (no horizontal overflow) @cv/ui · playwright · layout.spec.ts | catalog | missing implementation link | Test |
At 1366x768, text fields in the same row share a bounding-rect top within ±1px @cv/ui · playwright · layout.spec.ts | catalog | missing implementation link | Test |
At 1366x768, the CV preview container has scrollWidth <= clientWidth (no horizontal overflow) @cv/ui · playwright · layout.spec.ts | catalog | missing implementation link | Test |
At 1440x900, text fields in the same row share a bounding-rect top within ±1px @cv/ui · playwright · layout.spec.ts | catalog | missing implementation link | Test |
At 1440x900, the CV preview container has scrollWidth <= clientWidth (no horizontal overflow) @cv/ui · playwright · layout.spec.ts | catalog | missing implementation link | Test |
At 1920x1080, text fields in the same row share a bounding-rect top within ±1px @cv/ui · playwright · layout.spec.ts | catalog | missing implementation link | Test |
At 1920x1080, the CV preview container has scrollWidth <= clientWidth (no horizontal overflow) @cv/ui · playwright · layout.spec.ts | catalog | missing implementation link | Test |
At 375x667-mobile, text fields in the same row share a bounding-rect top within ±1px @cv/ui · playwright · layout.spec.ts | catalog | missing implementation link | Test |
At 375x667-mobile, the CV preview container has scrollWidth <= clientWidth (no horizontal overflow) @cv/ui · playwright · layout.spec.ts | catalog | missing implementation link | Test |
API and UI LinkedIn imports are canonical, deduped, and visible after reload @cv/ui · playwright · linkedin-job-journey.spec.ts | catalog | missing implementation link | Test |
API-imported LinkedIn job can become a tailored CV visible in the editor @cv/ui · playwright · linkedin-job-journey.spec.ts | catalog | missing implementation link | Test |
concurrent API and UI duplicate submissions converge to one job @cv/ui · playwright · linkedin-job-journey.spec.ts | catalog | missing implementation link | Test |
mixed browser and API writers converge without losing URL-only jobs @cv/ui · playwright · linkedin-job-journey.spec.ts | catalog | missing implementation link | Test |
post-dispatch Workspace Intelligence panel renders the server-claimed completion in a fresh browser tab @cv/ui · playwright · mcp-dispatch-headless.spec.ts | catalog | missing implementation link | Test |
rerun-stage triggered without an open browser tab completes via server dispatch within ~2 minutes @cv/ui · playwright · mcp-dispatch-headless.spec.ts | catalog | missing implementation link | Test |
/view/[mirrorId]/dashboard loads as read-only shell @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
/view/[sourceId]/dashboard redirects to /[slug]/dashboard @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
API write to mirror source_id via mirror_id returns 403 @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
DELETE workspace via mirror_id returns 403 @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
PATCH workspace via mirror_id returns 403 @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
PUT notes via mirror_id returns 403 @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
PUT settings via mirror_id returns 403 @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
cannot revoke a mirror belonging to a different source @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
creating a mirror of a live mirror returns 400 @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
fork is independent — editing source does not affect fork @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
fork is writable @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
fork preserves canonical notes and stays independent @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
fork returns a new source_id (not a mirror_id) @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
forking a live mirror returns 400 @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
frozen mirror API writes return 403 @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
frozen mirror preserves canonical notes at snapshot time @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
live mirror reflects source updates @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
returns 403 when called with a mirror_id @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
returns created mirrors with correct types @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
returns empty array when no mirrors exist @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
revoked mirror returns 404 on subsequent access @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
source edits after snapshot creation do not appear in frozen mirror @cv/ui · playwright · mirror-workspaces.spec.ts | catalog | missing implementation link | Test |
cv_profile + cl_profile batch advances both clocks together @cv/ui · playwright · multi-actor-primitives.spec.ts | catalog | missing implementation link | Test |
edit lands in IDB and the y-indexeddb store retains the bytes after reload @cv/ui · playwright · multi-actor-primitives.spec.ts | catalog | missing implementation link | Test |
pipeline-class write is dropped over a human title; force=true overrides @cv/ui · playwright · multi-actor-primitives.spec.ts | catalog | missing implementation link | Test |
pipeline-class write with structured actor_id shows up in the cell-origins projection @cv/ui · playwright · multi-actor-primitives.spec.ts | catalog | missing implementation link | Test |
process-request enqueue fires SSE consumer in the browser within ~5s @cv/ui · playwright · multi-actor-primitives.spec.ts | catalog | missing implementation link | Test |
second POST with same opId returns reason=duplicate and does not bump clock @cv/ui · playwright · multi-actor-primitives.spec.ts | catalog | missing implementation link | Test |
solo human on /dashboard stays WS-idle, /cvl opens WS, return to /dashboard closes WS @cv/ui · playwright · multi-actor-primitives.spec.ts | catalog | missing implementation link | Test |
two contexts typing into the same bullet merge both keystroke sets @cv/ui · playwright · multi-actor-primitives.spec.ts | catalog | missing implementation link | Test |
GET /api/notes returns saved content after direct PUT @cv/ui · playwright · notes-persistence.spec.ts | catalog | missing implementation link | Test |
second PUT overwrites first (no append) @cv/ui · playwright · notes-persistence.spec.ts | catalog | missing implementation link | Test |
typed text persists across page reload @cv/ui · playwright · notes-persistence.spec.ts | catalog | missing implementation link | Test |
After AI evaluation fills a cell, the cell shows a provider origin tint; after the user manually edits the cell, the tint clears @cv/ui · playwright · origin-tracking.spec.ts | catalog | missing implementation link | Test |
browser uses stateless P2P signaling when the relay probe fails @cv/ui · playwright · p2p-probe-smoke.spec.ts | catalog | missing implementation link | Test |
records route readiness, request pressure, and CVL preview timing @cv/ui · playwright · perf-smoke.spec.ts | catalog | missing implementation link | Test |
fresh browser context sees a browser-created job via the workspace jobs subdoc @cv/ui · playwright · persistence-snapshot.spec.ts | catalog | missing implementation link | Test |
workspace jobs subdoc contains one row after Add Job, not a REST plus optimistic duplicate @cv/ui · playwright · persistence-snapshot.spec.ts | catalog | missing implementation link | Test |
narrative persists after typing and reloading @cv/ui · playwright · profile-settings-smoke.spec.ts | catalog | missing implementation link | Test |
page loads with 200 and profile title @cv/ui · playwright · profile-settings-smoke.spec.ts | catalog | missing implementation link | Test |
page redirects to /{wsId}/dashboard @cv/ui · playwright · profile-settings-smoke.spec.ts | catalog | missing implementation link | Test |
page title includes CareerVector branding @cv/ui · playwright · profile-settings-smoke.spec.ts | catalog | missing implementation link | Test |
page title is set (not blank) on the settings route before redirect @cv/ui · playwright · profile-settings-smoke.spec.ts | catalog | missing implementation link | Test |
profile nav tab is active when on the profile route @cv/ui · playwright · profile-settings-smoke.spec.ts | catalog | missing implementation link | Test |
save-state indicator shows "Saving..." then "Saved" after typing @cv/ui · playwright · profile-settings-smoke.spec.ts | catalog | missing implementation link | Test |
textarea for narrative profile is visible after loading @cv/ui · playwright · profile-settings-smoke.spec.ts | catalog | missing implementation link | Test |
textarea is a string value (may be pre-seeded) for a fresh workspace @cv/ui · playwright · profile-settings-smoke.spec.ts | catalog | missing implementation link | Test |
cv_profile.replace via /ops persists Node tree end-to-end and renders in the editor @cv/ui · playwright · qa-gate.spec.ts | catalog | missing implementation link | Test |
fresh CVL editor renders controls, sections, and preview surface @cv/ui · playwright · qa-gate.spec.ts | catalog | missing implementation link | Test |
new workspace, LinkedIn URL import, detail panel, and Workspace Intelligence stay coherent @cv/ui · playwright · qa-gate.spec.ts | catalog | missing implementation link | Test |
API-created job appears in an already-open dashboard without reload @cv/ui · playwright · qa-realtime-gate.spec.ts | catalog | missing implementation link | Test |
CV|CL tab is active when on /cv route @cv/ui · playwright · read-only-views-cvl.spec.ts | catalog | missing implementation link | Test |
configuration panes canonicalize back to the CV viewer @cv/ui · playwright · read-only-views-cvl.spec.ts | catalog | missing implementation link | Test |
loads the real CVL viewer instead of the old placeholder @cv/ui · playwright · read-only-views-cvl.spec.ts | catalog | missing implementation link | Test |
nav tabs link to read-only routes (not editor routes) @cv/ui · playwright · read-only-views-cvl.spec.ts | catalog | missing implementation link | Test |
no CVL editing controls are present @cv/ui · playwright · read-only-views-cvl.spec.ts | catalog | missing implementation link | Test |
page loads with 200 and shows read-only title @cv/ui · playwright · read-only-views-cvl.spec.ts | catalog | missing implementation link | Test |
page title contains workspace name @cv/ui · playwright · read-only-views-cvl.spec.ts | catalog | missing implementation link | Test |
read-only badge is visible in the nav @cv/ui · playwright · read-only-views-cvl.spec.ts | catalog | missing implementation link | Test |
route resolves via mirror ID (canonical read-only credential) @cv/ui · playwright · read-only-views-cvl.spec.ts | catalog | missing implementation link | Test |
workspace name is displayed in the header @cv/ui · playwright · read-only-views-cvl.spec.ts | catalog | missing implementation link | Test |
Kanban tab is active when on /kanban route @cv/ui · playwright · read-only-views-kanban.spec.ts | catalog | missing implementation link | Test |
nav tabs all point to /view/ routes @cv/ui · playwright · read-only-views-kanban.spec.ts | catalog | missing implementation link | Test |
no Kanban write controls are present @cv/ui · playwright · read-only-views-kanban.spec.ts | catalog | missing implementation link | Test |
page loads with 200 and shows read-only title @cv/ui · playwright · read-only-views-kanban.spec.ts | catalog | missing implementation link | Test |
page title contains workspace name and read-only marker @cv/ui · playwright · read-only-views-kanban.spec.ts | catalog | missing implementation link | Test |
read-only badge is visible in the nav @cv/ui · playwright · read-only-views-kanban.spec.ts | catalog | missing implementation link | Test |
route context exposes readOnly=true (Svelte context) @cv/ui · playwright · read-only-views-kanban.spec.ts | catalog | missing implementation link | Test |
route resolves via mirror ID @cv/ui · playwright · read-only-views-kanban.spec.ts | catalog | missing implementation link | Test |
workspace name is displayed in the header @cv/ui · playwright · read-only-views-kanban.spec.ts | catalog | missing implementation link | Test |
Dashboard tab is marked as active on /view/[wsId]/dashboard @cv/ui · playwright · read-only-views.spec.ts | catalog | missing implementation link | Test |
add-job button is absent @cv/ui · playwright · read-only-views.spec.ts | catalog | missing implementation link | Test |
clicking Kanban tab navigates to /view/[wsId]/kanban @cv/ui · playwright · read-only-views.spec.ts | catalog | missing implementation link | Test |
cloud-keys modal trigger is absent in read-only mode @cv/ui · playwright · read-only-views.spec.ts | catalog | missing implementation link | Test |
navigation tabs include Dashboard, Kanban, CV | CL @cv/ui · playwright · read-only-views.spec.ts | catalog | missing implementation link | Test |
no write-action toolbar buttons (Evaluate, Extract) are present @cv/ui · playwright · read-only-views.spec.ts | catalog | missing implementation link | Test |
page contains the "Read-Only" badge in navigation shell @cv/ui · playwright · read-only-views.spec.ts | catalog | missing implementation link | Test |
route accepts the mirror ID path segment @cv/ui · playwright · read-only-views.spec.ts | catalog | missing implementation link | Test |
route loads without a 500/404 error boundary @cv/ui · playwright · read-only-views.spec.ts | catalog | missing implementation link | Test |
shows job rows when jobs exist @cv/ui · playwright · read-only-views.spec.ts | catalog | missing implementation link | Test |
workspace name and slug are rendered in the page heading @cv/ui · playwright · read-only-views.spec.ts | catalog | missing implementation link | Test |
navigating /cvl → /dashboard with no peers closes the WS again @cv/ui · playwright · realtime-rule2-lazy-ws.spec.ts | catalog | missing implementation link | Test |
navigating /dashboard → /cvl opens the WS (sensitive surface) @cv/ui · playwright · realtime-rule2-lazy-ws.spec.ts | catalog | missing implementation link | Test |
solo human on /dashboard never opens the WS @cv/ui · playwright · realtime-rule2-lazy-ws.spec.ts | catalog | missing implementation link | Test |
"Create New Workspace" button is visible and enabled @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
"Create New Workspace" button navigates to a new workspace on click @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
URL is rewritten to /dashboard (replaceState — no /settings in browser history) @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
URL is rewritten to /dashboard (replaceState — no history entry for /jobs) @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
a non-existent workspace returns 404 @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
bookmark hint text is visible @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
button shows "Creating..." while the workspace is being created @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
clearing the textarea and saving persists an empty string @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
dashboard is functional after the redirect @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
dashboard loads and job row is visible after the redirect @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
dashboard toolbar (add-job button) is accessible after redirect from /settings @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
description hint text about the profile purpose is visible @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
hero heading "CareerVector" is visible @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
landing page has no console errors on load @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
long content (multi-KB) round-trips through save and reload @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
multiple rapid inputs coalesce into a single save @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
nav link navigates away to dashboard correctly from profile page @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
navigating to /jobs lands on the dashboard @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
navigating to /jobs/[jobId] does not leave /jobs/[jobId] in browser history @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
navigating to /settings from the dashboard and back lands correctly @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
page has title "Jobs - … | CareerVector" before the redirect @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
page loads with 200 and correct title @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
page title is set before the redirect fires @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
profile page does not render a table or job rows (not the dashboard) @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
redirects to /{wsId}/dashboard @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
redirects to /{wsId}/dashboard?job={jobId} @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
save-state is "idle" on initial load (no spurious "Saving..." on cold open) @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
second browser context sees the persisted narrative @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
settings route renders with CareerVector in title regardless of redirect timing @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
status link in footer navigates to /status @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
tagline text is visible @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
textarea has a placeholder hinting at markdown @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
workspace name/slug header is visible after redirect from /settings @cv/ui · playwright · routes-deep.spec.ts | catalog | missing implementation link | Test |
ColumnHeader: drag on resize handle changes column width @cv/ui · playwright · sort-regression.spec.ts | catalog | missing implementation link | Test |
ColumnHeader: resize handle is present on dashboard table columns @cv/ui · playwright · sort-regression.spec.ts | catalog | missing implementation link | Test |
sort: active sort column persists when switching views @cv/ui · playwright · sort-regression.spec.ts | catalog | missing implementation link | Test |
sort: clicking column header cycles through asc → desc → unsorted @cv/ui · playwright · sort-regression.spec.ts | catalog | missing implementation link | Test |
sort: per-group rendering intact (tbody[data-category-id] present) @cv/ui · playwright · sort-regression.spec.ts | catalog | missing implementation link | Test |
sort: sort overrides manual order (sort columns non-empty ↔ manual order ignored) @cv/ui · playwright · sort-regression.spec.ts | catalog | missing implementation link | Test |
sort: title sort reorders jobs within the same group @cv/ui · playwright · sort-regression.spec.ts | catalog | missing implementation link | Test |
does not poll agent presence while closed, but refreshes while open @cv/ui · playwright · status-center-frugality.spec.ts | catalog | missing implementation link | Test |
cleanup is bounded in API calls and wall-clock @cv/ui · playwright · synthetic-workspace-cleanup-budget.spec.ts | catalog | missing implementation link | Test |
cleanup is idempotent (second call reports missing, not throws) @cv/ui · playwright · synthetic-workspace-cleanup-budget.spec.ts | catalog | missing implementation link | Test |
cleanup refuses unrelated workspaces by origin mismatch @cv/ui · playwright · synthetic-workspace-cleanup-budget.spec.ts | catalog | missing implementation link | Test |
tags synthetic workspaces and only cleans up matching origin metadata @cv/ui · playwright · synthetic-workspace-lifecycle.spec.ts | catalog | missing implementation link | Test |
ViewSwitcher renders and at least one view is selectable @cv/ui · playwright · views-group-reorder.spec.ts | catalog | missing implementation link | Test |
Views modal closes on Escape @cv/ui · playwright · views-group-reorder.spec.ts | catalog | missing implementation link | Test |
Views modal opens and shows the view list @cv/ui · playwright · views-group-reorder.spec.ts | catalog | missing implementation link | Test |
category bars render and at least one is visible @cv/ui · playwright · views-group-reorder.spec.ts | catalog | missing implementation link | Test |
category pointer-drag does not crash the dashboard @cv/ui · playwright · views-group-reorder.spec.ts | catalog | missing implementation link | Test |
switching views changes the active view state @cv/ui · playwright · views-group-reorder.spec.ts | catalog | missing implementation link | Test |
A job that changes status moves to the matching view group without a page reload @cv/ui · playwright · views.spec.ts | catalog | missing implementation link | Test |
LinkedIn fixture jobs become useful durable job objects @cv/ui · playwright · workspace-intelligence-audit.spec.ts | catalog | missing implementation link | Test |
API tells the truth about mixed-quality jobs, repairs, and command eligibility @cv/ui · playwright · workspace-intelligence-deep.spec.ts | catalog | missing implementation link | Test |
add-job modal validates input and the dashboard row stays meaningful before extraction @cv/ui · playwright · workspace-intelligence-deep.spec.ts | catalog | missing implementation link | Test |
does not poll intelligence while closed, but refreshes while open @cv/ui · playwright · workspace-intelligence-deep.spec.ts | catalog | missing implementation link | Test |
panel exposes stage quality, broken URL jobs, repair actions, and queue output at 1366x1024 @cv/ui · playwright · workspace-intelligence-deep.spec.ts | catalog | missing implementation link | Test |