← Back to suites
agent-api-parity-e2e zero-budget semantic-index

Agent API parity (E2E)

Prove the API surface that agents and headless MCP tools rely on stays in step with the browser pipeline: the parity smoke spec exercises every documented op against /api/workspaces, the cutover spec walks an imported legacy workspace, the job-ad role boundary spec pins the public/role split, and the human-cooperation spec confirms agent writes do not race or shadow human edits.

Behaviours 0 Tests 45 Graph 46 nodes · 45 edges Runner - CircleCI - Source qa/suites/agent-api-parity-e2e.yaml

Test witnesses

These tests belong to the suite. Missing implementation links stay visible until a code-backed graph claim records them.

TestStatusImplementationOpen
Creating a job via the REST API produces the same dashboard state as creating via the GUI — job appears on the dashboard, pipeline auto-advances identically
@cv/ui · playwright · agent-api-parity.spec.ts
catalogmissing implementation linkTest
Tailoring a job via the REST API produces a tailored_cv indistinguishable from one produced by clicking "Tailor CV" in the GUI
@cv/ui · playwright · agent-api-parity.spec.ts
catalogmissing implementation linkTest
agent queues, claims, and completes a rerun request through the shared process API
@cv/ui · playwright · agent-process-observability.spec.ts
catalogmissing implementation linkTest
presence endpoints reject unknown workspaces instead of creating orphan rows
@cv/ui · playwright · agent-process-observability.spec.ts
catalogmissing implementation linkTest
presence heartbeats resolve slugs and mirrors to the source workspace
@cv/ui · playwright · agent-process-observability.spec.ts
catalogmissing implementation linkTest
Submitting a cv_profile.replace op via REST reflects in any open human GUI tab within 2 seconds
@cv/ui · playwright · api-cv-quarry-sync.spec.ts
catalogmissing implementation linkTest
GET /api/keys returns key status shape for a workspace
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
GET /api/notes returns 404 for unknown workspace
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
GET returns { notes: string } for a workspace
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
POST /api/ai-usage records a usage entry
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
PUT /api/notes returns 400 when notes field is missing
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
PUT persists and GET retrieves the saved notes (round-trip)
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
PUT with workspace_id in body (no query param) also works
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
accepts a nanoid-style job_id without 400 integer-validation error
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
chain_overrides is present (not undefined) in every job seed object
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
each iceServer entry (if any) has a urls array
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
returns 200 with address fields for a valid workspace (graceful no-key)
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
returns 200 with an array for a valid workspace
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
returns 200 with entries array for group=recent
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
returns 200 with iceServers array
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
returns 200 with stats array for group=day
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
returns 200 with stats array for group=function
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
returns 200 with stats array for group=provider
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
returns 200 with summary counter shape
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
returns 200 with { success: false } for an obviously invalid API key
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
returns 400 when required fields are missing
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
returns 400 when service and apiKey are both missing
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
returns 400 when url parameter is missing
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
returns 400 when workspace parameter is missing
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
returns 404 for an unknown workspace
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
returns 404 when workspace_id does not exist
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
returns { exists: false } for a URL not in the workspace
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
returns { exists: false } for an unknown workspace (v1 permissive behavior)
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
returns { exists: true, title } for a URL that is in the workspace
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
tailored_cl is present (not undefined) in every job seed object
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
tailored_cv is present (not undefined) in every job seed object
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
when TURN not configured, returns available=false with empty iceServers
@cv/ui · playwright · api-smoke.spec.ts
catalogmissing implementation linkTest
forked migrated workspace supports jobs, CVL, dashboard, and export
@cv/ui · playwright · cutover-migrated-workspace.spec.ts
catalogmissing implementation linkTest
uses an explicit migrated workspace selector contract
@cv/ui · playwright · cutover-migrated-workspace.spec.ts
catalogmissing implementation linkTest
workspace job create exposes only public job data across sub-doc and /jobs
@cv/ui · playwright · job-ad-role-public-boundary.spec.ts
catalogmissing implementation linkTest
workspace system facts reach jobcache without public id leakage
@cv/ui · playwright · job-ad-role-public-boundary.spec.ts
catalogmissing implementation linkTest
API-created job renders in the dashboard and stale status-only updates do not clobber fields
@cv/ui · playwright · job-api-human-cooperation.spec.ts
catalogmissing implementation linkTest
dashboard Enter on the last row creates a REST-backed integer job
@cv/ui · playwright · job-api-human-cooperation.spec.ts
catalogmissing implementation linkTest
job creation normalizes LinkedIn wrapper URLs and is idempotent by normalized URL
@cv/ui · playwright · job-api-human-cooperation.spec.ts
catalogmissing implementation linkTest
read-only mirrors reject job create, patch, and delete mutations
@cv/ui · playwright · job-api-human-cooperation.spec.ts
catalogmissing implementation linkTest