✔ old business response is discarded when the active membership changes (4.244708ms) ✔ private calls carry business context but session discovery can detect another-tab switch (0.158458ms) ✔ failed write retains retry id, while an account switch clears it (3.860917ms) ✔ portal requests are independent of staff context changes (0.1355ms) ✔ private image response is discarded across an account switch (4.892417ms) ✔ private image lease is revoked on context change and release is idempotent (1.619584ms) ✔ staff switch does not revoke a customer portal image (0.283084ms) ✔ upload retry identity includes bytes, not just endpoint (11.451667ms) ✔ opening another preview does not announce an account switch; login does (3.708292ms) ✔ private PDF arriving after a customer session switch is discarded before download (0.37875ms) ✔ private PDF uses business context and only downloads confirmed PDF responses (31.29675ms) ✔ Week and day navigation cross months, years and UK clocks without shifting dates (9.84675ms) ✔ Midnight endings are exclusive while all-day end dates are inclusive (0.187042ms) ✔ Repeated UK hour shows distinguishable summer and winter clock labels (38.172041ms) ✔ fractional lines round half up in integer pence before subtotal and VAT (0.628583ms) ✔ percentage deposit rounds half up and leaves the exact remaining pence (1.367708ms) ✔ invalid deposit percentages and sub-penny deposits are rejected (0.897666ms) ✔ stage editing cannot silently drop or add a penny (0.345ms) ✔ public permission defaults to no projection and no rating (1.543042ms) ✔ approved statement retains exact customer text (0.120958ms) ✔ approval requires explicit boolean and nonempty exact fields (0.632625ms) ✔ projection bounds are enforced (0.1845ms) ✔ unconfirmed response does not produce a payload (0.37425ms) ✔ response keeps private answers separate from optional publication (0.227292ms) ✔ all four ratings and recommendation require a deliberate valid choice (0.30025ms) ✔ publication uses the exact current approved preview hash and version (0.183625ms) ✔ the repeated autumn hour requires the selected actual offset (49.956875ms) ✔ spring clock gap and seasonally incorrect offsets are rejected (1.228292ms) ✔ London date and intervals remain the same on a computer in another timezone (1.047417ms) ✔ incomplete, reversed and zero-duration correction inputs are rejected before saving (0.780916ms) ✔ customer price starts blank and no private source details become a document line (0.283208ms) ✔ timer display permits long captures but never negative elapsed time (0.081ms) ✔ quoted commas, multiline text, escaped quotes, CRLF and blank lines (0.925292ms) ✔ auto mapping and preview require explicit valid prices; no NaN/default repairs (0.577ms) ✔ column mapping, row limits, reviewed price overrides and invalid costs (0.660083ms) ✔ reopened saved rows and reordered object fields are clean (0.769125ms) ✔ equivalent valid price and quantity spellings do not create unsaved changes (0.5965ms) ✔ every catalogue edit is protected and reverting to saved values is clean (0.147625ms) ✔ blank optional prices, zero and invalid numeric input remain distinct (0.408667ms) ✔ job selection, purchasing dates, notes and applied previous-price values are protected (0.147459ms) ✔ supplier reference edits, additions and removals are protected (0.479167ms) ✔ catalogue selection and CSV mapping or programmatic overrides are protected (0.140542ms) ✔ a persisted changed price becomes a clean reopened baseline (0.064916ms) ✔ comparison pairs render before then after without changing stored order (0.786541ms) ✔ reorder preserves identity and bounds (0.101542ms) ✔ public drafts and selected photos start with fresh public text (1.849375ms) ✔ response binds to displayed version and saved snapshot with deliberate confirmation (2.058042ms) ✔ expired quote cannot produce a response payload (0.08ms) ✔ superseded quote cannot produce a response payload (0.538875ms) ✔ draft quote cannot produce a response payload (0.04775ms) ✔ already accepted quote cannot produce a response payload (0.046875ms) ✔ declined quote cannot produce a response payload (0.036375ms) ✔ missing snapshot review is rejected (0.080167ms) ✔ PDF links remain private and scoped to exact document or stage (0.266541ms) ✔ portal 401 clears private context and image leases, rejects old work and preserves staff access (10.134ms) ✔ public credential errors and another customer document 404 do not end a valid portal context (5.0735ms) ✔ focus, visibility and visible periodic checks preserve a valid context without resetting forms (3.11725ms) ✔ owner revoke, reissue, contact update and legacy rotation revalidate without blindly signing out (1.736583ms) ✔ another-tab access notice checks the active account and clears it only when validation fails (1.096209ms) ✔ customer identity changes clear old content even if the browser cookie now authenticates successfully (1.108708ms) ✔ business identity changes clear old content even if the browser cookie now authenticates successfully (1.629625ms) ✔ unreachable validation fails closed and overlapping focus checks coalesce (1.448875ms) ✔ validation deadline clears content and a late successful response cannot restore it (0.858625ms) ✔ stopping a watcher removes its deadline and ignores a late successful identity result (0.602042ms) ✔ apiImage clears current portal content on 401 but an old response cannot clear a newer session (1.282125ms) ✔ downloadPrivate clears current portal content on 401 but an old response cannot clear a newer session (1.317083ms) ✔ switching between week and month rules keeps valid explicit choices (2.272042ms) ✔ all-day conversion clears incompatible clock inputs (0.221208ms) ✔ single visit proposal retains original identity and requires fresh acknowledgement (0.168125ms) ✔ booking edits send booleans and exclude server and history fields (0.188708ms) ✔ suggested window is inclusive and bounded through DST (0.165459ms) ✔ month views include leap days and cross-year navigation (0.302542ms) ✔ range rejects reversed or over-62-day windows (0.170209ms) ✔ weekly windows and DST remain London calendar dates (0.080458ms) ✔ excluded placeholder can propose a reviewed single-date override without assuming a booking (0.112167ms) ✔ reordering is bounded, preserves identities and leaves the saved array untouched (1.816459ms) ✔ new page starts unpublished with independent editable content (3.258542ms) ✔ page and service routes resolve exactly and links retain the business prefix (0.160167ms) ✔ light and dark branding retain a contrasting button text colour (0.095167ms) ✔ ready reviews exclude closed, snoozed and ineligible history (0.526333ms) ✔ snooze expiry uses the server effective state (0.085458ms) ✔ only preparation writes a draft and only snooze writes its date (0.086959ms) ✔ review confirmation is not inferred from a filled draft (0.438083ms) ✔ tag input retains duplicates for server validation (0.369834ms) ✔ all established workspace labels remain reachable alongside new sections (0.072667ms) ℹ tests 85 ℹ suites 0 ℹ pass 85 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 239.860666