4.7 KiB
4.7 KiB
S07: Daily-loop UAT artifact closure — UAT
Milestone: M001 Written: 2026-03-27T08:59:47.615Z
S07 UAT — Daily-loop UAT artifact closure
Preconditions
- Local API is running at
http://localhost:5202and UI is running athttp://localhost:3000. - The S06 acceptance fixture can be seeded via
bash scripts/s06-acceptance-run.sh. - Seeded job identity exists after rerun:
S06 Acceptance Labs/S06 Acceptance Backend Engineer. - Browser session can reach the authenticated localhost UI used by the S06 acceptance flow.
Test Case 1 — /jobs anchors the seeded daily-loop job
- Run
bash scripts/s06-preflight.sh.- Expected: script reaches
/api/auth/config; auth-limited partial pass is acceptable, but API reachability must succeed.
- Expected: script reaches
- Run
bash scripts/s06-acceptance-run.sh.- Expected:
docs/s06-acceptance-run.mdis refreshed and reports overall runner resultpass.
- Expected:
- Open
/jobsin the authenticated UI session.- Expected: the table contains
S06 Acceptance Labs • S06 Acceptance Backend Engineer.
- Expected: the table contains
- Inspect the seeded row state.
- Expected: the row shows
Follow up,CV ready, andWaitingbadges.
- Expected: the row shows
- Open the row’s workspace entry.
- Expected: the real job workspace opens for the same seeded job, not a disconnected placeholder.
Test Case 2 — Workspace preserves the same job identity and real seeded content
- From the seeded workspace, inspect the tailored CV area.
- Expected: saved tailored CV content is present and begins with
Saved acceptance tailored CV highlighting ASP.NET Core delivery, workflow trust signals....
- Expected: saved tailored CV content is present and begins with
- Switch to the correspondence view.
- Expected: the seeded recruiter-thread message
Backend Engineer follow-upis visible for the same job.
- Expected: the seeded recruiter-thread message
- Record Gmail continuity status honestly.
- Expected: if a linked-thread continuity banner/refresh signal is visible, capture it explicitly; if not, record Gmail continuity as not proven in this run rather than marking it passed.
Test Case 3 — /reminders and /dashboard reflect the same seeded state
- Navigate to
/reminders.- Expected: the seeded job appears under
Needs Follow-up.
- Expected: the seeded job appears under
- Inspect reminder state.
- Expected:
Follow up,Waiting 14d, andFollow-up: 10/03/2026are all visible for the seeded job.
- Expected:
- Navigate to
/dashboard.- Expected: dashboard counters show
Active applications = 2,Applied (30 days) = 2, andResponses logged = 1.
- Expected: dashboard counters show
- Inspect company activity.
- Expected:
Top companies by activityincludesS06 Acceptance Labs.
- Expected:
- Reload
/dashboardafter clearing diagnostics.- Expected: no browser console errors and no failed network requests are observed in the clean dashboard pass.
Test Case 4 — Follow-up drafting stays on the manual side of the boundary
- Open the seeded job workspace follow-up draft area.
- Expected: separate
Copy DraftandSend And Log Emailcontrols are visible.
- Expected: separate
- Verify draft retrieval without sending.
- Expected: the live draft content is present in the workspace; if the tab does not emit a fresh captured request, confirm
GET /api/jobapplications/3/followup-draftsucceeds from the authenticated browser context.
- Expected: the live draft content is present in the workspace; if the tab does not emit a fresh captured request, confirm
- Observe browser/network activity during passive draft review.
- Expected: no
POST /api/jobapplications/3/send-followuprequest occurs unless the explicit send action is clicked.
- Expected: no
- Record the outcome.
- Expected: UAT notes state that the system prepared the draft but did not auto-send email.
Test Case 5 — Deterministic regression guardrail for closure
- Run
CI=true npm --prefix job-tracker-ui test -- --runInBand --watch=false src/daily-control-loop.test.tsx src/workflow-trust-signals.test.tsx.- Expected: both suites pass (
2 passed, 2 total) and all six tests pass.
- Expected: both suites pass (
- Confirm
docs/s07-uat.mdcontains aUI regression resultssection.- Expected: the doc records the command, pass result, and the rule that closure must not be claimed if this regression pair fails on rerun.
Edge Cases / Failure Handling
- If
scripts/s06-preflight.shcannot reachhttp://localhost:5202/api, stop and recover the local API before claiming closure. - If
scripts/s06-acceptance-run.shfails to seed/update the fixture or reports a non-pass result, do not claim S07 closure; capture the runner logs and fix the blocker first. - If the focused UI regression command fails with
react-scripts: not found, runnpm --prefix job-tracker-ui installand retry before treating the slice as regressed. - If the seeded job is visible but Gmail-linked continuity is not, record that as a limitation; do not silently convert seeded correspondence visibility into a Gmail-sync pass.
- If any passive browser observation shows a
send-followupPOST without the explicit send action, treat it as a blocker against R008 and fail the UAT closure.