✔ old business response is discarded when the active membership changes (2.852125ms)
✔ private calls carry business context but session discovery can detect another-tab switch (0.318083ms)
✔ failed write retains retry id, while an account switch clears it (7.562958ms)
✔ portal requests are independent of staff context changes (0.804917ms)
✔ private image response is discarded across an account switch (1.150625ms)
✔ private image lease is revoked on context change and release is idempotent (1.006458ms)
✔ staff switch does not revoke a customer portal image (0.57125ms)
✔ upload retry identity includes bytes, not just endpoint (8.974292ms)
✔ opening another preview does not announce an account switch; login does (1.306125ms)
✔ private PDF arriving after a customer session switch is discarded before download (0.652292ms)
✔ private PDF uses business context and only downloads confirmed PDF responses (31.787208ms)
✔ Week and day navigation cross months, years and UK clocks without shifting dates (7.374916ms)
✔ Midnight endings are exclusive while all-day end dates are inclusive (0.121542ms)
✔ Repeated UK hour shows distinguishable summer and winter clock labels (47.549584ms)
✔ fractional lines round half up in integer pence before subtotal and VAT (0.969666ms)
✔ percentage deposit rounds half up and leaves the exact remaining pence (1.999875ms)
✔ invalid deposit percentages and sub-penny deposits are rejected (0.718417ms)
✔ stage editing cannot silently drop or add a penny (0.136667ms)
✔ the repeated autumn hour requires the selected actual offset (57.8785ms)
✔ spring clock gap and seasonally incorrect offsets are rejected (1.29975ms)
✔ London date and intervals remain the same on a computer in another timezone (0.741167ms)
✔ incomplete, reversed and zero-duration correction inputs are rejected before saving (1.026417ms)
✔ customer price starts blank and no private source details become a document line (0.095959ms)
✔ timer display permits long captures but never negative elapsed time (0.079416ms)
✔ quoted commas, multiline text, escaped quotes, CRLF and blank lines (1.22175ms)
✔ auto mapping and preview require explicit valid prices; no NaN/default repairs (0.647209ms)
✔ column mapping, row limits, reviewed price overrides and invalid costs (0.887959ms)
✔ comparison pairs render before then after without changing stored order (0.863541ms)
✔ reorder preserves identity and bounds (0.179125ms)
✔ public drafts and selected photos start with fresh public text (5.311ms)
✔ response binds to displayed version and saved snapshot with deliberate confirmation (2.599625ms)
✔ expired quote cannot produce a response payload (0.258666ms)
✔ superseded quote cannot produce a response payload (0.951625ms)
✔ draft quote cannot produce a response payload (0.0735ms)
✔ already accepted quote cannot produce a response payload (0.053125ms)
✔ declined quote cannot produce a response payload (0.039209ms)
✔ missing snapshot review is rejected (0.082792ms)
✔ PDF links remain private and scoped to exact document or stage (0.078709ms)
✔ switching between week and month rules keeps valid explicit choices (1.575917ms)
✔ all-day conversion clears incompatible clock inputs (0.087708ms)
✔ single visit proposal retains original identity and requires fresh acknowledgement (0.068459ms)
✔ booking edits send booleans and exclude server and history fields (0.083125ms)
✔ suggested window is inclusive and bounded through DST (0.075ms)
✔ month views include leap days and cross-year navigation (0.152ms)
✔ range rejects reversed or over-62-day windows (0.099167ms)
✔ weekly windows and DST remain London calendar dates (0.195625ms)
✔ excluded placeholder can propose a reviewed single-date override without assuming a booking (0.105458ms)
✔ reordering is bounded, preserves identities and leaves the saved array untouched (1.131667ms)
✔ new page starts unpublished with independent editable content (1.993041ms)
✔ page and service routes resolve exactly and links retain the business prefix (0.100167ms)
✔ light and dark branding retain a contrasting button text colour (0.089958ms)
ℹ tests 51
ℹ suites 0
ℹ pass 51
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 145.843959
