Establishes the behavior-parity safety net required before migrating the POS
Sales Summary edit modal off the wizard (the modal had zero test coverage and the
test server seeded no POS data).
- test_server.clj: seed a balanced sales summary ($500 credit = $500 debit) with
two auto items referencing the existing test client + accounts; surface its id
via /test-info (`salesSummaryId`).
- e2e/sales-summary-edit.spec.ts: characterization spec (6 tests) capturing current
behavior — open modal (debit/credit columns, categories, resolved account names,
amounts), balanced state, inline account editor (pencil -> typeahead editor ->
cancel restores / save re-renders the cell), and Save (PUT round-trip closes the
modal + keeps the grid row). Exercises the edit-wizard, edit/save/cancel-item-account,
and edit-wizard-submit routes.
Notable finding: the "New Summary Item" button is currently BROKEN (its Alpine
handler throws "newRowIndex is not defined" and hx-target="closest .new-row"
matches no ancestor, so the new-summary-item route never fires). The spec documents
this as inert rather than asserting it works; the migration will decide fix-vs-preserve.
Full Playwright suite 45/45 (39 prior + 6 new).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>