f0888b6b823d6f55971c0a4585e3404f65e4bc78
Added a Playwright e2e scenario in
`artifacts/tx-os/tests/executive-meetings-schedule-features.spec.mjs`
that exercises the optimistic-update + onError rollback path in
`reorderRows()` (artifacts/tx-os/src/pages/executive-meetings.tsx ~L1484).
What the test does:
- Seeds two meetings (A, B) on a unique future date via direct DB inserts.
- Logs in as admin, navigates to /executive-meetings, jumps to that date,
enables edit mode.
- Captures the original DOM order [A, B].
- Installs a `page.route("**/api/executive-meetings/reorder")` override
that responds with 500 + `{ error: "Simulated reorder failure" }`. The
`error` field (not `message`) is intentional so apiJson() throws that
exact string into the destructive toast description.
- Drags row B above row A using the same mechanic as the success-path
reorder test (warm-up move past dnd-kit's 6px PointerSensor activation
distance, then a stepped move targeting just above the row's vertical
center).
- Waits for the intercepted 500, then asserts the toast description
("Simulated reorder failure") and a localized title (en or ar) is
visible — proving the user-facing error surfaced.
- Polls the DOM to confirm the row order rolled back to [A, B].
- Defense-in-depth: queries the DB to confirm daily_number / start_time /
end_time for both rows are unchanged, so a future regression that
somehow bypasses the route override can't hide.
- Cleans up: page.unroute, and the existing afterAll deletes the seeded
rows.
Test seeding:
- Uses uniqueFutureDate(6); offsets 1..5 are already claimed by other
tests in this file, and the file-level afterAll cleanup means two
tests sharing date + daily_number would collide on the
UNIQUE (meeting_date, daily_number) index.
Verified by running:
npx playwright test --grep "rolls back to the original order"
and the prior success-path drag test together — both pass.
No production code changes; this is a pure test addition.
Replit-Task-Id: 02cfe898-1db8-40e9-ba6b-cd5df9f0a3f4
Description
No description provided
Languages
TypeScript
69.4%
JavaScript
29%
CSS
0.6%
Shell
0.6%
Dockerfile
0.2%
Other
0.2%