✔ 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
