65 lines
2.8 KiB
Markdown
65 lines
2.8 KiB
Markdown
<!-- Keep under ~2K tokens. Old handoffs live in SESSION_LOG.md. Do not let this file accumulate history. -->
|
|
|
|
# HANDOFF.md
|
|
|
|
**Last updated:** 2026-04-25 16:41 EDT
|
|
|
|
**Active task:** Land PR #150 (the consolidated CI-recovery PR), then enable backend and eventually e2e gates on `main`. See [CURRENT_TASK.md](CURRENT_TASK.md).
|
|
|
|
**Branch:** `fix/ci-workflow-config` -> PR #150. PRs #151 and #152 were closed and consolidated into this branch.
|
|
|
|
## Current resume point
|
|
|
|
Latest PR #150 CI had backend and frontend green, but `CI / e2e (pull_request)` failed on the resume smoke test.
|
|
|
|
The failure was not product behavior. Playwright was using:
|
|
|
|
```ts
|
|
page.locator('.bg-card').filter({ hasText: tree.name }).first()
|
|
```
|
|
|
|
On the session history page this matched the tree filter `<select>` first because the select options contain the same flow name, then the test waited forever for a `Resume` button inside the select.
|
|
|
|
This session fixed that properly by adding stable test IDs to repeated cards and moving e2e tests off `.bg-card` selectors:
|
|
|
|
- `flow-session-card` in `SessionHistoryPage.tsx`
|
|
- `tree-card` in `TreeGridView.tsx` and `TreeListView.tsx`
|
|
- `share-card` in `MySharesPage.tsx`
|
|
|
|
The workflow was also hardened:
|
|
|
|
- Postgres service healthchecks now run `pg_isready -U postgres` instead of checking as `root`.
|
|
- The e2e frontend build now bakes `VITE_API_URL="${PLAYWRIGHT_API_ORIGIN}"`, matching the Playwright backend origin.
|
|
|
|
## Verification completed
|
|
|
|
- `git diff --check`
|
|
- Confirmed no remaining `.bg-card` selectors in `frontend/e2e/*.ts`.
|
|
- `docker exec -w /app resolutionflow_frontend npm run build`
|
|
- Ran migrations and test-user seed in the dev backend container.
|
|
- Focused Playwright verification in an Actions-like Ubuntu container:
|
|
- First `e2e/resume.spec.ts` passed.
|
|
- Then `e2e/history.spec.ts e2e/library.spec.ts e2e/library-start.spec.ts e2e/resume.spec.ts e2e/shares.spec.ts --project=chromium --workers=1` passed: `6 passed (1.3m)`.
|
|
|
|
## Immediate next steps
|
|
|
|
1. Push the WIP commit from this session to PR #150.
|
|
2. Watch PR #150 CI on the new SHA. Expected result: backend, frontend, and e2e all green.
|
|
3. Merge PR #150 when green.
|
|
4. Enable `CI / backend (pull_request)` as a required status check on `main`.
|
|
5. After at least one reliable green PR run, consider adding `CI / e2e (pull_request)` as required too.
|
|
|
|
## Branch protection on main (current)
|
|
|
|
- PR-only merges
|
|
- `CI / frontend (pull_request)` required
|
|
- Force-push blocked
|
|
- No review required (solo)
|
|
|
|
## Useful breadcrumbs
|
|
|
|
- `.gitea/workflows/ci.yml` contains the parallel backend/frontend/e2e workflow.
|
|
- `backend/scripts/seed_phase9_qa_fixtures.py` pre-bakes Phase 9 QA fixtures.
|
|
- `.gstack/qa-reports/phase9-20260424-232700/REPORT.md` has the FlowPilot QA report.
|
|
- Per-worker test DBs accumulate on the Postgres service. Cheap to leave around; cleanup if needed.
|