← Back to suites
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.

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