✔ old business response is discarded when the active membership changes (2.209084ms) ✔ private calls carry business context but session discovery can detect another-tab switch (0.161125ms) ✔ failed write retains retry id, while an account switch clears it (3.938166ms) ✔ portal requests are independent of staff context changes (0.210291ms) ✔ private image response is discarded across an account switch (1.525292ms) ✔ private image lease is revoked on context change and release is idempotent (0.686625ms) ✔ staff switch does not revoke a customer portal image (0.150541ms) ✔ upload retry identity includes bytes, not just endpoint (3.171708ms) ✔ opening another preview does not announce an account switch; login does (1.023792ms) ✔ Week and day navigation cross months, years and UK clocks without shifting dates (4.996791ms) ✔ Midnight endings are exclusive while all-day end dates are inclusive (0.104125ms) ✔ Repeated UK hour shows distinguishable summer and winter clock labels (24.199334ms) ✔ fractional lines round half up in integer pence before subtotal and VAT (0.545084ms) ✔ percentage deposit rounds half up and leaves the exact remaining pence (0.422291ms) ✔ invalid deposit percentages and sub-penny deposits are rejected (0.680584ms) ✔ stage editing cannot silently drop or add a penny (0.118958ms) ✔ quoted commas, multiline text, escaped quotes, CRLF and blank lines (0.867583ms) ✔ auto mapping and preview require explicit valid prices; no NaN/default repairs (0.348167ms) ✔ column mapping, row limits, reviewed price overrides and invalid costs (0.672459ms) ✔ comparison pairs render before then after without changing stored order (1.091084ms) ✔ reorder preserves identity and bounds (0.129958ms) ✔ public drafts and selected photos start with fresh public text (4.097541ms) ✔ reordering is bounded, preserves identities and leaves the saved array untouched (0.739833ms) ✔ new page starts unpublished with independent editable content (2.705375ms) ✔ page and service routes resolve exactly and links retain the business prefix (0.324416ms) ✔ light and dark branding retain a contrasting button text colour (0.216542ms) ℹ tests 26 ℹ suites 0 ℹ pass 26 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 84.335333