PatientMD test report

2026-09-18 20:46:59 UTC · branch ? at ? · ran on Mac155.local · triggered by console:Mac155

deployable tree 82706e95a3e0 · 3,681 files — a deploy is gated on matching this exactly

passed run 20260918T204659Z-be15c1f4
Tests run
2,749
across 1 tier(s)
Passed
2,749
100.0% of those run
Failed
0
assertions that were evaluated and did not hold
Could not run
0
never reached an assertion
Skipped
0
deliberately not executed
Wall clock
30.4 s
whole run

Tiers

Backend · unit

Pure in-process tests — no database. These use the repo's `_FakeDB` or call functions directly, so they prove logic, not wiring.

Not selected for this run.
not run

Backend · integration

Tests that drive the mounted FastAPI app against a real Mongo. These are the ones that prove a route exists, is reachable, and is authorised — the class of defect unit tests have repeatedly passed straight through.

Not selected for this run.
not run

Frontend · unit

Node's built-in runner over the pure logic extracted into `lib/`. Fast and exhaustive over what it sees; it does not render a component or touch a route.

2,749 tests · 2,749 passed · 30.0 s

passed

Frontend · component

Renders real React components and asserts on the produced markup — the tier that can catch a screen that never reaches its data or an overlay that is not a dialog.

Not selected for this run.
not run

End-to-end · Playwright

Drives a real browser against a running frontend and backend. Opt-in: it needs both servers up, and a tier that cannot reach them is reported as an error, never as a pass.

Not selected for this run.
not run

Compare · browser smoke on DEMO

Three walks of the monitoring script replayed against DEMO in real Chrome with the SAME walks/facts/mask code the nightly production comparison uses. A DOM change that breaks capture fails the gate here, not the night. DEMO only: a write step may execute there and never in production.

Not selected for this run.
not run

Harness · self-test

The harness's own tests: the report model, the coverage ratchet, the console's queue and session, and the deploy gate. This tier exists because the gate now decides whether a deploy may happen — a broken gate would ship untested code and report success.

Not selected for this run.
not run

Static analysis

ruff, mypy and the TypeScript compiler — findings that need no test to run.

Not selected for this run.
not run

Coverage

Frontend · unit
99.26%

35,384 of 35,648 statements · branches 89.0%. The vertical rule marks the 90% target.

Read this percentage with its scope. This runner measures only the files a test imported — an untested module is absent from the denominator rather than scored 0%, so this number cannot fall when untested code is added. File reach is the honest headline: 196 of 798 source files reached (25%).

API surface reached

No route measurement in this run — the backend tier did not execute, so nothing can be said about which endpoints are exercised.

Coverage over time

0%25%50%75%100%target 90%Backend 75%

Each point is one harness run, oldest at the left. Series are direct-labelled, so identity never rests on colour alone.

Failures and tests that could not run

No test failed and none errored. Note that this is a statement about the tiers that ran — check the tier list above for any marked “could not run”.

All tests

Show every test in this run (2,749)
TestOutcomeTimeTier
lib/a11y-structure.test.ts::the scan finds the pages — otherwise everything below passes vacuouslypassed102 msFrontend · unit
lib/a11y-structure.test.ts::the dashboard offers a skip link to a real targetpassed1 msFrontend · unit
lib/a11y-structure.test.ts::the skip link is reachable by keyboard but not visible by defaultpassed1 msFrontend · unit
lib/a11y-structure.test.ts::every navigation landmark is namedpassed1 msFrontend · unit
lib/a11y-structure.test.ts::no page renders a select with neither a label nor an aria-labelpassed1784 msFrontend · unit
lib/a11y-structure.test.ts::the unlabelled-select allow-list has no stale entriespassed1803 msFrontend · unit
lib/a11y-structure.test.ts::every select in the app has an accessible namepassed0 msFrontend · unit
lib/a11y-structure.test.ts::the select scanner actually finds selectspassed1716 msFrontend · unit
lib/a11y-structure.test.ts::a rendered failure banner is announced, not just colouredpassed1751 msFrontend · unit
lib/a11y-structure.test.ts::the shared error banner really is an alert, not a polite statuspassed1 msFrontend · unit
lib/a11y-structure.test.ts::an error empty state really is an alert, and an ordinary one is notpassed0 msFrontend · unit
lib/a11y-structure.test.ts::no page hangs a click handler on a plain div or spanpassed1609 msFrontend · unit
lib/a11y-structure.test.ts::the clickable-non-control list has no stale entriespassed1452 msFrontend · unit
lib/a11y-structure.test.ts::no form control draws its boundary with the decorative border tokenpassed718 msFrontend · unit
lib/a11y-structure.test.ts::the form-control border scanner actually finds controlspassed660 msFrontend · unit
lib/a11y-structure.test.ts::the comment stripper leaves comment-like text inside strings alonepassed0 msFrontend · unit
lib/a11y-structure.test.ts::the comment stripper removes both comment formspassed0 msFrontend · unit
lib/a11y-structure.test.ts::the comment stripper keeps a comment marker inside a template literalpassed0 msFrontend · unit
lib/a11y-structure.test.ts::an escaped quote does not end the stringpassed0 msFrontend · unit
lib/a11y-structure.test.ts::every form control has a programmatic accessible namepassed777 msFrontend · unit
lib/a11y-structure.test.ts::the unnamed-control allow-list has no stale entriespassed777 msFrontend · unit
lib/a11y-structure.test.ts::a placeholder is not accepted as an accessible namepassed0 msFrontend · unit
lib/a11y-structure.test.ts::the control-border guard still catches the decorative token alonepassed0 msFrontend · unit
lib/a11y-structure.test.ts::a repeated row action names the row it acts onpassed60 msFrontend · unit
lib/a11y-structure.test.ts::the bare-row-action allow-list has no stale entriespassed56 msFrontend · unit
lib/a11y-structure.test.ts::the row-action scanner does not flag a table headingpassed0 msFrontend · unit
lib/access-labels.test.ts::every realm has a labelpassed8 msFrontend · unit
lib/access-labels.test.ts::no label is blankpassed1 msFrontend · unit
lib/access-labels.test.ts::BREP is named, and named as staff rather than as a patientpassed1 msFrontend · unit
lib/account-kinds.test.ts::the console does not offer to create a platform adminpassed3 msFrontend · unit
lib/account-kinds.test.ts::no option names a raw hanTypepassed2 msFrontend · unit
lib/account-kinds.test.ts::every option explains what the account can dopassed1 msFrontend · unit
lib/account-kinds.test.ts::email is normalised the same way the server normalises itpassed1 msFrontend · unit
lib/account-kinds.test.ts::a clinician account asks for the role that decides billingpassed0 msFrontend · unit
lib/account-kinds.test.ts::the form states one reason at a time, in filling orderpassed1 msFrontend · unit
lib/account-kinds.test.ts::a kind the console cannot create is refused before it is sentpassed0 msFrontend · unit
lib/account-kinds.test.ts::a reused account is never reported as createdpassed1 msFrontend · unit
lib/account-kinds.test.ts::an account created without its invite says sopassed0 msFrontend · unit
lib/account-kinds.test.ts::the happy path is the only outcome that claims the invite wentpassed2 msFrontend · unit
lib/account-kinds.test.ts::a response that created nothing is not dressed up as progresspassed0 msFrontend · unit
lib/account-kinds.test.ts::kindLabel never renders an internal token to a userpassed0 msFrontend · unit
lib/account-type.test.ts::every spelling of an account type resolves the same waypassed3 msFrontend · unit
lib/account-type.test.ts::an unrecognised code holds nothing rather than the nearest matchpassed1 msFrontend · unit
lib/account-type.test.ts::a session carrying only `role` is still recognisedpassed1 msFrontend · unit
lib/account-type.test.ts::hanType wins when both claims are presentpassed0 msFrontend · unit
lib/account-type.test.ts::staff are not owners and the owner-only nav stays hiddenpassed0 msFrontend · unit
lib/account-type.test.ts::globalAdmin grants business administration but not the platformpassed0 msFrontend · unit
lib/account-type.test.ts::a patient holds nothingpassed0 msFrontend · unit
lib/account-type.test.ts::the client and server capability tables agree on the shapepassed0 msFrontend · unit
lib/account-type.test.ts::BM is a managed business, not a business ownerpassed0 msFrontend · unit
lib/account-type.test.ts::QA 26_8_14 §1.1: reading the money is a separate capabilitypassed1 msFrontend · unit
lib/account-type.test.ts::a practice's own admin reads its money; a Medical Assistant does notpassed0 msFrontend · unit
lib/account-type.test.ts::money is held by the finance JOBS, whatever the account type (2026-09-10)passed1 msFrontend · unit
lib/account-type.test.ts::a managed business is never handed the operator's takingspassed0 msFrontend · unit
lib/action-center.test.ts::severity dialects collapse onto one scale, critical includedpassed3 msFrontend · unit
lib/action-center.test.ts::severity always carries a text label, never colour alonepassed1 msFrontend · unit
lib/action-center.test.ts::needs-action-now is a UNION of urgent and overdue, not an intersectionpassed1 msFrontend · unit
lib/action-center.test.ts::needs-action-now is zero on an empty queuepassed0 msFrontend · unit
lib/action-center.test.ts::relative time reads forwards and backwardspassed0 msFrontend · unit
lib/action-center.test.ts::overdue label appears only when actually overduepassed0 msFrontend · unit
lib/action-center.test.ts::an empty filter means no restriction, NOT match-nothingpassed6 msFrontend · unit
lib/action-center.test.ts::source, severity and kind chips narrowpassed4 msFrontend · unit
lib/action-center.test.ts::only-drafts and only-overdue narrowpassed0 msFrontend · unit
lib/action-center.test.ts::search matches patient, clinic, counterparty and doctor, case-insensitivelypassed1 msFrontend · unit
lib/action-center.test.ts::filters combine as ANDpassed0 msFrontend · unit
lib/action-center.test.ts::toggle adds then removespassed0 msFrontend · unit
lib/action-center.test.ts::grouping by patient keeps the server's order and rolls up the worst severitypassed1 msFrontend · unit
lib/action-center.test.ts::items with no patient never merge into one anonymous grouppassed0 msFrontend · unit
lib/action-center.test.ts::group summaries pluralise like a person wouldpassed0 msFrontend · unit
lib/action-center.test.ts::no source or kind is rendered as a raw slugpassed1 msFrontend · unit
lib/action-center.test.ts::a reading renders as a clinician would say it, and nothing is inventedpassed1 msFrontend · unit
lib/action-center.test.ts::an unconfigured channel is stated as OFF, in wordspassed1 msFrontend · unit
lib/action-center.test.ts::a configured channel shows its recipients or modelpassed0 msFrontend · unit
lib/action-center.test.ts::degraded is true when any channel is off and false when all are onpassed0 msFrontend · unit
lib/affiliation.test.ts::an address is required, and so is a branchpassed4 msFrontend · unit
lib/affiliation.test.ts::a malformed address is refused before the round-trippassed1 msFrontend · unit
lib/affiliation.test.ts::a well-formed invitation passespassed0 msFrontend · unit
lib/affiliation.test.ts::addresses are normalised so one person is one affiliationpassed0 msFrontend · unit
lib/affiliation.test.ts::an existing affiliation at ANOTHER branch does not block this onepassed0 msFrontend · unit
lib/affiliation.test.ts::re-inviting somebody with a pending invitation is allowed and recognisedpassed0 msFrontend · unit
lib/affiliation.test.ts::a pending invitation is never counted as a providerpassed0 msFrontend · unit
lib/affiliation.test.ts::removing an accepted affiliation and revoking an invitation are different actspassed0 msFrontend · unit
lib/affiliation.test.ts::the empty state says what would fill it, and counts what is waitingpassed0 msFrontend · unit
lib/affiliation.test.ts::a successful send is reported as sentpassed3 msFrontend · unit
lib/affiliation.test.ts::a stored-but-unsent invitation says so, and says whypassed2 msFrontend · unit
lib/affiliation.test.ts::an unsent invitation is a warning, not an errorpassed2 msFrontend · unit
lib/affiliation.test.ts::the non-production link is surfaced either waypassed0 msFrontend · unit
lib/affiliation.test.ts::a missing response is treated as not sentpassed0 msFrontend · unit
lib/after-write.test.ts::a scope nobody wrote to does not ask for a refetchpassed10 msFrontend · unit
lib/after-write.test.ts::a write is seen once by the reader that comes backpassed1 msFrontend · unit
lib/after-write.test.ts::a mark is CONSUMED — one write, one refetchpassed0 msFrontend · unit
lib/after-write.test.ts::scopes do not leak into one anotherpassed0 msFrontend · unit
lib/after-write.test.ts::several writes before one return still cost one refetchpassed0 msFrontend · unit
lib/after-write.test.ts::isWritten reports without takingpassed1 msFrontend · unit
lib/after-write.test.ts::it needs no browser storage at allpassed1 msFrontend · unit
lib/alert-metrics.test.ts::alerts and escalations are counted separatelypassed6 msFrontend · unit
lib/alert-metrics.test.ts::an escalation is counted from either producerpassed0 msFrontend · unit
lib/alert-metrics.test.ts::patient counts are the caseload, not the volumepassed1 msFrontend · unit
lib/alert-metrics.test.ts::alerts outside the month are excludedpassed0 msFrontend · unit
lib/alert-metrics.test.ts::a branch filter narrows the reportpassed0 msFrontend · unit
lib/alert-metrics.test.ts::addressed and unaddressed always sum to the totalpassed0 msFrontend · unit
lib/alert-metrics.test.ts::the report names who to look at, worst firstpassed0 msFrontend · unit
lib/alert-metrics.test.ts::an empty month reports zeros rather than blankspassed6 msFrontend · unit
lib/alert-metrics.test.ts::monthKey and monthBounds round-trippassed1 msFrontend · unit
lib/alert-metrics.test.ts::the CSV quotes anything that could break a columnpassed0 msFrontend · unit
lib/alert-metrics.test.ts::the CSV states the ladder breakdown, not just a totalpassed1 msFrontend · unit
lib/alert-metrics.test.ts::a reading with no breach gets no highlight at allpassed1 msFrontend · unit
lib/alert-metrics.test.ts::a critical breach is red and says so in wordspassed1 msFrontend · unit
lib/alert-metrics.test.ts::low and high are distinguished by words, not by shadepassed0 msFrontend · unit
lib/alert-metrics.test.ts::every tone carries a text label and a descriptionpassed0 msFrontend · unit
lib/alert-metrics.test.ts::the severity vocabularies from the different ingest paths all normalisepassed0 msFrontend · unit
lib/alert-metrics.test.ts::direction comes from the rule relation, and MAX wins a mixed breachpassed0 msFrontend · unit
lib/alert-rule.test.ts::a rule is identified by ruleId, which is what 608 of 616 rows carrypassed5 msFrontend · unit
lib/alert-rule.test.ts::a legacy row keyed on readRuleId is still reachablepassed0 msFrontend · unit
lib/alert-rule.test.ts::a rule with no id at all yields an empty string, never 'undefined'passed0 msFrontend · unit
lib/alert-rule.test.ts::blank and whitespace ids do not count as an identitypassed0 msFrontend · unit
lib/alert-rule.test.ts::a rule matches under either fieldpassed1 msFrontend · unit
lib/alert-rule.test.ts::a rule with no threshold is refused — it could never firepassed1 msFrontend · unit
lib/alert-rule.test.ts::a rule needs a namepassed0 msFrontend · unit
lib/alert-rule.test.ts::a slipped decimal point is refused rather than savedpassed0 msFrontend · unit
lib/alert-rule.test.ts::an upper limit below its lower limit is refusedpassed2 msFrontend · unit
lib/alert-rule.test.ts::a valid rule passespassed3 msFrontend · unit
lib/alert-rule.test.ts::only the thresholds actually set are storedpassed1 msFrontend · unit
lib/alert-rule.test.ts::a form with nothing set stores nothing, rather than a zeropassed0 msFrontend · unit
lib/alert-rule.test.ts::Edit opens on what is actually storedpassed1 msFrontend · unit
lib/alert-rule.test.ts::a round trip through the form does not lose a thresholdpassed1 msFrontend · unit
lib/alert-rule.test.ts::each metric offers its own thresholds and no otherspassed0 msFrontend · unit
lib/alert-rule.test.ts::a rule with no thresholds describes itself as unable to firepassed1 msFrontend · unit
lib/alert-rule.test.ts::a rule describes its thresholds in wordspassed0 msFrontend · unit
lib/alerts-scope.test.ts::the patient scope is read from the query stringpassed8 msFrontend · unit
lib/alerts-scope.test.ts::an encoded patient id round-tripspassed0 msFrontend · unit
lib/alerts-scope.test.ts::scoping keeps only that patient's alertspassed0 msFrontend · unit
lib/alerts-scope.test.ts::both id fields are matched, because the two producers disagreepassed0 msFrontend · unit
lib/alerts-scope.test.ts::no scope means no filtering at allpassed0 msFrontend · unit
lib/alerts-scope.test.ts::the banner names the patient, falling back to a readable idpassed1 msFrontend · unit
lib/alerts-scope.test.ts::clearing the scope preserves the rest of the query statepassed0 msFrontend · unit
lib/alerts-scope.test.ts::patient ids render readablypassed0 msFrontend · unit
lib/alerts-scope.test.ts::the empty state says which question it is answeringpassed1 msFrontend · unit
lib/app-tour.test.ts::searchSections: an empty query returns every section in menu orderpassed6 msFrontend · unit
lib/app-tour.test.ts::searchSections: a section is found through one of its screenspassed1 msFrontend · unit
lib/app-tour.test.ts::searchSections: every word must match, in any order and casepassed1 msFrontend · unit
lib/app-tour.test.ts::matchingScreens: narrows to the matching screenspassed1 msFrontend · unit
lib/app-tour.test.ts::matchingScreens: a section matched on its own text still shows its screenspassed0 msFrontend · unit
lib/app-tour.test.ts::sectionForHref: finds the section holding a screen, ignoring the query stringpassed1 msFrontend · unit
lib/app-tour.test.ts::hiddenMoneyNote: a count and a reason, and nothing when there are nonepassed1 msFrontend · unit
lib/app-tour.test.ts::initialApp: the caller's own app when the server sent it, else the firstpassed0 msFrontend · unit
lib/app-tour.test.ts::screenCount and mediaLength read naturallypassed1 msFrontend · unit
lib/assign-outcome.test.ts::Liv Jones's reply is a FAILURE: nothing written, stay on the formpassed7 msFrontend · unit
lib/assign-outcome.test.ts::the refusal names the patient and the person — never a raw idpassed1 msFrontend · unit
lib/assign-outcome.test.ts::an unknown staff id is described, not printedpassed0 msFrontend · unit
lib/assign-outcome.test.ts::consent pending is said in wordspassed0 msFrontend · unit
lib/assign-outcome.test.ts::every patient assigned: success, refetch, leavepassed2 msFrontend · unit
lib/assign-outcome.test.ts::some assigned: the listing must refetch, but the form stayspassed0 msFrontend · unit
lib/assign-outcome.test.ts::an unreadable reply is not a yespassed0 msFrontend · unit
lib/assign-outcome.test.ts::fewer assigned than asked, with no error named, is still not a clean successpassed0 msFrontend · unit
lib/assign-outcome.test.ts::the care-plan page reads the reply before it leaves or claims successpassed2 msFrontend · unit
lib/audit.test.ts::the scope is always stated in wordspassed3 msFrontend · unit
lib/audit.test.ts::an unrecognised scope is reported as incomplete, not as everythingpassed0 msFrontend · unit
lib/audit.test.ts::the actor is named, never rendered as a raw idpassed1 msFrontend · unit
lib/audit.test.ts::an account with no handle says so rather than showing its idpassed0 msFrontend · unit
lib/audit.test.ts::an anonymous request is labelled as such, not as a missing namepassed0 msFrontend · unit
lib/audit.test.ts::the id is still available as secondary detailpassed0 msFrontend · unit
lib/audit.test.ts::a failed sign-in is severity refused even when the outcome says otherwisepassed0 msFrontend · unit
lib/audit.test.ts::severity always has text, never colour alonepassed1 msFrontend · unit
lib/audit.test.ts::a refusal reason is translated into words a person can act onpassed0 msFrontend · unit
lib/audit.test.ts::an unknown reason code is shown rather than hiddenpassed0 msFrontend · unit
lib/audit.test.ts::the attempted login is surfaced — on a failure it is the only identitypassed0 msFrontend · unit
lib/audit.test.ts::the endpoint is grouped by route template, not by concrete pathpassed0 msFrontend · unit
lib/audit.test.ts::actions are labelled in plain languagepassed0 msFrontend · unit
lib/audit.test.ts::an unmapped action shows its own name rather than a blankpassed0 msFrontend · unit
lib/audit.test.ts::no offered window exceeds what the server will honourpassed0 msFrontend · unit
lib/audit.test.ts::an unknown window key falls back to a stated default, not to zeropassed0 msFrontend · unit
lib/audit.test.ts::the ISO instant is available for reconciling with a server logpassed3 msFrontend · unit
lib/automation-audit.test.ts::modeTone / modeLabel map the three modespassed3 msFrontend · unit
lib/automation-audit.test.ts::groupByArea preserves area order and groups itemspassed3 msFrontend · unit
lib/autopilot-drafts.test.ts::the vocabulary comes from the server and an unknown kind is SHOWNpassed4 msFrontend · unit
lib/autopilot-drafts.test.ts::a vocabulary the server does not send falls back to the known orderpassed3 msFrontend · unit
lib/autopilot-drafts.test.ts::the server's order is respected — a kind it omits is not drawnpassed1 msFrontend · unit
lib/autopilot-drafts.test.ts::age is the only urgency signal, and a missing stamp is not 'today'passed2 msFrontend · unit
lib/autopilot-drafts.test.ts::waiting reads in the unit a person thinks inpassed0 msFrontend · unit
lib/autopilot-drafts.test.ts::the window prints what it is NOT showingpassed1 msFrontend · unit
lib/autopilot-drafts.test.ts::the backlog view says so instead of naming a periodpassed0 msFrontend · unit
lib/autopilot-drafts.test.ts::the money line says the money has not LEFT, not that it is unpaidpassed50 msFrontend · unit
lib/autopilot-drafts.test.ts::a claim with no amount is counted apart, never folded in as zeropassed1 msFrontend · unit
lib/autopilot-drafts.test.ts::a caller who may not see money gets the claim count and no dollarpassed1 msFrontend · unit
lib/autopilot-drafts.test.ts::no claims means no money sentence at allpassed0 msFrontend · unit
lib/autopilot-drafts.test.ts::the empty state comes from the record, never from the row countpassed0 msFrontend · unit
lib/autopilot-drafts.test.ts::a flat cleared line says WHICH kind of flat it ispassed0 msFrontend · unit
lib/autopilot-drafts.test.ts::every item kind has a title, a verb and a labelpassed1 msFrontend · unit
lib/autopilot-drafts.test.ts::an unknown kind still renders rather than vanishingpassed0 msFrontend · unit
lib/autopilot-drafts.test.ts::a billing item's summary carries the amount, the route and the codespassed1 msFrontend · unit
lib/autopilot-drafts.test.ts::a summary is never mistaken for the messagepassed0 msFrontend · unit
lib/autopilot-drafts.test.ts::a chart series is drawn for every category, colour and allpassed0 msFrontend · unit
lib/autopilot-drafts.test.ts::a category with no colour still gets one rather than disappearingpassed0 msFrontend · unit
lib/autopilot-drafts.test.ts::money formats to two places with thousands separatorspassed1 msFrontend · unit
lib/batch-approval.test.ts::agrees with the server about what may be batchedpassed5 msFrontend · unit
lib/batch-approval.test.ts::never batches a patient-facing kindpassed0 msFrontend · unit
lib/batch-approval.test.ts::fails closed on a kind nobody has classifiedpassed4 msFrontend · unit
lib/batch-approval.test.ts::every excluded kind gives the operator a reasonpassed1 msFrontend · unit
lib/batch-approval.test.ts::a partial failure is never summarised as a successpassed1 msFrontend · unit
lib/batch-approval.test.ts::a clean batch reads as a clean batchpassed0 msFrontend · unit
lib/bhi-care-team.test.ts::names the person and why they qualifypassed4 msFrontend · unit
lib/bhi-care-team.test.ts::never renders an identifier as the namepassed1 msFrontend · unit
lib/bhi-care-team.test.ts::says when choosing this person will create an accountpassed1 msFrontend · unit
lib/bhi-care-team.test.ts::submits the value the server gave, untouchedpassed0 msFrontend · unit
lib/bhi-care-team.test.ts::shows the server's reason and never composes its ownpassed0 msFrontend · unit
lib/bhi-care-team.test.ts::shows nothing once there is something to choosepassed0 msFrontend · unit
lib/bhi-care-team.test.ts::keeps the two pickers' reasons apartpassed0 msFrontend · unit
lib/bhi-care-team.test.ts::is detected rather than silently rendering blankpassed1 msFrontend · unit
lib/bhi-care-team.test.ts::accepts a value that matches by either idpassed0 msFrontend · unit
lib/bhi-care-team.test.ts::treats nobody-chosen as legitimatepassed4 msFrontend · unit
lib/bhi-care-team.test.ts::offers nobody before the roster has loadedpassed2 msFrontend · unit
lib/bhi-care-team.test.ts::carries no reason until the server gives onepassed0 msFrontend · unit
lib/bhi-grid.test.ts::the id shapes this platform actually produces are recognised as idspassed6 msFrontend · unit
lib/bhi-grid.test.ts::real names are not mistaken for idspassed0 msFrontend · unit
lib/bhi-grid.test.ts::a patient with no resolvable name is labelled, never rendered as an idpassed0 msFrontend · unit
lib/bhi-grid.test.ts::a resolved name is shown as-ispassed0 msFrontend · unit
lib/bhi-grid.test.ts::the care team lists names and drops anything id-shapedpassed0 msFrontend · unit
lib/bhi-grid.test.ts::diagnosis falls back to the bare code, because a code IS the clinical factpassed10 msFrontend · unit
lib/bhi-grid.test.ts::branch options come from the rows, named, de-duplicated and sortedpassed36 msFrontend · unit
lib/bhi-grid.test.ts::a branch with no name says so rather than showing a bare idpassed1 msFrontend · unit
lib/bhi-grid.test.ts::filtering by branch excludes other branchespassed1 msFrontend · unit
lib/bhi-grid.test.ts::the assessment filter separates assessed from not-yet-assessedpassed0 msFrontend · unit
lib/bhi-grid.test.ts::search matches the things a human knowspassed1 msFrontend · unit
lib/bhi-grid.test.ts::search does NOT match the internal idpassed0 msFrontend · unit
lib/bhi-grid.test.ts::the ended tab shows exactly what the active tab does notpassed0 msFrontend · unit
lib/bhi-grid.test.ts::a care-teamed patient with no enrolment gets its own bucketpassed0 msFrontend · unit
lib/bhi-grid.test.ts::an awaiting patient is on NEITHER the active nor the ended tabpassed0 msFrontend · unit
lib/bhi-grid.test.ts::pending is recognised from the flag as well as the statuspassed0 msFrontend · unit
lib/bhi-grid.test.ts::an awaiting patient is still searchable and still branch-filteredpassed1 msFrontend · unit
lib/bhi-triage.test.ts::a missing score is distinguished from a score of zeropassed3 msFrontend · unit
lib/bhi-triage.test.ts::tier tones follow the urgency order and never collapse safety into infopassed1 msFrontend · unit
lib/bhi-triage.test.ts::changeFromBaseline reports improvement as negative, and refuses to guesspassed0 msFrontend · unit
lib/bhi-triage.test.ts::trendText spells out the direction rather than relying on a signpassed0 msFrontend · unit
lib/bhi-triage.test.ts::daysSince and agoText treat 'never' as never, not as todaypassed1 msFrontend · unit
lib/bhi-triage.test.ts::rowsInTier defaults an unranked row to steady rather than dropping itpassed3 msFrontend · unit
lib/bhi-triage.test.ts::headline says an empty caseload is empty instead of rendering nothingpassed1 msFrontend · unit
lib/billing-nav.test.ts::the account QA reported is offered neither money screenpassed5 msFrontend · unit
lib/billing-nav.test.ts::a biller works billing AND reads the money (2026-09-10)passed0 msFrontend · unit
lib/billing-nav.test.ts::a business account with no finance job is offered neither (2026-09-10)passed0 msFrontend · unit
lib/billing-nav.test.ts::a job that is not a finance job sees no money, whatever else it doespassed7 msFrontend · unit
lib/billing-nav.test.ts::every module but the books (2026-09-12): the revenue cycle opens, the books do notpassed1 msFrontend · unit
lib/billing-nav.test.ts::the books go to the jobs that hold books:read, and a revocation outranks thempassed15 msFrontend · unit
lib/billing-nav.test.ts::the admin tiers and the practice RCM desk read the money; the practice manager does notpassed0 msFrontend · unit
lib/billing-nav.test.ts::a revoked capability wins over the job that would grant itpassed0 msFrontend · unit
lib/billing-nav.test.ts::a patient is offered nothingpassed0 msFrontend · unit
lib/billing-nav.test.ts::an absent session is refused rather than defaulted openpassed0 msFrontend · unit
lib/billing-nav.test.ts::longest prefix wins, so revenue-charts is decided by its own rulepassed1 msFrontend · unit
lib/billing-nav.test.ts::a non-money screen is never hidden by this filterpassed0 msFrontend · unit
lib/billing-nav.test.ts::a section emptied by the filter is dropped, not left as a bare headingpassed1 msFrontend · unit
lib/billing-nav.test.ts::the filter keeps what it is entitled to keeppassed3 msFrontend · unit
lib/billing-nav.test.ts::a Monitoring Specialist is offered none of the money screenspassed0 msFrontend · unit
lib/billing-nav.test.ts::an RCM Biller is offered every money screenpassed0 msFrontend · unit
lib/billing-nav.test.ts::a patient keeps their OWN bills, and only thosepassed0 msFrontend · unit
lib/billing-nav.test.ts::the patient exception is for patients — staff do not inherit itpassed0 msFrontend · unit
lib/billing-nav.test.ts::a doctor with no finance job loses the practice-money screenspassed0 msFrontend · unit
lib/billing-nav.test.ts::a Bookkeeper is offered the books (the owner-only rule hid it from them)passed2 msFrontend · unit
lib/billing-nav.test.ts::the count-only ops screens stay offered — the server redacts their dollarspassed0 msFrontend · unit
lib/billing-nav.test.ts::'Everything else' loses the money screens toopassed5 msFrontend · unit
lib/billing-nav.test.ts::nav-resolved applies the money filter AFTER the workspacepassed1 msFrontend · unit
lib/billing-nav.test.ts::the mirrored role names are the ones the server grants rcm: keys topassed0 msFrontend · unit
lib/billing-nav.test.ts::HR & Payroll opens payroll and nothing else in the books (2026-09-10)passed0 msFrontend · unit
lib/billing-provider.test.ts::a branch with billing providers lists thempassed3 msFrontend · unit
lib/billing-provider.test.ts::the row states why it qualifiespassed3 msFrontend · unit
lib/billing-provider.test.ts::a row from an older backend says what it knows, not morepassed0 msFrontend · unit
lib/billing-provider.test.ts::no providers and no billable providers are different statespassed1 msFrontend · unit
lib/billing-provider.test.ts::an empty branch offers no busyworkpassed0 msFrontend · unit
lib/billing-provider.test.ts::a gap always carries the action that closes itpassed0 msFrontend · unit
lib/billing-provider.test.ts::a mixed branch reports both countspassed0 msFrontend · unit
lib/billing-provider.test.ts::singular and plural both read correctlypassed0 msFrontend · unit
lib/billing-provider.test.ts::billable requires BOTH an NPI and a taxonomypassed8 msFrontend · unit
lib/billing-provider.test.ts::undefined from the server is not a crashpassed0 msFrontend · unit
lib/billing-provider.test.ts::clinical staff are never described as providerspassed1 msFrontend · unit
lib/billing-provider.test.ts::an employed clinician who may render is surfaced, not hiddenpassed0 msFrontend · unit
lib/billing-provider.test.ts::a provider row states either its basis or its gap, never nothingpassed0 msFrontend · unit
lib/billing-send.test.ts::has the same statuses and the same successorspassed6 msFrontend · unit
lib/billing-send.test.ts::never lets a draft jump straight to approvedpassed0 msFrontend · unit
lib/billing-send.test.ts::always allows a batch to be walked backpassed0 msFrontend · unit
lib/billing-send.test.ts::never applies the numbers gate to a withdrawalpassed0 msFrontend · unit
lib/billing-send.test.ts::treats a sent batch as finalpassed0 msFrontend · unit
lib/billing-send.test.ts::refuses Mark ready with the server's own reasonpassed1 msFrontend · unit
lib/billing-send.test.ts::does not invent a verdict the server never sentpassed0 msFrontend · unit
lib/billing-send.test.ts::still refuses an impossible move even without a verdictpassed0 msFrontend · unit
lib/billing-send.test.ts::offers Mark ready once the numbers hold uppassed0 msFrontend · unit
lib/billing-send.test.ts::does not block on a warningpassed0 msFrontend · unit
lib/billing-send.test.ts::is available on an empty draft — the case QA reportedpassed1 msFrontend · unit
lib/billing-send.test.ts::is available in every workflow statepassed0 msFrontend · unit
lib/billing-send.test.ts::is unavailable only when nothing was ever generatedpassed0 msFrontend · unit
lib/billing-send.test.ts::shows the name when there is onepassed0 msFrontend · unit
lib/billing-send.test.ts::marks a row whose stored name IS its id — the reported defectpassed0 msFrontend · unit
lib/billing-send.test.ts::marks a row the server could not resolve at allpassed0 msFrontend · unit
lib/billing-send.test.ts::never returns the bare id, which would read as a namepassed0 msFrontend · unit
lib/billing-send.test.ts::orders short-month tiers beside the full onespassed1 msFrontend · unit
lib/billing-send.test.ts::is empty for a month with nothing billablepassed0 msFrontend · unit
lib/billing-send.test.ts::does not silently drop a code it has never heard ofpassed1 msFrontend · unit
lib/billing-send.test.ts::distinguishes the two numbers, so 0 of 41 is legiblepassed2 msFrontend · unit
lib/billing-send.test.ts::says so plainly when nothing is billablepassed0 msFrontend · unit
lib/billing-send.test.ts::counts the audit rows separately from the billable onespassed0 msFrontend · unit
lib/billing-send.test.ts::says nothing about audit rows when there are nonepassed0 msFrontend · unit
lib/billing-send.test.ts::offers delete for a month nobody signed offpassed1 msFrontend · unit
lib/billing-send.test.ts::refuses every signed-off month and names the alternativepassed0 msFrontend · unit
lib/billing-send.test.ts::reads the history, not just today's statuspassed0 msFrontend · unit
lib/billing-send.test.ts::prefers the server's own verdict over the local derivationpassed0 msFrontend · unit
lib/billing-send.test.ts::treats archived as a shelf, not a statuspassed0 msFrontend · unit
lib/billing-send.test.ts::names what a delete destroys instead of asking 'are you sure?'passed0 msFrontend · unit
lib/billing-send.test.ts::keeps the delete rule the same rule the route appliespassed1 msFrontend · unit
lib/books-invoices.test.ts::the All filter is a non-empty key, because useFetch skips an empty onepassed2 msFrontend · unit
lib/books-invoices.test.ts::the page keys its list fetch on listKey, never on the raw filterpassed2 msFrontend · unit
lib/books-invoices.test.ts::a draft can only be approvedpassed3 msFrontend · unit
lib/books-invoices.test.ts::an approved invoice can go back, out, be paid or be voidedpassed0 msFrontend · unit
lib/books-invoices.test.ts::a sent invoice with a payment can no longer be voidedpassed1 msFrontend · unit
lib/books-invoices.test.ts::a caller is offered only what their job may dopassed0 msFrontend · unit
lib/books-invoices.test.ts::paid and void offer nothingpassed0 msFrontend · unit
lib/books-invoices.test.ts::every status has a labelpassed0 msFrontend · unit
lib/books-invoices.test.ts::say overdue, today, or due inpassed1 msFrontend · unit
lib/books-invoices.test.ts::says nothing is outstanding when nothing ispassed0 msFrontend · unit
lib/books-invoices.test.ts::names the overdue sharepassed69 msFrontend · unit
lib/books-invoices.test.ts::parses code, state and realmIdpassed1 msFrontend · unit
lib/books-invoices.test.ts::names what did not arrivepassed1 msFrontend · unit
lib/books-invoices.test.ts::reads a decline as a declinepassed0 msFrontend · unit
lib/books-invoices.test.ts::unconfigured firstpassed1 msFrontend · unit
lib/books-invoices.test.ts::then the missing key at restpassed0 msFrontend · unit
lib/books-invoices.test.ts::then not connected, then connected with the company namepassed0 msFrontend · unit
lib/books-invoices.test.ts::counts dayspassed0 msFrontend · unit
lib/books-invoices.test.ts::summarise a runpassed12 msFrontend · unit
lib/books-invoices.test.ts::normalise or refusepassed1 msFrontend · unit
lib/books-invoices.test.ts::shows the practice's name, never its keypassed0 msFrontend · unit
lib/books-invoices.test.ts::starts on a customer only when a person already tied it to this practicepassed1 msFrontend · unit
lib/books-invoices.test.ts::lists the closest name first but does not pick itpassed0 msFrontend · unit
lib/books-invoices.test.ts::does not offer another practice's customer, and says how many it left outpassed0 msFrontend · unit
lib/books-invoices.test.ts::the page puts the practice on the candidate row and builds the picker from raiseChoicepassed1 msFrontend · unit
lib/books.test.ts::formats cents with sign and paddingpassed59 msFrontend · unit
lib/books.test.ts::parses dollar strings a human would actually typepassed1 msFrontend · unit
lib/books.test.ts::refuses what it cannot read instead of posting a zeropassed0 msFrontend · unit
lib/books.test.ts::refuses a third decimal rather than rounding for the userpassed0 msFrontend · unit
lib/books.test.ts::adds cents where floats would driftpassed0 msFrontend · unit
lib/books.test.ts::recognises a balanced entrypassed1 msFrontend · unit
lib/books.test.ts::a single line is not double entrypassed0 msFrontend · unit
lib/books.test.ts::reports the imbalance rather than hiding itpassed0 msFrontend · unit
lib/books.test.ts::splits a draft into debit and credit totalspassed0 msFrontend · unit
lib/books.test.ts::a complete balanced entry has nothing blocking itpassed2 msFrontend · unit
lib/books.test.ts::names a missing date and memopassed1 msFrontend · unit
lib/books.test.ts::says by how much an entry is outpassed0 msFrontend · unit
lib/books.test.ts::flags a zero linepassed0 msFrontend · unit
lib/books.test.ts::needs two usable linespassed0 msFrontend · unit
lib/books.test.ts::resolves a month to its first and last day, leap years includedpassed8 msFrontend · unit
lib/books.test.ts::rejects a month that is not onepassed0 msFrontend · unit
lib/books.test.ts::rolls back over a year boundarypassed0 msFrontend · unit
lib/books.test.ts::parses rows and skips a headerpassed1 msFrontend · unit
lib/books.test.ts::reports the line number of a row it cannot read, and does not drop it silentlypassed0 msFrontend · unit
lib/books.test.ts::rejects a zero-amount rowpassed0 msFrontend · unit
lib/books.test.ts::says so when there is nothing to importpassed0 msFrontend · unit
lib/books.test.ts::honours quoted commas in a descriptionpassed0 msFrontend · unit
lib/books.test.ts::handles an escaped quotepassed0 msFrontend · unit
lib/books.test.ts::grades match confidencepassed0 msFrontend · unit
lib/books.test.ts::an empty account is never reported as fully reconciledpassed1 msFrontend · unit
lib/books.test.ts::counts what is leftpassed0 msFrontend · unit
lib/branch-access.test.ts::a missing branchAccess block is reported, never rendered as 'none'passed4 msFrontend · unit
lib/branch-access.test.ts::the badge names the clearance level, not a clinic count, when unrestrictedpassed1 msFrontend · unit
lib/branch-access.test.ts::a confined login's badge counts the clinics it is confined topassed0 msFrontend · unit
lib/branch-access.test.ts::unassigned is stated as unassigned — QA's literal questionpassed0 msFrontend · unit
lib/branch-access.test.ts::assigned-and-confined is a different sentence from assigned-and-notpassed0 msFrontend · unit
lib/branch-access.test.ts::a patient is told clinic assignments do not apply, not that they have nonepassed0 msFrontend · unit
lib/branch-access.test.ts::the server's own sentences are passed through, never rewrittenpassed0 msFrontend · unit
lib/branch-access.test.ts::a clinic that arrives nameless is labelled, never shown as its idpassed1 msFrontend · unit
lib/branch-access.test.ts::a malformed clinic row cannot crash the panelpassed3 msFrontend · unit
lib/branch-filter.test.ts::the global option comes first and is the empty valuepassed4 msFrontend · unit
lib/branch-filter.test.ts::the global label is the same string everywherepassed0 msFrontend · unit
lib/branch-filter.test.ts::archived branches are never offeredpassed2 msFrontend · unit
lib/branch-filter.test.ts::same-named branches are disambiguated, not collapsedpassed44 msFrontend · unit
lib/branch-filter.test.ts::a branch with no name falls back to its id, never to blankpassed0 msFrontend · unit
lib/branch-filter.test.ts::options are sorted so the list is scannablepassed0 msFrontend · unit
lib/branch-filter.test.ts::an empty branch list yields just the global optionpassed0 msFrontend · unit
lib/branch-filter.test.ts::global matches every row; a branch matches only its ownpassed0 msFrontend · unit
lib/branch-filter.test.ts::a row with no branch is excluded by a specific branch filterpassed0 msFrontend · unit
lib/branch-filter.test.ts::shortId is stable and short enough to readpassed0 msFrontend · unit
lib/branch-filter.test.ts::an empty branch list explains itself instead of rendering nothingpassed1 msFrontend · unit
lib/branch-filter.test.ts::same-named branches are told apart by CITY, not by an id suffixpassed0 msFrontend · unit
lib/branch-filter.test.ts::the id suffix survives where the city cannot disambiguatepassed0 msFrontend · unit
lib/branch-filter.test.ts::a city is read from either shape the record carries it inpassed0 msFrontend · unit
lib/branch-filter.test.ts::a unique name is never decoratedpassed0 msFrontend · unit
lib/branch-filter.test.ts::duplicate names are reported so a human can resolve thempassed1 msFrontend · unit
lib/branch-filter.test.ts::an archived branch is not counted as a duplicatepassed0 msFrontend · unit
lib/branch-filter.test.ts::branches with no name at all are not reported as duplicates of each otherpassed0 msFrontend · unit
lib/branch-scope.test.ts::the branch list DEFAULTS to every storepassed18 msFrontend · unit
lib/branch-scope.test.ts::the Branches screen asks for `unmanaged`passed1 msFrontend · unit
lib/branch-scope.test.ts::no OTHER screen narrows the branch listpassed252 msFrontend · unit
lib/branch-scope.test.ts::the guard reads the real filespassed129 msFrontend · unit
lib/branch-scope.test.ts::the Branches screen asks the programmes card for branches onlypassed1 msFrontend · unit
lib/branch-scope.test.ts::the Client Practices screen asks for managed businesses onlypassed1 msFrontend · unit
lib/branch-scope.test.ts::the Client Practices screen does not carry a second list of every clinicpassed18 msFrontend · unit
lib/branch-scope.test.ts::no screen mounts the programmes card without saying which storepassed330 msFrontend · unit
lib/branch-scope.test.ts::the programmes card keeps `scope` requiredpassed1 msFrontend · unit
lib/business-context.test.ts::no context means no header — an ordinary request is unchangedpassed6 msFrontend · unit
lib/business-context.test.ts::entering a business sends its branch id on every callpassed1 msFrontend · unit
lib/business-context.test.ts::leaving clears itpassed1 msFrontend · unit
lib/business-context.test.ts::a context set by one user does NOT scope another user's sessionpassed1 msFrontend · unit
lib/business-context.test.ts::corrupt or truncated storage is treated as no context, never as a crashpassed1 msFrontend · unit
lib/business-context.test.ts::a context with no stored name falls back to the id rather than blankpassed0 msFrontend · unit
lib/business-context.test.ts::the banner never claims the operator IS the clinicpassed1 msFrontend · unit
lib/business-context.test.ts::with no context the banner renders nothing at allpassed0 msFrontend · unit
lib/business-context.test.ts::the header name matches the one the server readspassed1 msFrontend · unit
lib/call-list.test.ts::dormant and at-risk are the bands that read as urgentpassed6 msFrontend · unit
lib/call-list.test.ts::a clinic never called says so rather than rendering a dashpassed0 msFrontend · unit
lib/call-list.test.ts::last-called wording is relative and plainpassed0 msFrontend · unit
lib/call-list.test.ts::an overdue next-call says how overduepassed0 msFrontend · unit
lib/call-list.test.ts::filter matches contact names and talking points, not just the clinicpassed2 msFrontend · unit
lib/call-list.test.ts::filter ANDs terms so two words narrow rather than widenpassed0 msFrontend · unit
lib/call-list.test.ts::tel href strips formatting so the click actually dialspassed1 msFrontend · unit
lib/care-autopilot.test.ts::consent item is a communication gatepassed4 msFrontend · unit
lib/care-autopilot.test.ts::careplan item is a clinical gate with a friendly plan labelpassed0 msFrontend · unit
lib/care-autopilot.test.ts::ops_comm surfaces the cadence label + subjectpassed0 msFrontend · unit
lib/care-autopilot.test.ts::monitoring escalation shows severity + reading typepassed0 msFrontend · unit
lib/care-autopilot.test.ts::recruit is a communication invitepassed0 msFrontend · unit
lib/care-autopilot.test.ts::careteam item is a clinical one-click team assignment (P1)passed0 msFrontend · unit
lib/care-autopilot.test.ts::adherence nudge is a communication item (P2)passed0 msFrontend · unit
lib/care-autopilot.test.ts::BHI screening is a communication item (Phase B)passed0 msFrontend · unit
lib/care-autopilot.test.ts::billing item summarizes plan/month/codes/route and sits in the billing gatepassed1 msFrontend · unit
lib/care-autopilot.test.ts::route + adapter labels are human-readablepassed0 msFrontend · unit
lib/care-autopilot.test.ts::planLabel humanizes the combined planpassed0 msFrontend · unit
lib/care-autopilot.test.ts::gateOf prefers the backend-stamped gatepassed0 msFrontend · unit
lib/care-autopilot.test.ts::splitByGate routes items into three columns (incl. careteam + adherence)passed4 msFrontend · unit
lib/care-autopilot.test.ts::level helpers describe the manual→autopilot ramppassed1 msFrontend · unit
lib/care-ownership.test.ts::an ineligible clinician is listed and disabled, never hiddenpassed4 msFrontend · unit
lib/care-ownership.test.ts::an eligible clinician is selectable and carries no warningpassed0 msFrontend · unit
lib/care-ownership.test.ts::the owner list has no credential gate — that is why the role existspassed0 msFrontend · unit
lib/care-ownership.test.ts::no eligible supervisor anywhere is a different problem from none assignedpassed0 msFrontend · unit
lib/care-ownership.test.ts::billable says so plainlypassed0 msFrontend · unit
lib/care-ownership.test.ts::not billable always carries the next steppassed0 msFrontend · unit
lib/care-ownership.test.ts::a missing billing payload is treated as not billable, not as billablepassed0 msFrontend · unit
lib/care-ownership.test.ts::escalation always names somebody, or says plainly that nobody is namedpassed11 msFrontend · unit
lib/care-ownership.test.ts::a fallback to the supervisor SAYS it is a fallbackpassed1 msFrontend · unit
lib/care-ownership.test.ts::an unknown repId still renders — the id beats a blank linepassed0 msFrontend · unit
lib/care-ownership.test.ts::assigning one role does not clear the otherpassed6 msFrontend · unit
lib/care-ownership.test.ts::clearing a role is expressible, and distinct from not touching itpassed0 msFrontend · unit
lib/care-ownership.test.ts::both roles can be set in one callpassed0 msFrontend · unit
lib/care-ownership.test.ts::an automatic assignment never reads as a clinician's decisionpassed0 msFrontend · unit
lib/care-ownership.test.ts::with nobody assigned, it names who will be takenpassed0 msFrontend · unit
lib/care-ownership.test.ts::with nobody eligible, it carries the reason and not just the absencepassed0 msFrontend · unit
lib/care-ownership.test.ts::with several eligible, nothing is assigned and it says whypassed0 msFrontend · unit
lib/care-ownership.test.ts::the Care Plan line names the person, never the idpassed1 msFrontend · unit
lib/care-ownership.test.ts::the Care Plan line says an unbillable month is unbillablepassed0 msFrontend · unit
lib/care-ownership.test.ts::an unresolvable name says so rather than falling back to the idpassed0 msFrontend · unit
lib/care-team-options.test.ts::roleOptions filters the provisioned roster by role, case-insensitivelypassed6 msFrontend · unit
lib/care-team-options.test.ts::a saved member missing from the roster is KEPT, not droppedpassed1 msFrontend · unit
lib/care-team-options.test.ts::a saved member still on the roster is not duplicated or flaggedpassed0 msFrontend · unit
lib/care-team-options.test.ts::an unknown saved id still renders rather than disappearingpassed0 msFrontend · unit
lib/care-team-options.test.ts::stale options say why they are unusualpassed18 msFrontend · unit
lib/care-team-options.test.ts::seedFromRows rehydrates a single saved planpassed1 msFrontend · unit
lib/care-team-options.test.ts::bulk edit seeds only the fields every selected row agrees onpassed0 msFrontend · unit
lib/care-team-options.test.ts::conflicting care plans leave the plan unset rather than guessingpassed0 msFrontend · unit
lib/care-team-options.test.ts::an unprovisioned branch offers NO ONE — no corp-staff fallbackpassed0 msFrontend · unit
lib/care-team-options.test.ts::the hard block does not erase an assignment already on the recordpassed0 msFrontend · unit
lib/care-team-options.test.ts::seedFromRows tolerates empty input and missing teampassed1 msFrontend · unit
lib/care-team-options.test.ts::staleAssignments names the roles the roster can no longer supplypassed1 msFrontend · unit
lib/care-team-options.test.ts::a legacy-worded physician is offered for Doctor, matched on the role KEYpassed0 msFrontend · unit
lib/care-team-options.test.ts::without the key the legacy wording still finds nobody — that WAS the bugpassed0 msFrontend · unit
lib/care-team-options.test.ts::the key never widens a role — a support specialist is not a doctorpassed0 msFrontend · unit
lib/care-team-options.test.ts::a member with no roleKeys still matches on the recorded textpassed0 msFrontend · unit
lib/care-team-options.test.ts::an empty roleKey argument does not match a member with no keyspassed0 msFrontend · unit
lib/care-team-scope.test.ts::offers only that clinic's physicianpassed19 msFrontend · unit
lib/care-team-scope.test.ts::unions a person's roles across the teams they sit onpassed1 msFrontend · unit
lib/care-team-scope.test.ts::an empty answer is empty, never the whole practicepassed0 msFrontend · unit
lib/care-team-scope.test.ts::offers nothing at allpassed1 msFrontend · unit
lib/care-team-scope.test.ts::says which patient and what to do, rather than wideningpassed1 msFrontend · unit
lib/care-team-scope.test.ts::one clinic-less patient blocks a whole bulk selectionpassed0 msFrontend · unit
lib/care-team-scope.test.ts::names the clinic the list came frompassed1 msFrontend · unit
lib/care-team-scope.test.ts::counts them when a bulk selection spans clinics, and warnspassed0 msFrontend · unit
lib/care-team-scope.test.ts::says nothing when there is nothing to saypassed0 msFrontend · unit
lib/care-team-scope.test.ts::reports ids that resolved to no patientpassed0 msFrontend · unit
lib/care-team-scope.test.ts::a failed fetch offers nothing rather than falling backpassed0 msFrontend · unit
lib/care-time-history.test.ts::this screen defaults to the clinic month, and the URL round-trips itpassed11 msFrontend · unit
lib/care-time-history.test.ts::the heading prefers the server's label because only it knows the clinic's monthpassed1 msFrontend · unit
lib/care-time-history.test.ts::the sentence says WHICH timestamp the window was answered onpassed1 msFrontend · unit
lib/care-time-history.test.ts::the tiles answer the practice manager's question: who is still under 20 with days leftpassed1 msFrontend · unit
lib/care-time-history.test.ts::the month sentence and the under-20 worklistpassed1 msFrontend · unit
lib/care-time-history.test.ts::bands keep their order and colour on every chartpassed1 msFrontend · unit
lib/care-time-history.test.ts::an activity keeps one colour; an unknown one takes the next slot, deterministicallypassed12 msFrontend · unit
lib/care-time-history.test.ts::rank rows become a bar chart, top N by minutespassed1 msFrontend · unit
lib/care-time-history.test.ts::a row is shown at the server's clinic-zone instant, falling back to the objectpassed12 msFrontend · unit
lib/care-time-history.test.ts::search is cosmetic narrowing over what came backpassed1 msFrontend · unit
lib/care-time-history.test.ts::a facet option names the person, the count and the minutespassed0 msFrontend · unit
lib/care-time-history.test.ts::a capped page says so, and says the totals are not cappedpassed1 msFrontend · unit
lib/care-time-row.test.ts::the author's name is shown when the server resolved onepassed3 msFrontend · unit
lib/care-time-row.test.ts::an unresolved author is named in words, never by idpassed1 msFrontend · unit
lib/care-time-row.test.ts::a whitespace-only name counts as unresolvedpassed8 msFrontend · unit
lib/care-time-row.test.ts::the role is shown as recordedpassed0 msFrontend · unit
lib/care-time-row.test.ts::an unrecorded role is an em dash, not a guesspassed0 msFrontend · unit
lib/care-time-row.test.ts::the role is never derived from the id's prefixpassed0 msFrontend · unit
lib/care-time-row.test.ts::a known author with no role on file keeps their namepassed0 msFrontend · unit
lib/catalog.test.ts::catalogue: twenty-seven modules, three of them platform-onlypassed9 msFrontend · unit
lib/catalog.test.ts::catalogue: every platform-only module states whypassed1 msFrontend · unit
lib/catalog.test.ts::catalogue: every module has routes, screens and verbspassed0 msFrontend · unit
lib/catalog.test.ts::catalogue: module keys and verb keys are uniquepassed1 msFrontend · unit
lib/catalog.test.ts::moduleForRoute: longest prefix wins, so nesting is not ambiguitypassed1 msFrontend · unit
lib/catalog.test.ts::moduleForRoute: an unknown path belongs to nobodypassed0 msFrontend · unit
lib/catalog.test.ts::moduleForNav: every screen resolves to its modulepassed17 msFrontend · unit
lib/catalog.test.ts::holdsVerb: admin holds everything, operator holds the restpassed6 msFrontend · unit
lib/catalog.test.ts::catalogue: every screen it names exists as a pagepassed7 msFrontend · unit
lib/catalog.test.ts::catalogue: every nav href in nav.ts has a module or is ungatedpassed9 msFrontend · unit
lib/catalog.test.ts::catalogue: five SoD pairs, all naming real modules and rolespassed0 msFrontend · unit
lib/catalog.test.ts::presets: each is either a standing role or a set of assignmentspassed0 msFrontend · unit
lib/catalog.test.ts::presets: none writes both sides of an SoD pairpassed1 msFrontend · unit
lib/catalog.test.ts::presets: the marketer is scoped per practice, never globallypassed0 msFrontend · unit
lib/catalog.test.ts::catalogue: exactly one shared-mailbox admin exception, with a review datepassed5 msFrontend · unit
lib/catalog.test.ts::catalogue: the committed file equals a fresh generationpassed216 msFrontend · unit
lib/ccm.test.ts::an ICD-10 code is recognised by shape, case-insensitivelypassed3 msFrontend · unit
lib/ccm.test.ts::chosen labels map back to codes; a typed code is custom; free text is namedpassed8 msFrontend · unit
lib/ccm.test.ts::a complete form is not blockedpassed3 msFrontend · unit
lib/ccm.test.ts::each missing piece is named, in the order a person fixes itpassed1 msFrontend · unit
lib/ccm.test.ts::a bare tick box is not consent — only a document or a documented verbal consentpassed0 msFrontend · unit
lib/ccm.test.ts::the minutes line says how far from 99490, and why a patient cannot billpassed0 msFrontend · unit
lib/ccm.test.ts::the consent line names what is on filepassed1 msFrontend · unit
lib/ccm.test.ts::the server's refusals read as sentencespassed1 msFrontend · unit
lib/ccm.test.ts::Onboarding offers CCM only at a practice that runs itpassed0 msFrontend · unit
lib/ccm.test.ts::Enrol a patient lands on Onboarding filtered to the practicepassed0 msFrontend · unit
lib/ccm.test.ts::monthKey is local YYYY-MMpassed0 msFrontend · unit
lib/chart-review.test.ts::the clock floors, exactly as the ledger countspassed3 msFrontend · unit
lib/chart-review.test.ts::the clock cannot exceed the cap, however long the tab was openpassed0 msFrontend · unit
lib/chart-review.test.ts::a clock that has not started, or runs backwards, is zero not NaNpassed0 msFrontend · unit
lib/chart-review.test.ts::the cap is named in the text, so 60 does not look like a stuck timerpassed2 msFrontend · unit
lib/chart-review.test.ts::a restarted clock explains itself rather than looking brokenpassed1 msFrontend · unit
lib/chart-review.test.ts::an ordinary session says nothing about abandonmentpassed0 msFrontend · unit
lib/chart-review.test.ts::logging what was measured is always allowedpassed0 msFrontend · unit
lib/chart-review.test.ts::more than measured needs a reason — the server's rule, said firstpassed0 msFrontend · unit
lib/chart-review.test.ts::the cap is refused on the screen, not only at the serverpassed0 msFrontend · unit
lib/chart-review.test.ts::a negative or non-numeric figure is refusedpassed0 msFrontend · unit
lib/chart-review.test.ts::the adjustment warning fires before the write, not afterpassed0 msFrontend · unit
lib/chart-review.test.ts::the period names what will be reviewedpassed0 msFrontend · unit
lib/chart-review.test.ts::zero minutes is stated, never left blankpassed0 msFrontend · unit
lib/chart-review.test.ts::an empty period offers both ways out and calls neither an errorpassed0 msFrontend · unit
lib/client-growth-outreach.test.ts::fit bands are ordered high to low so the first match winspassed13 msFrontend · unit
lib/client-growth-outreach.test.ts::a missing score is below the line rather than top decilepassed1 msFrontend · unit
lib/client-growth-outreach.test.ts::a derived provider count SAYS it was estimatedpassed1 msFrontend · unit
lib/client-growth-outreach.test.ts::an unknown provider count says unknown, never zeropassed0 msFrontend · unit
lib/client-growth-outreach.test.ts::singular and plural both read correctlypassed0 msFrontend · unit
lib/client-growth-outreach.test.ts::a state-level Medicare share is marked as an estimatepassed1 msFrontend · unit
lib/client-growth-outreach.test.ts::an unresolved density says so rather than printing 0%passed0 msFrontend · unit
lib/client-growth-outreach.test.ts::a switched-off programme names its own switchpassed1 msFrontend · unit
lib/client-growth-outreach.test.ts::the programme switch is reported BEFORE the deployment gatepassed0 msFrontend · unit
lib/client-growth-outreach.test.ts::a held deployment names APP_MODE and not the mail serverpassed0 msFrontend · unit
lib/client-growth-outreach.test.ts::a dry run is its own tone, not 'held' and not 'live'passed0 msFrontend · unit
lib/client-growth-outreach.test.ts::an unknown sending state is held, never livepassed2 msFrontend · unit
lib/client-growth-outreach.test.ts::overdue is stated in days and never as an epoch artefactpassed0 msFrontend · unit
lib/client-growth-outreach.test.ts::tasks rank overdue first, then by oldest duepassed4 msFrontend · unit
lib/client-growth-outreach.test.ts::ranking does not mutate the caller's arraypassed0 msFrontend · unit
lib/client-growth-outreach.test.ts::every channel has a human labelpassed0 msFrontend · unit
lib/client-growth-outreach.test.ts::ordering keeps EVERY channel, including the empty onespassed0 msFrontend · unit
lib/client-growth-outreach.test.ts::an empty funnel carries the server's explanation throughpassed0 msFrontend · unit
lib/client-growth-outreach.test.ts::blockers name what is missing rather than hiding the rowpassed0 msFrontend · unit
lib/client-growth-outreach.test.ts::a complete row has no blockerspassed0 msFrontend · unit
lib/client-growth.test.ts::won and lost are not board columnspassed17 msFrontend · unit
lib/client-growth.test.ts::every column carries a value total and an empty column still renderspassed1 msFrontend · unit
lib/client-growth.test.ts::every stage has a label AND a sentence saying what it meanspassed0 msFrontend · unit
lib/client-growth.test.ts::a prospect with no timestamp has an UNKNOWN age, not an age of zeropassed0 msFrontend · unit
lib/client-growth.test.ts::days in stage counts from stageEnteredAt, falling back only if absentpassed0 msFrontend · unit
lib/client-growth.test.ts::staleness is judged against the STAGE's own thresholdpassed2 msFrontend · unit
lib/client-growth.test.ts::a closed prospect is never stalepassed0 msFrontend · unit
lib/client-growth.test.ts::the chase list is ordered by how far PAST its own threshold each one ispassed1 msFrontend · unit
lib/client-growth.test.ts::an absent amount renders as an em dash, never as $0passed57 msFrontend · unit
lib/client-growth.test.ts::funnel bars scale to the WIDEST stage, not to the totalpassed1 msFrontend · unit
lib/client-growth.test.ts::funnel bars survive an all-zero funnel without dividing by zeropassed0 msFrontend · unit
lib/client-growth.test.ts::an empty portfolio says so rather than reporting all-clearpassed1 msFrontend · unit
lib/client-growth.test.ts::the attention count includes NOT STARTED, not only at-risk and criticalpassed1 msFrontend · unit
lib/client-growth.test.ts::one practice is not pluralisedpassed0 msFrontend · unit
lib/client-growth.test.ts::every health band has a tone, so two screens cannot disagreepassed0 msFrontend · unit
lib/clinic-clock.test.ts::the zone comes off the row, and the two clinic zones disagreepassed72 msFrontend · unit
lib/clinic-clock.test.ts::a row with no zone falls back to the platform default, never the viewerpassed1 msFrontend · unit
lib/clinic-clock.test.ts::an abbreviation or a numeric offset is not a zonepassed0 msFrontend · unit
lib/clinic-clock.test.ts::the calendar day is the clinic's, and the two clinics disagree at the edgepassed3 msFrontend · unit
lib/clinic-clock.test.ts::same-clinic-day agrees with the escalation dedupe the backend runspassed1 msFrontend · unit
lib/clinic-clock.test.ts::a day is read at its own instant, so DST is handledpassed1 msFrontend · unit
lib/clinic-name.test.ts::an id stored as the name never renders as a namepassed3 msFrontend · unit
lib/clinic-name.test.ts::a real name renderspassed0 msFrontend · unit
lib/clinic-name.test.ts::a name that merely mentions the id is keptpassed2 msFrontend · unit
lib/clinic-name.test.ts::an empty or whitespace name is reported, not rendered blankpassed0 msFrontend · unit
lib/clinic-name.test.ts::with no branchId it still refuses an empty namepassed0 msFrontend · unit
lib/clinic-name.test.ts::the unnamed signal is detectable, so a screen can offer the remedypassed0 msFrontend · unit
lib/clinic-operating-model.test.ts::both answers are offered and each states its consequencepassed3 msFrontend · unit
lib/clinic-operating-model.test.ts::the choice is the question, not the jargonpassed0 msFrontend · unit
lib/clinic-operating-model.test.ts::the default is the narrower authoritypassed0 msFrontend · unit
lib/clinic-operating-model.test.ts::the demog payload carries every field the branch form collectspassed3 msFrontend · unit
lib/clinic-operating-model.test.ts::blank fields are dropped, not stored as empty stringspassed0 msFrontend · unit
lib/clinic-operating-model.test.ts::a clinic missing letterhead details is reportedpassed1 msFrontend · unit
lib/clinic-operating-model.test.ts::a null demog is a gap, not a crashpassed0 msFrontend · unit
lib/clinic-roster.test.ts::offers exactly manager and representativepassed5 msFrontend · unit
lib/clinic-roster.test.ts::says in words that a manager cannot change the clinic's entitlementspassed1 msFrontend · unit
lib/clinic-roster.test.ts::an unknown role reads as the least authority, never the mostpassed0 msFrontend · unit
lib/clinic-roster.test.ts::the only manager is flaggedpassed1 msFrontend · unit
lib/clinic-roster.test.ts::a second manager clears the flagpassed0 msFrontend · unit
lib/clinic-roster.test.ts::a TERMINATED manager does not count as coverpassed0 msFrontend · unit
lib/clinic-roster.test.ts::the reason names the remedy, not just the refusalpassed1 msFrontend · unit
lib/clinic-roster.test.ts::a clinic with no manager is a distinct state from one with a last managerpassed0 msFrontend · unit
lib/clinic-roster.test.ts::managers first, then by namepassed53 msFrontend · unit
lib/clinic-roster.test.ts::does not mutate its inputpassed0 msFrontend · unit
lib/clinic-roster.test.ts::locks a recorded clinical identity on editpassed0 msFrontend · unit
lib/clinic-roster.test.ts::does not lock a non-clinical person, who may later be credentialedpassed0 msFrontend · unit
lib/clinic-roster.test.ts::does not lock a NEW person — there is nothing recorded yetpassed0 msFrontend · unit
lib/clinic-roster.test.ts::a new person defaults to representative, not managerpassed0 msFrontend · unit
lib/clinic-roster.test.ts::requires a name and a real address, because the address IS the loginpassed1 msFrontend · unit
lib/clinic-roster.test.ts::refuses a clinical role AND a job title togetherpassed0 msFrontend · unit
lib/clinic-roster.test.ts::drops the designation for a clinician on the way outpassed0 msFrontend · unit
lib/clinic-roster.test.ts::round-trips an existing person without losing their credentialpassed0 msFrontend · unit
lib/clinic-roster.test.ts::never says 'invitation sent' when the transport did not report onepassed1 msFrontend · unit
lib/clinic-roster.test.ts::says so plainly when it did gopassed0 msFrontend · unit
lib/clinic-roster.test.ts::prefers the temporary password when there is one — it is the way inpassed0 msFrontend · unit
lib/clinic-roster.test.ts::a failed login is reported as a failed login, not as a hirepassed0 msFrontend · unit
lib/clinic-roster.test.ts::an unreported reason says so rather than reading as successpassed0 msFrontend · unit
lib/clinic-roster.test.ts::a missing login object is not treated as a successful onepassed0 msFrontend · unit
lib/clinic-roster.test.ts::names the count for one clinicpassed0 msFrontend · unit
lib/clinic-roster.test.ts::names the count for several — the shape a confined staff member seespassed0 msFrontend · unit
lib/clinic-roster.test.ts::never says 'you run' — the picker also serves staff who do notpassed0 msFrontend · unit
lib/clinic-roster.test.ts::an empty list is reported as a gap, not silently offered as zero clinicspassed0 msFrontend · unit
lib/clinic-roster.test.ts::treats a row with no employer as the practice's own — an older server sent neither fieldpassed1 msFrontend · unit
lib/clinic-roster.test.ts::refuses to edit PatientMD's staff, and says whose record it ispassed2 msFrontend · unit
lib/clinic-roster.test.ts::a Branch Admin PatientMD employs does not count as the clinic's managerpassed0 msFrontend · unit
lib/clinic-roster.test.ts::the last-manager guard ignores PatientMD's staffpassed0 msFrontend · unit
lib/clinic-roster.test.ts::sorts the practice's own people before PatientMD'spassed0 msFrontend · unit
lib/clinic-roster.test.ts::reports the clinical teams a hire was added to, and says nothing when there are nonepassed0 msFrontend · unit
lib/clinic-roster.test.ts::recognises the row by its provenancepassed0 msFrontend · unit
lib/clinic-roster.test.ts::never claims an employer it has no record ofpassed0 msFrontend · unit
lib/clinic-roster.test.ts::cannot be edited or ended, and says which refusal it ispassed0 msFrontend · unit
lib/clinic-roster.test.ts::is not counted as a manager the clinic could losepassed0 msFrontend · unit
lib/clinic-roster.test.ts::sorts after the people the screen can act onpassed0 msFrontend · unit
lib/clinic-roster.test.ts::a row from an older server, carrying neither field, is still the clinic'spassed0 msFrontend · unit
lib/clinic-roster.test.ts::permits shrinking at every flex level between header and selectpassed3 msFrontend · unit
lib/clinic-roster.test.ts::bounds the select by the layout, not by today's longest namepassed2 msFrontend · unit
lib/clinic-roster.test.ts::ellipsises the overflow rather than clipping or wrapping itpassed0 msFrontend · unit
lib/clinic-roster.test.ts::never lets the Add-someone button be the thing that gives waypassed0 msFrontend · unit
lib/clinic-roster.test.ts::stops the subtitle from deciding whether the controls fit on the rowpassed0 msFrontend · unit
lib/clinic-roster.test.ts::ellipsises the subtitle rather than growing the headerpassed0 msFrontend · unit
lib/clinic-roster.test.ts::keeps the picker a fixed-width control regardless of the option listpassed0 msFrontend · unit
lib/clinic-roster.test.ts::gives the full name of the picked practice for the tooltippassed0 msFrontend · unit
lib/clinic-roster.test.ts::is undefined when nothing is pickedpassed0 msFrontend · unit
lib/clinic-roster.test.ts::is undefined — never a placeholder — for an id no option carriespassed0 msFrontend · unit
lib/clinic-roster.test.ts::is undefined for an option whose name is blankpassed0 msFrontend · unit
lib/clinic-scope.test.ts::does not offer 'All clinics' to somebody eligible for exactly onepassed3 msFrontend · unit
lib/clinic-scope.test.ts::selects that one clinic instead of leaving the label wider than the datapassed0 msFrontend · unit
lib/clinic-scope.test.ts::leaves an explicit choice alonepassed0 msFrontend · unit
lib/clinic-scope.test.ts::still offers the rollup to an operator who genuinely runs severalpassed0 msFrontend · unit
lib/clinic-scope.test.ts::names the selected clinic when the rollup is availablepassed0 msFrontend · unit
lib/clinic-scope.test.ts::says 'Unknown clinic' rather than rendering blank on a stale idpassed0 msFrontend · unit
lib/clinic-scope.test.ts::distinguishes 'no clinics assigned' from a count of zeropassed0 msFrontend · unit
lib/clinic-scope.test.ts::never auto-selects or offers a rollup while still loadingpassed0 msFrontend · unit
lib/clinical-desk.test.ts::every gap screen has a route on diskpassed13 msFrontend · unit
lib/clinical-desk.test.ts::every gap screen is reachable from the doctor menupassed1 msFrontend · unit
lib/clinical-desk.test.ts::each one records what it was found missing against, and whypassed1 msFrontend · unit
lib/clinical-desk.test.ts::no two gap screens share a slug or an endpointpassed0 msFrontend · unit
lib/clinical-desk.test.ts::each gap screen's permission gate is a key this app actually grantspassed12 msFrontend · unit
lib/clinical-desk.test.ts::every screen marked live has an endpoint that actually exists in patientmd-corepassed1 msFrontend · unit
lib/clinical-desk.test.ts::the gap list is not silently emptypassed0 msFrontend · unit
lib/command-palette.test.ts::⌘K and Ctrl-K both open itpassed8 msFrontend · unit
lib/command-palette.test.ts::a bare k, and k with Alt, are somebody else's keystrokespassed0 msFrontend · unit
lib/command-palette.test.ts::the hint printed is the chord the reader can actually typepassed1 msFrontend · unit
lib/command-palette.test.ts::arrow keys enter the list from the correct endpassed0 msFrontend · unit
lib/command-palette.test.ts::the highlight wraps, so the last item is one ArrowUp awaypassed0 msFrontend · unit
lib/command-palette.test.ts::an empty list has no highlight — never index 0passed0 msFrontend · unit
lib/command-palette.test.ts::a stale cursor from a longer previous list is corrected, not trustedpassed0 msFrontend · unit
lib/command-palette.test.ts::option ids are namespaced per palette instancepassed0 msFrontend · unit
lib/command-palette.test.ts::four states, and 'nothing to search' is one of thempassed0 msFrontend · unit
lib/command-palette.test.ts::the matcher is untouched — same function, same answerspassed3 msFrontend · unit
lib/command-palette.test.ts::the search trigger is in the shell every portal sharespassed1 msFrontend · unit
lib/command-palette.test.ts::both search surfaces read the RESOLVED destination listpassed1 msFrontend · unit
lib/command-palette.test.ts::the nav still offers /dashboard/search — the palette adds, it does not replacepassed1 msFrontend · unit
lib/command-palette.test.ts::the trigger and the dialog share one accessible namepassed0 msFrontend · unit
lib/comms.test.ts::renders a NANP number the way a person reads onepassed2 msFrontend · unit
lib/comms.test.ts::leaves a short code alonepassed5 msFrontend · unit
lib/comms.test.ts::leaves an already-formatted or foreign number alonepassed0 msFrontend · unit
lib/comms.test.ts::survives an empty addresspassed1 msFrontend · unit
lib/comms.test.ts::a resolved person shows their namepassed1 msFrontend · unit
lib/comms.test.ts::an unresolved number is shown AS a number, never as a namepassed0 msFrontend · unit
lib/comms.test.ts::a name that is just the address back again counts as unknownpassed0 msFrontend · unit
lib/comms.test.ts::prefers the name the vendor gave the roompassed1 msFrontend · unit
lib/comms.test.ts::names a 1:1 thread after the personpassed0 msFrontend · unit
lib/comms.test.ts::names a two-person group after bothpassed0 msFrontend · unit
lib/comms.test.ts::summarises a larger group without hiding its sizepassed1 msFrontend · unit
lib/comms.test.ts::never renders the thread id as a titlepassed0 msFrontend · unit
lib/comms.test.ts::every severity has a labelpassed1 msFrontend · unit
lib/comms.test.ts::an unknown severity still says somethingpassed0 msFrontend · unit
lib/comms.test.ts::tone and label are separate so one can be shown without the otherpassed0 msFrontend · unit
lib/comms.test.ts::explains each kind in words a person can act onpassed1 msFrontend · unit
lib/comms.test.ts::an unrecognised kind still renders somethingpassed0 msFrontend · unit
lib/comms.test.ts::reads in the same units the backend reasons usepassed10 msFrontend · unit
lib/comms.test.ts::a missing timestamp is a dash, not 1970passed1 msFrontend · unit
lib/comms.test.ts::an SMS thread with RingCentral configured is answerablepassed2 msFrontend · unit
lib/comms.test.ts::an in-app thread says where to reply insteadpassed0 msFrontend · unit
lib/comms.test.ts::a group with only Twilio explains what would go wrongpassed1 msFrontend · unit
lib/comms.test.ts::no transport at all says so rather than failing silentlypassed0 msFrontend · unit
lib/comms.test.ts::a team archive is read-only and says whypassed1 msFrontend · unit
lib/comms.test.ts::open findings come before quiet threads however recent those arepassed3 msFrontend · unit
lib/comms.test.ts::clinical outranks billing even when billing is more recentpassed0 msFrontend · unit
lib/comms.test.ts::quiet threads fall back to newest firstpassed0 msFrontend · unit
lib/comms.test.ts::does not mutate its inputpassed0 msFrontend · unit
lib/comms.test.ts::an empty inbox sorts to an empty inboxpassed0 msFrontend · unit
lib/comms.test.ts::counts only the threads with something outstandingpassed0 msFrontend · unit
lib/comms.test.ts::an empty inbox needs no repliespassed0 msFrontend · unit
lib/comms.test.ts::names the practice's own numberpassed1 msFrontend · unit
lib/comms.test.ts::SAYS SO when the practice is borrowing the shared numberpassed0 msFrontend · unit
lib/comms.test.ts::reports the reason rather than an empty string when there is no numberpassed0 msFrontend · unit
lib/comms.test.ts::still explains itself when handed nothing at allpassed0 msFrontend · unit
lib/comms.test.ts::calls a Twilio group what it is, before the sendpassed1 msFrontend · unit
lib/comms.test.ts::treats a RingCentral group as the real room it ispassed0 msFrontend · unit
lib/comms.test.ts::never puts a broadcast warning on a 1:1passed0 msFrontend · unit
lib/comms.test.ts::badges the two modes differentlypassed0 msFrontend · unit
lib/confirm-action-honest.test.ts::ConfirmAction never reports a failed request as queuedpassed3 msFrontend · unit
lib/confirm-action-honest.test.ts::the check fires on the old shape (probe)passed1 msFrontend · unit
lib/consent-gate.test.ts::consent state is derived from the onboardFlow stampspassed4 msFrontend · unit
lib/consent-gate.test.ts::a declined consent outranks an earlier signaturepassed0 msFrontend · unit
lib/consent-gate.test.ts::assignment is refused outright when nobody in the selection consentedpassed3 msFrontend · unit
lib/consent-gate.test.ts::an empty selection is refused with a different messagepassed0 msFrontend · unit
lib/consent-gate.test.ts::a consented patient may be assigned, silentlypassed3 msFrontend · unit
lib/consent-gate.test.ts::a mixed batch proceeds with the consented rows and names the skipped countpassed1 msFrontend · unit
lib/consent-gate.test.ts::an id with no matching row is skipped, not assumed consentedpassed0 msFrontend · unit
lib/consent-gate.test.ts::once consent is recorded, sending and uploading both closepassed0 msFrontend · unit
lib/consent-gate.test.ts::a merely sent consent leaves both actions openpassed0 msFrontend · unit
lib/consent-gate.test.ts::a manual upload counts as consent for the lockoutpassed0 msFrontend · unit
lib/consent-gate.test.ts::refMedia is recognised whether it is a list or a single valuepassed0 msFrontend · unit
lib/consent-gate.test.ts::single and bulk assignment land on the same dedicated pagepassed1 msFrontend · unit
lib/consent-gate.test.ts::the ids survive the round trip through the query stringpassed1 msFrontend · unit
lib/consent-gate.test.ts::a malformed or absent ids param yields nothing rather than a phantom rowpassed0 msFrontend · unit
lib/consent-gate.test.ts::a consent DOCUMENT on file counts as consent even when the flag is falsepassed0 msFrontend · unit
lib/consent-gate.test.ts::an enrolment carried over from a legacy contract is its own statepassed0 msFrontend · unit
lib/consent-gate.test.ts::it is NOT reported as consent received — the platform never saw onepassed0 msFrontend · unit
lib/consent-gate.test.ts::...and it does not block the care plan of a patient already under carepassed1 msFrontend · unit
lib/consent-gate.test.ts::a decline still outranks a legacy enrolmentpassed0 msFrontend · unit
lib/consent-gate.test.ts::a bulk assign includes legacy enrolments and still skips the unconsentedpassed0 msFrontend · unit
lib/consent-gate.test.ts::a Drive-ingested consent is a consent, and it is not called Digitalpassed1 msFrontend · unit
lib/consent-gate.test.ts::a channel the record does not name reads Not recorded, never Digitalpassed1 msFrontend · unit
lib/consent-gate.test.ts::the migrated legacy channels are carried through, not flattenedpassed0 msFrontend · unit
lib/consent-gate.test.ts::the string the enrolment backfill writes is not a consent documentpassed0 msFrontend · unit
lib/consent-gate.test.ts::one document reached by two writers is counted oncepassed0 msFrontend · unit
lib/consent-gate.test.ts::an app e-consent still reads as an app e-consentpassed0 msFrontend · unit
lib/consent-journey.test.ts::a fresh link opens on the agreement and says the link keeps workingpassed4 msFrontend · unit
lib/consent-journey.test.ts::registering interest moves them to signing, not to enrolledpassed0 msFrontend · unit
lib/consent-journey.test.ts::a decline outranks everything and is never re-asked on the pagepassed0 msFrontend · unit
lib/consent-journey.test.ts::a recorded consent is terminalpassed0 msFrontend · unit
lib/consent-journey.test.ts::the patient is never told which signature method 'counts'passed0 msFrontend · unit
lib/consent-journey.test.ts::asking for paper is its own stage, and still allows signing herepassed0 msFrontend · unit
lib/consent-journey.test.ts::only the unanswered stages leave the practice waiting on the patientpassed0 msFrontend · unit
lib/consent-journey.test.ts::the practice owes a form on paper, and owes a declined patient nothingpassed0 msFrontend · unit
lib/consent-journey.test.ts::an unrecognised status degrades to the safe stage, never to signedpassed1 msFrontend · unit
lib/consent-media.test.ts::reads the single-object refMedia the upload handler writespassed11 msFrontend · unit
lib/consent-media.test.ts::reads the legacy CRefWithMedia list shape toopassed0 msFrontend · unit
lib/consent-media.test.ts::skips malformed entries rather than returning a broken linkpassed0 msFrontend · unit
lib/consent-media.test.ts::a stored document links to the served filepassed0 msFrontend · unit
lib/consent-media.test.ts::a digital e-consent links to the signed record insteadpassed0 msFrontend · unit
lib/consent-media.test.ts::ids are encodedpassed0 msFrontend · unit
lib/consent-media.test.ts::the link label reflects what will actually openpassed0 msFrontend · unit
lib/consent-media.test.ts::a failed consent fetch says WHY, not just that it failedpassed1 msFrontend · unit
lib/consent-media.test.ts::the Drive ingest's evidence entry resolves to a real document linkpassed0 msFrontend · unit
lib/consent-media.test.ts::refMedia still wins when both shapes are presentpassed0 msFrontend · unit
lib/consent-media.test.ts::the enrolment backfill's note never becomes a document linkpassed0 msFrontend · unit
lib/consent-media.test.ts::a bare media id is a document, not nothingpassed0 msFrontend · unit
lib/consent-validation.test.ts::validateConsentFile rejects a missing file (Ticket 1.1)passed11 msFrontend · unit
lib/consent-validation.test.ts::validateConsentFile rejects an empty filepassed0 msFrontend · unit
lib/consent-validation.test.ts::validateConsentFile accepts a PDF by MIME typepassed0 msFrontend · unit
lib/consent-validation.test.ts::validateConsentFile accepts a JPEG by extension when type is blankpassed2 msFrontend · unit
lib/consent-validation.test.ts::validateConsentFile rejects a non-PDF/JPEG documentpassed0 msFrontend · unit
lib/consent-worklist.test.ts::age is measured from enrolment, and years are said as yearspassed9 msFrontend · unit
lib/consent-worklist.test.ts::a device still out with no consent is named, because that is today's riskpassed0 msFrontend · unit
lib/consent-worklist.test.ts::no device out means no scare sentencepassed0 msFrontend · unit
lib/consent-worklist.test.ts::nothing unresolved says so plainlypassed0 msFrontend · unit
lib/consent-worklist.test.ts::an attestation is NEVER added to a filed documentpassed0 msFrontend · unit
lib/consent-worklist.test.ts::outcomes that are neither are counted, not droppedpassed0 msFrontend · unit
lib/consent-worklist.test.ts::nothing resolved is stated rather than rendered as zeroespassed0 msFrontend · unit
lib/constitution-faq.test.ts::the constitution is reachable from the frontend repopassed5 msFrontend · unit
lib/constitution-faq.test.ts::the register parses and is not emptypassed5 msFrontend · unit
lib/constitution-faq.test.ts::every defect names a frontend test that existspassed13 msFrontend · unit
lib/constitution-faq.test.ts::every defect names a frontend test that actually contains testspassed33 msFrontend · unit
lib/constitution-faq.test.ts::no defect leaves either side blankpassed4 msFrontend · unit
lib/constitution-faq.test.ts::defect ids are uniquepassed4 msFrontend · unit
lib/constitution-faq.test.ts::every row describes what went wrong, not what is now finepassed3 msFrontend · unit
lib/contact-patient.test.ts::a bound patient is used immediately, with no picking steppassed11 msFrontend · unit
lib/contact-patient.test.ts::a bound patient is never widened into a pick-listpassed2 msFrontend · unit
lib/contact-patient.test.ts::without a bound patient, a supplied list is offeredpassed0 msFrontend · unit
lib/contact-patient.test.ts::precedence falls through fetched then seedpassed0 msFrontend · unit
lib/contact-patient.test.ts::an empty fetch falls back rather than leaving the modal blankpassed0 msFrontend · unit
lib/contact-patient.test.ts::rows without an id are discarded, not shown as blank entriespassed0 msFrontend · unit
lib/contact-patient.test.ts::a bound patient with no id does not lock an empty contextpassed0 msFrontend · unit
lib/contact-patient.test.ts::the active patient is the bound one, whatever the list sayspassed0 msFrontend · unit
lib/contact-patient.test.ts::a stale selection resolves to null rather than to someone elsepassed0 msFrontend · unit
lib/contact-patient.test.ts::the modal has exactly the two tabs QA specified, in orderpassed0 msFrontend · unit
lib/contact-patient.test.ts::names come from either the row or its demog blockpassed0 msFrontend · unit
lib/contact-patient.test.ts::a nameless row shows its id, and an anonymous row says Patientpassed0 msFrontend · unit
lib/contact-patient.test.ts::ids are read from any of the three key names in usepassed0 msFrontend · unit
lib/contact-patient.test.ts::a missing phone stays empty instead of inheriting a demo numberpassed0 msFrontend · unit
lib/contact-patient.test.ts::toContact produces exactly what the modal needspassed0 msFrontend · unit
lib/contacts-merge.test.ts::an address matches whatever case and spacing it was stored inpassed3 msFrontend · unit
lib/contacts-merge.test.ts::a contact is told when its address is also on the mailing listpassed1 msFrontend · unit
lib/contacts-merge.test.ts::an UNSUBSCRIBED address never reads as subscribedpassed0 msFrontend · unit
lib/contacts-merge.test.ts::a contact with no address is never matched to anythingpassed0 msFrontend · unit
lib/contacts-merge.test.ts::legacy provenance survives onto the contact rowpassed0 msFrontend · unit
lib/contacts-merge.test.ts::subscribed addresses that are not contacts are listed as the gappassed4 msFrontend · unit
lib/contacts-merge.test.ts::the same address in both collections is listed once, keeping the newerpassed0 msFrontend · unit
lib/contacts-merge.test.ts::a subscriber with no date sorts last, not to 1970passed0 msFrontend · unit
lib/contacts-merge.test.ts::an unsubscribed address is not offered as a gap to closepassed0 msFrontend · unit
lib/contacts-merge.test.ts::the summary counts contacts, subscriptions, the gap and the legacy carry-overpassed1 msFrontend · unit
lib/contacts-merge.test.ts::the summary says nothing about a gap or legacy rows when there are nonepassed0 msFrontend · unit
lib/contacts-merge.test.ts::NO subscriber disappears in the mergepassed1 msFrontend · unit
lib/contacts-merge.test.ts::search reaches every field somebody would typepassed1 msFrontend · unit
lib/contrast-tokens.test.ts::the palette parses — otherwise every check below passes vacuouslypassed5 msFrontend · unit
lib/contrast-tokens.test.ts::body text meets 4.5:1 on both surfacespassed28 msFrontend · unit
lib/contrast-tokens.test.ts::the primary colour works as TEXT, which is how links use itpassed1 msFrontend · unit
lib/contrast-tokens.test.ts::a white label ON the primary colour also meets 4.5:1passed1 msFrontend · unit
lib/contrast-tokens.test.ts::destructive actions are legible in both directionspassed1 msFrontend · unit
lib/contrast-tokens.test.ts::form field boundaries meet the 3:1 non-text thresholdpassed1 msFrontend · unit
lib/contrast-tokens.test.ts::the focus ring is visible against the surfaces it appears onpassed1 msFrontend · unit
lib/contrast-tokens.test.ts::large text still needs 3:1 and headings clear it comfortablypassed1 msFrontend · unit
lib/contrast-tokens.test.ts::every portal palette in the stylesheet is one this test measurespassed1 msFrontend · unit
lib/contrast-tokens.test.ts::patient: body and action text meet 4.5:1passed5 msFrontend · unit
lib/contrast-tokens.test.ts::patient: field boundaries and the focus ring meet 3:1passed1 msFrontend · unit
lib/contrast-tokens.test.ts::patient: the portal is actually distinguishable from the otherspassed4 msFrontend · unit
lib/contrast-tokens.test.ts::patient: danger is still red, not the brand colourpassed1 msFrontend · unit
lib/contrast-tokens.test.ts::doctor: body and action text meet 4.5:1passed1 msFrontend · unit
lib/contrast-tokens.test.ts::doctor: field boundaries and the focus ring meet 3:1passed1 msFrontend · unit
lib/contrast-tokens.test.ts::doctor: the portal is actually distinguishable from the otherspassed1 msFrontend · unit
lib/contrast-tokens.test.ts::doctor: danger is still red, not the brand colourpassed0 msFrontend · unit
lib/contrast-tokens.test.ts::business: body and action text meet 4.5:1passed1 msFrontend · unit
lib/contrast-tokens.test.ts::business: field boundaries and the focus ring meet 3:1passed1 msFrontend · unit
lib/contrast-tokens.test.ts::business: the portal is actually distinguishable from the otherspassed1 msFrontend · unit
lib/contrast-tokens.test.ts::business: danger is still red, not the brand colourpassed0 msFrontend · unit
lib/contrast-tokens.test.ts::the three portal primaries are inside sRGB, so nothing is mapped awaypassed1 msFrontend · unit
lib/contrast-tokens.test.ts::an out-of-gamut colour is detected, and an in-gamut one is notpassed0 msFrontend · unit
lib/contrast-tokens.test.ts::gamut mapping holds hue and lightness, and only pulls chroma inpassed2 msFrontend · unit
lib/contrast-tokens.test.ts::the ratio is order-independent and bounded, as WCAG defines itpassed1 msFrontend · unit
lib/contrast-tokens.test.ts::relative luminance matches the known anchorspassed4 msFrontend · unit
lib/contrast-tokens.test.ts::oklch converts to the sRGB a browser would renderpassed1 msFrontend · unit
lib/contrast-tokens.test.ts::an unparseable colour scores 0 rather than passingpassed0 msFrontend · unit
lib/conveyor.test.ts::toneFor maps statuses to colour tonespassed6 msFrontend · unit
lib/conveyor.test.ts::statusLabel is human-readablepassed0 msFrontend · unit
lib/conveyor.test.ts::conveyorPercent computes progresspassed0 msFrontend · unit
lib/conveyor.test.ts::needsApproval flags pending human stepspassed0 msFrontend · unit
lib/cpt-autofill.test.ts::fills the description when a known code is typedpassed3 msFrontend · unit
lib/cpt-autofill.test.ts::swaps its own wording when the code changespassed0 msFrontend · unit
lib/cpt-autofill.test.ts::never replaces a description the biller typedpassed0 msFrontend · unit
lib/cpt-autofill.test.ts::an unknown code clears only the module's own textpassed0 msFrontend · unit
lib/cpt-autofill.test.ts::matches a code however it was typedpassed0 msFrontend · unit
lib/cpt-autofill.test.ts::the hint says where the wording came from — and says nothing before the reference loadspassed1 msFrontend · unit
lib/cross-enrolment.test.ts::shows a conflict on the plan being loggedpassed7 msFrontend · unit
lib/cross-enrolment.test.ts::stays quiet about a different programmepassed0 msFrontend · unit
lib/cross-enrolment.test.ts::a combined enrolment is checked against bothpassed2 msFrontend · unit
lib/cross-enrolment.test.ts::an unrecognised plan matches nothing rather than everythingpassed0 msFrontend · unit
lib/cross-enrolment.test.ts::never returns a blocking severitypassed0 msFrontend · unit
lib/cross-enrolment.test.ts::one conflict shows its own headline and reasonpassed1 msFrontend · unit
lib/cross-enrolment.test.ts::several are counted, and the plural is not '1 clinics'passed0 msFrontend · unit
lib/cross-enrolment.test.ts::nothing at all renders nothingpassed0 msFrontend · unit
lib/cross-enrolment.test.ts::a practice outside the tenancy is reported without a namepassed6 msFrontend · unit
lib/customer-service.test.ts::an account with no trail says WHEN the evidence starts, never 'never'passed83 msFrontend · unit
lib/customer-service.test.ts::with no trail at all the wording does not blame the accountpassed0 msFrontend · unit
lib/customer-service.test.ts::a real last-seen renders as elapsed timepassed0 msFrontend · unit
lib/customer-service.test.ts::an unrecorded status is reported as unrecorded, never as activepassed0 msFrontend · unit
lib/customer-service.test.ts::relative time degrades to a date rather than '900d ago'passed0 msFrontend · unit
lib/customer-service.test.ts::the tier refusal and the target refusal are never collapsedpassed0 msFrontend · unit
lib/customer-service.test.ts::an apex refused by the TARGET rule is told about the targetpassed2 msFrontend · unit
lib/customer-service.test.ts::the control is offered only when BOTH halves allow itpassed0 msFrontend · unit
lib/customer-service.test.ts::no target selected is not the same as refusedpassed0 msFrontend · unit
lib/customer-service.test.ts::the reason floor is mirrored so the button disables before the 400passed6 msFrontend · unit
lib/customer-service.test.ts::an empty source says WHICH kind of empty it ispassed9 msFrontend · unit
lib/customer-service.test.ts::every actor-kind chip renders even at zeropassed4 msFrontend · unit
lib/customer-service.test.ts::chips carry the out-of-window total so zero is legiblepassed0 msFrontend · unit
lib/customer-service.test.ts::activity groups by actor, newest group first, counting refusalspassed1 msFrontend · unit
lib/customer-service.test.ts::a human and an agent with the same name are two groupspassed2 msFrontend · unit
lib/customer-service.test.ts::an unattributed row is labelled, not droppedpassed0 msFrontend · unit
lib/customer-service.test.ts::outcome tones cover every outcome the server emitspassed0 msFrontend · unit
lib/customer-service.test.ts::the people search narrows on what is already on screenpassed1 msFrontend · unit
lib/customer-service.test.ts::every label map covers every key the server can sendpassed1 msFrontend · unit
lib/dark-variant-is-inert.test.ts::the dark variant is bound to a class, not to prefers-color-schemepassed4 msFrontend · unit
lib/dark-variant-is-inert.test.ts::the stylesheet still declares itself light-onlypassed10 msFrontend · unit
lib/dark-variant-is-inert.test.ts::nothing in the app sets the .dark class, so the variant stays inertpassed235 msFrontend · unit
lib/data-state.test.ts::a signed-out visitor gets labelled sample datapassed4 msFrontend · unit
lib/data-state.test.ts::a signed-in user with real rows sees them and no bannerpassed1 msFrontend · unit
lib/data-state.test.ts::a signed-in user with NO rows is told so — never given sample rowspassed2 msFrontend · unit
lib/data-state.test.ts::a failed fetch surfaces an error and a retry — never sample rowspassed3 msFrontend · unit
lib/data-state.test.ts::an error outranks whatever rows happened to be in handpassed0 msFrontend · unit
lib/data-state.test.ts::a signed-in session can NEVER be shown sample rowspassed1 msFrontend · unit
lib/data-state.test.ts::a signed-out visitor with no sample data is told to sign inpassed0 msFrontend · unit
lib/data-state.test.ts::the empty message names something the user can actually dopassed0 msFrontend · unit
lib/data-state.test.ts::without a hint, the empty message still names the screenpassed0 msFrontend · unit
lib/data-state.test.ts::an expired session says to sign in again, not 'error 401'passed0 msFrontend · unit
lib/data-state.test.ts::a 403 does NOT say the session expiredpassed0 msFrontend · unit
lib/data-state.test.ts::a server fault and a client fault read differentlypassed0 msFrontend · unit
lib/data-state.test.ts::a rate limit tells the user to wait rather than to retry nowpassed0 msFrontend · unit
lib/data-state.test.ts::a network failure points at the connectionpassed0 msFrontend · unit
lib/data-state.test.ts::an unrecognised error never leaks a stack or a bare codepassed0 msFrontend · unit
lib/data-state.test.ts::resolveRecordState: signed out gets a labelled sample, and only thenpassed0 msFrontend · unit
lib/data-state.test.ts::resolveRecordState: a signed-in caller never receives the samplepassed0 msFrontend · unit
lib/data-state.test.ts::resolveRecordState: missing and error are DIFFERENT answerspassed0 msFrontend · unit
lib/data-state.test.ts::resolveRecordState: only the error state offers a Retrypassed0 msFrontend · unit
lib/data-state.test.ts::resolveRecordState: the error says what has NOT happenedpassed0 msFrontend · unit
lib/data-state.test.ts::resolveRecordState: a live record passes through with nothing to saypassed1 msFrontend · unit
lib/data-state.test.ts::resolveRecordState: a falsy-but-present record is not treated as missingpassed0 msFrontend · unit
lib/data-state.test.ts::formMayRender: nothing is editable before the read settlespassed0 msFrontend · unit
lib/data-state.test.ts::formMayRender: only a mode with a record behind it gets a formpassed0 msFrontend · unit
lib/demographics-quality.test.ts::a complete record raises nothingpassed5 msFrontend · unit
lib/demographics-quality.test.ts::a pre-1970 date of birth is NOT an issuepassed0 msFrontend · unit
lib/demographics-quality.test.ts::a missing identity blocks; missing detail only warnspassed3 msFrontend · unit
lib/demographics-quality.test.ts::a nameless record cannot be assigned topassed0 msFrontend · unit
lib/demographics-quality.test.ts::issues name the patient so the user knows who to fixpassed1 msFrontend · unit
lib/demographics-quality.test.ts::summary distinguishes blocked from merely incompletepassed1 msFrontend · unit
lib/demographics-quality.test.ts::raw epoch detection recognises an unformatted timestamppassed1 msFrontend · unit
lib/deployment-id.test.ts::next.config.ts reads the deployment id from the environmentpassed3 msFrontend · unit
lib/deployment-id.test.ts::an absent deployment id degrades to the old behaviour, never to a crashpassed3 msFrontend · unit
lib/deployment-id.test.ts::the Dockerfile accepts and exports itpassed0 msFrontend · unit
lib/deployment-id.test.ts::compose passes it as a build arg to the ui servicepassed0 msFrontend · unit
lib/deployment-id.test.ts::the deploy script computes one from the tree fingerprintpassed1 msFrontend · unit
lib/deployment-id.test.ts::the client cache cannot outlive a deploy by minutespassed1 msFrontend · unit
lib/device-filter.test.ts::a device is findable by the patient holding itpassed3 msFrontend · unit
lib/device-filter.test.ts::the hardware fields still search as beforepassed4 msFrontend · unit
lib/device-filter.test.ts::search is case- and whitespace-insensitivepassed0 msFrontend · unit
lib/device-filter.test.ts::an unassigned device does not crash the patient-name searchpassed0 msFrontend · unit
lib/device-filter.test.ts::the placeholder names every field actually searchedpassed0 msFrontend · unit
lib/device-filter.test.ts::the branch filter narrows to that branchpassed0 msFrontend · unit
lib/device-filter.test.ts::'all' and an absent filter both mean no branch narrowingpassed0 msFrontend · unit
lib/device-filter.test.ts::a device with no branch is excluded by a specific branch, not by 'all'passed1 msFrontend · unit
lib/device-filter.test.ts::filters compose — branch AND text togetherpassed0 msFrontend · unit
lib/device-filter.test.ts::the category tab narrows by device grouppassed0 msFrontend · unit
lib/device-filter.test.ts::a device with no received date is excluded from a dated windowpassed2 msFrontend · unit
lib/device-filter.test.ts::the window is bounded at both endspassed0 msFrontend · unit
lib/device-filter.test.ts::patients filter by name, email, device status and branchpassed1 msFrontend · unit
lib/device-filter.test.ts::status 'all' keeps everyone regardless of device countpassed0 msFrontend · unit
lib/device-filter.test.ts::the row type survives filtering, so callers keep their own fieldspassed0 msFrontend · unit
lib/device-forms.test.ts::the vocabularies match app/modules/ops/device_forms.py and schemas.py, value for valuepassed14 msFrontend · unit
lib/device-forms.test.ts::a new row names its clinic, patient, device and the fields a prompt box never asked forpassed3 msFrontend · unit
lib/device-forms.test.ts::an edit of a row written before the form existed is not held hostage to a back-fillpassed2 msFrontend · unit
lib/device-forms.test.ts::every message names the remedy (WCAG 2.1 SC 3.3.3)passed8 msFrontend · unit
lib/device-forms.test.ts::a typed identifier is 15 or 16 digits; one picked from the patient's devices is stored as it ispassed2 msFrontend · unit
lib/device-forms.test.ts::a device line shows type, name, identifier and serial — and is never blankpassed1 msFrontend · unit
lib/device-forms.test.ts::an issue payload carries every field, and never who filed itpassed1 msFrontend · unit
lib/device-forms.test.ts::closing an issue needs a note; the reporter on the stored row is never sent backpassed1 msFrontend · unit
lib/device-forms.test.ts::a reported date in the future is refusedpassed2 msFrontend · unit
lib/device-forms.test.ts::a return payload maps the patient to customerName and normalises the tracking numberpassed2 msFrontend · unit
lib/device-forms.test.ts::what the return route refuses, the form refuses firstpassed1 msFrontend · unit
lib/device-forms.test.ts::a caller who may not see money sends NO money key — the server refuses one from thempassed1 msFrontend · unit
lib/device-forms.test.ts::the billing desk's charges are parsed, totalled and validatedpassed1 msFrontend · unit
lib/device-forms.test.ts::one device, one row per year per clinicpassed1 msFrontend · unit
lib/device-forms.test.ts::the returned date follows the returned statuspassed1 msFrontend · unit
lib/device-forms.test.ts::the clinic is the patient's own when the caller manages it, else the one chosen, else nonepassed1 msFrontend · unit
lib/device-forms.test.ts::a calendar day survives the round trip, and nonsense is not a datepassed0 msFrontend · unit
lib/device-health.test.ts::a patient whose readings are arriving is never counted as unmonitoredpassed3 msFrontend · unit
lib/device-health.test.ts::every declared diagnosis has a tone and a place in the orderpassed1 msFrontend · unit
lib/device-health.test.ts::diagnosis tones put no-device and never-activated at the toppassed0 msFrontend · unit
lib/device-health.test.ts::never transmitted is never rendered as a number of silent dayspassed0 msFrontend · unit
lib/device-health.test.ts::needingAPerson excludes what the run repaired by itselfpassed1 msFrontend · unit
lib/device-health.test.ts::the headline counts patients, not devicespassed11 msFrontend · unit
lib/device-health.test.ts::repairText stays silent when nothing was repairedpassed1 msFrontend · unit
lib/device-health.test.ts::groupByDiagnosis keeps severity order and drops empty groupspassed3 msFrontend · unit
lib/device-holders.test.ts::an empty query offers every holder — the list is the search spacepassed4 msFrontend · unit
lib/device-holders.test.ts::name words match in any order, case-insensitivelypassed3 msFrontend · unit
lib/device-holders.test.ts::a device identifier or a phone number finds its holderpassed1 msFrontend · unit
lib/device-holders.test.ts::the hint tells two Averys apart by the device each holdspassed1 msFrontend · unit
lib/device-holders.test.ts::the list is capped so a long clinic cannot render a thousand optionspassed1 msFrontend · unit
lib/device-holders.test.ts::a holder becomes the row the device forms already takepassed0 msFrontend · unit
lib/device-orders.test.ts::a book where nothing has ever moved says exactly thatpassed3 msFrontend · unit
lib/device-orders.test.ts::a book that moves entirely is not described as stuckpassed1 msFrontend · unit
lib/device-orders.test.ts::a mixed book reports both halvespassed0 msFrontend · unit
lib/device-orders.test.ts::no orders in the period is a different statement from none movingpassed0 msFrontend · unit
lib/device-orders.test.ts::reminders are only mentioned when some were actually sentpassed0 msFrontend · unit
lib/device-orders.test.ts::waiting time is the number with consequences on a book that does not movepassed1 msFrontend · unit
lib/device-orders.test.ts::an empty book says so rather than reporting a zero-day waitpassed0 msFrontend · unit
lib/device-orders.test.ts::a book younger than a day does not claim an age it cannot supportpassed0 msFrontend · unit
lib/device-returns.test.ts::a clinic drop-off asks for nothing about a carrierpassed6 msFrontend · unit
lib/device-returns.test.ts::a carrier return names every missing address part, by fieldpassed1 msFrontend · unit
lib/device-returns.test.ts::the open payload never names a status, and upper-cases the statepassed2 msFrontend · unit
lib/device-returns.test.ts::a prepaid label never sends a bag, whatever the checkbox sayspassed0 msFrontend · unit
lib/device-returns.test.ts::the address on file starts the form and never invents a citypassed1 msFrontend · unit
lib/device-returns.test.ts::a case on two attention lists is counted oncepassed1 msFrontend · unit
lib/device-returns.test.ts::the attention order puts a parcel landing today firstpassed0 msFrontend · unit
lib/device-returns.test.ts::delivered by the carrier does not read as finishedpassed0 msFrontend · unit
lib/device-returns.test.ts::a leg's timeline marks what is done and what is currentpassed7 msFrontend · unit
lib/device-returns.test.ts::a leg says what went wrong in the carrier's own wordspassed1 msFrontend · unit
lib/device-returns.test.ts::tracking links go to the carrier, and only for a carrier we knowpassed0 msFrontend · unit
lib/device-returns.test.ts::a pickup day does not slip a day west of Greenwichpassed69 msFrontend · unit
lib/device-stock.test.ts::an empty inventory says so rather than showing a row of zerospassed3 msFrontend · unit
lib/device-stock.test.ts::the headline states each category it actually haspassed1 msFrontend · unit
lib/device-stock.test.ts::stock nobody has allocated is named, not silently absentpassed1 msFrontend · unit
lib/device-stock.test.ts::a partial allocation reads differently from a total onepassed0 msFrontend · unit
lib/device-stock.test.ts::a device out with a patient names the patient and the reasonpassed0 msFrontend · unit
lib/device-stock.test.ts::a retired device is not movedpassed1 msFrontend · unit
lib/device-stock.test.ts::moving a device where it already is is refused before the requestpassed1 msFrontend · unit
lib/device-stock.test.ts::no destination chosen asks for one rather than failing silentlypassed1 msFrontend · unit
lib/device-stock.test.ts::an available device movespassed0 msFrontend · unit
lib/device-stock.test.ts::a branch holding nothing says sopassed0 msFrontend · unit
lib/device-stock.test.ts::unallocated stock sorts last, real branches by namepassed47 msFrontend · unit
lib/device-stock.test.ts::the totals a screen renders are the ones the server sentpassed0 msFrontend · unit
lib/dialog-focus-stability.test.ts::components/modal.tsx: the focus effect depends only on stable valuespassed126 msFrontend · unit
lib/dialog-focus-stability.test.ts::components/modal.tsx: the restore-focus effect is separate and depends on openpassed47 msFrontend · unit
lib/dialog-focus-stability.test.ts::components/slide-over.tsx: the focus effect depends only on stable valuespassed20 msFrontend · unit
lib/dialog-focus-stability.test.ts::components/slide-over.tsx: the restore-focus effect is separate and depends on openpassed29 msFrontend · unit
lib/dialog-focus-stability.test.ts::the scanner reads dependency arrays, not prosepassed2 msFrontend · unit
lib/dialog-focus-stability.test.ts::does not flag a comment that names the banned dependencypassed4 msFrontend · unit
lib/dialog-focus-stability.test.ts::prefers the form over the dismiss controlpassed1 msFrontend · unit
lib/dialog-focus-stability.test.ts::an explicit data-autofocus still winspassed0 msFrontend · unit
lib/dialog-focus-stability.test.ts::falls back to the dismiss control when there is nothing elsepassed0 msFrontend · unit
lib/dialog-focus-stability.test.ts::returns null when there is nothing focusable, so the panel takes focuspassed0 msFrontend · unit
lib/dicom-metadata.test.ts::canEditDicom: clinician/owner/admin yes; patient/staff no; globalAdmin overridepassed3 msFrontend · unit
lib/dicom-metadata.test.ts::cleanOverrides: only whitelisted + changed + trimmed non-emptypassed3 msFrontend · unit
lib/dicom-metadata.test.ts::cleanOverrides: nothing changed → empty objectpassed0 msFrontend · unit
lib/dicom-metadata.test.ts::correctedSet: from meta.correctedpassed1 msFrontend · unit
lib/dicom-metadata.test.ts::seedForm: every editable tag present, stringified, blanks for missingpassed0 msFrontend · unit
lib/display-name.test.ts::names a person from whichever key the API usedpassed5 msFrontend · unit
lib/display-name.test.ts::distinguishes nobody-assigned from cannot-be-namedpassed1 msFrontend · unit
lib/display-name.test.ts::never falls back to the synthetic login handlepassed1 msFrontend · unit
lib/display-name.test.ts::never renders the identifier as a namepassed0 msFrontend · unit
lib/display-name.test.ts::isUnresolvedPerson fires on exactly the unresolved markerpassed0 msFrontend · unit
lib/display-name.test.ts::a role cell reports unassigned when the role holds no idpassed0 msFrontend · unit
lib/documents-surveys.test.ts::a known patient renders their namepassed4 msFrontend · unit
lib/documents-surveys.test.ts::an unknown patient never renders the raw idpassed1 msFrontend · unit
lib/documents-surveys.test.ts::a synthetic login handle is not treated as a namepassed0 msFrontend · unit
lib/documents-surveys.test.ts::the patient name links to the patient detail screen (2.2)passed0 msFrontend · unit
lib/documents-surveys.test.ts::an assigned but unanswered assessment is incompletepassed0 msFrontend · unit
lib/documents-surveys.test.ts::a score of zero is COMPLETE, not missingpassed0 msFrontend · unit
lib/documents-surveys.test.ts::an answered score with no timestamp is incompletepassed0 msFrontend · unit
lib/documents-surveys.test.ts::the filter separates completed from pendingpassed2 msFrontend · unit
lib/documents-surveys.test.ts::search matches the name, not the internal idpassed0 msFrontend · unit
lib/documents-surveys.test.ts::one row per patient, newest first, counting their documentspassed0 msFrontend · unit
lib/documents-surveys.test.ts::last taken ignores assessments that were never answeredpassed0 msFrontend · unit
lib/documents-surveys.test.ts::document actions are disabled WITH a reason before any score existspassed1 msFrontend · unit
lib/documents-surveys.test.ts::eFax says which detail is missing rather than merely being greypassed1 msFrontend · unit
lib/documents-surveys.test.ts::contacting the patient never depends on an assessment existingpassed0 msFrontend · unit
lib/documents-surveys.test.ts::every action QA listed is presentpassed0 msFrontend · unit
lib/documents-surveys.test.ts::assigning is blocked until a branch is chosenpassed0 msFrontend · unit
lib/documents-surveys.test.ts::the blocked reason names the FIRST thing missingpassed0 msFrontend · unit
lib/documents-surveys.test.ts::the summary reports what was DELIVEREDpassed0 msFrontend · unit
lib/documents-surveys.test.ts::a total delivery failure never reads as successpassed0 msFrontend · unit
lib/documents-surveys.test.ts::a partial failure is reported as partialpassed0 msFrontend · unit
lib/dur-alerts.test.ts::severityTone maps severity to tonepassed3 msFrontend · unit
lib/dur-alerts.test.ts::rankAlerts orders most-severe firstpassed3 msFrontend · unit
lib/dur-alerts.test.ts::alertSummary + blocksSubmitpassed2 msFrontend · unit
lib/dur-alerts.test.ts::hasContra: only absolute contraindicationspassed0 msFrontend · unit
lib/dur-alerts.test.ts::highCodes: codes of high-severity alerts onlypassed0 msFrontend · unit
lib/dur-alerts.test.ts::alertText: prefers message, then detail/title/codepassed0 msFrontend · unit
lib/duration.test.ts::the reported total is not an artefact of float additionpassed11 msFrontend · unit
lib/duration.test.ts::the total does not depend on the order the rows arrive inpassed0 msFrontend · unit
lib/duration.test.ts::non-numeric entries are skipped, not coerced to NaNpassed0 msFrontend · unit
lib/duration.test.ts::whole minutes render wholepassed1 msFrontend · unit
lib/duration.test.ts::a genuine fraction keeps its decimalpassed0 msFrontend · unit
lib/duration.test.ts::a missing value renders as zero, never as NaN or blankpassed1 msFrontend · unit
lib/duration.test.ts::long totals read as hours and minutespassed0 msFrontend · unit
lib/e2e-credentials.test.ts::the e2e demo logins do not use the suppressed @patientmd.com addressespassed7 msFrontend · unit
lib/e2e-credentials.test.ts::all three demo roles are addressed at the mailbox domain that existspassed1 msFrontend · unit
lib/e2e-credentials.test.ts::a refused sign-in is raised, not returned as an absent sessionpassed1 msFrontend · unit
lib/ein.test.ts::formatting inserts the IRS hyphen and stops at nine digitspassed3 msFrontend · unit
lib/ein.test.ts::nine digits is the whole format rulepassed2 msFrontend · unit
lib/ein.test.ts::masking keeps the last four, which is what somebody checks it bypassed0 msFrontend · unit
lib/ein.test.ts::a partial EIN is not masked — there is nothing to hide yetpassed0 msFrontend · unit
lib/ein.test.ts::Verify & save requires the attestation the checkbox promisespassed0 msFrontend · unit
lib/ein.test.ts::the block states which of the two is missingpassed1 msFrontend · unit
lib/eligibility-batch.test.ts::a month key reads as a month; anything else is left alonepassed11 msFrontend · unit
lib/eligibility-batch.test.ts::a billing list is labelled with its month, its size and its statuspassed1 msFrontend · unit
lib/eligibility-batch.test.ts::no stamp reads as not checked — never as finepassed0 msFrontend · unit
lib/eligibility-batch.test.ts::a stamp about a REBUILT list never reads as checked-and-currentpassed1 msFrontend · unit
lib/eligibility-batch.test.ts::a batch where nothing reached a payer is bad, whatever else it sayspassed0 msFrontend · unit
lib/eligibility-batch.test.ts::an inactive patient outranks everything else in a stamp's tonepassed0 msFrontend · unit
lib/eligibility-batch.test.ts::outcome counts leave out zeros and never render as an empty stringpassed2 msFrontend · unit
lib/eligibility-batch.test.ts::an unknown outcome word is shown as unclear, not as activepassed0 msFrontend · unit
lib/eligibility-batch.test.ts::the plan leads with how many of the list can be checked, and prices itpassed78 msFrontend · unit
lib/eligibility-batch.test.ts::a list nobody can be checked on says why, and offers no pricepassed0 msFrontend · unit
lib/eligibility-batch.test.ts::the run button names the count and the rough costpassed1 msFrontend · unit
lib/eligibility-batch.test.ts::blockers are ranked by how many patients each holds backpassed3 msFrontend · unit
lib/eligibility-batch.test.ts::a running batch polls; a finished or stopped one does notpassed1 msFrontend · unit
lib/eligibility-batch.test.ts::the picker's name filter is case-blind and empty means everyonepassed0 msFrontend · unit
lib/eligibility-scan.test.ts::a programme that cannot be derived never reads as 'nobody eligible'passed7 msFrontend · unit
lib/eligibility-scan.test.ts::an empty list says so plainlypassed0 msFrontend · unit
lib/eligibility-scan.test.ts::a populated list reports reachability, and tomorrow only when there is onepassed0 msFrontend · unit
lib/eligibility-scan.test.ts::a missing block is empty rather than throwingpassed2 msFrontend · unit
lib/eligibility-scan.test.ts::the hidden count is what is NOT shown, never negativepassed0 msFrontend · unit
lib/eligibility-scan.test.ts::collapsed, a long list shows eight and offers all of thempassed83 msFrontend · unit
lib/eligibility-scan.test.ts::expanded, it shows every row it holds and offers the way backpassed1 msFrontend · unit
lib/eligibility-scan.test.ts::a list that is STILL cut says so rather than reading as completepassed7 msFrontend · unit
lib/eligibility-scan.test.ts::a short list offers no control at allpassed0 msFrontend · unit
lib/eligibility-scan.test.ts::exactly the collapsed count is not a truncated listpassed0 msFrontend · unit
lib/eligibility-scan.test.ts::`held` never exceeds what arrived, and `total` never falls below itpassed0 msFrontend · unit
lib/eligibility-scan.test.ts::a missing or empty block does not throw and offers nothingpassed0 msFrontend · unit
lib/eligibility-scan.test.ts::the next scan asks for the biggest list, not the sum of thempassed1 msFrontend · unit
lib/eligibility-scan.test.ts::nothing short means no round trippassed0 msFrontend · unit
lib/eligibility-scan.test.ts::the client never asks for more than the server will givepassed1 msFrontend · unit
lib/eligibility-scan.test.ts::the row ceiling mirrors the server's ownpassed1 msFrontend · unit
lib/eligibility-scan.test.ts::a held send is never reported as a sent onepassed1 msFrontend · unit
lib/eligibility-scan.test.ts::a partial send reports both halvespassed0 msFrontend · unit
lib/eligibility-scan.test.ts::a recipient refused for being a patient on the list is named as thatpassed0 msFrontend · unit
lib/eligibility-scan.test.ts::no recipients at all is a gap, not a successpassed0 msFrontend · unit
lib/eligibility-scan.test.ts::a list nobody edited says nothing; an edited one says what changedpassed0 msFrontend · unit
lib/eligibility-scan.test.ts::a hand-added row is labelled and a derived one is notpassed0 msFrontend · unit
lib/eligibility-scan.test.ts::adding or removing a patient needs a stated reason; amending does notpassed0 msFrontend · unit
lib/eligibility-scan.test.ts::recipients accept every separator a person actually pastespassed3 msFrontend · unit
lib/eligibility-scan.test.ts::a bad address is reported rather than swallowing the whole boxpassed0 msFrontend · unit
lib/eligibility-scan.test.ts::one mailbox spelled twice is one recipient, not twopassed0 msFrontend · unit
lib/eligibility-scan.test.ts::a clinic with no recipient says so before the button is pressedpassed0 msFrontend · unit
lib/eligibility-scan.test.ts::a ready clinic names where the list is goingpassed2 msFrontend · unit
lib/eligibility-scan.test.ts::coverage: the four states say four different thingspassed1 msFrontend · unit
lib/eligibility-scan.test.ts::coverage: 'no payer on file' never claims the patient is uninsuredpassed1 msFrontend · unit
lib/eligibility-scan.test.ts::coverage: a matched row names what it was matched TO, never an idpassed0 msFrontend · unit
lib/eligibility-scan.test.ts::coverage: a plan repeating the payer is not printed twice on the listpassed0 msFrontend · unit
lib/eligibility-scan.test.ts::coverage: no block at all renders nothing, and claims nothingpassed0 msFrontend · unit
lib/eligibility-scan.test.ts::coverage summary: leads with what CAN be checked, drops the zeroespassed1 msFrontend · unit
lib/eligibility-scan.test.ts::coverage summary: absent counts render no line, not '0 matched'passed0 msFrontend · unit
lib/eligibility-scan.test.ts::coverage: the mapping link appears only when there is something to mappassed0 msFrontend · unit
lib/eligibility-scan.test.ts::coverage: Cantera's real numbers add up to its whole list, not its pagepassed1 msFrontend · unit
lib/emr-capture.test.ts::has a human label for each fieldpassed9 msFrontend · unit
lib/emr-capture.test.ts::opens with the name and date of birth, as the panel prints thempassed2 msFrontend · unit
lib/emr-capture.test.ts::says what to do about a parsed valuepassed1 msFrontend · unit
lib/emr-capture.test.ts::anything a person stood behind is settledpassed0 msFrontend · unit
lib/emr-capture.test.ts::an empty field asks for nothingpassed0 msFrontend · unit
lib/emr-capture.test.ts::lists exactly the fields still awaiting a lookpassed1 msFrontend · unit
lib/emr-capture.test.ts::is disabled while the server reports a blockerpassed2 msFrontend · unit
lib/emr-capture.test.ts::is enabled with nothing outstandingpassed0 msFrontend · unit
lib/emr-capture.test.ts::is disabled once the capture is already confirmedpassed0 msFrontend · unit
lib/emr-capture.test.ts::names how many are outstanding, singular and pluralpassed1 msFrontend · unit
lib/emr-capture.test.ts::an empty capture invites the two ways inpassed0 msFrontend · unit
lib/emr-capture.test.ts::a complete capture says sopassed0 msFrontend · unit
lib/emr-capture.test.ts::carries the server's reasonpassed0 msFrontend · unit
lib/emr-capture.test.ts::still says something when there is no reasonpassed0 msFrontend · unit
lib/emr-capture.test.ts::strips the data-url prefixpassed0 msFrontend · unit
lib/emr-capture.test.ts::takes images from a paste and ignores everything elsepassed1 msFrontend · unit
lib/emr-capture.test.ts::needs-more-information is its own answer, not a soft nopassed1 msFrontend · unit
lib/emr-capture.test.ts::unknown prior authorization can never be read as not requiredpassed0 msFrontend · unit
lib/emr-capture.test.ts::the two settled answers say whichpassed0 msFrontend · unit
lib/emr-capture.test.ts::names the destination, not the registrypassed0 msFrontend · unit
lib/emr-capture.test.ts::the confirmation says the person is NOT a registry patient yetpassed0 msFrontend · unit
lib/emr-capture.test.ts::still reads sensibly with no clinic name to handpassed0 msFrontend · unit
lib/emr-capture.test.ts::offers the four programmes the server acceptspassed0 msFrontend · unit
lib/emr-capture.test.ts::refuses, and says why, when no clinic is chosenpassed3 msFrontend · unit
lib/emr-capture.test.ts::refuses a programme the server does not acceptpassed0 msFrontend · unit
lib/emr-capture.test.ts::still refuses while a field is unchecked, and counts thempassed0 msFrontend · unit
lib/emr-capture.test.ts::refuses a capture that has already gonepassed0 msFrontend · unit
lib/emr-capture.test.ts::allows it once the clinic, the programme and the fields are all settledpassed0 msFrontend · unit
lib/emr-capture.test.ts::says something rather than nothing when there is no capture at allpassed0 msFrontend · unit
lib/emr-capture.test.ts::readyToSend is exactly the negation of the reason, alwayspassed0 msFrontend · unit
lib/emr-capture.test.ts::a healthy fleet is quiet about itpassed1 msFrontend · unit
lib/emr-capture.test.ts::distinguishes 'nothing configured' from 'nothing answered'passed0 msFrontend · unit
lib/emr-capture.test.ts::neither of those offers the attach buttonpassed0 msFrontend · unit
lib/emr-capture.test.ts::says so when it is running on a backup hostpassed0 msFrontend · unit
lib/emr-capture.test.ts::a worker with no vision model is a DIFFERENT fault from a worker that is downpassed0 msFrontend · unit
lib/emr-capture.test.ts::an unknown state never takes the capability awaypassed0 msFrontend · unit
lib/emr-capture.test.ts::offers Try again after a failurepassed1 msFrontend · unit
lib/emr-capture.test.ts::offers nothing before anything has been tried, or after a successpassed0 msFrontend · unit
lib/emr-capture.test.ts::does not offer a retry that cannot possibly succeedpassed0 msFrontend · unit
lib/emr-capture.test.ts::an older response with no readerConfigured flag keeps the old behaviourpassed0 msFrontend · unit
lib/emr-capture.test.ts::shows the LAST failure, not the firstpassed0 msFrontend · unit
lib/emr-capture.test.ts::no screen counts as read when the parse failedpassed10 msFrontend · unit
lib/emr-chart-queue.test.ts::queued and failed rows need a decision; the rest do notpassed3 msFrontend · unit
lib/emr-chart-queue.test.ts::a row is actionable only when the SERVER says this session may approvepassed1 msFrontend · unit
lib/emr-chart-queue.test.ts::a failed row is retried, not approved for the first timepassed0 msFrontend · unit
lib/emr-chart-queue.test.ts::the document says what it is, server label firstpassed0 msFrontend · unit
lib/emr-chart-queue.test.ts::every status has words and a tonepassed1 msFrontend · unit
lib/emr-chart-queue.test.ts::the patient is named, and never by their idpassed1 msFrontend · unit
lib/emr-chart-queue.test.ts::a row with no branch and an unnamed clinic say different thingspassed0 msFrontend · unit
lib/emr-chart-queue.test.ts::a visit date is the reader's calendar day, never UTC midnightpassed13 msFrontend · unit
lib/emr-chart-queue.test.ts::an instant renders as the local day; zero is not 1970passed7 msFrontend · unit
lib/emr-chart-queue.test.ts::the date line prefers the visit, then when it was queuedpassed1 msFrontend · unit
lib/emr-chart-queue.test.ts::whenOf reads either writer's timestamp and never invents onepassed0 msFrontend · unit
lib/emr-chart-queue.test.ts::the soonest visit comes first; undated rows follow, oldest firstpassed3 msFrontend · unit
lib/emr-chart-queue.test.ts::partition: waiting for a person, waiting for the agent, finishedpassed1 msFrontend · unit
lib/emr-chart-queue.test.ts::a picked clinic narrows by branch; the client never names a tenantpassed1 msFrontend · unit
lib/emr-chart-queue.test.ts::a rejection needs a reason, and not an essaypassed0 msFrontend · unit
lib/emr-chart-queue.test.ts::an empty queue and a finished queue are different sentencespassed0 msFrontend · unit
lib/emr-chart-queue.test.ts::a capped list says so instead of dropping the oldest silentlypassed0 msFrontend · unit
lib/emr-chart-queue.test.ts::a failed load is never phrased as an empty queuepassed1 msFrontend · unit
lib/emr-chart-queue.test.ts::the approve dialog names the patient and the consequencepassed0 msFrontend · unit
lib/engagement-hub.test.ts::hubTiles reads only what /ms/reports/overview returns — no dollar tilepassed6 msFrontend · unit
lib/engagement-hub.test.ts::hubTiles treats a missing or non-numeric field as zero, never NaNpassed2 msFrontend · unit
lib/engagement-hub.test.ts::audienceSplit is empty when nobody was ever on the listpassed7 msFrontend · unit
lib/engagement-hub.test.ts::hubSentence says which kind of empty the screen ispassed1 msFrontend · unit
lib/engagement.test.ts::an unknown band is read as disengaged, never as engagedpassed6 msFrontend · unit
lib/engagement.test.ts::the weight line repeats the server's weights in the server's orderpassed1 msFrontend · unit
lib/engagement.test.ts::a delta needs two months; one month is a level with no movementpassed3 msFrontend · unit
lib/engagement.test.ts::adoption rows sort by active enrolments and carry the month-on-month movementpassed1 msFrontend · unit
lib/engagement.test.ts::shares and missing-signal rows never divide by zeropassed1 msFrontend · unit
lib/engagement.test.ts::the fourth band is drawn, labelled, and is NOT coloured as a failurepassed1 msFrontend · unit
lib/engagement.test.ts::an unknown band still renders rather than vanishingpassed0 msFrontend · unit
lib/engagement.test.ts::band rows are seeded so a band with nothing in it is a visible zeropassed1 msFrontend · unit
lib/engagement.test.ts::the ceiling sentence names what nobody can earn, and disappears when nothing is blockedpassed1 msFrontend · unit
lib/engagement.test.ts::coverage distinguishes 'not measured' from 'nothing observable'passed0 msFrontend · unit
lib/engagement.test.ts::signal rows put a blocked signal above a merely weak onepassed1 msFrontend · unit
lib/engagement.test.ts::the history says which kind of empty it is, never a blank chartpassed1 msFrontend · unit
lib/engagement.test.ts::a clamped window says the chart is shorter than the control asked forpassed0 msFrontend · unit
lib/engagement.test.ts::a history that moved does not print the flat sentencepassed0 msFrontend · unit
lib/engagement.test.ts::movers are de-duplicated across up and down, biggest fall firstpassed1 msFrontend · unit
lib/engagement.test.ts::an empty roster distinguishes 'filtered to nothing' from 'never scored'passed0 msFrontend · unit
lib/enrolment-readiness.lens.test.ts::a named lens is honouredpassed3 msFrontend · unit
lib/enrolment-readiness.lens.test.ts::an absent lens falls back to the default, never to nothingpassed9 msFrontend · unit
lib/enrolment-readiness.lens.test.ts::the retired outreach route names the lens its content lives underpassed1 msFrontend · unit
lib/enrolment-readiness.lens.test.ts::the screen follows the URL rather than seeding from it oncepassed1 msFrontend · unit
lib/enrolment-readiness.test.ts::eligibility and consent are never collapsed into one answerpassed13 msFrontend · unit
lib/enrolment-readiness.test.ts::both present is the only ready statepassed0 msFrontend · unit
lib/enrolment-readiness.test.ts::a received paper consent counts as consentpassed0 msFrontend · unit
lib/enrolment-readiness.test.ts::unchecked coverage is not reported as ineligiblepassed1 msFrontend · unit
lib/enrolment-readiness.test.ts::a decline outranks everything elsepassed0 msFrontend · unit
lib/enrolment-readiness.test.ts::consent in flight reads differently from consent never sentpassed1 msFrontend · unit
lib/enrolment-readiness.test.ts::both outstanding names both, and the action depends on which kindpassed0 msFrontend · unit
lib/enrolment-readiness.test.ts::status matching is case and whitespace tolerantpassed0 msFrontend · unit
lib/enrolment-readiness.test.ts::the summary names what is blocking, not just how manypassed5 msFrontend · unit
lib/enrolment-readiness.test.ts::every patient lands in exactly one bucketpassed0 msFrontend · unit
lib/enrolment-readiness.test.ts::an empty pipeline says so rather than showing zerospassed0 msFrontend · unit
lib/enrolment-readiness.test.ts::the merge keeps every lens the four screens offeredpassed0 msFrontend · unit
lib/entity-context-carried.test.ts::every drill-down carries its entity onward, or says why notpassed21 msFrontend · unit
lib/entity-context-carried.test.ts::the exemption list does not outlive the screens it namespassed1 msFrontend · unit
lib/entity-context-carried.test.ts::the outbound-link scanner matches the shapes it was written forpassed5 msFrontend · unit
lib/entity-context-carried.test.ts::a selected branch missing from the list is named, not blankedpassed1 msFrontend · unit
lib/entity-context-carried.test.ts::an archived branch is not offered as a choice but is still nameablepassed1 msFrontend · unit
lib/entity-context-carried.test.ts::a selection control never offers "all branches"passed0 msFrontend · unit
lib/entity-context-carried.test.ts::the unaffiliated label is a sentence, not a blankpassed0 msFrontend · unit
lib/entity-context.test.ts::a branch drilled into is readable on the next screenpassed6 msFrontend · unit
lib/entity-context.test.ts::no context reads as no context, not as an empty onepassed1 msFrontend · unit
lib/entity-context.test.ts::a corporate is NEVER carried in a linkpassed1 msFrontend · unit
lib/entity-context.test.ts::carrying a context replaces any context already on the hrefpassed1 msFrontend · unit
lib/entity-context.test.ts::switching entity kind does not leave the previous kind behindpassed0 msFrontend · unit
lib/entity-context.test.ts::clearing context removes only the contextpassed0 msFrontend · unit
lib/entity-context.test.ts::an unresolved name shows the identifier, never blankpassed0 msFrontend · unit
lib/entity-context.test.ts::screens whose actions change someone's standing are markedpassed0 msFrontend · unit
lib/entity-context.test.ts::every carriable kind has a distinct parameter namepassed0 msFrontend · unit
lib/entity-context.test.ts::a href with no query survives a null context unchangedpassed0 msFrontend · unit
lib/environment-banner.test.ts::an unrecorded sync says so and never guessespassed4 msFrontend · unit
lib/environment-banner.test.ts::a recorded sync reports its age and sizepassed57 msFrontend · unit
lib/environment-banner.test.ts::a dry run is named as onepassed0 msFrontend · unit
lib/environment-banner.test.ts::a failed run is named, not filtered outpassed0 msFrontend · unit
lib/environment-banner.test.ts::an ok status adds no noisepassed0 msFrontend · unit
lib/environment-banner.test.ts::the strip appears whenever something is being held backpassed0 msFrontend · unit
lib/environment-banner.test.ts::a normal live production session gets no strippassed0 msFrontend · unit
lib/environment-banner.test.ts::no data means no strip rather than a broken onepassed0 msFrontend · unit
lib/environment-banner.test.ts::the headline names the mode and the detail names the consequencepassed1 msFrontend · unit
lib/environment-banner.test.ts::the detail promises that sign-in still workspassed0 msFrontend · unit
lib/environment-banner.test.ts::tone distinguishes comparison from plain test modepassed0 msFrontend · unit
lib/environment-banner.test.ts::relative age rounds down to whole unitspassed2 msFrontend · unit
lib/environment-banner.test.ts::an unknown age is unknown, not zeropassed6 msFrontend · unit
lib/environment-banner.test.ts::a clock skew never renders as a sync in the futurepassed0 msFrontend · unit
lib/environment-banner.test.ts::a missed nightly run is called outpassed0 msFrontend · unit
lib/environment-banner.test.ts::unknown freshness is not reported as stalepassed0 msFrontend · unit
lib/epoch-date.test.ts::a pre-1970 date of birth formats instead of rendering a dashpassed68 msFrontend · unit
lib/epoch-date.test.ts::post-1970 dates still formatpassed0 msFrontend · unit
lib/epoch-date.test.ts::numeric strings are accepted, as the API sometimes returns thempassed0 msFrontend · unit
lib/epoch-date.test.ts::genuinely absent values render the fallbackpassed0 msFrontend · unit
lib/epoch-date.test.ts::ISO date strings still workpassed0 msFrontend · unit
lib/epoch-date.test.ts::date input keeps the local calendar daypassed0 msFrontend · unit
lib/epoch-date.test.ts::date input is empty, never a bogus date, when absentpassed0 msFrontend · unit
lib/epoch-date.test.ts::age is computed from a pre-1970 birthpassed0 msFrontend · unit
lib/epoch-date.test.ts::age is null rather than a wrong number when unknownpassed0 msFrontend · unit
lib/epoch-date.test.ts::formats in the CLINIC's timezone, not the runner's ownpassed1 msFrontend · unit
lib/epoch-date.test.ts::a viewer anywhere else sees the SAME clinic time, not their own local timepassed1 msFrontend · unit
lib/epoch-date.test.ts::the timezone abbreviation is always appendedpassed1 msFrontend · unit
lib/epoch-date.test.ts::falls back to the universal formatter on a bad/unrecognised zone id, never throwspassed1 msFrontend · unit
lib/epoch-date.test.ts::an absent value is the fallback dash, not a crashpassed0 msFrontend · unit
lib/epoch-date.test.ts::a missing clinic timezone defaults to America/Chicago rather than failingpassed1 msFrontend · unit
lib/epoch-date.test.ts::a calendar day is the CLINIC's day, not the viewer'spassed1 msFrontend · unit
lib/epoch-date.test.ts::an absent date is the fallback dash, not todaypassed0 msFrontend · unit
lib/epoch-date.test.ts::typed digits are read as the CLINIC's wall clockpassed1 msFrontend · unit
lib/epoch-date.test.ts::what is typed is what is read back — the round trip is the contractpassed1 msFrontend · unit
lib/epoch-date.test.ts::the offset is the one in force ON THAT DATE, not today'spassed2 msFrontend · unit
lib/epoch-date.test.ts::a wall-clock time that does not exist settles rather than throwingpassed1 msFrontend · unit
lib/epoch-date.test.ts::a malformed date is NaN, never silently 'now'passed0 msFrontend · unit
lib/epoch-date.test.ts::a bad zone id falls back instead of throwingpassed1 msFrontend · unit
lib/epoch-date.test.ts::form defaults open on the clinic's today and nowpassed3 msFrontend · unit
lib/epoch-date.test.ts::midnight is 00:00, not 24:00passed1 msFrontend · unit
lib/epoch-date.test.ts::the zone abbreviation follows the date, so a caption is never stalepassed1 msFrontend · unit
lib/era-batch.test.ts::shows an own batch's checkpassed6 msFrontend · unit
lib/era-batch.test.ts::shows only what THIS practice was paid from a shared-account batchpassed1 msFrontend · unit
lib/era-batch.test.ts::never throws on the null check total the server sends for a shared batchpassed1 msFrontend · unit
lib/era-batch.test.ts::says a batch has no amount rather than printing $0.00passed1 msFrontend · unit
lib/era-batch.test.ts::sums only numeric amountPaid, and counts the postings returnedpassed0 msFrontend · unit
lib/error-boundary.test.ts::the dashboard has an error boundarypassed5 msFrontend · unit
lib/error-boundary.test.ts::the error boundary is a Client Componentpassed1 msFrontend · unit
lib/error-boundary.test.ts::the error boundary offers recovery through unstable_retrypassed1 msFrontend · unit
lib/error-boundary.test.ts::the headline says the screen failed, not that records are absentpassed6 msFrontend · unit
lib/error-boundary.test.ts::the error boundary explicitly separates 'failed' from 'none'passed1 msFrontend · unit
lib/error-boundary.test.ts::the error boundary states plainly that nothing was changedpassed1 msFrontend · unit
lib/error-boundary.test.ts::the error boundary surfaces the digest for supportpassed0 msFrontend · unit
lib/error-boundary.test.ts::the dashboard has route-level loading UIpassed0 msFrontend · unit
lib/error-boundary.test.ts::the loading skeleton announces itself to assistive technologypassed1 msFrontend · unit
lib/escalation-ladder.test.ts::the default ladder is three rungspassed3 msFrontend · unit
lib/escalation-ladder.test.ts::the selectable lengths come from the server's bounds, not from guessespassed3 msFrontend · unit
lib/escalation-ladder.test.ts::the consequence is stated in DAYS, which is the clinician's unitpassed6 msFrontend · unit
lib/escalation-ladder.test.ts::the consequence names the window the breach-days are counted inpassed0 msFrontend · unit
lib/escalation-ladder.test.ts::the window is the server's number, never recomputed herepassed0 msFrontend · unit
lib/escalation-ladder.test.ts::same-day readings counting once is said, not assumedpassed0 msFrontend · unit
lib/escalation-ladder.test.ts::a one-rung ladder is refused with the clinical reason, not a rangepassed1 msFrontend · unit
lib/escalation-ladder.test.ts::an over-long ladder is refused because it reads as switched offpassed1 msFrontend · unit
lib/escalation-ladder.test.ts::a value inside the range has no complaintpassed1 msFrontend · unit
lib/escalation-ladder.test.ts::the top rung is labelled as the toppassed0 msFrontend · unit
lib/escalation-ladder.test.ts::a non-default policy is flagged as deliberatepassed0 msFrontend · unit
lib/escalation.test.ts::slaTone maps SLA status to colourpassed3 msFrontend · unit
lib/escalation.test.ts::slaLabel reads clearly in each statepassed1 msFrontend · unit
lib/filing-review.test.ts::the reservation is stated in words, never implied by a missing buttonpassed12 msFrontend · unit
lib/filing-review.test.ts::a screen with nothing to file names the reason, not just the zeropassed63 msFrontend · unit
lib/filing-review.test.ts::no claims at all is distinguished from claims that cannot gopassed0 msFrontend · unit
lib/filing-review.test.ts::an absent STORE is a different empty from an empty storepassed1 msFrontend · unit
lib/filing-review.test.ts::when something CAN be filed both numbers are givenpassed1 msFrontend · unit
lib/filing-review.test.ts::blockers are drawn in FIX order, not discovery orderpassed1 msFrontend · unit
lib/filing-review.test.ts::a blocker the server names but this file has never heard of is SHOWNpassed0 msFrontend · unit
lib/filing-review.test.ts::every blocker names whose job it ispassed0 msFrontend · unit
lib/filing-review.test.ts::blockers rank by MONEY, and a zero one is kept rather than droppedpassed1 msFrontend · unit
lib/filing-review.test.ts::the diagnosis line says which of the three empties it ispassed1 msFrontend · unit
lib/filing-review.test.ts::money formats to two places with separatorspassed1 msFrontend · unit
lib/filing-review.test.ts::rankedBlockers on no data is empty rather than throwingpassed2 msFrontend · unit
lib/focus-trap.test.ts::Tab wraps from the last element back to the firstpassed9 msFrontend · unit
lib/focus-trap.test.ts::Shift+Tab wraps from the first element to the lastpassed0 msFrontend · unit
lib/focus-trap.test.ts::mid-list Tab is left to the browserpassed0 msFrontend · unit
lib/focus-trap.test.ts::focus outside the dialog is pulled back to the right edgepassed0 msFrontend · unit
lib/focus-trap.test.ts::a single focusable keeps focus on itself in both directionspassed0 msFrontend · unit
lib/focus-trap.test.ts::an empty dialog does not intercept Tabpassed0 msFrontend · unit
lib/focus-trap.test.ts::Tab can never land outside the dialogpassed1 msFrontend · unit
lib/focus-trap.test.ts::focus starts on the first focusablepassed0 msFrontend · unit
lib/focus-trap.test.ts::data-autofocus wins when presentpassed0 msFrontend · unit
lib/focus-trap.test.ts::an out-of-range autofocus falls back rather than focusing nothingpassed0 msFrontend · unit
lib/focus-trap.test.ts::a dialog with no focusable content yields null so the panel takes focuspassed0 msFrontend · unit
lib/focus-trap.test.ts::the selector excludes tabindex=-1passed0 msFrontend · unit
lib/focus-trap.test.ts::the selector excludes disabled controlspassed0 msFrontend · unit
lib/focus-trap.test.ts::the selector covers the interactive elements this app actually usespassed0 msFrontend · unit
lib/focus-trap.test.ts::a dialog is labelled by an id derived from its ownpassed0 msFrontend · unit
lib/focus-trap.test.ts::dialog ids are stable and sequential, not randompassed0 msFrontend · unit
lib/forbidden-test-host.test.ts::the PatientMD frontend suite is not running on a forbidden hostpassed3 msFrontend · unit
lib/gender-surfaces.test.ts::no UI surface renders a gender without going through lib/gender.tspassed470 msFrontend · unit
lib/gender-surfaces.test.ts::every allow-list entry still matches real codepassed418 msFrontend · unit
lib/gender-surfaces.test.ts::the scan actually finds the call sites it claims to guardpassed401 msFrontend · unit
lib/gender.test.ts::every gender value on production maps to an option the select offerspassed5 msFrontend · unit
lib/gender.test.ts::the regression itself: the raw stored value is not a valid option valuepassed0 msFrontend · unit
lib/gender.test.ts::codes this app's own form writes round-trip unchangedpassed0 msFrontend · unit
lib/gender.test.ts::case and punctuation do not decide the answerpassed0 msFrontend · unit
lib/gender.test.ts::FHIR R4 AdministrativeGender maps in fullpassed0 msFrontend · unit
lib/gender.test.ts::X12 5010 837P DMG03 letters map in fullpassed0 msFrontend · unit
lib/gender.test.ts::absent means absent — never guessed into a value a human never chosepassed0 msFrontend · unit
lib/gender.test.ts::an unmappable stored value is shown, selectable, and saved back unchangedpassed3 msFrontend · unit
lib/gender.test.ts::a prototype key is data, not a lookup hitpassed0 msFrontend · unit
lib/gender.test.ts::labels read as words, whichever spelling is storedpassed2 msFrontend · unit
lib/gender.test.ts::no alias may invent a fifth code the select does not offerpassed1 msFrontend · unit
lib/gender.test.ts::every spelling on production reads as ONE word, whatever collection it came frompassed0 msFrontend · unit
lib/gender.test.ts::FHIR R4 AdministrativeGender is emitted lowercase, and only its four codespassed0 msFrontend · unit
lib/gender.test.ts::X12 DMG03 is F, M or U and can never be anything elsepassed0 msFrontend · unit
lib/gender.test.ts::a filter and a stored value meet in ONE vocabularypassed0 msFrontend · unit
lib/gender.test.ts::a value we cannot map is never invented, on any projectionpassed0 msFrontend · unit
lib/global-search.test.ts::empty query returns nothingpassed4 msFrontend · unit
lib/global-search.test.ts::matches label + href, multi-term ANDpassed1 msFrontend · unit
lib/guest-join.test.ts::isPinFormat: 4-8 digits onlypassed3 msFrontend · unit
lib/guest-join.test.ts::msUntil + expiryLabelpassed1 msFrontend · unit
lib/guest-join.test.ts::joinUrl: no double slashpassed0 msFrontend · unit
lib/guest-join.test.ts::guestStep: loading/pin/ready/joinedpassed0 msFrontend · unit
lib/guide-shots.test.ts::a name is the server's grammar and nothing elsepassed3 msFrontend · unit
lib/guide-shots.test.ts::the path is built after the shape check, not instead of itpassed0 msFrontend · unit
lib/guide-shots.test.ts::fetch each name once, in the order the reader meets thempassed3 msFrontend · unit
lib/guide-shots.test.ts::a name that could never be served is never requestedpassed0 msFrontend · unit
lib/iam/nav-catalog.test.ts::no permissions and no context yields only the ungated top itemspassed6 msFrontend · unit
lib/iam/nav-catalog.test.ts::platform staff with platform perms see the admin blocks, not the business onespassed1 msFrontend · unit
lib/iam/nav-catalog.test.ts::a business membership plus ops perms sees the Care Program; a bare permission without the entity does notpassed1 msFrontend · unit
lib/iam/nav-catalog.test.ts::a patient-self session is NOT a business entity even with an entityTypepassed1 msFrontend · unit
lib/iam/nav-catalog.test.ts::requiresAnyPerm admits either permission; requiresPerm needs its exact onepassed1 msFrontend · unit
lib/iam/nav-catalog.test.ts::the deliberately ungated business item follows its section's context alonepassed3 msFrontend · unit
lib/iam/nav-catalog.test.ts::synthetic gates: requiresRole, multi-perm requiresPerm, clinical contextpassed1 msFrontend · unit
lib/impersonation.test.ts::the operator's session survives the round trippassed4 msFrontend · unit
lib/impersonation.test.ts::nothing stashed reads as nothing, not as a crashpassed0 msFrontend · unit
lib/impersonation.test.ts::an EXPIRED operator session is discarded rather than restoredpassed1 msFrontend · unit
lib/impersonation.test.ts::forgetting clears itpassed0 msFrontend · unit
lib/impersonation.test.ts::corrupt storage reads as nothing rather than throwingpassed0 msFrontend · unit
lib/inbox.test.ts::puts the window and every server filter in the body, dropping blankspassed6 msFrontend · unit
lib/inbox.test.ts::sends a custom range as since/until, never a preset keypassed1 msFrontend · unit
lib/inbox.test.ts::the history reads 30 days when the list shows everything awaitingpassed1 msFrontend · unit
lib/inbox.test.ts::knows when a people filter is onpassed0 msFrontend · unit
lib/inbox.test.ts::counts awaiting-us over the rows and carries the backlog throughpassed1 msFrontend · unit
lib/inbox.test.ts::response time says over how many, and a dash when nothing was timedpassed1 msFrontend · unit
lib/inbox.test.ts::hours read as minutes, hours or dayspassed0 msFrontend · unit
lib/inbox.test.ts::waiting text is empty when nothing is waitingpassed0 msFrontend · unit
lib/inbox.test.ts::unattributed names the clinic and how many are waitingpassed1 msFrontend · unit
lib/inbox.test.ts::the cap banner only appears when something was left outpassed4 msFrontend · unit
lib/inbox.test.ts::the transport banner is silent when we could not askpassed0 msFrontend · unit
lib/inbox.test.ts::by channelpassed1 msFrontend · unit
lib/inbox.test.ts::by finding kind and severitypassed0 msFrontend · unit
lib/inbox.test.ts::awaiting onlypassed0 msFrontend · unit
lib/inbox.test.ts::keeps the server's orderpassed0 msFrontend · unit
lib/inbox.test.ts::toggle and activepassed0 msFrontend · unit
lib/inbox.test.ts::an option names the person, the clinic and the count — never a raw idpassed0 msFrontend · unit
lib/inbox.test.ts::channel chips follow the vocabulary order and omit zerospassed1 msFrontend · unit
lib/inbox.test.ts::every channel has a label and an unknown one still readspassed0 msFrontend · unit
lib/inbox.test.ts::stacks only the channels that carried somethingpassed1 msFrontend · unit
lib/inbox.test.ts::the donut omits empty channelspassed0 msFrontend · unit
lib/input-labels.test.ts::no NEW input is left without a programmatically associated labelpassed117 msFrontend · unit
lib/input-labels.test.ts::the frozen list has no stale entriespassed16 msFrontend · unit
lib/input-labels.test.ts::the registry's Add Single Patient form is fully associatedpassed1 msFrontend · unit
lib/invite-failure.test.ts::the copy never depends on why the token failed — no oraclepassed6 msFrontend · unit
lib/invite-failure.test.ts::it names the environment mismatch, not only expirypassed1 msFrontend · unit
lib/invite-failure.test.ts::it shows the host, so a wrong-environment link is visiblepassed1 msFrontend · unit
lib/invite-failure.test.ts::an unknown host does not render the word undefinedpassed1 msFrontend · unit
lib/invite-failure.test.ts::the title is stablepassed0 msFrontend · unit
lib/invoice-lifecycle.test.ts::reads a missing or unknown status as draft — the truthful defaultpassed3 msFrontend · unit
lib/invoice-lifecycle.test.ts::passes through the two real statespassed0 msFrontend · unit
lib/invoice-lifecycle.test.ts::a draft can only be approvedpassed5 msFrontend · unit
lib/invoice-lifecycle.test.ts::an approved invoice can be reverted or sentpassed0 msFrontend · unit
lib/invoice-lifecycle.test.ts::a sent invoice offers NOTHING — the remedy lives in QuickBookspassed0 msFrontend · unit
lib/invoice-lifecycle.test.ts::names the approver and the send channel — provenance in wordspassed1 msFrontend · unit
lib/invoice-lifecycle.test.ts::a draft says it is not yet approved — status in words, not colour alonepassed0 msFrontend · unit
lib/invoice-lifecycle.test.ts::three distinct tones, one per statepassed0 msFrontend · unit
lib/invoice-summary.test.ts::no invoices is zeros and an undefined A/R ratio — never 26 dayspassed3 msFrontend · unit
lib/invoice-summary.test.ts::days in A/R is undefined when nothing was collectedpassed0 msFrontend · unit
lib/invoice-summary.test.ts::days in A/R is outstanding over the average day's collectionpassed3 msFrontend · unit
lib/invoice-summary.test.ts::collections by week needs a payment date — the issue date is not cashpassed16 msFrontend · unit
lib/invoice-summary.test.ts::nothing outstanding ages to zeros, not a fabricated $14,850passed4 msFrontend · unit
lib/job-removal.test.ts::heldJobRows: a removable job carries no reason; a refused one says whypassed49 msFrontend · unit
lib/job-removal.test.ts::heldJobRows: sorted by title, and a job stored twice is listed oncepassed3 msFrontend · unit
lib/job-removal.test.ts::heldJobRows: a name the catalogue no longer defines follows the server's allowancepassed0 msFrontend · unit
lib/job-removal.test.ts::heldJobRows: FAILS CLOSED when the rules have not loadedpassed0 msFrontend · unit
lib/job-removal.test.ts::heldJobRows: nobody's jobs is an empty list, not a crashpassed0 msFrontend · unit
lib/job-removal.test.ts::readRemovalPlan: total over a malformed bodypassed2 msFrontend · unit
lib/job-removal.test.ts::readRemovalPlan: falls back to the job key when no title is sentpassed0 msFrontend · unit
lib/job-removal.test.ts::planLines: names what they keep, what ends, and that money closespassed1 msFrontend · unit
lib/job-removal.test.ts::planLines: an empty loss is EXPLAINED — a shared key survives through another jobpassed1 msFrontend · unit
lib/job-removal.test.ts::planLines: removing the last job says they will hold nonepassed0 msFrontend · unit
lib/job-removal.test.ts::planLines: hand-granted keys that will be cleared are named before the buttonpassed0 msFrontend · unit
lib/job-removal.test.ts::planLines: a no-op answers with the server's own notepassed0 msFrontend · unit
lib/job-removal.test.ts::confirmTitle names the job and the personpassed0 msFrontend · unit
lib/job-removal.test.ts::personLabel: name, else login, else idpassed0 msFrontend · unit
lib/job-removal.test.ts::reasonProblem: optional, bounded to what the audit storespassed0 msFrontend · unit
lib/job-removal.test.ts::mayConfirm: only a checked, unrefused plan with a valid reasonpassed0 msFrontend · unit
lib/job-removal.test.ts::removedMessage: a real removal and a no-op read differentlypassed0 msFrontend · unit
lib/lead-funnel.test.ts::buildFunnel counts stages + win ratepassed4 msFrontend · unit
lib/lead-funnel.test.ts::buildFunnel handles emptypassed0 msFrontend · unit
lib/load-outcome.test.ts::a 403 is a refusal, not a failurepassed6 msFrontend · unit
lib/load-outcome.test.ts::a 400 is an incomplete questionpassed0 msFrontend · unit
lib/load-outcome.test.ts::a 500 and a network error are both failurespassed0 msFrontend · unit
lib/load-outcome.test.ts::401 is a failure, not a refusal — an expired session is fixed by signing inpassed0 msFrontend · unit
lib/load-outcome.test.ts::no error at all is okpassed0 msFrontend · unit
lib/load-outcome.test.ts::statusOf tolerates anythingpassed0 msFrontend · unit
lib/load-outcome.test.ts::the refusal copy does NOT claim nothing is hiddenpassed1 msFrontend · unit
lib/load-outcome.test.ts::the incomplete copy does not claim anybody was removedpassed0 msFrontend · unit
lib/load-outcome.test.ts::a genuine failure keeps the reassurance, which is where it is truepassed0 msFrontend · unit
lib/load-outcome.test.ts::the server's own detail is carried through, never swallowedpassed0 msFrontend · unit
lib/managed.test.ts::calls an operator-run clinic exactly that, not 'setup pending'passed3 msFrontend · unit
lib/managed.test.ts::says a suspension keeps the grantspassed3 msFrontend · unit
lib/managed.test.ts::distinguishes a clinic that signs in for itselfpassed2 msFrontend · unit
lib/managed.test.ts::adds the always-granted module without it being storedpassed3 msFrontend · unit
lib/managed.test.ts::drops a key no module ownspassed6 msFrontend · unit
lib/managed.test.ts::treats an empty tick set as the always-granted set onlypassed0 msFrontend · unit
lib/managed.test.ts::never grants everything by defaultpassed0 msFrontend · unit
lib/managed.test.ts::reports billing's missing prerequisite instead of adding itpassed1 msFrontend · unit
lib/managed.test.ts::reports nothing once the prerequisite is tickedpassed0 msFrontend · unit
lib/managed.test.ts::names the module to tick, not the one already tickedpassed1 msFrontend · unit
lib/managed.test.ts::handles several gaps at oncepassed0 msFrontend · unit
lib/managed.test.ts::locks only the always-granted onepassed0 msFrontend · unit
lib/managed.test.ts::labels every method it can be handedpassed1 msFrontend · unit
lib/managed.test.ts::says email is always availablepassed0 msFrontend · unit
lib/managed.test.ts::refuses to remove email, with the lockout reasonpassed0 msFrontend · unit
lib/managed.test.ts::refuses to remove the only proved factorpassed0 msFrontend · unit
lib/managed.test.ts::allows removing a spare factorpassed0 msFrontend · unit
lib/managed.test.ts::asks for length and never for compositionpassed0 msFrontend · unit
lib/managed.test.ts::catches a mistyped confirmationpassed0 msFrontend · unit
lib/managed.test.ts::moves to the factor picker with no tokenpassed1 msFrontend · unit
lib/managed.test.ts::routes a first sign-in to a password change, not to a sessionpassed0 msFrontend · unit
lib/managed.test.ts::only completes on a real tokenpassed0 msFrontend · unit
lib/managed.test.ts::stays put on a response it does not understandpassed5 msFrontend · unit
lib/managed.test.ts::the modules dialog renders the not-offered list rather than dropping itpassed1 msFrontend · unit
lib/managed.test.ts::every not-offered section carries a reason, not just a labelpassed1 msFrontend · unit
lib/manual-reading.test.ts::a round trip through the pickers preserves the instantpassed8 msFrontend · unit
lib/manual-reading.test.ts::an unparseable value yields empty pickers rather than NaNpassed3 msFrontend · unit
lib/manual-reading.test.ts::a missing date or time is refused with which one is missingpassed1 msFrontend · unit
lib/manual-reading.test.ts::31 February is refused, not rolled forward into Marchpassed0 msFrontend · unit
lib/manual-reading.test.ts::a reading cannot be recorded in the futurepassed0 msFrontend · unit
lib/manual-reading.test.ts::a reading taken earlier today is acceptedpassed0 msFrontend · unit
lib/manual-reading.test.ts::the picker's max is today, so the future is unreachable by mousepassed1 msFrontend · unit
lib/manual-reading.test.ts::malformed shapes are refused rather than coercedpassed0 msFrontend · unit
lib/manual-reading.test.ts::a patient label reads either roster keypassed0 msFrontend · unit
lib/manual-reading.test.ts::a patient with no name is never labelled with their raw idpassed0 msFrontend · unit
lib/manual-reading.test.ts::the DOB disambiguates two patients with the same namepassed0 msFrontend · unit
lib/markdown.test.ts::headings render with a stable anchor and are collectedpassed8 msFrontend · unit
lib/markdown.test.ts::a paragraph joins its wrapped lines into onepassed1 msFrontend · unit
lib/markdown.test.ts::bullet and numbered lists close before the next blockpassed1 msFrontend · unit
lib/markdown.test.ts::a wrapped list item is ONE item, and its bold survives the wrappassed1 msFrontend · unit
lib/markdown.test.ts::a list item's continuation does not swallow the next item or blockpassed0 msFrontend · unit
lib/markdown.test.ts::switching list type closes the previous listpassed0 msFrontend · unit
lib/markdown.test.ts::tables render a head, a body and their own scroll containerpassed1 msFrontend · unit
lib/markdown.test.ts::bold, italic and inline codepassed0 msFrontend · unit
lib/markdown.test.ts::code spans are literal — markup inside them is not renderedpassed0 msFrontend · unit
lib/markdown.test.ts::safe links render, unsafe ones lose their href entirelypassed1 msFrontend · unit
lib/markdown.test.ts::every text path escapes HTML before emitting markuppassed0 msFrontend · unit
lib/markdown.test.ts::a heading id is escaped even when the heading contains markuppassed0 msFrontend · unit
lib/markdown.test.ts::fenced code blocks are literalpassed0 msFrontend · unit
lib/markdown.test.ts::blockquotes render their contents as markdownpassed0 msFrontend · unit
lib/markdown.test.ts::horizontal rules are rules, not empty listspassed2 msFrontend · unit
lib/markdown.test.ts::slugify is stable, lowercase and boundedpassed0 msFrontend · unit
lib/markdown.test.ts::empty and whitespace input render to nothing rather than throwingpassed0 msFrontend · unit
lib/markdown.test.ts::a real guide fragment survives end to endpassed1 msFrontend · unit
lib/markdown.test.ts::an image line becomes a figure with a caption and NO srcpassed1 msFrontend · unit
lib/markdown.test.ts::consecutive images are one group, so they lay out as a gridpassed0 msFrontend · unit
lib/markdown.test.ts::every source but shot: is dropped to its caption — https includedpassed1 msFrontend · unit
lib/markdown.test.ts::an image inside running text degrades to its caption, with no stray !passed0 msFrontend · unit
lib/markdown.test.ts::a caption is escaped, not trustedpassed1 msFrontend · unit
lib/markdown.test.ts::figures sit between the prose around thempassed0 msFrontend · unit
lib/marketing-links-are-host-relative.test.ts::the marketing builder's default portal host is empty, not an environmentpassed8 msFrontend · unit
lib/marketing-links-are-host-relative.test.ts::the build ARGs carry no hostname eitherpassed2 msFrontend · unit
lib/marketing-links-are-host-relative.test.ts::no built marketing page links to a specific environmentpassed24 msFrontend · unit
lib/marketing-links-are-host-relative.test.ts::the login and sign-up links are present and root-relativepassed1 msFrontend · unit
lib/marketing-links-are-host-relative.test.ts::the hostname pattern matches what it is meant to and nothing elsepassed1 msFrontend · unit
lib/marketing-merge-parity.test.ts::every operation the seven tabs offered still has a screenpassed12 msFrontend · unit
lib/marketing-merge-parity.test.ts::each surviving Patient Engagement screen renders something of its ownpassed1 msFrontend · unit
lib/marketing-merge-parity.test.ts::every retired screen forwards rather than 404spassed1 msFrontend · unit
lib/marketing-merge-parity.test.ts::the moved screens are Client Growth screens, not Patient Engagement onespassed1 msFrontend · unit
lib/marketing-merge-parity.test.ts::no screen falls back to sample datapassed1 msFrontend · unit
lib/marketing-merge-parity.test.ts::the retired ?tab= links all still land somewherepassed1 msFrontend · unit
lib/marketing-merge-parity.test.ts::the mailing list is still reachable after being merged into Contactspassed1 msFrontend · unit
lib/marketing-merge-parity.test.ts::Contacts kept every role the Address Book brought with itpassed1 msFrontend · unit
lib/merge-ledger.test.ts::the ledger is not empty and every entry is completepassed6 msFrontend · unit
lib/merge-ledger.test.ts::entry ids are uniquepassed0 msFrontend · unit
lib/merge-ledger.test.ts::every operation a merge inherited still has a homepassed10 msFrontend · unit
lib/merge-ledger.test.ts::every relocation says WHY, and points somewhere it could have stayedpassed0 msFrontend · unit
lib/merge-ledger.test.ts::every retired entry point still lands somewhere realpassed1 msFrontend · unit
lib/merge-ledger.test.ts::a retired entry point never lands back on itselfpassed1 msFrontend · unit
lib/merge-ledger.test.ts::a merge that splits a list names the property test that proves itpassed1 msFrontend · unit
lib/merge-ledger.test.ts::no inventory has been quietly shortenedpassed1 msFrontend · unit
lib/merge-ledger.test.ts::the ledger keeps its history: known entries are still presentpassed0 msFrontend · unit
lib/modal-a11y.test.ts::the dialog primitives declare full dialog semanticspassed5 msFrontend · unit
lib/modal-a11y.test.ts::the primitives contain Tab and restore focus on closepassed2 msFrontend · unit
lib/modal-a11y.test.ts::no NEW overlay ships without dialog semanticspassed92 msFrontend · unit
lib/modal-a11y.test.ts::the frozen list does not outlive the overlays it namespassed69 msFrontend · unit
lib/modal-a11y.test.ts::the not-a-dialog exemptions still name real overlay-shaped regionspassed53 msFrontend · unit
lib/modal-a11y.test.ts::every hand-rolled overlay has been migratedpassed0 msFrontend · unit
lib/money-hidden.test.ts::only the server's own flag counts as hiddenpassed3 msFrontend · unit
lib/money-hidden.test.ts::a 403 is a refusal; any other failure is notpassed3 msFrontend · unit
lib/money-hidden.test.ts::an absent amount is null, never a zero the server did not sendpassed5 msFrontend · unit
lib/money-hidden.test.ts::the notes name no amount themselvespassed1 msFrontend · unit
lib/money-load.test.ts::a 403 is a refusal, not a faultpassed11 msFrontend · unit
lib/money-load.test.ts::any other failure quotes the serverpassed1 msFrontend · unit
lib/money-load.test.ts::a bare 'HTTP 502' is reported as the status, not quotedpassed0 msFrontend · unit
lib/money-load.test.ts::a failure with no words and no status says sopassed0 msFrontend · unit
lib/money-load.test.ts::a network error's own words are keptpassed0 msFrontend · unit
lib/money-load.test.ts::statusOf reads only a numeric statuspassed0 msFrontend · unit
lib/money-load.test.ts::a 403 decided by lib/money-hidden's isRefusal, not a second definitionpassed3 msFrontend · unit
lib/money-screens.test.ts::each money page is gated on its own menu hrefpassed9 msFrontend · unit
lib/money-screens.test.ts::the gate refuses a Monitoring Specialist on every gated pagepassed1 msFrontend · unit
lib/money-screens.test.ts::the money screens substitute no sample figurespassed17 msFrontend · unit
lib/money-screens.test.ts::the merchant seed module stays deletedpassed0 msFrontend · unit
lib/money-screens.test.ts::guard the guard: the scans still catch what they were written forpassed1 msFrontend · unit
lib/monitored.test.ts::'never transmitted' is its own answer and never a numberpassed3 msFrontend · unit
lib/monitored.test.ts::the headline leads with the ones who need a call, not the healthy onespassed8 msFrontend · unit
lib/monitored.test.ts::an empty roster says nobody is monitored AND nobody is waitingpassed0 msFrontend · unit
lib/monitored.test.ts::the window is explained as a PARTITION, so nothing reads as hiddenpassed0 msFrontend · unit
lib/monitored.test.ts::a clinic filter must NAME what it withheld — Article III.10passed0 msFrontend · unit
lib/monitored.test.ts::rule 15 — an empty returns chart is not 'nothing came back'passed1 msFrontend · unit
lib/monitored.test.ts::both spellings of blood pressure wear one labelpassed0 msFrontend · unit
lib/monitored.test.ts::this module declares no vocabulary of its own — rule 13passed0 msFrontend · unit
lib/monitoring-board.test.ts::the header carries five counts, the filters sixpassed4 msFrontend · unit
lib/monitoring-board.test.ts::minutes are the floor of the measurement, capped at one encounterpassed0 msFrontend · unit
lib/monitoring-board.test.ts::elapsed renders m:ss and never goes negativepassed0 msFrontend · unit
lib/monitoring-board.test.ts::bulk approve excludes the item being read and offers nothing-new rows firstpassed3 msFrontend · unit
lib/monitoring-board.test.ts::bulk approve never grows beyond what was scrolled pastpassed0 msFrontend · unit
lib/monitoring-board.test.ts::keys are ignored while typing in a fieldpassed0 msFrontend · unit
lib/monitoring-board.test.ts::the filter narrows by kind and by text over name, title and findingpassed1 msFrontend · unit
lib/monitoring-board.test.ts::severity dialects collapse to one scalepassed0 msFrontend · unit
lib/monitoring-board.test.ts::the care-time line says what will be logged, or that nothing willpassed1 msFrontend · unit
lib/monitoring-board.test.ts::the adapter presents a board item as the Action Center's queue shapepassed1 msFrontend · unit
lib/monitoring-board.test.ts::grouping keeps the server's order and folds a patient's items into one rowpassed2 msFrontend · unit
lib/monitoring-board.test.ts::the group summary speaks the desk's words, never a kind slugpassed1 msFrontend · unit
lib/monitoring-board.test.ts::needs action now is urgent OR overduepassed0 msFrontend · unit
lib/monitoring-board.test.ts::the backlog tile names the kinds, biggest first, or says nothing is waitingpassed1 msFrontend · unit
lib/monitoring-board.test.ts::history series carry a label and a colour per kindpassed0 msFrontend · unit
lib/monitoring-board.test.ts::measured minutes are stated honestly when the desk has not used the boardpassed0 msFrontend · unit
lib/monitoring-board.test.ts::every kind is always present, in the board's fixed orderpassed11 msFrontend · unit
lib/monitoring-board.test.ts::Alerts is on the page even for a practice that has never had onepassed0 msFrontend · unit
lib/monitoring-board.test.ts::the window count and the backlog are carried separatelypassed0 msFrontend · unit
lib/monitoring-board.test.ts::a kind with work in the window does not claim to be backlogpassed0 msFrontend · unit
lib/monitoring-board.test.ts::the title says which number is whichpassed0 msFrontend · unit
lib/monitoring-board.test.ts::a chip with no backlog says nothing about a backlogpassed0 msFrontend · unit
lib/monitoring-board.test.ts::resolving an item selects the one below itpassed0 msFrontend · unit
lib/monitoring-board.test.ts::the LAST item falls back to the one above, and the only item to nothingpassed0 msFrontend · unit
lib/monitoring-board.test.ts::a key that is not on the list resolves to nothing rather than to row 0passed0 msFrontend · unit
lib/monitoring-board.test.ts::removing an item decrements its kind's count, the total and nothingNewpassed1 msFrontend · unit
lib/monitoring-board.test.ts::removing an alert does not touch nothingNew, and never goes below zeropassed0 msFrontend · unit
lib/monitoring-board.test.ts::removing a key that is not there returns the queue unchangedpassed0 msFrontend · unit
lib/monitoring-board.test.ts::the template list leads with the chosen activity's templates, by titlepassed40 msFrontend · unit
lib/monitoring-board.test.ts::an activity with no templates offers every template under 'others'passed0 msFrontend · unit
lib/monitoring-board.test.ts::a programme switch keeps an activity both lists share and clears the restpassed0 msFrontend · unit
lib/monitoring-board.test.ts::a stored mode reads as its button, and an unknown one as itselfpassed0 msFrontend · unit
lib/month-close.test.ts::only a rescuable row is presented as workpassed6 msFrontend · unit
lib/month-close.test.ts::state labels and tones say which is which in wordspassed0 msFrontend · unit
lib/month-close.test.ts::usd never renders a missing amount as NaN on a billing screenpassed0 msFrontend · unit
lib/month-close.test.ts::a closed month is not urgent — it is overpassed1 msFrontend · unit
lib/month-close.test.ts::the headline leads with money that can still be saved, not the totalpassed1 msFrontend · unit
lib/month-close.test.ts::nextStep gives one action, and explains an unreachable row insteadpassed1 msFrontend · unit
lib/month-close.test.ts::a headline for a caller who may not see money names patients, never $0.00passed0 msFrontend · unit
lib/month-close.test.ts::a withheld patient amount is null, never a zero the server did not sendpassed0 msFrontend · unit
lib/nav-distinct-screens.test.ts::no two entries in one app's menu land on the same screenpassed10 msFrontend · unit
lib/nav-distinct-screens.test.ts::every entry points at a page that actually existspassed16 msFrontend · unit
lib/nav-distinct-screens.test.ts::no entry points at a page whose only job is to redirectpassed170 msFrontend · unit
lib/nav-distinct-screens.test.ts::a query string never carries the identity of a screenpassed1 msFrontend · unit
lib/nav-distinct-screens.test.ts::the guard covers every role menu, including the aliasespassed0 msFrontend · unit
lib/nav.test.ts::no standalone Ops heading survives in the business sidebarpassed4 msFrontend · unit
lib/nav.test.ts::the care programme is ONE section ordered by the patient journeypassed3 msFrontend · unit
lib/nav.test.ts::clinical and operational screens sit in the SAME modulepassed2 msFrontend · unit
lib/nav.test.ts::Patient Engagement is one section, grouped by AUDIENCEpassed0 msFrontend · unit
lib/nav.test.ts::the B2B pipeline is NOT in Patient Engagementpassed1 msFrontend · unit
lib/nav.test.ts::Client Growth and Client Success are their own sectionspassed1 msFrontend · unit
lib/nav.test.ts::the Rules Engine is reachable from the business sidebarpassed2 msFrontend · unit
lib/nav.test.ts::every business href is still reachable and uniquepassed0 msFrontend · unit
lib/nav.test.ts::staff still lose exactly the owner-only surfaces, nothing morepassed1 msFrontend · unit
lib/nav.test.ts::the permission-derived nav mirrors the same structurepassed0 msFrontend · unit
lib/nav.test.ts::the permission-derived nav IS the static nav — full bidirectional paritypassed1 msFrontend · unit
lib/nav.test.ts::every menu item has an IAM permission gate, and no gate is stalepassed0 msFrontend · unit
lib/nav.test.ts::a label names ONE screen within a role's menupassed1 msFrontend · unit
lib/nav.test.ts::no duplicate hrefs within a single role's menupassed1 msFrontend · unit
lib/nav.test.ts::the Care-Time redirect is not offered as its own menu itempassed2 msFrontend · unit
lib/nav.test.ts::messaging is one parent group, not loose sidebar itemspassed1 msFrontend · unit
lib/nav.test.ts::Contact Patient sits with the practice inbox, not on its ownpassed1 msFrontend · unit
lib/nav.test.ts::the doctor's care programme carries the same journey stagespassed0 msFrontend · unit
lib/nav.test.ts::every role's menu is a handful of sections, each regrouped, none lostpassed0 msFrontend · unit
lib/nav.test.ts::every hanType spelling resolves to its role's menu, never the patient fallbackpassed0 msFrontend · unit
lib/nav.test.ts::there is no second ops module beside Care Programpassed0 msFrontend · unit
lib/nav.test.ts::Training is the first thing a business user sees in the sidebarpassed2 msFrontend · unit
lib/nav.test.ts::Training is reachable exactly oncepassed0 msFrontend · unit
lib/nav.test.ts::the training manual is not offered to patientspassed0 msFrontend · unit
lib/nav.test.ts::Carrier Accounts is the ONLY part of device returns outside the business apppassed1 msFrontend · unit
lib/nav.test.ts::Account Access is offered to platform admins and NOT to a business adminpassed1 msFrontend · unit
lib/no-browser-prompt.test.ts::the detector flags a real call in every spellingpassed4 msFrontend · unit
lib/no-browser-prompt.test.ts::prose about the rule is not a breach of itpassed1 msFrontend · unit
lib/no-browser-prompt.test.ts::a file's own function of the same name is not the browser'spassed1 msFrontend · unit
lib/no-browser-prompt.test.ts::the scan actually covered the apppassed0 msFrontend · unit
lib/no-browser-prompt.test.ts::no screen collects a value with the browser's prompt boxpassed0 msFrontend · unit
lib/no-browser-prompt.test.ts::the Ops console uses none of the three, and has no allow-list entry to hide one inpassed0 msFrontend · unit
lib/no-browser-prompt.test.ts::the prompt allow-list is shrink-only: every entry still matches exactly what is therepassed0 msFrontend · unit
lib/no-browser-prompt.test.ts::confirm() and alert() may only go downpassed0 msFrontend · unit
lib/no-client-tenant.test.ts::finds no site outside the frozen listpassed3 msFrontend · unit
lib/no-client-tenant.test.ts::has no stale entry — a fixed file may not stay on the listpassed0 msFrontend · unit
lib/no-client-tenant.test.ts::no frozen file grows a NEW onepassed0 msFrontend · unit
lib/no-client-tenant.test.ts::the screens QA reported no longer name a tenant on their READSpassed1 msFrontend · unit
lib/no-client-tenant.test.ts::no API helper accepts the caller's own tenant id as a parameterpassed1025 msFrontend · unit
lib/no-client-tenant.test.ts::the allow-list does not outlive the helpers it namespassed15 msFrontend · unit
lib/no-corpid-signin-gate.test.ts::no screen decides signed-in-ness from a field the envelope may omitpassed288 msFrontend · unit
lib/no-corpid-signin-gate.test.ts::the guard would catch the original defectpassed1 msFrontend · unit
lib/no-corpid-signin-gate.test.ts::the guard does not flag a comment that quotes the banned expressionpassed0 msFrontend · unit
lib/no-corpid-signin-gate.test.ts::treats a token as the whole test for a sessionpassed1 msFrontend · unit
lib/no-corpid-signin-gate.test.ts::resolves the tenant as corpId or userId, in that orderpassed0 msFrontend · unit
lib/no-corpid-signin-gate.test.ts::never invents a branchpassed0 msFrontend · unit
lib/no-corpid-signin-gate.test.ts::permits sample data only when signed outpassed0 msFrontend · unit
lib/no-fabricated-form-defaults.test.ts::no billing form opens pre-filled with a fabricated valuepassed7 msFrontend · unit
lib/no-fabricated-form-defaults.test.ts::the scanner reads initialisers and not prosepassed4 msFrontend · unit
lib/no-fabricated-form-defaults.test.ts::an empty default is what the fix looks likepassed0 msFrontend · unit
lib/no-id-as-name.test.ts::no screen falls back to an identifier where a name belongspassed147 msFrontend · unit
lib/no-id-as-name.test.ts::the allow-list does not outlive the files it namespassed3 msFrontend · unit
lib/no-id-as-name.test.ts::the scanner actually matches the shape it was written forpassed0 msFrontend · unit
lib/no-id-as-name.test.ts::a resolved name is returned as-ispassed1 msFrontend · unit
lib/no-id-as-name.test.ts::the canonical server key wins over the legacy onespassed0 msFrontend · unit
lib/no-id-as-name.test.ts::an unresolvable person is named in words, never by idpassed0 msFrontend · unit
lib/no-id-as-name.test.ts::the synthetic login handle is not a namepassed0 msFrontend · unit
lib/no-id-as-name.test.ts::unassigned and unresolvable are different answerspassed0 msFrontend · unit
lib/no-id-as-name.test.ts::search matches names and never identifierspassed1 msFrontend · unit
lib/no-id-as-name.test.ts::an empty query matches everythingpassed0 msFrontend · unit
lib/no-invented-records.test.ts::the scan reaches the screens at allpassed82 msFrontend · unit
lib/no-invented-records.test.ts::no screen substitutes invented records for a real answerpassed297 msFrontend · unit
lib/no-invented-records.test.ts::the allow-list names only files that still need itpassed298 msFrontend · unit
lib/no-invented-records.test.ts::every allow-list entry says whypassed0 msFrontend · unit
lib/no-invented-records.test.ts::probe: empty-ternary is detectedpassed0 msFrontend · unit
lib/no-invented-records.test.ts::probe: data-ternary is detectedpassed0 msFrontend · unit
lib/no-invented-records.test.ts::probe: or-fallback is detectedpassed0 msFrontend · unit
lib/no-invented-records.test.ts::probe: seed-merge is detectedpassed0 msFrontend · unit
lib/no-invented-records.test.ts::probe: empty-if-seed is detectedpassed1 msFrontend · unit
lib/no-invented-records.test.ts::probe: catch-seed is detectedpassed6 msFrontend · unit
lib/no-invented-records.test.ts::probe: catch-seed-call is detectedpassed0 msFrontend · unit
lib/no-invented-records.test.ts::probe: a computed seed on the success path is detectedpassed0 msFrontend · unit
lib/no-invented-records.test.ts::probe: seed rows WRITTEN to the server on an empty read are detectedpassed0 msFrontend · unit
lib/no-invented-records.test.ts::probe: the signed-out preview and honest fallbacks are NOT flaggedpassed0 msFrontend · unit
lib/no-invented-records.test.ts::probe: prose about the defect does not trip the guardpassed0 msFrontend · unit
lib/no-raw-api-fetch.test.ts::the scanner sees the files it is meant to scanpassed77 msFrontend · unit
lib/no-raw-api-fetch.test.ts::no new screen calls the API with a bare fetchpassed126 msFrontend · unit
lib/no-raw-api-fetch.test.ts::the frozen list carries no stale entriespassed120 msFrontend · unit
lib/no-raw-api-fetch.test.ts::the non-API allow-list carries no stale entries, and every entry gives a reasonpassed112 msFrontend · unit
lib/no-raw-api-fetch.test.ts::an exempted file fetches a same-origin path, never the API basepassed1 msFrontend · unit
lib/no-raw-api-fetch.test.ts::apiFetch is exported for them to migrate ontopassed3 msFrontend · unit
lib/no-raw-api-fetch.test.ts::the shared client applies a deadlinepassed3 msFrontend · unit
lib/no-seed-on-failure.test.ts::clinical, billing and privacy screens NEVER seed on failurepassed3976 msFrontend · unit
lib/no-seed-on-failure.test.ts::these screens use the shared data-state rulepassed6 msFrontend · unit
lib/no-seed-on-failure.test.ts::no NEW screen starts seeding on failurepassed9081 msFrontend · unit
lib/no-seed-on-failure.test.ts::the frozen list does not outlive the screens it namespassed8879 msFrontend · unit
lib/no-seed-on-failure.test.ts::the settings form cannot save what it could not loadpassed1 msFrontend · unit
lib/no-seed-on-failure.test.ts::the widened scanner catches the lowercase-seed shape it was written forpassed0 msFrontend · unit
lib/no-seed-on-failure.test.ts::the scanner does not flag an ordinary length checkpassed0 msFrontend · unit
lib/no-seed-on-failure.test.ts::the comment stripper removes prose and keeps codepassed0 msFrontend · unit
lib/no-seed-on-failure.test.ts::a seed constant is caught whatever it is calledpassed0 msFrontend · unit
lib/no-seed-on-failure.test.ts::importing a seed for a signed-out preview is still allowedpassed1 msFrontend · unit
lib/no-signed-in-user-as-subject.test.ts::no screen passes the session's own id into a subject-taking helperpassed149 msFrontend · unit
lib/no-signed-in-user-as-subject.test.ts::the helpers themselves take only a tokenpassed8 msFrontend · unit
lib/no-signed-in-user-as-subject.test.ts::neither helper puts a doctorId on the wirepassed3 msFrontend · unit
lib/no-unguarded-refetch.test.ts::the scanner finds effects at allpassed153 msFrontend · unit
lib/no-unguarded-refetch.test.ts::patient-identified screens drop stale responsespassed124 msFrontend · unit
lib/no-unguarded-refetch.test.ts::a patient-identified screen may never be added to the frozen listpassed0 msFrontend · unit
lib/no-unguarded-refetch.test.ts::no new unguarded refetch appearspassed122 msFrontend · unit
lib/no-unguarded-refetch.test.ts::the frozen list carries no stale entriespassed188 msFrontend · unit
lib/notes-draft.test.ts::mmss renders a transcript clockpassed4 msFrontend · unit
lib/notes-draft.test.ts::the doctor's edits win over the draft, and a struck section stays struckpassed0 msFrontend · unit
lib/notes-draft.test.ts::a note is signable only when bound to a patient with something in itpassed4 msFrontend · unit
lib/npi.test.ts::the check digit is computed over the 80840 issuer prefixpassed8 msFrontend · unit
lib/npi.test.ts::a valid NPI is acceptedpassed1 msFrontend · unit
lib/npi.test.ts::a transposed pair is caught — the whole reason this runs at the keyboardpassed1 msFrontend · unit
lib/npi.test.ts::a repdigit string is refused even when it passes Luhnpassed0 msFrontend · unit
lib/npi.test.ts::punctuation is stripped, so a pasted 123-456-7893 workspassed0 msFrontend · unit
lib/npi.test.ts::an empty NPI is not an error — people are hired before the NPI arrivespassed0 msFrontend · unit
lib/npi.test.ts::a wrong length says how many digits were givenpassed0 msFrontend · unit
lib/npi.test.ts::a taxonomy code may carry letters anywhere — 363LP2300N is realpassed1 msFrontend · unit
lib/npi.test.ts::a taxonomy code of the wrong length is refusedpassed0 msFrontend · unit
lib/npi.test.ts::eligibility needs BOTH an NPI and a taxonomy, and says which is missingpassed1 msFrontend · unit
lib/npi.test.ts::every ineligible answer carries a next steppassed1 msFrontend · unit
lib/npi.test.ts::a stored NPI that fails its check digit is reported, not silently ignoredpassed0 msFrontend · unit
lib/onboarding-history.test.ts::waiting for a care plan is named as the consequence it ispassed5 msFrontend · unit
lib/onboarding-history.test.ts::a pipeline with everyone enrolled is not described as a backlogpassed0 msFrontend · unit
lib/onboarding-history.test.ts::nobody entering is a different statement from nobody enrolledpassed0 msFrontend · unit
lib/onboarding-history.test.ts::a young pipeline does not claim an age it cannot supportpassed0 msFrontend · unit
lib/onboarding-history.test.ts::the funnel caveat names the legacy enrolments that explain the gappassed0 msFrontend · unit
lib/onboarding-history.test.ts::with no legacy enrolments the caveat is just the base notepassed0 msFrontend · unit
lib/onboarding.test.ts::a phase reports its own state, and a passed phase with open steps is 'catch up'passed3 msFrontend · unit
lib/onboarding.test.ts::all six phases survive grouping, including an empty onepassed3 msFrontend · unit
lib/onboarding.test.ts::the plan opens on the phase to catch up, before the current onepassed0 msFrontend · unit
lib/onboarding.test.ts::remaining time counts only open steps and reads like a person wrote itpassed1 msFrontend · unit
lib/onboarding.test.ts::the greeting follows the viewer's clockpassed4 msFrontend · unit
lib/onboarding.test.ts::only an amount in a money section becomes currency — a count never doespassed81 msFrontend · unit
lib/onboarding.test.ts::sections needing attention come first; an unavailable one goes lastpassed2 msFrontend · unit
lib/onboarding.test.ts::jobs read as words, and no job says what to do about itpassed1 msFrontend · unit
lib/onboarding.test.ts::tourHref: the patient app's tour lives on the guide, every other on Trainingpassed1 msFrontend · unit
lib/one-h1-per-page.test.ts::the dashboard shell renders no <h1> of its ownpassed6 msFrontend · unit
lib/one-h1-per-page.test.ts::only shared header components render an <h1> inside components/passed32 msFrontend · unit
lib/one-h1-per-page.test.ts::the comment-stripper does not hide a real <h1>passed0 msFrontend · unit
lib/ops-billing-extract.test.ts::the download path is derived from the id, on this applicationpassed5 msFrontend · unit
lib/ops-billing-extract.test.ts::an id with URL-significant characters cannot escape its segmentpassed0 msFrontend · unit
lib/ops-billing-extract.test.ts::the saved file names the clinic and the monthpassed0 msFrontend · unit
lib/ops-billing-extract.test.ts::a missing clinic or month falls back rather than collapsingpassed0 msFrontend · unit
lib/ops-billing-extract.test.ts::the reserved placeholder hosts are recognised as unopenablepassed1 msFrontend · unit
lib/ops-billing-extract.test.ts::an empty or unparseable URL is treated as no documentpassed0 msFrontend · unit
lib/ops-billing-extract.test.ts::a relative path is not an external documentpassed0 msFrontend · unit
lib/ops-billing-extract.test.ts::a genuinely reachable external document is left alonepassed0 msFrontend · unit
lib/ops-new-row-clinic.test.ts::a chosen clinic is the clinicpassed3 msFrontend · unit
lib/ops-new-row-clinic.test.ts::the rollup is not a clinic, and nothing is substituted for itpassed0 msFrontend · unit
lib/ops-new-row-clinic.test.ts::the refusal says what to dopassed1 msFrontend · unit
lib/ops-new-row-clinic.test.ts::no Ops screen falls back to a hard-coded clinic idpassed15 msFrontend · unit
lib/ops-new-row-clinic.test.ts::the three device screens take the clinic from the patient, through one rulepassed2 msFrontend · unit
lib/ops-new-row-clinic.test.ts::every other one of the eight asks the shared rulepassed2 msFrontend · unit
lib/ops-new-row-clinic.test.ts::the literal-fallback detector fires on the old linepassed0 msFrontend · unit
lib/ops-row-forms.test.ts::the timesheet activities are the server's Literal, in its orderpassed11 msFrontend · unit
lib/ops-row-forms.test.ts::minutes are billed: no zero, no text, no 25-hour day, and no defaultpassed2 msFrontend · unit
lib/ops-row-forms.test.ts::a timesheet payload is typed, and carries the clinic it was filed underpassed1 msFrontend · unit
lib/ops-row-forms.test.ts::a contact needs a name; email and phone are checked only when givenpassed1 msFrontend · unit
lib/ops-row-forms.test.ts::an APCM row collects both insurance lines, nested the way the model stores thempassed3 msFrontend · unit
lib/ops-row-forms.test.ts::a stored gender the vocabulary does not know round-trips instead of being blankedpassed1 msFrontend · unit
lib/ops-row-forms.test.ts::an edit sends back what the form does not show, and never Mongo's _idpassed1 msFrontend · unit
lib/ops-row-forms.test.ts::money is a dollar amount and CPT codes are five characterspassed1 msFrontend · unit
lib/ops-row-forms.test.ts::a call can be logged with no note, but not without a day to call againpassed1 msFrontend · unit
lib/option-search.test.ts::normalise folds case, accents and whitespacepassed6 msFrontend · unit
lib/option-search.test.ts::an empty query shows everything in the caller's orderpassed1 msFrontend · unit
lib/option-search.test.ts::every token must match, in any orderpassed7 msFrontend · unit
lib/option-search.test.ts::an accent in the data does not hide the row from a plain querypassed1 msFrontend · unit
lib/option-search.test.ts::the id and the hint are searched, so a pasted id still finds its rowpassed1 msFrontend · unit
lib/option-search.test.ts::ranking: starts-with beats a word-start beats a substringpassed1 msFrontend · unit
lib/option-search.test.ts::the cap renders the best rows and counts the rest instead of dropping thempassed30 msFrontend · unit
lib/option-search.test.ts::arrow keys wrap and an empty list highlights nothingpassed0 msFrontend · unit
lib/order-form.test.ts::imei: an empty value is refused and names what to look atpassed4 msFrontend · unit
lib/order-form.test.ts::imei: fifteen digits is accepted, sixteen (IMEISV) toopassed1 msFrontend · unit
lib/order-form.test.ts::imei: the wrong length is refused and says how many were givenpassed1 msFrontend · unit
lib/order-form.test.ts::imei: punctuation from a sticker is stripped, not rejectedpassed0 msFrontend · unit
lib/order-form.test.ts::imei: letters alone are refusedpassed2 msFrontend · unit
lib/order-form.test.ts::imei: a Luhn failure WARNS and never blockspassed1 msFrontend · unit
lib/order-form.test.ts::imei: a valid check digit says nothingpassed1 msFrontend · unit
lib/order-form.test.ts::tracking: carrier spacing is normalized to what a courier site takespassed1 msFrontend · unit
lib/order-form.test.ts::tracking: a half-pasted value is refusedpassed0 msFrontend · unit
lib/order-form.test.ts::tracking: punctuation is refused rather than silently droppedpassed0 msFrontend · unit
lib/order-form.test.ts::create: a patient must be SELECTED, never typedpassed1 msFrontend · unit
lib/order-form.test.ts::create: no clinic is refused, and the message names the fixpassed0 msFrontend · unit
lib/order-form.test.ts::create: the clinic is never invented from a defaultpassed0 msFrontend · unit
lib/order-form.test.ts::create: a vendor and a device name are both requiredpassed0 msFrontend · unit
lib/order-form.test.ts::create: 'Other' takes its name from the free-text boxpassed0 msFrontend · unit
lib/order-form.test.ts::create: 'Other' with an empty name is refused, not saved as blankpassed0 msFrontend · unit
lib/order-form.test.ts::create: units must be a whole number, one or morepassed0 msFrontend · unit
lib/order-form.test.ts::create: a blank price is allowed and becomes zeropassed0 msFrontend · unit
lib/order-form.test.ts::create: a negative price is refusedpassed0 msFrontend · unit
lib/order-form.test.ts::create: the payload carries the resolved patient id and clinicpassed0 msFrontend · unit
lib/order-form.test.ts::create: the payload never carries a tenant id the client chosepassed1 msFrontend · unit
lib/order-form.test.ts::edit: appends the IMEI and tracking number, normalizedpassed1 msFrontend · unit
lib/order-form.test.ts::edit: only what changed is sentpassed0 msFrontend · unit
lib/order-form.test.ts::edit: a blank field means leave it alone, never clear itpassed0 msFrontend · unit
lib/order-form.test.ts::edit: a malformed IMEI is refused before anything is sentpassed0 msFrontend · unit
lib/order-form.test.ts::edit: a carrier with no tracking number is refusedpassed0 msFrontend · unit
lib/order-form.test.ts::edit: marking shipped records the tracking number in the same savepassed0 msFrontend · unit
lib/order-form.test.ts::edit: marking shipped with no tracking number anywhere is refusedpassed0 msFrontend · unit
lib/order-form.test.ts::edit: a value already on file counts — it is not re-typedpassed0 msFrontend · unit
lib/order-form.test.ts::edit: marking delivered with no IMEI anywhere is refusedpassed0 msFrontend · unit
lib/order-form.test.ts::grid: a missing display value says so in wordspassed0 msFrontend · unit
lib/order-form.test.ts::grid: a row missing anything the fulfillment person needs is flaggedpassed0 msFrontend · unit
lib/order-form.test.ts::grid: the rollup groups by clinic; a chosen clinic keeps the queue orderpassed35 msFrontend · unit
lib/order-form.test.ts::grid: rows whose clinic could not be resolved sort LASTpassed0 msFrontend · unit
lib/order-form.test.ts::grid: search matches what a human reads, never the identifierpassed0 msFrontend · unit
lib/otp-input.test.ts::a pasted code keeps only its digitspassed3 msFrontend · unit
lib/otp-input.test.ts::a clean six-digit code is submittablepassed3 msFrontend · unit
lib/otp-input.test.ts::an empty field asks for the code rather than failing silentlypassed1 msFrontend · unit
lib/otp-input.test.ts::a short code says how short, and is not sentpassed1 msFrontend · unit
lib/otp-input.test.ts::a long paste is refused, never silently truncatedpassed0 msFrontend · unit
lib/otp-input.test.ts::null and undefined are handled like an empty fieldpassed1 msFrontend · unit
lib/otp-input.test.ts::the length matches the server's generatorpassed0 msFrontend · unit
lib/party-picker.test.ts::one letter is not a search; two arepassed9 msFrontend · unit
lib/party-picker.test.ts::the line under a name says what kind of person and how to tell them apartpassed1 msFrontend · unit
lib/party-picker.test.ts::picking somebody twice is one recipientpassed0 msFrontend · unit
lib/password-policy.test.ts::the minimum matches the server's MIN_PASSWORD_LENpassed3 msFrontend · unit
lib/password-policy.test.ts::a password exactly at the minimum is acceptedpassed0 msFrontend · unit
lib/password-policy.test.ts::the refusal names the rule rather than restating that it failedpassed0 msFrontend · unit
lib/password-policy.test.ts::an empty password is refused, and not with the length messagepassed0 msFrontend · unit
lib/password-policy.test.ts::NO composition rule is enforced, deliberatelypassed0 msFrontend · unit
lib/password-policy.test.ts::the meter is advice and the gate is a contract — they may disagreepassed1 msFrontend · unit
lib/password-policy.test.ts::the meter rewards length at least as much as punctuationpassed1 msFrontend · unit
lib/password-policy.test.ts::the meter never indexes past its label listpassed1 msFrontend · unit
lib/password-policy.test.ts::confirmation must match, and an empty confirmation says what to dopassed0 msFrontend · unit
lib/password-policy.test.ts::the login identifier accepts anything the server resolvespassed0 msFrontend · unit
lib/password-policy.test.ts::only an empty identifier is refusedpassed0 msFrontend · unit
lib/patient-detail.test.ts::a blood-pressure reading yields all three of its metricspassed6 msFrontend · unit
lib/patient-detail.test.ts::each device family contributes its own metricspassed2 msFrontend · unit
lib/patient-detail.test.ts::a reading with no recognised payload contributes nothingpassed0 msFrontend · unit
lib/patient-detail.test.ts::a non-numeric value is dropped, not coercedpassed0 msFrontend · unit
lib/patient-detail.test.ts::the summary reports count, highest, lowest and average per metricpassed1 msFrontend · unit
lib/patient-detail.test.ts::averages are rounded to one decimalpassed0 msFrontend · unit
lib/patient-detail.test.ts::trend points come out chronological, whatever order they arrived inpassed1 msFrontend · unit
lib/patient-detail.test.ts::a reading with no timestamp is excluded from the trendpassed0 msFrontend · unit
lib/patient-detail.test.ts::an over-long range is clamped and says sopassed0 msFrontend · unit
lib/patient-detail.test.ts::a range inside the cap is left exactly alonepassed0 msFrontend · unit
lib/patient-detail.test.ts::the default range is the last 30 dayspassed0 msFrontend · unit
lib/patient-detail.test.ts::inRange is inclusive of both endspassed0 msFrontend · unit
lib/patient-detail.test.ts::the CSV has one row per reading EVENT, not one per metric, and quotes defensivelypassed22 msFrontend · unit
lib/patient-detail.test.ts::the patient header never renders a blank cellpassed4 msFrontend · unit
lib/patient-detail.test.ts::age is computed in whole years and omitted when unknowablepassed0 msFrontend · unit
lib/patient-detail.test.ts::a negative epoch (born before 1970) is a real date, not raw digitspassed73 msFrontend · unit
lib/patient-detail.test.ts::the same epoch survives being serialized as a numeric stringpassed4 msFrontend · unit
lib/patient-detail.test.ts::an ISO date string still formats, and nonsense still says sopassed1 msFrontend · unit
lib/patient-detail.test.ts::headerFields renders the formatted DOB, never the raw epochpassed1 msFrontend · unit
lib/patient-detail.test.ts::the clinic label never falls back to the raw branch idpassed0 msFrontend · unit
lib/patient-detail.test.ts::address fields prefill from the row, and default to empty stringspassed1 msFrontend · unit
lib/patient-detail.test.ts::readingTime accepts either timestamp fieldpassed1 msFrontend · unit
lib/patient-detail.test.ts::no coverage of any kind yields no rows — so the card can say sopassed1 msFrontend · unit
lib/patient-detail.test.ts::a bizpatient.coverageInfo row binds to the card's own fieldspassed1 msFrontend · unit
lib/patient-detail.test.ts::sequencenum orders the rows whether it is a string, a number or absentpassed0 msFrontend · unit
lib/patient-detail.test.ts::a carrier or member id the row does not carry is a dash, never blankpassed0 msFrontend · unit
lib/patient-detail.test.ts::the pre-26_8_28 payor/carrier spellings still bindpassed0 msFrontend · unit
lib/patient-detail.test.ts::onFile is a fallback for a patient with no coverages, and only thenpassed0 msFrontend · unit
lib/patient-detail.test.ts::a malformed coverages entry is skipped, not rendered as a broken rowpassed1 msFrontend · unit
lib/patient-export.test.ts::filename uses the patient's name, not their id (QA 26_8_25 §5)passed4 msFrontend · unit
lib/patient-export.test.ts::filename falls back to the id only when no name is on filepassed0 msFrontend · unit
lib/patient-export.test.ts::patientDisplayName trims and joins first/lastpassed0 msFrontend · unit
lib/patient-export.test.ts::ruleRangeRows reports 'no rules on file' rather than an empty tablepassed1 msFrontend · unit
lib/patient-export.test.ts::ruleRangeRows renders a dash for a bound the rule doesn't set, never 0passed3 msFrontend · unit
lib/patient-export.test.ts::rulesFromMonitoring flattens the per-reading-type effective rule into flat rowspassed1 msFrontend · unit
lib/patient-export.test.ts::rulesFromMonitoring never throws on a missing/malformed entrypassed0 msFrontend · unit
lib/patient-export.test.ts::measurementsExportCsv consolidates one reading event per row (QA §2)passed9 msFrontend · unit
lib/patient-export.test.ts::measurementsExportCsv never falls back to the raw id in the Patient cellpassed1 msFrontend · unit
lib/patient-export.test.ts::measurementsExportCsv appends TMS notes only when asked forpassed70 msFrontend · unit
lib/patient-export.test.ts::measurementsExportCsv's TMS-notes table is the SAME six columns as the Care Time PDF's own notes table (QA 26_8_25 §5.3)passed1 msFrontend · unit
lib/patient-export.test.ts::measurementsExportCsv reads legacy-shaped care-time rows too (contractType/communicationMode, not carePlan/commMode)passed1 msFrontend · unit
lib/patient-export.test.ts::toTmsPatientBlock reads the same demog.* fields headerFields doespassed1 msFrontend · unit
lib/patient-export.test.ts::toTmsPatientBlock never renders 'Invalid Date' when dob is unsetpassed0 msFrontend · unit
lib/patient-export.test.ts::toTmsPatientBlock falls back to top-level dob/gender, same as headerFieldspassed1 msFrontend · unit
lib/patient-export.test.ts::toTmsPatientBlock prefers demog.* over the top-level fallback when both existpassed1 msFrontend · unit
lib/patient-find.test.ts::treats an email or MRN match as certainpassed6 msFrontend · unit
lib/patient-find.test.ts::treats a name-only match as one to CHECK, not as a matchpassed0 msFrontend · unit
lib/patient-find.test.ts::keeps three levels, because two would lose the distinction that matterspassed0 msFrontend · unit
lib/patient-find.test.ts::trusts weakMatch even if the basis says otherwisepassed1 msFrontend · unit
lib/patient-find.test.ts::gives a reason, never a field namepassed1 msFrontend · unit
lib/patient-find.test.ts::names the date of birth in the caution when there is one to checkpassed7 msFrontend · unit
lib/patient-find.test.ts::says so when there is no date of birth to check againstpassed0 msFrontend · unit
lib/patient-find.test.ts::states that nothing has been merged when several records are heldpassed0 msFrontend · unit
lib/patient-find.test.ts::says nothing at all about an ordinary single strong matchpassed0 msFrontend · unit
lib/patient-find.test.ts::summarises three records across three rosters in one linepassed1 msFrontend · unit
lib/patient-find.test.ts::does not say '1 records' for a single rowpassed0 msFrontend · unit
lib/patient-find.test.ts::never leaks a collection name to the screenpassed0 msFrontend · unit
lib/patient-find.test.ts::passes an unknown roster through rather than inventing a labelpassed0 msFrontend · unit
lib/patient-find.test.ts::needs two characterspassed0 msFrontend · unit
lib/patient-find.test.ts::accepts four digits of a phone numberpassed0 msFrontend · unit
lib/patient-find.test.ts::carries the EMR export's own column namespassed1 msFrontend · unit
lib/patient-find.test.ts::requires only a namepassed0 msFrontend · unit
lib/patient-find.test.ts::does not count whitespace as a namepassed0 msFrontend · unit
lib/pdf-sign.test.ts::placement: each corner, inset by margin, origin bottom-leftpassed11 msFrontend · unit
lib/pdf-sign.test.ts::placement: clamps a box bigger than the page to 0passed0 msFrontend · unit
lib/pdf-sign.test.ts::signatureBlock: name + date, reason only when presentpassed1 msFrontend · unit
lib/pdf-sign.test.ts::clampPage: in-range, over, under/NaN → lastpassed0 msFrontend · unit
lib/pdf-sign.test.ts::receiptId: stable format ES-XXXXXX-YYYYpassed1 msFrontend · unit
lib/pdf-sign.test.ts::CORNERS covers all fourpassed0 msFrontend · unit
lib/phase-chip.test.ts::every state x selected is pinnedpassed10 msFrontend · unit
lib/phase-chip.test.ts::an unknown state falls back to a readable chip, never to no classespassed0 msFrontend · unit
lib/phase-chip.test.ts::state is never carried by colour alone — every state has words (SC 1.4.1)passed1 msFrontend · unit
lib/phase-chip.test.ts::the guard itself catches what shipped on 2026-09-16passed1 msFrontend · unit
lib/phase-chip.test.ts::no chip class uses dark:, an alpha text colour, an opacity or a palette text shadepassed1 msFrontend · unit
lib/phase-chip.test.ts::the component takes its chip classes from here and adds none of its ownpassed4 msFrontend · unit
lib/phase-chip.test.ts::every state clears AA with room, in every portal — both text lines share this colourpassed7 msFrontend · unit
lib/phase-chip.test.ts::the selected ring and the state borders are visible as non-text (SC 1.4.11)passed14 msFrontend · unit
lib/phase-chip.test.ts::the old foreground really does fail — the floor is measuring somethingpassed2 msFrontend · unit
lib/phone-format.test.ts::the country code is rendered, not strippedpassed9 msFrontend · unit
lib/phone-format.test.ts::a stored number with no country code assumes US rather than rendering unusablepassed0 msFrontend · unit
lib/phone-format.test.ts::a country code already inside the number is not doubledpassed0 msFrontend · unit
lib/phone-format.test.ts::non-US numbers keep their own code and are not forced into US groupingpassed0 msFrontend · unit
lib/phone-format.test.ts::an absent number shows the fallback, never a stray '+1'passed0 msFrontend · unit
lib/phone-format.test.ts::tel href carries the country code so mobile dialers accept itpassed0 msFrontend · unit
lib/phone-format.test.ts::country code normalizes from any stored spellingpassed0 msFrontend · unit
lib/phone-format.test.ts::digits are extracted from any formattingpassed0 msFrontend · unit
lib/phone-format.test.ts::record helper accepts the field spellings actually storedpassed0 msFrontend · unit
lib/portal-theme.test.ts::the hostname decides the portal, and only as its first labelpassed4 msFrontend · unit
lib/portal-theme.test.ts::the middleware's app-mode maps to the same three portalspassed0 msFrontend · unit
lib/portal-theme.test.ts::each account type wears the colours of the job it signs in to dopassed0 msFrontend · unit
lib/portal-theme.test.ts::an account we cannot classify is NEVER guessed into a colourpassed3 msFrontend · unit
lib/portal-theme.test.ts::a session carrying only `role` still resolves — the 26_8_5 shapepassed0 msFrontend · unit
lib/portal-theme.test.ts::the host wins whenever it names a portalpassed3 msFrontend · unit
lib/portal-theme.test.ts::the account is consulted only when the host names nothingpassed0 msFrontend · unit
lib/portal-theme.test.ts::the pre-paint bootstrap agrees with portalFromHost on every hostpassed1 msFrontend · unit
lib/portal-theme.test.ts::the bootstrap reads the PATH when the host names no portalpassed1 msFrontend · unit
lib/portal-theme.test.ts::a stale session cannot repaint a login doorpassed0 msFrontend · unit
lib/portal-theme.test.ts::the bootstrap cannot throw — a theme must not break the pagepassed1 msFrontend · unit
lib/portal-theme.test.ts::every portal has a label and a theme colourpassed1 msFrontend · unit
lib/portal-theme.test.ts::the theme colour matches the primary the stylesheet renderspassed2 msFrontend · unit
lib/practice-console.test.ts::the device summary leads with what can be assigned, not with the totalpassed4 msFrontend · unit
lib/practice-console.test.ts::a fully assigned fleet says so rather than saying zero sparespassed0 msFrontend · unit
lib/practice-console.test.ts::an empty device book says it is emptypassed0 msFrontend · unit
lib/practice-console.test.ts::a partial IMEI matches — a biller reads the last digits off a stickerpassed3 msFrontend · unit
lib/practice-console.test.ts::search also matches the patient, the model and the serialpassed0 msFrontend · unit
lib/practice-console.test.ts::the status filter and the search composepassed0 msFrontend · unit
lib/practice-console.test.ts::the device fee is finite and the screen says how many months are leftpassed2 msFrontend · unit
lib/practice-console.test.ts::a paid-off device says paid off, not $0.00passed0 msFrontend · unit
lib/practice-console.test.ts::a month that never ran is distinguished from a month that found nobodypassed1 msFrontend · unit
lib/practice-console.test.ts::enrolled but nothing billable names the number enrolledpassed0 msFrontend · unit
lib/practice-console.test.ts::a clinic named after its own identifier admits itpassed0 msFrontend · unit
lib/practice-console.test.ts::programme rows come back biggest firstpassed1 msFrontend · unit
lib/practice-console.test.ts::unattributed money is the headline when there is anypassed1 msFrontend · unit
lib/practice-console.test.ts::an empty month invites the first upload rather than showing zeroespassed0 msFrontend · unit
lib/practice-console.test.ts::a fully reconciled month says sopassed0 msFrontend · unit
lib/practice-console.test.ts::the work queue puts denials first and the biggest balance on toppassed4 msFrontend · unit
lib/practice-console.test.ts::the collection rate is null while everything is still with the payerpassed0 msFrontend · unit
lib/practice-console.test.ts::the invoice shows both halves and where each came frompassed1 msFrontend · unit
lib/practice-console.test.ts::a month where every device is paid off says that, not 'no devices'passed0 msFrontend · unit
lib/programme-claims.test.ts::the default billing month is the one that just endedpassed9 msFrontend · unit
lib/programme-claims.test.ts::month labels are human, and non-months pass through untouchedpassed1 msFrontend · unit
lib/programme-claims.test.ts::the four programmes match the backend's own listpassed2 msFrontend · unit
lib/programme-claims.test.ts::candidates split into billable, blocked and earned-nothingpassed1 msFrontend · unit
lib/programme-claims.test.ts::a patient with no lines but a blocking finding is blocked, not quietpassed0 msFrontend · unit
lib/programme-claims.test.ts::splitCandidates tolerates missing arrays rather than throwingpassed0 msFrontend · unit
lib/programme-claims.test.ts::release messages carry the refusal reason verbatimpassed1 msFrontend · unit
lib/programme-claims.test.ts::a partial release says what is still heldpassed0 msFrontend · unit
lib/programme-claims.test.ts::a clean release does not invent a held countpassed0 msFrontend · unit
lib/programme-claims.test.ts::a wholly simulated submission says NOTHING WAS FILED, firstpassed1 msFrontend · unit
lib/programme-claims.test.ts::a real submission reports accepted, rejected and simulated separatelypassed0 msFrontend · unit
lib/programme-claims.test.ts::a mixed batch flags the simulated portion even when some were acceptedpassed0 msFrontend · unit
lib/programme-claims.test.ts::a refused submission shows the remedy alongside the reasonpassed0 msFrontend · unit
lib/programme-claims.test.ts::an incomplete claim is counted apart from one that could not be sentpassed0 msFrontend · unit
lib/programme-claims.test.ts::a batch where nothing was sent says so first, and says to submit againpassed0 msFrontend · unit
lib/programme-claims.test.ts::a simulated batch with claims still waiting does not read as 'nothing filed' onlypassed0 msFrontend · unit
lib/programme-claims.test.ts::typed ICD-10 codes are parsed the way the server validates thempassed1 msFrontend · unit
lib/programme-claims.test.ts::the shape check mirrors ccm.vocabulary: a dot is required past three characterspassed0 msFrontend · unit
lib/programme-claims.test.ts::suggested codes come only from the no_diagnosis_code findingpassed1 msFrontend · unit
lib/programme-claims.test.ts::saving a diagnosis says to re-assemble, naming the monthpassed0 msFrontend · unit
lib/programme-claims.test.ts::tones distinguish the states a person acts on differentlypassed0 msFrontend · unit
lib/programme-claims.test.ts::collection rate is paid over BILLED, and is null when nothing was billedpassed0 msFrontend · unit
lib/provisioning.test.ts::a platform job mints a staff account, never a platform adminpassed3 msFrontend · unit
lib/provisioning.test.ts::a client-practice job mints a managed businesspassed0 msFrontend · unit
lib/provisioning.test.ts::a kind the server did not offer is refused rather than sentpassed1 msFrontend · unit
lib/provisioning.test.ts::no jobs chosen has no answerpassed0 msFrontend · unit
lib/provisioning.test.ts::jobs from both realms have no single answerpassed0 msFrontend · unit
lib/provisioning.test.ts::one realm repeated is still one realmpassed0 msFrontend · unit
lib/provisioning.test.ts::an unknown realm resolves to nothing rather than guessingpassed0 msFrontend · unit
lib/questionnaire-author.test.ts::toDocument then fromDocument is the identitypassed8 msFrontend · unit
lib/questionnaire-author.test.ts::an ordinal score survives the round trippassed1 msFrontend · unit
lib/questionnaire-author.test.ts::a score of 0 is kept, not treated as absentpassed0 msFrontend · unit
lib/questionnaire-author.test.ts::a boolean condition goes out as answerBoolean, never answerIntegerpassed1 msFrontend · unit
lib/questionnaire-author.test.ts::enableBehavior is emitted only with more than one conditionpassed1 msFrontend · unit
lib/questionnaire-author.test.ts::only answerable items BEFORE the target may gate itpassed1 msFrontend · unit
lib/questionnaire-author.test.ts::a branch on a LATER item is refused, not silently acceptedpassed1 msFrontend · unit
lib/questionnaire-author.test.ts::an ordered comparison against a yes/no answer is refusedpassed0 msFrontend · unit
lib/questionnaire-author.test.ts::a value that is not one of the enabler's codes is refusedpassed0 msFrontend · unit
lib/questionnaire-author.test.ts::exists offers true/false whatever the item ispassed0 msFrontend · unit
lib/questionnaire-author.test.ts::a well-formed draft has nothing against itpassed3 msFrontend · unit
lib/questionnaire-author.test.ts::activating without a licence note is refused, with the reasonpassed1 msFrontend · unit
lib/questionnaire-author.test.ts::a crisis rule on a marketing questionnaire is refusedpassed0 msFrontend · unit
lib/questionnaire-author.test.ts::the same crisis rule is fine on a treatment questionnairepassed0 msFrontend · unit
lib/questionnaire-author.test.ts::a duplicate linkId is caught, because the ambiguity is silentpassed1 msFrontend · unit
lib/questionnaire-author.test.ts::a choice item with no options can never be answeredpassed1 msFrontend · unit
lib/questionnaire-author.test.ts::a gap in the band table is refusedpassed0 msFrontend · unit
lib/questionnaire-author.test.ts::an inverted band is refusedpassed0 msFrontend · unit
lib/questionnaire-author.test.ts::code scoring naming an algorithm with no scorer is refusedpassed0 msFrontend · unit
lib/questionnaire-author.test.ts::an unknown algorithm is NOT flagged when the list is unknownpassed0 msFrontend · unit
lib/questionnaire-author.test.ts::scoring naming an item that is not there is refusedpassed0 msFrontend · unit
lib/questionnaire-author.test.ts::a dead enableWhen is refusedpassed0 msFrontend · unit
lib/questionnaire-author.test.ts::a non-semver version is refusedpassed0 msFrontend · unit
lib/questionnaire-author.test.ts::an empty questionnaire asks nothingpassed0 msFrontend · unit
lib/questionnaire-author.test.ts::a version only counts if it exceeds EVERY published onepassed1 msFrontend · unit
lib/questionnaire-author.test.ts::a non-semver next version does not increasepassed0 msFrontend · unit
lib/questionnaire-author.test.ts::nextVersion bumps the minor, and rescues a broken currentpassed0 msFrontend · unit
lib/questionnaire-author.test.ts::flattenDraft reaches nested groupspassed1 msFrontend · unit
lib/questionnaire-render.test.ts::a gated item is hidden until the gate openspassed4 msFrontend · unit
lib/questionnaire-render.test.ts::item 6 is asked of everybody, gate or no gatepassed1 msFrontend · unit
lib/questionnaire-render.test.ts::enableBehavior all needs every conditionpassed0 msFrontend · unit
lib/questionnaire-render.test.ts::true is not 1, matching the serverpassed0 msFrontend · unit
lib/questionnaire-render.test.ts::an ordered comparison against a boolean is false, never coercedpassed0 msFrontend · unit
lib/questionnaire-render.test.ts::exists false means enabled when NOT answeredpassed0 msFrontend · unit
lib/questionnaire-render.test.ts::a hidden group takes its whole subtreepassed0 msFrontend · unit
lib/questionnaire-render.test.ts::required is judged after branchingpassed7 msFrontend · unit
lib/questionnaire-render.test.ts::progress counts only what the patient can seepassed1 msFrontend · unit
lib/questionnaire-render.test.ts::progress on an empty questionnaire does not divide by zeropassed0 msFrontend · unit
lib/questionnaire-render.test.ts::options keep their declared order and carry their display textpassed0 msFrontend · unit
lib/questionnaire-render.test.ts::group headings come from the questionnaire, not the componentpassed1 msFrontend · unit
lib/questionnaire-render.test.ts::groups and display items are never rendered as questionspassed0 msFrontend · unit
lib/questionnaire-render.test.ts::flatten reaches nested groupspassed0 msFrontend · unit
lib/rbac.test.ts::isBusinessAdmin: owner (B) and admin (A) pass; staff/clinician/patient failpassed3 msFrontend · unit
lib/rbac.test.ts::isBusinessAdmin: an explicit globalAdmin flag grants access regardless of hanTypepassed0 msFrontend · unit
lib/rbac.test.ts::filterOwnerOnly hides owner-only items from staff, keeps them for adminpassed4 msFrontend · unit
lib/rbac.test.ts::pageAccessFor: staff readonly on Manage Business/Branches/Representatives, denied on owner-onlypassed0 msFrontend · unit
lib/rbac.test.ts::canAccessHref lets staff reach Representatives read-only; owner-only surfaces stay blockedpassed5 msFrontend · unit
lib/rbac.test.ts::QA 26_8_14 §1.1: mayViewFinancials gates the Overview revenue tilespassed2 msFrontend · unit
lib/rbac.test.ts::financial visibility is NOT the same question as managing configurationpassed2 msFrontend · unit
lib/rcm-billing.test.ts::engine choices: the three the UI offers, deterministic default listed firstpassed12 msFrontend · unit
lib/rcm-billing.test.ts::footingStatus: foots vs does-not-foot with a specific mismatch reasonpassed75 msFrontend · unit
lib/rcm-billing.test.ts::engineNote: null when honored; explains a fallbackpassed0 msFrontend · unit
lib/rcm-billing.test.ts::money: two-decimal currency; em-dash for nullpassed1 msFrontend · unit
lib/rcm-billing.test.ts::pdfsOnly: keeps only PDFs from a directory selectionpassed1 msFrontend · unit
lib/rcm-flatview.test.ts::rowText: flattens nested objects + arrays, lowercasedpassed3 msFrontend · unit
lib/rcm-flatview.test.ts::rowText: null/undefined values are skipped, no throwpassed0 msFrontend · unit
lib/rcm-flatview.test.ts::filterRows: empty query returns all rows unchangedpassed11 msFrontend · unit
lib/rcm-flatview.test.ts::filterRows: single term substring match on nested fieldpassed1 msFrontend · unit
lib/rcm-flatview.test.ts::filterRows: multiple terms are AND-edpassed0 msFrontend · unit
lib/rcm-flatview.test.ts::matchLabel: total when all shown, 'n of m' when filteredpassed0 msFrontend · unit
lib/rcm-months.test.ts::rows for you is the only verdict that means the feature is working herepassed6 msFrontend · unit
lib/rcm-months.test.ts::nothing for you but rows elsewhere is a DIFFERENT fact from never usedpassed0 msFrontend · unit
lib/rcm-months.test.ts::zero everywhere says the feature has never been used by anybodypassed0 msFrontend · unit
lib/rcm-months.test.ts::none of the three verdicts is 'broken'passed1 msFrontend · unit
lib/rcm-months.test.ts::the span reported is the span the DATA coverspassed1 msFrontend · unit
lib/rcm-months.test.ts::one month is not printed as a range from itself to itselfpassed0 msFrontend · unit
lib/rcm-months.test.ts::rows whose month cannot be read are named, never silently droppedpassed0 msFrontend · unit
lib/rcm-months.test.ts::no record at all says so rather than reporting a zero-month spanpassed0 msFrontend · unit
lib/rcm-practice.test.ts::never picks for somebody who holds several practicespassed3 msFrontend · unit
lib/rcm-practice.test.ts::selects the only practice, and puts it in the URLpassed0 msFrontend · unit
lib/rcm-practice.test.ts::honours a practice named in the URLpassed0 msFrontend · unit
lib/rcm-practice.test.ts::carries the tab's last choice across a sidebar link that dropped the querypassed0 msFrontend · unit
lib/rcm-practice.test.ts::drops a URL practice this login cannot see, and says sopassed0 msFrontend · unit
lib/rcm-practice.test.ts::does not resurrect a saved practice that is no longer on the listpassed0 msFrontend · unit
lib/rcm-practice.test.ts::asks nothing of a login with no practices — there is nothing to choosepassed0 msFrontend · unit
lib/rcm-practice.test.ts::tells a failed load apart from an empty onepassed1 msFrontend · unit
lib/rcm-practice.test.ts::names the one practice rather than counting itpassed0 msFrontend · unit
lib/rcm-practice.test.ts::says a sign-up status in words, never the raw codepassed0 msFrontend · unit
lib/rcm-remit.test.ts::eraPullSummary: error / empty / postedpassed5 msFrontend · unit
lib/rcm-remit.test.ts::eraPullSummary: a shared-account pull says whose claims it reachedpassed1 msFrontend · unit
lib/rcm-remit.test.ts::eraPullSummary: 'not set up' is not 'could not reach'passed2 msFrontend · unit
lib/rcm-remit.test.ts::priorAuthTone: approved / denied / pendedpassed0 msFrontend · unit
lib/rcm-settings.test.ts::the subtitle names the practice whose settings are shown, never an idpassed3 msFrontend · unit
lib/rcm-settings.test.ts::the account in effect: its own, the shared one, or none — three sentencespassed2 msFrontend · unit
lib/rcm-settings.test.ts::the simulator is never described as a vendor accountpassed0 msFrontend · unit
lib/rcm-settings.test.ts::an unknown vendor id is shown as itself rather than droppedpassed0 msFrontend · unit
lib/rcm-settings.test.ts::the picker leads with what 'nothing chosen' MEANS, and ends with the labelled simulatorpassed3 msFrontend · unit
lib/rcm-settings.test.ts::the simulator is offered once even if the catalogue lists itpassed0 msFrontend · unit
lib/rcm-settings.test.ts::the shared-account warning says whose claims a change movespassed0 msFrontend · unit
lib/rcm-settings.test.ts::authorisation to transmit is reported, and says where it comes frompassed0 msFrontend · unit
lib/rcm-workflows.test.ts::only 'active' says anything may be sent to a payerpassed4 msFrontend · unit
lib/rcm-workflows.test.ts::a draft with no gaps is told to submit, one with gaps is told how manypassed0 msFrontend · unit
lib/rcm-workflows.test.ts::submit is only offered when the application is completepassed1 msFrontend · unit
lib/rcm-workflows.test.ts::gaps group into the order a practice can work inpassed3 msFrontend · unit
lib/rcm-workflows.test.ts::a mapping is incomplete until every required target has a columnpassed1 msFrontend · unit
lib/rcm-workflows.test.ts::confidence is three buckets, and the weakest one asks to be checkedpassed1 msFrontend · unit
lib/rcm-workflows.test.ts::a failed totals check outranks a clean row countpassed1 msFrontend · unit
lib/rcm-workflows.test.ts::the preview leads with what will NOT importpassed51 msFrontend · unit
lib/rcm-workflows.test.ts::a clean preview still says nothing has been writtenpassed1 msFrontend · unit
lib/rcm-workflows.test.ts::an empty file and an all-rejected file are different messagespassed1 msFrontend · unit
lib/rcm-workflows.test.ts::a sweep cost always says it is an estimatepassed2 msFrontend · unit
lib/rcm-workflows.test.ts::an unconfirmed payer match never reads as confirmedpassed0 msFrontend · unit
lib/rcm-workflows.test.ts::cents format as currency and never as a bare numberpassed1 msFrontend · unit
lib/rcm-workflows.test.ts::a compound group key renders its parts, never [object Object]passed1 msFrontend · unit
lib/rcm-workflows.test.ts::cells format by their declared kindpassed1 msFrontend · unit
lib/rcm-workflows.test.ts::the three emptinesses produce three different noticespassed1 msFrontend · unit
lib/rcm-workflows.test.ts::a placeholder money total is flagged as not revenuepassed0 msFrontend · unit
lib/rcm-workflows.test.ts::a report with rows and real money says nothing unnecessarypassed0 msFrontend · unit
lib/rcm-workflows.test.ts::the parity sentence adds up and names what was only inferredpassed0 msFrontend · unit
lib/rcm-workflows.test.ts::verdict tones separate answered from notpassed0 msFrontend · unit
lib/refusal-is-not-empty.test.ts::a 403 is a refusal, not an errorpassed4 msFrontend · unit
lib/refusal-is-not-empty.test.ts::a refusal never renders as an empty statepassed1 msFrontend · unit
lib/refusal-is-not-empty.test.ts::a 500 is still an error and still offers a Retrypassed1 msFrontend · unit
lib/refusal-is-not-empty.test.ts::401 says the session expired; 403 does notpassed1 msFrontend · unit
lib/refusal-is-not-empty.test.ts::isRefusalError reads the status, not the prosepassed1 msFrontend · unit
lib/refusal-is-not-empty.test.ts::a detail page refuses distinctly from not-foundpassed1 msFrontend · unit
lib/refusal-is-not-empty.test.ts::an edit form never renders over a refusalpassed0 msFrontend · unit
lib/refusal-is-not-empty.test.ts::a signed-out viewer still gets the sample, not a refusalpassed0 msFrontend · unit
lib/registry-actions.test.ts::chart actions are gated on registration, not disabled outrightpassed3 msFrontend · unit
lib/registry-actions.test.ts::message to doctor needs a registered, affiliated patientpassed0 msFrontend · unit
lib/registry-actions.test.ts::free patients cannot be contacted without consentpassed0 msFrontend · unit
lib/registry-actions.test.ts::contact needs at least one channelpassed0 msFrontend · unit
lib/registry-actions.test.ts::move to onboarding only on the Qualified tab for qualifying patientspassed0 msFrontend · unit
lib/registry-actions.test.ts::the synthetic rpm.patientmd.com handle never renders as an addresspassed5 msFrontend · unit
lib/registry-actions.test.ts::CSV upload accepts any .csv, not one exact filenamepassed1 msFrontend · unit
lib/registry-actions.test.ts::CSV validation is on columns, with header aliasespassed3 msFrontend · unit
lib/registry-insurance.test.ts::isSelfPay: explicit self_pay typepassed3 msFrontend · unit
lib/registry-insurance.test.ts::isSelfPay: explicit insured type wins over blank payerpassed0 msFrontend · unit
lib/registry-insurance.test.ts::isSelfPay: no coverage type + no payer => cash (US default)passed0 msFrontend · unit
lib/registry-insurance.test.ts::isSelfPay: cash / self-pay free textpassed0 msFrontend · unit
lib/registry-insurance.test.ts::isSelfPay: named payer is insuredpassed0 msFrontend · unit
lib/registry-insurance.test.ts::classifyPayer: Medicare vs Medicare Advantagepassed0 msFrontend · unit
lib/registry-insurance.test.ts::classifyPayer: Medicaid / TRICARE / commercial / blankpassed0 msFrontend · unit
lib/registry-insurance.test.ts::coveragePayload: self-pay flag + normalized typepassed3 msFrontend · unit
lib/registry-insurance.test.ts::the production shape: a STRING sequencenum resolves as primarypassed1 msFrontend · unit
lib/registry-insurance.test.ts::a legacy row with NO sequencenum is still the primary coveragepassed0 msFrontend · unit
lib/registry-insurance.test.ts::Medicare HMO on a string sequencenum classifies as Medicare, not cashpassed0 msFrontend · unit
lib/registry-insurance.test.ts::effectiveSequences: strings, numbers, and gaps filled without collisionpassed1 msFrontend · unit
lib/registry-insurance.test.ts::secondary and tertiary hydrate into their own form blockspassed0 msFrontend · unit
lib/registry-insurance.test.ts::array order is not evidence: sequencenum wins over positionpassed0 msFrontend · unit
lib/registry-insurance.test.ts::primaryCoverage: a patient whose ONLY row is a secondary still has itpassed0 msFrontend · unit
lib/registry-insurance.test.ts::an explicitly stored coverageType wins over classificationpassed0 msFrontend · unit
lib/registry-insurance.test.ts::a real self-pay row still reads as self-paypassed0 msFrontend · unit
lib/registry-insurance.test.ts::coverageLabel: a plan identical to the payer is not printed twicepassed1 msFrontend · unit
lib/registry-insurance.test.ts::coverageLabel: case and spacing do not make it a different planpassed0 msFrontend · unit
lib/registry-insurance.test.ts::coverageLabel: a plan that ADDS something is still shownpassed0 msFrontend · unit
lib/registry-insurance.test.ts::coverageLabel: either half missingpassed0 msFrontend · unit
lib/registry-insurance.test.ts::coverageLabel: nothing on file returns '' and never a verdictpassed0 msFrontend · unit
lib/registry-onboarding.test.ts::board body defaults: 20 per page, no filter params when all='all'passed4 msFrontend · unit
lib/registry-onboarding.test.ts::branch + doctor cascade map to branchId + ownerUserIdpassed0 msFrontend · unit
lib/registry-onboarding.test.ts::consent status maps correctly (incl. not-received → recd:false)passed0 msFrontend · unit
lib/registry-onboarding.test.ts::consent type + plan + search map throughpassed0 msFrontend · unit
lib/registry-onboarding.test.ts::missingQualifiedFields lists the blanks, empty when completepassed4 msFrontend · unit
lib/registry-onboarding.test.ts::addFormError: branch required, then phone (email OPTIONAL — QA 7/27), then namepassed0 msFrontend · unit
lib/registry-onboarding.test.ts::isValidEmailpassed0 msFrontend · unit
lib/registry-onboarding.test.ts::isValidPhone: NANP for +1passed1 msFrontend · unit
lib/registry-onboarding.test.ts::dobError: future + too-old rejected, valid ok, empty allowedpassed2 msFrontend · unit
lib/registry-onboarding.test.ts::pastDateError: last completed appointment cannot be in the futurepassed0 msFrontend · unit
lib/registry-onboarding.test.ts::validatePatientForm: phone required, email optional, aggregates field errorspassed1 msFrontend · unit
lib/registry-onboarding.test.ts::a patient moved to onboarding leaves the Qualified tabpassed1 msFrontend · unit
lib/registry-onboarding.test.ts::they are moved, not erased — All still holds them and Onboarding lists thempassed0 msFrontend · unit
lib/registry-onboarding.test.ts::onboarded is not folded into qualifies — the verdict stays truepassed0 msFrontend · unit
lib/registry-onboarding.test.ts::an absent onboarded flag is treated as not onboardedpassed0 msFrontend · unit
lib/registry-onboarding.test.ts::tabCounts uses the same predicate the tabs filter bypassed0 msFrontend · unit
lib/registry-order.test.ts::the verb distinguishes an edit from a creationpassed4 msFrontend · unit
lib/registry-order.test.ts::a row whose only stamp is dtCreate never says 'Updated'passed1 msFrontend · unit
lib/registry-order.test.ts::no timestamp reads 'Not recorded', never a date and never a dashpassed0 msFrontend · unit
lib/registry-order.test.ts::the epoch is not presented as a recent changepassed0 msFrontend · unit
lib/registry-order.test.ts::relative days read the way a person would say thempassed68 msFrontend · unit
lib/registry-order.test.ts::a clock ahead of ours is not rendered as a future editpassed0 msFrontend · unit
lib/registry-order.test.ts::the note says which kind of empty the grid ispassed0 msFrontend · unit
lib/registry-order.test.ts::the alphabetical order remains reachable and says sopassed0 msFrontend · unit
lib/rep-form.test.ts::representative: requires first name + emailpassed5 msFrontend · unit
lib/rep-form.test.ts::representative: every row needs a branchpassed0 msFrontend · unit
lib/rep-form.test.ts::practitioner: clinical role IS the designation (row designation cleared)passed3 msFrontend · unit
lib/rep-form.test.ts::non-clinical staff: designation is preservedpassed0 msFrontend · unit
lib/rep-form.test.ts::self-as-operator: needs a branch, emits an Operator responsibility, no personal infopassed1 msFrontend · unit
lib/rep-form.test.ts::edit: existing repId is carried throughpassed1 msFrontend · unit
lib/rep-form.test.ts::new doctor login: clinician-app portal + temp password toastpassed2 msFrontend · unit
lib/rep-form.test.ts::new staff login: business-app portal + invite-sent when no temp password (prod)passed1 msFrontend · unit
lib/rep-form.test.ts::reused account: link message, not a new-login toastpassed1 msFrontend · unit
lib/rep-form.test.ts::care-team count pluralizespassed1 msFrontend · unit
lib/rep-form.test.ts::a fresh Add-representative modal opens emptypassed1 msFrontend · unit
lib/rep-form.test.ts::closing after a save cannot leave the next rep holding the last one's branchespassed1 msFrontend · unit
lib/rep-form.test.ts::a default branch is preselected — that is a choice, not leftover statepassed0 msFrontend · unit
lib/rep-form.test.ts::editing an existing rep opens on THEIR values, not blankpassed0 msFrontend · unit
lib/rep-form.test.ts::a self-as-operator rep is recognised and its branches gatheredpassed0 msFrontend · unit
lib/rep-form.test.ts::the Operator grant is not shown as an editable admin rolepassed0 msFrontend · unit
lib/rep-form.test.ts::a rep with no responsibilities still opens with one editable rowpassed0 msFrontend · unit
lib/rep-form.test.ts::the country code defaults to +1 rather than emptypassed0 msFrontend · unit
lib/rep-form.test.ts::a clinician's NPI and taxonomy reach the payloadpassed1 msFrontend · unit
lib/rep-form.test.ts::a pasted NPI is normalised, and a lowercase taxonomy is upper-casedpassed0 msFrontend · unit
lib/rep-form.test.ts::a blank credential saves — hiring precedes the NPIpassed0 msFrontend · unit
lib/rep-form.test.ts::a transposed NPI is refused BEFORE the round-trip, not afterpassed0 msFrontend · unit
lib/rep-form.test.ts::a malformed taxonomy is refusedpassed2 msFrontend · unit
lib/rep-form.test.ts::a non-clinical person never carries a credentialpassed0 msFrontend · unit
lib/rep-form.test.ts::switching to non-clinical does not smuggle a stale credential throughpassed3 msFrontend · unit
lib/rep-form.test.ts::self-mode clears the credential explicitlypassed0 msFrontend · unit
lib/rep-form.test.ts::the form opens with the credential already on filepassed0 msFrontend · unit
lib/rep-form.test.ts::reopening for a different person does not retain the previous credentialpassed0 msFrontend · unit
lib/rep-form.test.ts::a practitioner gets a credential fieldpassed0 msFrontend · unit
lib/rep-form.test.ts::an employed PA gets one too, via their designationpassed0 msFrontend · unit
lib/rep-form.test.ts::a medical assistant does notpassed0 msFrontend · unit
lib/rep-form.test.ts::any one branch assignment being clinical is enoughpassed0 msFrontend · unit
lib/rep-labels.test.ts::a practitioner's badge names their clinical rolepassed3 msFrontend · unit
lib/rep-labels.test.ts::a non-clinical rep says so rather than showing a placeholderpassed0 msFrontend · unit
lib/rep-labels.test.ts::NO label ever degrades to a hyphenpassed1 msFrontend · unit
lib/rep-labels.test.ts::an uncatalogued value stays readable instead of blankpassed0 msFrontend · unit
lib/rep-labels.test.ts::a value the catalog has never heard of is humanized, not echoed rawpassed0 msFrontend · unit
lib/rep-labels.test.ts::an empty value yields an empty label, so the badge can be omittedpassed0 msFrontend · unit
lib/rep-labels.test.ts::a row lists its designation and admin grants togetherpassed0 msFrontend · unit
lib/rep-labels.test.ts::a directory-only row reads as Staff, which is a real statepassed0 msFrontend · unit
lib/rep-labels.test.ts::multiple admin grants are all shownpassed0 msFrontend · unit
lib/rep-provenance.test.ts::a care-team row is recognised by either marker on its ownpassed3 msFrontend · unit
lib/rep-provenance.test.ts::an admin cannot edit a care-team row, because there is nothing to editpassed0 msFrontend · unit
lib/rep-provenance.test.ts::a row with no id is never editable, whoever is askingpassed0 msFrontend · unit
lib/rep-provenance.test.ts::a non-admin cannot edit an ordinary row eitherpassed0 msFrontend · unit
lib/rep-provenance.test.ts::the care-team reason wins over the permission reasonpassed0 msFrontend · unit
lib/rep-provenance.test.ts::the reason names the remedy, not the prohibitionpassed1 msFrontend · unit
lib/rep-provenance.test.ts::every care-team row gets its own React keypassed0 msFrontend · unit
lib/rep-provenance.test.ts::an empty roster says whether the clinical team was empty toopassed0 msFrontend · unit
lib/rep-provenance.test.ts::a roster that is entirely clinical-team records says sopassed0 msFrontend · unit
lib/rep-provenance.test.ts::a partly-recorded roster names the fractionpassed0 msFrontend · unit
lib/rep-provenance.test.ts::a fully recorded roster says nothing extrapassed0 msFrontend · unit
lib/report-pdf-style.test.ts::both PDF-export screens import the shared report style modulepassed13 msFrontend · unit
lib/report-pdf-style.test.ts::reportFooterLine names neither screen specificallypassed1 msFrontend · unit
lib/report-pdf-style.test.ts::REPORT_MARGIN is a positive point valuepassed0 msFrontend · unit
lib/request-rate.test.ts::up to the limit is admitted; the next identical request is refusedpassed13 msFrontend · unit
lib/request-rate.test.ts::once tripped it STAYS tripped — a refused loop keeps loopingpassed0 msFrontend · unit
lib/request-rate.test.ts::the storms that were measured trip within about three secondspassed1 msFrontend · unit
lib/request-rate.test.ts::ordinary repetition never tripspassed1 msFrontend · unit
lib/request-rate.test.ts::a different screen, method, path or body is a different requestpassed0 msFrontend · unit
lib/request-rate.test.ts::a key carries a hash of the body, never the bodypassed0 msFrontend · unit
lib/request-rate.test.ts::memory follows activity, not historypassed6 msFrontend · unit
lib/request-rate.test.ts::outside a browser the guard answers yes — a server has one counter for every userpassed1 msFrontend · unit
lib/request-rate.test.ts::the refusal reads as an instruction a person can followpassed1 msFrontend · unit
lib/request-rate.test.ts::req() consults the tripwire before any fetchpassed4 msFrontend · unit
lib/request-rate.test.ts::probe: the check fails on a req() that fetches without askingpassed1 msFrontend · unit
lib/request-timeout.test.ts::an ordinary call gets the default deadlinepassed6 msFrontend · unit
lib/request-timeout.test.ts::a call may set its own deadlinepassed0 msFrontend · unit
lib/request-timeout.test.ts::zero or negative disables the deadline deliberatelypassed0 msFrontend · unit
lib/request-timeout.test.ts::the deadline aborts a request that never answerspassed48 msFrontend · unit
lib/request-timeout.test.ts::dispose stops the timer so a finished request leaves nothing pendingpassed64 msFrontend · unit
lib/request-timeout.test.ts::a caller cancelling is NOT reported as a timeoutpassed7 msFrontend · unit
lib/request-timeout.test.ts::an already-aborted caller signal aborts immediatelypassed1 msFrontend · unit
lib/request-timeout.test.ts::with the deadline disabled the caller's signal still passes throughpassed0 msFrontend · unit
lib/request-timeout.test.ts::with no deadline and no caller signal, fetch gets no signalpassed0 msFrontend · unit
lib/request-timeout.test.ts::dispose is safe to call twicepassed0 msFrontend · unit
lib/request-timeout.test.ts::the timeout message names the limit in seconds and says what to dopassed1 msFrontend · unit
lib/request-timeout.test.ts::timeouts carry 408 so callers can tell slow from wrongpassed0 msFrontend · unit
lib/results-timeline.test.ts::the value axis is the instrument's whole range, not the observed onepassed5 msFrontend · unit
lib/results-timeline.test.ts::a point outside the declared range stretches the axis, never clipspassed0 msFrontend · unit
lib/results-timeline.test.ts::with no bands the axis comes from the data alonepassed0 msFrontend · unit
lib/results-timeline.test.ts::a single point does not divide by zeropassed1 msFrontend · unit
lib/results-timeline.test.ts::no points at all still yields a usable scalepassed0 msFrontend · unit
lib/results-timeline.test.ts::y is a fraction UP from the baseline, so the caller flips itpassed0 msFrontend · unit
lib/results-timeline.test.ts::x spans the observed time range, with no implied windowpassed0 msFrontend · unit
lib/results-timeline.test.ts::band bounds are inclusive at both ends, matching the published tablespassed0 msFrontend · unit
lib/results-timeline.test.ts::a value outside every band is null, never the nearestpassed0 msFrontend · unit
lib/results-timeline.test.ts::band rectangles are clipped to the axispassed3 msFrontend · unit
lib/results-timeline.test.ts::a band entirely off the axis draws nothingpassed0 msFrontend · unit
lib/results-timeline.test.ts::a first assessment has no trend, and is not reported as unchangedpassed0 msFrontend · unit
lib/results-timeline.test.ts::the trend is the last two points in time, not in array orderpassed0 msFrontend · unit
lib/results-timeline.test.ts::a crisis whose response is not on this chart is still returnedpassed0 msFrontend · unit
lib/results-timeline.test.ts::author-stated thresholds say so; published ones say nothingpassed1 msFrontend · unit
lib/results-timeline.test.ts::recent is newest first and does not mutate its inputpassed1 msFrontend · unit
lib/revenue-series.test.ts::no purchases is no data — never a fabricated yearpassed6 msFrontend · unit
lib/revenue-series.test.ts::a month's gross and paid come from that month's rows, in that year onlypassed12 msFrontend · unit
lib/revenue-series.test.ts::groups are named, and an unnamed key is one bucket rather than a raw idpassed1 msFrontend · unit
lib/revenue-series.test.ts::a full server page is reported as possibly partialpassed0 msFrontend · unit
lib/role-assignment.test.ts::only the server's allowed targets are offeredpassed5 msFrontend · unit
lib/role-assignment.test.ts::an account with nowhere to go offers nothing, and says sopassed1 msFrontend · unit
lib/role-assignment.test.ts::no targets loaded is distinguished from an empty list of targetspassed2 msFrontend · unit
lib/role-assignment.test.ts::an unknown user id is reported as unknown, not as a disallowed movepassed2 msFrontend · unit
lib/role-assignment.test.ts::assigning to the current realm is refused with the reasonpassed1 msFrontend · unit
lib/role-assignment.test.ts::a target outside the server's list is refused even if it is a known realmpassed0 msFrontend · unit
lib/role-assignment.test.ts::a permitted move is allowed with no complaintpassed0 msFrontend · unit
lib/role-assignment.test.ts::an empty user id asks for one rather than showing a broken formpassed0 msFrontend · unit
lib/role-assignment.test.ts::a no-op is reported as a no-op, never as successpassed0 msFrontend · unit
lib/role-assignment.test.ts::a real change explains what it does and does not affectpassed0 msFrontend · unit
lib/role-assignment.test.ts::an unknown realm falls back to its raw value, never to blankpassed0 msFrontend · unit
lib/role-workspace.test.ts::every href in every workspace exists in the staff menupassed3 msFrontend · unit
lib/role-workspace.test.ts::no workspace is emptypassed0 msFrontend · unit
lib/role-workspace.test.ts::names are unique — two workspaces on one role name is unresolvablepassed0 msFrontend · unit
lib/role-workspace.test.ts::selects the workspace for a single job rolepassed1 msFrontend · unit
lib/role-workspace.test.ts::returns null when the person holds no job rolepassed0 msFrontend · unit
lib/role-workspace.test.ts::returns null when the person holds BOTH jobspassed0 msFrontend · unit
lib/role-workspace.test.ts::ignores permission roles that name no workspacepassed0 msFrontend · unit
lib/role-workspace.test.ts::puts the job's screens first, in the job's orderpassed3 msFrontend · unit
lib/role-workspace.test.ts::loses NOTHING — every href survives somewherepassed3 msFrontend · unit
lib/role-workspace.test.ts::only the chartless billing jobs hide the remainder, and they show exactly their own screenspassed1 msFrontend · unit
lib/role-workspace.test.ts::shows no screen twicepassed3 msFrontend · unit
lib/role-workspace.test.ts::folds the remainder away but keeps it reachablepassed0 msFrontend · unit
lib/role-workspace.test.ts::is the identity when there is no workspacepassed0 msFrontend · unit
lib/role-workspace.test.ts::an ordinary staff session is untouchedpassed0 msFrontend · unit
lib/role-workspace.test.ts::a biller opens on billingpassed0 msFrontend · unit
lib/role-workspace.test.ts::an unknown role still gets a menupassed0 msFrontend · unit
lib/roster-badges.test.ts::a doctor gets a badge — the defect QA reportedpassed11 msFrontend · unit
lib/roster-badges.test.ts::every practitioner role has a human label, not an enum valuepassed1 msFrontend · unit
lib/roster-badges.test.ts::an unknown role is title-cased rather than rendered raw or droppedpassed0 msFrontend · unit
lib/roster-badges.test.ts::clinical identity is listed before dutiespassed0 msFrontend · unit
lib/roster-badges.test.ts::duties from OTHER branches never appear on this branch's rosterpassed0 msFrontend · unit
lib/roster-badges.test.ts::a duplicated designation is shown oncepassed0 msFrontend · unit
lib/roster-badges.test.ts::a designation echoing the clinical role is not shown twicepassed0 msFrontend · unit
lib/roster-badges.test.ts::administrative grants are badged and distinguishable from clinical onespassed0 msFrontend · unit
lib/roster-badges.test.ts::a non-clinical staff member still gets their designationpassed0 msFrontend · unit
lib/roster-badges.test.ts::a missing phone is a stated absence, not an empty cellpassed0 msFrontend · unit
lib/roster-badges.test.ts::a phone is shown with its country code, normalised to +passed0 msFrontend · unit
lib/roster-badges.test.ts::a nameless row falls back to the email local-part, never to blankpassed0 msFrontend · unit
lib/row-action.test.ts::the accessible name carries the row's subjectpassed3 msFrontend · unit
lib/row-action.test.ts::an unnamed subject degrades to the bare verb, never to a positionpassed0 msFrontend · unit
lib/row-action.test.ts::rowSubject prefers the fields it is given, in orderpassed5 msFrontend · unit
lib/row-action.test.ts::rowSubject assembles a person's name when no field is namedpassed0 msFrontend · unit
lib/row-action.test.ts::rowSubject NEVER falls back to an identifierpassed0 msFrontend · unit
lib/row-action.test.ts::a blank verb yields the subject rather than a leading spacepassed0 msFrontend · unit
lib/rpm-alerts.test.ts::the reading summary reads every device shape and never inventspassed16 msFrontend · unit
lib/rpm-alerts.test.ts::breaches come from the field production writes, and the rule text prefers the descriptionpassed1 msFrontend · unit
lib/rpm-alerts.test.ts::the repeat note is only said when it is a repeat, and only for readingspassed1 msFrontend · unit
lib/rpm-alerts.test.ts::severity is a word as well as a colourpassed3 msFrontend · unit
lib/rpm-alerts.test.ts::the closure line is honest about a legacy closure with no timestamppassed1 msFrontend · unit
lib/rpm-alerts.test.ts::grouping reuses the Action Center's grouper and keeps the server's orderpassed6 msFrontend · unit
lib/rpm-alerts.test.ts::the cosmetic filter: empty means no restriction, never match-nothingpassed1 msFrontend · unit
lib/rpm-alerts.test.ts::status tabs carry the server's counts and only Open is live on the backlogpassed1 msFrontend · unit
lib/rpm-alerts.test.ts::the legacy ?pt= from the RPM Listing still scopes, and ?patient= winspassed1 msFrontend · unit
lib/rpm-alerts.test.ts::the flat list is newest first by the moment the row shows, and copiespassed1 msFrontend · unit
lib/rpm-alerts.test.ts::the flat list keeps the server's order for rows sharing a momentpassed0 msFrontend · unit
lib/rpm-alerts.test.ts::a row's status is one word, and acknowledged is not addressedpassed0 msFrontend · unit
lib/rpm-alerts.test.ts::display time is the reading's own moment when it has one, else the arrivalpassed0 msFrontend · unit
lib/rpm-alerts.test.ts::the history CSV carries the same numbers as the screen and quotes defensivelypassed1 msFrontend · unit
lib/rpm-alerts.test.ts::the closures note says what the chart cannot showpassed0 msFrontend · unit
lib/rpm-listing.test.ts::todayYmd is local, not UTCpassed22 msFrontend · unit
lib/rpm-listing.test.ts::an upcoming appointment cannot be in the pastpassed0 msFrontend · unit
lib/rpm-listing.test.ts::Set TMS carries the patient so Care Time opens on thempassed1 msFrontend · unit
lib/rpm-listing.test.ts::alerts deep-link is scoped to the patientpassed0 msFrontend · unit
lib/rpm-listing.test.ts::alert tone escalates with countpassed0 msFrontend · unit
lib/rpm-listing.test.ts::branch filter matches the registry's semanticspassed2 msFrontend · unit
lib/rpm-listing.test.ts::care team summary names the lead and counts the restpassed1 msFrontend · unit
lib/rpm-listing.test.ts::care team summary handles an empty or roleless teampassed0 msFrontend · unit
lib/rpm-listing.test.ts::send-document needs a channel to send onpassed0 msFrontend · unit
lib/rpm-listing.test.ts::view-measurements needs measurementspassed0 msFrontend · unit
lib/rpm-listing.test.ts::remove-patient needs an enrolment to endpassed1 msFrontend · unit
lib/rpm-listing.test.ts::the clinical-team hover never renders a raw database idpassed1 msFrontend · unit
lib/rpm-listing.test.ts::a real name still wins over the role placeholderpassed0 msFrontend · unit
lib/rpm-outreach.test.ts::a row somebody can fix reads differently from one nobody canpassed4 msFrontend · unit
lib/rpm-outreach.test.ts::every verdict has a label, so a status is never carried by colour alonepassed1 msFrontend · unit
lib/rpm-outreach.test.ts::an unreachable patient is given the action that would change the answerpassed1 msFrontend · unit
lib/rpm-outreach.test.ts::a patient reachable only by an unconsented text is told what to ask forpassed0 msFrontend · unit
lib/rpm-outreach.test.ts::a declined patient is given NO actionpassed0 msFrontend · unit
lib/rpm-outreach.test.ts::the channel label mirrors the server rather than re-deriving itpassed0 msFrontend · unit
lib/rpm-outreach.test.ts::the channel note explains an email that a reader would expect to be a textpassed0 msFrontend · unit
lib/rpm-outreach.test.ts::select-all ticks only the rows that can actually be sentpassed11 msFrontend · unit
lib/rpm-outreach.test.ts::the summary separates fixable from not eligiblepassed1 msFrontend · unit
lib/rpm-outreach.test.ts::the draft result says nothing was sentpassed1 msFrontend · unit
lib/rpm-outreach.test.ts::the draft result reports who could not be contactedpassed0 msFrontend · unit
lib/rpm-outreach.test.ts::drafting nothing says so rather than claiming successpassed0 msFrontend · unit
lib/rpm-outreach.test.ts::tomorrow is computed from local date parts, never from toISOStringpassed2 msFrontend · unit
lib/rpm-outreach.test.ts::tomorrow rolls a year correctlypassed0 msFrontend · unit
lib/rpm-outreach.test.ts::a row with no appointment time renders an em dash, not 'Invalid Date'passed0 msFrontend · unit
lib/rpm-outreach.test.ts::a patient waiting a fortnight reads as overduepassed0 msFrontend · unit
lib/rpm-outreach.test.ts::waiting time is worded, not only colouredpassed0 msFrontend · unit
lib/rpm-outreach.test.ts::an unknown verdict from the server degrades safelypassed0 msFrontend · unit
lib/rpm-outreach.test.ts::actionFor returns nothing for a row it has no advice aboutpassed0 msFrontend · unit
lib/rpm-outreach.test.ts::channelLabel returns nothing when there is no contact detail at allpassed0 msFrontend · unit
lib/rpm-outreach.test.ts::channelNote is empty when the channel needs no explanationpassed0 msFrontend · unit
lib/rpm-outreach.test.ts::summarise of an empty clinic day is all zeroes, not a crashpassed0 msFrontend · unit
lib/rpm-outreach.test.ts::selectableIds of an empty list is emptypassed0 msFrontend · unit
lib/rpm-outreach.test.ts::apptTime renders a real timestamppassed62 msFrontend · unit
lib/rpm-outreach.test.ts::waitingLabel and waitingTone handle a negative age without inventing urgencypassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::the columns are the list QA wrote, in that orderpassed7 msFrontend · unit
lib/rpm-patient-details.test.ts::the backend's ONE constant is identicalpassed2 msFrontend · unit
lib/rpm-patient-details.test.ts::a date splits into the sheet's plain integers and joins backpassed8 msFrontend · unit
lib/rpm-patient-details.test.ts::the form holds ONE date and the body carries the split columnspassed2 msFrontend · unit
lib/rpm-patient-details.test.ts::a draft round-trips the whole sheet unchangedpassed1 msFrontend · unit
lib/rpm-patient-details.test.ts::a last appointment stored as MM-DD survives an edit that does not touch itpassed3 msFrontend · unit
lib/rpm-patient-details.test.ts::the server's `sheet` is used as sentpassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::a row stored before this round maps without the server's helppassed1 msFrontend · unit
lib/rpm-patient-details.test.ts::names split first / middle / last, and one word is a first namepassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::a gender we cannot map is kept verbatim and flagged, never guessedpassed1 msFrontend · unit
lib/rpm-patient-details.test.ts::a complete row is clean, and a phone OR an email is enoughpassed2 msFrontend · unit
lib/rpm-patient-details.test.ts::refused: {&quot;firstName&quot;:&quot; &quot;} → firstNamepassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::refused: {&quot;lastName&quot;:&quot;&quot;} → lastNamepassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::refused: {&quot;phone&quot;:&quot;&quot;,&quot;emailId&quot;:&quot;&quot;} → phonepassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::refused: {&quot;emailId&quot;:&quot;not-an-email&quot;} → emailIdpassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::refused: {&quot;phone&quot;:&quot;1111111111&quot;} → phonepassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::refused: {&quot;phone&quot;:&quot;1235550112&quot;} → phonepassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::refused: {&quot;phoneprefix&quot;:&quot;abc&quot;} → phoneprefixpassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::refused: {&quot;gender&quot;:&quot;Q&quot;} → genderpassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::refused: {&quot;dobyear&quot;:&quot;2999&quot;} → dobpassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::refused: {&quot;dobmonth&quot;:&quot;2&quot;,&quot;dobday&quot;:&quot;30&quot;} → dobpassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::refused: {&quot;dobyear&quot;:&quot;1850&quot;} → dobpassed2 msFrontend · unit
lib/rpm-patient-details.test.ts::refused: {&quot;lastapptyear&quot;:&quot;2999&quot;} → lastapptpassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::refused: {&quot;state&quot;:&quot;Illinois&quot;} → statepassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::refused: {&quot;zip&quot;:&quot;6060&quot;} → zippassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::refused: {&quot;mrn&quot;:&quot;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx → mrnpassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::today is allowed; tomorrow is notpassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::US shape rules stop at the border; a foreign phone is length-checkedpassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::an incomplete row promoted in from a consent is not malformedpassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::the form requires a clinic, and says so on the clinic fieldpassed1 msFrontend · unit
lib/rpm-patient-details.test.ts::what the form normalises before it sendspassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::phones read for people and store as digitspassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::an error opens the section that holds itpassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::secondary and tertiary insurance open only when they hold somethingpassed1 msFrontend · unit
lib/rpm-patient-details.test.ts::the table says what a row still needs for the next stagepassed1 msFrontend · unit
lib/rpm-patient-details.test.ts::the rollup does not block Add — only having no clinic at all doespassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::the CSV header is the contract, and quoting is RFC 4180passed1 msFrontend · unit
lib/rpm-patient-details.test.ts::formula-leading cells are neutralised (OWASP CSV injection)passed0 msFrontend · unit
lib/rpm-patient-details.test.ts::a download's name carries no patient identifierpassed0 msFrontend · unit
lib/rpm-patient-details.test.ts::the screen uses no native prompt/alert/confirmpassed4 msFrontend · unit
lib/rpm-patient-details.test.ts::'Choose a clinic first' is no longer loose text in the toolbarpassed1 msFrontend · unit
lib/rpm-patient-details.test.ts::the clinic hint lives on the clinic field, tied by aria-describedbypassed1 msFrontend · unit
lib/rpm-patient-details.test.ts::the Action menu offers Edit details, and the form is wired for both modespassed1 msFrontend · unit
lib/rpm-patient-details.test.ts::every sheet column is reachable from the formpassed3 msFrontend · unit
lib/rpm-patient-details.test.ts::patient data never goes into a query stringpassed8 msFrontend · unit
lib/rule-scope.test.ts::the cascade runs corp → branch → doctor → patientpassed6 msFrontend · unit
lib/rule-scope.test.ts::every level has a label a clinician would recognisepassed1 msFrontend · unit
lib/rule-scope.test.ts::each level states what else an edit would changepassed1 msFrontend · unit
lib/rule-scope.test.ts::the badge names the NARROWEST level that set anythingpassed0 msFrontend · unit
lib/rule-scope.test.ts::a rule nobody has overridden reports the protocol defaultpassed0 msFrontend · unit
lib/rule-scope.test.ts::mixed provenance is detectablepassed0 msFrontend · unit
lib/rule-scope.test.ts::the per-field breakdown puts the narrowest overrides firstpassed1 msFrontend · unit
lib/rule-scope.test.ts::field paths are rendered readably, not as dotted keyspassed2 msFrontend · unit
lib/rule-scope.test.ts::an unknown level degrades to default rather than rendering rawpassed0 msFrontend · unit
lib/rule-scope.test.ts::each level is visually distinctpassed0 msFrontend · unit
lib/rule-scope.test.ts::a replacement names the rule it replaced and how much movedpassed0 msFrontend · unit
lib/rule-scope.test.ts::an override identical to what it replaced says sopassed0 msFrontend · unit
lib/rule-scope.test.ts::no override at all is stated as the protocol defaultpassed0 msFrontend · unit
lib/save-error.test.ts::pulls the field errors out of the wrapped envelopepassed5 msFrontend · unit
lib/save-error.test.ts::names the fields in the message, because the input may be scrolled awaypassed1 msFrontend · unit
lib/save-error.test.ts::carries the request id on a server fault — the id QA had to read out of devtoolspassed0 msFrontend · unit
lib/save-error.test.ts::says plainly that nothing was written, which is the operator's real questionpassed0 msFrontend · unit
lib/save-error.test.ts::a timeout reads as retry, not as a bad formpassed0 msFrontend · unit
lib/save-error.test.ts::403 and 404 do not read as eitherpassed0 msFrontend · unit
lib/save-error.test.ts::prefers the server's own words to ourspassed0 msFrontend · unit
lib/save-error.test.ts::never surfaces a bare HTTP code as the whole messagepassed1 msFrontend · unit
lib/save-error.test.ts::&quot;add&quot; reads as &quot;added&quot;passed1 msFrontend · unit
lib/save-error.test.ts::&quot;update&quot; reads as &quot;updated&quot;passed0 msFrontend · unit
lib/save-error.test.ts::&quot;save&quot; reads as &quot;saved&quot;passed0 msFrontend · unit
lib/second-factor-challenge.test.ts::a required challenge is recognised in both response shapespassed7 msFrontend · unit
lib/second-factor-challenge.test.ts::a sent challenge is recognised and its message is kept verbatimpassed0 msFrontend · unit
lib/second-factor-challenge.test.ts::anything else is not a second-factor problempassed0 msFrontend · unit
lib/second-factor-challenge.test.ts::the text option is offered only when the account holds that factorpassed0 msFrontend · unit
lib/second-factor-challenge.test.ts::the text option is not offered again once a code has been sentpassed0 msFrontend · unit
lib/second-factor-challenge.test.ts::a recovery code is passed through, a numeric code is normalisedpassed1 msFrontend · unit
lib/second-factor-challenge.test.ts::the label says what will happenpassed1 msFrontend · unit
lib/second-factor-challenge.test.ts::the prompt names the authenticator app when that is the factorpassed2 msFrontend · unit
lib/seed-detect.computed.test.ts::catches the generator substituted on an empty resultpassed47 msFrontend · unit
lib/seed-detect.computed.test.ts::catches it in a catch block toopassed3 msFrontend · unit
lib/seed-detect.computed.test.ts::does NOT flag transforming the rows that came backpassed7 msFrontend · unit
lib/seed-detect.computed.test.ts::the TMS Data Report no longer contains the shapepassed447 msFrontend · unit
lib/seed-detect.test.ts::sees a seed set in a catch with an intervening statementpassed33 msFrontend · unit
lib/seed-detect.test.ts::sees a seed set inside an `if` emptiness branch, not just a ternarypassed7 msFrontend · unit
lib/seed-detect.test.ts::sees it through a try/catch block as well as a .catch()passed2 msFrontend · unit
lib/seed-detect.test.ts::sees a concise arrow bodypassed1 msFrontend · unit
lib/seed-detect.test.ts::sees seed as the initial statepassed4 msFrontend · unit
lib/seed-detect.test.ts::sees the emptiness ternary in both polaritiespassed6 msFrontend · unit
lib/seed-detect.test.ts::allows the signed-out previewpassed17 msFrontend · unit
lib/seed-detect.test.ts::does not flag an ordinary empty-array fallbackpassed1 msFrontend · unit
lib/seed-detect.test.ts::does not flag merely HOLDING a seed constantpassed2 msFrontend · unit
lib/seed-detect.test.ts::does not treat prose as codepassed2 msFrontend · unit
lib/seed-detect.test.ts::catches a constant with no seed-ish token in its namepassed6 msFrontend · unit
lib/seed-detect.test.ts::follows a renamed importpassed3 msFrontend · unit
lib/seed-detect.test.ts::catches a lowercase member accesspassed9 msFrontend · unit
lib/seed-detect.test.ts::does not treat an unrelated import as sample datapassed3 msFrontend · unit
lib/seed-detect.test.ts::reports the line, so a failure names where to lookpassed1 msFrontend · unit
lib/seed-detect.test.ts::parses TSX, not just TSpassed18 msFrontend · unit
lib/send-outcome.test.ts::a sent message is reported sent, with no noise beside itpassed4 msFrontend · unit
lib/send-outcome.test.ts::a held message says so, and carries the reason it was givenpassed1 msFrontend · unit
lib/send-outcome.test.ts::held and failed are distinguished — they need different things from a personpassed0 msFrontend · unit
lib/send-outcome.test.ts::an answer we cannot read is NEVER reported as sentpassed1 msFrontend · unit
lib/send-outcome.test.ts::`sent: true` alone does not claim deliverypassed0 msFrontend · unit
lib/send-outcome.test.ts::a request that never arrived says nothing was sentpassed0 msFrontend · unit
lib/send-outcome.test.ts::every non-sent outcome carries a reasonpassed0 msFrontend · unit
lib/service-worker-shell.test.ts::the service worker precaches no HTMLpassed8 msFrontend · unit
lib/service-worker-shell.test.ts::the shell holds only assets whose content is fixed under their namepassed1 msFrontend · unit
lib/service-worker-shell.test.ts::navigations are never answered from the cachepassed1 msFrontend · unit
lib/service-worker-shell.test.ts::a navigation is retried once before the user is told the server is unreachablepassed1 msFrontend · unit
lib/service-worker-shell.test.ts::the unreachable message is served as UTF-8passed1 msFrontend · unit
lib/service-worker-shell.test.ts::the unreachable message does not assert that the user is offlinepassed1 msFrontend · unit
lib/service-worker-shell.test.ts::the path classifier catches the paths that actually caused thispassed0 msFrontend · unit
lib/sidebar-sections.test.ts::an exact href match wins over a shorter prefixpassed4 msFrontend · unit
lib/sidebar-sections.test.ts::a child route with no menu entry still lights up its sectionpassed0 msFrontend · unit
lib/sidebar-sections.test.ts::a query string on an href does not stop the matchpassed0 msFrontend · unit
lib/sidebar-sections.test.ts::an unlabelled section never owns a routepassed0 msFrontend · unit
lib/sidebar-sections.test.ts::a route on nobody's menu answers -1, not 0passed0 msFrontend · unit
lib/sidebar-sections.test.ts::an unlabelled section is always openpassed0 msFrontend · unit
lib/sidebar-sections.test.ts::only the section owning the route opens by defaultpassed0 msFrontend · unit
lib/sidebar-sections.test.ts::every labelled section is folded when the route is on nobody's menupassed0 msFrontend · unit
lib/sidebar-sections.test.ts::a manual toggle wins over the default, in both directionspassed0 msFrontend · unit
lib/sidebar-sections.test.ts::opening a second section does not close the firstpassed0 msFrontend · unit
lib/sidebar-sections.test.ts::collapsedByDefault no longer decides anythingpassed0 msFrontend · unit
lib/sidebar-sections.test.ts::one chip per labelled section, in menu orderpassed3 msFrontend · unit
lib/sidebar-sections.test.ts::the chip index addresses the section, so duplicate labels stay distinctpassed0 msFrontend · unit
lib/sidebar-sections.test.ts::exactly one chip is active, and none when the route is off-menupassed0 msFrontend · unit
lib/sidebar-sections.test.ts::the chip carries the section's own label, never an abbreviationpassed0 msFrontend · unit
lib/sidebar-sections.test.ts::every role's menu yields a usable strip and folds by defaultpassed1 msFrontend · unit
lib/sidebar-sections.test.ts::every business section is reachable from the strippassed0 msFrontend · unit
lib/sidebar-sections.test.ts::navigating into a section opens it, for every section of every menupassed6 msFrontend · unit
lib/sidebar-sections.test.ts::body and header ids are distinct per sectionpassed0 msFrontend · unit
lib/signature.test.ts::stroke length is the path walked, not the distance between endpointspassed5 msFrontend · unit
lib/signature.test.ts::ink accumulates across separate strokespassed1 msFrontend · unit
lib/signature.test.ts::an untouched canvas and a single tap are both blankpassed0 msFrontend · unit
lib/signature.test.ts::a short but real signature is NOT blankpassed0 msFrontend · unit
lib/signature.test.ts::the image must be a PNG data URI within the server's cappassed1 msFrontend · unit
lib/signature.test.ts::decoded length accounts for base64 paddingpassed0 msFrontend · unit
lib/signature.test.ts::a drawn mark alone signs, and reports itself as drawnpassed0 msFrontend · unit
lib/signature.test.ts::a typed name alone signspassed0 msFrontend · unit
lib/signature.test.ts::a drawn mark wins when the patient did bothpassed0 msFrontend · unit
lib/signature.test.ts::nothing at all is refused with something to do about itpassed1 msFrontend · unit
lib/signature.test.ts::a smudge is refused OUT LOUD rather than filed as a signaturepassed0 msFrontend · unit
lib/signature.test.ts::a smudge falls back to a typed name when there is onepassed0 msFrontend · unit
lib/signature.test.ts::real ink with no captured image is refused, not sent as typedpassed0 msFrontend · unit
lib/signature.test.ts::the payload omits the image entirely when the signature is typedpassed0 msFrontend · unit
lib/signature.test.ts::the size cap and PNG prefix still match the server'spassed1 msFrontend · unit
lib/signup-form.test.ts::every gap the server can name lands on an input of its ownpassed3 msFrontend · unit
lib/signup-form.test.ts::a provider gap lands on that provider's own box, not the first onepassed0 msFrontend · unit
lib/signup-form.test.ts::an address gap lands on its street line, and a contact gap on its fieldpassed0 msFrontend · unit
lib/signup-form.test.ts::a missing document preselects its kind in the upload controlpassed4 msFrontend · unit
lib/signup-form.test.ts::reads a state written either way, and does not guess at one it does not knowpassed1 msFrontend · unit
lib/signup-form.test.ts::formats a ZIP+4 and leaves a malformed ZIP for the server to namepassed0 msFrontend · unit
lib/signup-form.test.ts::offers the clinic's address normalised, and nothing when the record holds nonepassed1 msFrontend · unit
lib/signup-form.test.ts::an unrecognised state is kept as typed rather than silently emptiedpassed0 msFrontend · unit
lib/signup-form.test.ts::compares two addresses by what a payer would readpassed1 msFrontend · unit
lib/signup-form.test.ts::fills legal name, taxonomy and pay-to address on an empty application, and says whichpassed1 msFrontend · unit
lib/signup-form.test.ts::never replaces what a person typedpassed0 msFrontend · unit
lib/signup-form.test.ts::refuses to fill the billing NPI from an individual's record, and says whypassed0 msFrontend · unit
lib/signup-form.test.ts::a registry miss fills nothing and invents nothingpassed0 msFrontend · unit
lib/signup-form.test.ts::fills a rendering provider's empty name, taxonomy and licence statepassed1 msFrontend · unit
lib/signup-form.test.ts::refuses an organisation's NPI for a rendering providerpassed0 msFrontend · unit
lib/signup-form.test.ts::reads rows written before every field existed, and drops non-rowspassed1 msFrontend · unit
lib/signup-form.test.ts::edits and removes by position without touching the otherspassed1 msFrontend · unit
lib/slide-over-padding.test.ts::the panel body is padded by defaultpassed3 msFrontend · unit
lib/slide-over-padding.test.ts::children go through the body wrapper, not straight into the panelpassed1 msFrontend · unit
lib/slide-over-scroll.test.ts::the body layout gives a definite height, may shrink, and scrollspassed3 msFrontend · unit
lib/slide-over-scroll.test.ts::the layout is applied unconditionally — no caller value can remove itpassed1 msFrontend · unit
lib/slide-over-scroll.test.ts::the prop default carries padding only — layout is not the caller's to forgetpassed0 msFrontend · unit
lib/slide-over-scroll.test.ts::the panel is a full-height flex column that cannot itself overflow the screenpassed1 msFrontend · unit
lib/slide-over-scroll.test.ts::the consumer sweep finds the callers (a sweep that finds nothing proves nothing)passed0 msFrontend · unit
lib/slide-over-scroll.test.ts::no caller re-implements the wrapper's layout through bodyClassName to fight itpassed7 msFrontend · unit
lib/slide-over-scroll.test.ts::Add Clinical Team: header and footer are pinned, only the middle scrollspassed1 msFrontend · unit
lib/sms-delivery.test.ts::normalizeStatus: lowercase, blank → unknownpassed3 msFrontend · unit
lib/sms-delivery.test.ts::statusTone: good/bad/pendingpassed0 msFrontend · unit
lib/sms-delivery.test.ts::statusLabel: Title case, unknown → Queuedpassed0 msFrontend · unit
lib/sms-delivery.test.ts::deliveryRateTextpassed0 msFrontend · unit
lib/sms-delivery.test.ts::STATUS_FILTERS includes All + delivered + failedpassed1 msFrontend · unit
lib/sms-sender-not-client-chosen.test.ts::every screen that texts a patient is accounted forpassed5 msFrontend · unit
lib/sms-sender-not-client-chosen.test.ts::components/contact-patient.tsx does not choose the sending numberpassed1 msFrontend · unit
lib/sms-sender-not-client-chosen.test.ts::app/dashboard/rpm/contact/page.tsx does not choose the sending numberpassed0 msFrontend · unit
lib/sms-sender-not-client-chosen.test.ts::the scanner would notice a from-number if one came backpassed1 msFrontend · unit
lib/soap-context.test.ts::noteTs: reads dtAppt, tolerates string dates, 0 when absentpassed3 msFrontend · unit
lib/soap-context.test.ts::latestSoapNote: picks max timestamppassed0 msFrontend · unit
lib/soap-context.test.ts::latestSoapNote: empty list → null; undated list → first rowpassed3 msFrontend · unit
lib/soap-context.test.ts::soapSections: only non-empty sections, charted order, chief complaint firstpassed3 msFrontend · unit
lib/soap-context.test.ts::hasSoapContent: false when null or all-blank, true otherwisepassed0 msFrontend · unit
lib/stale-guard.test.ts::a fresh guard applies its resultpassed5 msFrontend · unit
lib/stale-guard.test.ts::a cancelled guard drops the resultpassed0 msFrontend · unit
lib/stale-guard.test.ts::cancel is idempotent — React may call cleanup more than oncepassed0 msFrontend · unit
lib/stale-guard.test.ts::guards are independent — one run cancelling does not affect anotherpassed0 msFrontend · unit
lib/stale-guard.test.ts::the slow response for the PREVIOUS patient never renderspassed34 msFrontend · unit
lib/stale-guard.test.ts::without the guard, the same sequence renders the wrong patientpassed33 msFrontend · unit
lib/stale-guard.test.ts::latestOnly keeps the newest of out-of-order responsespassed33 msFrontend · unit
lib/stale-guard.test.ts::latestOnly passes a lone response throughpassed0 msFrontend · unit
lib/stale-guard.test.ts::latestOnly discards by identity, not by valuepassed22 msFrontend · unit
lib/stale-guard.test.ts::a rejected newer request does not resurrect an older onepassed22 msFrontend · unit
lib/stale-guard.test.ts::a payload naming another patient is refusedpassed0 msFrontend · unit
lib/stale-guard.test.ts::a payload naming the current patient is acceptedpassed0 msFrontend · unit
lib/stale-guard.test.ts::an unstamped payload is acceptedpassed0 msFrontend · unit
lib/stale-guard.test.ts::an empty subjectId is not treated as a claimpassed0 msFrontend · unit
lib/stale-guard.test.ts::subject comparison is by value, not by reference typepassed0 msFrontend · unit
lib/statement-print.test.ts::fmtUSD: two decimals + separators, safe on junkpassed55 msFrontend · unit
lib/statement-print.test.ts::fmtStmtDate: em dash when absent, formats when presentpassed13 msFrontend · unit
lib/statement-print.test.ts::statusTone: paid / overdue / openpassed1 msFrontend · unit
lib/statement-print.test.ts::amountDue: positive balance only, else 0passed0 msFrontend · unit
lib/storage-never-throws.test.ts::a browser that refuses storage does not crash the business contextpassed14 msFrontend · unit
lib/storage-never-throws.test.ts::the hostile double really does throw — the guard is not passing on nothingpassed1 msFrontend · unit
lib/storage-never-throws.test.ts::./session.ts touches storage only inside a trypassed2 msFrontend · unit
lib/storage-never-throws.test.ts::./business-context.ts touches storage only inside a trypassed1 msFrontend · unit
lib/storage-never-throws.test.ts::the structural check fails on an unguarded call — it is not inertpassed1 msFrontend · unit
lib/storage-never-throws.test.ts::the structural check ignores a comment that merely mentions getItempassed1 msFrontend · unit
lib/store-census.test.ts::a working screen carries no explanation of an emptiness it does not havepassed3 msFrontend · unit
lib/store-census.test.ts::each kind gets its own heading, and an unknown kind still renderspassed0 msFrontend · unit
lib/store-census.test.ts::the per-store line says which kind of empty, never 'no data'passed1 msFrontend · unit
lib/store-census.test.ts::a measured survivor is named on the line, and an absent one is notpassed0 msFrontend · unit
lib/suggest.test.ts::an empty field offers the list; typing narrows it, prefix firstpassed5 msFrontend · unit
lib/suggest.test.ts::free text is allowed — a value not on the list suggests nothing and is keptpassed0 msFrontend · unit
lib/suggest.test.ts::once the field holds exactly one option there is nothing left to suggestpassed0 msFrontend · unit
lib/suggest.test.ts::a hint is searchable — a CPT code is found by its descriptionpassed0 msFrontend · unit
lib/suggest.test.ts::a repeated option is one optionpassed0 msFrontend · unit
lib/suggest.test.ts::no screen renders a native datalist — its popup cannot be themedpassed290 msFrontend · unit
lib/suggest.test.ts::the datalist guard fires on the real thing and not on a prop that happens to be called listpassed0 msFrontend · unit
lib/superuser.test.ts::a named individual holding the job is offered the apex screenspassed3 msFrontend · unit
lib/superuser.test.ts::official@patientmd.com is refused even holding the jobpassed0 msFrontend · unit
lib/superuser.test.ts::holding no job is not apex however the address readspassed0 msFrontend · unit
lib/superuser.test.ts::a borrowed session is never apexpassed0 msFrontend · unit
lib/superuser.test.ts::the second address on the session is checked toopassed0 msFrontend · unit
lib/superuser.test.ts::dots and +tags fold on this domain, as Google folds thempassed0 msFrontend · unit
lib/superuser.test.ts::a shared local part is recognised however it is spelledpassed0 msFrontend · unit
lib/superuser.test.ts::apex hrefs are hidden from everyone else and shown to the apexpassed0 msFrontend · unit
lib/superuser.test.ts::an ordinary href is never hidden by this filterpassed0 msFrontend · unit
lib/superuser.test.ts::the reason is legible, because an outcome nobody understands is a ticketpassed1 msFrontend · unit
lib/superuser.test.ts::'Sign in as…' is the apex's alone again (2026-09-10)passed0 msFrontend · unit
lib/superuser.test.ts::a screen that IS apex-only stays apex-onlypassed0 msFrontend · unit
lib/superuser.test.ts::platform STAFF are not offered the support doorpassed0 msFrontend · unit
lib/superuser.test.ts::a borrowed session is offered neither, whatever it borrowedpassed0 msFrontend · unit
lib/sylvie-citations.test.ts::one document cited four times is one source to a readerpassed8 msFrontend · unit
lib/sylvie-citations.test.ts::untitled rows are dropped rather than rendered as a blank chippassed0 msFrontend · unit
lib/sylvie-citations.test.ts::the list is capped and renumbered from onepassed0 msFrontend · unit
lib/sylvie-citations.test.ts::a citation can only ever link inside this apppassed1 msFrontend · unit
lib/sylvie-citations.test.ts::a source with no path is still a source, just not a linkpassed0 msFrontend · unit
lib/sylvie-citations.test.ts::the label never names the model or the providerpassed1 msFrontend · unit
lib/sylvie-scope.test.ts::only a decline is surfaced to the readerpassed7 msFrontend · unit
lib/sylvie-scope.test.ts::a missing verdict is not a declinepassed0 msFrontend · unit
lib/sylvie-scope.test.ts::inScope=false is honoured even without a tierpassed0 msFrontend · unit
lib/sylvie-scope.test.ts::the note is a boundary, not an apology or an errorpassed1 msFrontend · unit
lib/sylvie-scope.test.ts::every role gets three examples and an unknown role degradespassed1 msFrontend · unit
lib/sylvie-scope.test.ts::the examples are things the gate actually admitspassed1 msFrontend · unit
lib/sylvie-scope.test.ts::the debug line is for operators and stays out of the replypassed0 msFrontend · unit
lib/sylvie-voice.test.ts::a typed turn carries no voice fields at allpassed5 msFrontend · unit
lib/sylvie-voice.test.ts::a fleet-transcribed turn carries its row id and nothing elsepassed0 msFrontend · unit
lib/sylvie-voice.test.ts::a browser-recognised turn names its source so the server records the browser tierpassed4 msFrontend · unit
lib/sylvie-voice.test.ts::rendered keys come only from what the page publishedpassed1 msFrontend · unit
lib/sylvie-voice.test.ts::the engine label says where the voice came frompassed0 msFrontend · unit
lib/task-board.test.ts::severity is the grading, and administrative never competes with criticalpassed3 msFrontend · unit
lib/task-board.test.ts::severity reads as a word, and `administrative` is shortenedpassed0 msFrontend · unit
lib/task-board.test.ts::the headline leads with what is overdue, not with the totalpassed1 msFrontend · unit
lib/task-board.test.ts::a board with rows and nothing overdue says so rather than staying silentpassed0 msFrontend · unit
lib/task-board.test.ts::an empty board says the filters matched nothing, not that there is nothingpassed0 msFrontend · unit
lib/task-board.test.ts::choosing a clinic must NAME what it withheld — Article III.10passed0 msFrontend · unit
lib/task-board.test.ts::rule 15 — the three kinds of empty get three different sentencespassed1 msFrontend · unit
lib/task-board.test.ts::a close with no timestamp is counted and said, never charted silentlypassed0 msFrontend · unit
lib/task-board.test.ts::ageing says nothing is open rather than drawing a zero-day oldestpassed1 msFrontend · unit
lib/task-board.test.ts::an open row with no arrival time is reported, not aged to todaypassed0 msFrontend · unit
lib/task-board.test.ts::this module declares no vocabulary of its own — rule 13passed0 msFrontend · unit
lib/task-board.test.ts::every severity the server can send has a tone, and none is left defaultpassed0 msFrontend · unit
lib/telemetry-sim.test.ts::simEnabled requires an explicit truepassed3 msFrontend · unit
lib/telemetry-sim.test.ts::simEnabled fails closed on unknown or failed statuspassed1 msFrontend · unit
lib/telemetry-sim.test.ts::clampWindow keeps requests inside the server's boundspassed6 msFrontend · unit
lib/telemetry-sim.test.ts::clampWindow survives a blank number inputpassed0 msFrontend · unit
lib/telemetry-sim.test.ts::clampWindow truncates fractional inputpassed1 msFrontend · unit
lib/telemetry-sim.test.ts::runSummary pluralises alertspassed0 msFrontend · unit
lib/telemetry-sim.test.ts::purgeTotal sums per-collection countspassed1 msFrontend · unit
lib/tenant-scope.test.ts::global scope sends no tenant keys at allpassed5 msFrontend · unit
lib/tenant-scope.test.ts::a picked branch and corp are sent; nulls are omittedpassed1 msFrontend · unit
lib/tenant-scope.test.ts::extra fields survive alongside the scopepassed0 msFrontend · unit
lib/tenant-scope.test.ts::a JWT is never accepted as a tenant idpassed1 msFrontend · unit
lib/tenant-scope.test.ts::empty and non-string values are refusedpassed1 msFrontend · unit
lib/tenant-scope.test.ts::forbidden stays distinct from emptypassed0 msFrontend · unit
lib/tenant-scope.test.ts::rows are counted, failures are failurespassed0 msFrontend · unit
lib/tenant-scope.test.ts::a non-array success body counts as empty, not as one rowpassed0 msFrontend · unit
lib/tenant-scope.test.ts::every outcome has a line, and none of them invents datapassed1 msFrontend · unit
lib/threshold-trends.test.ts::a sane field passespassed8 msFrontend · unit
lib/threshold-trends.test.ts::crossed min/max is caught at entrypassed1 msFrontend · unit
lib/threshold-trends.test.ts::urgent bounds must sit outside the normal bandpassed0 msFrontend · unit
lib/threshold-trends.test.ts::partially-specified fields are finepassed0 msFrontend · unit
lib/threshold-trends.test.ts::validateFields reports every bad field, not just the firstpassed1 msFrontend · unit
lib/threshold-trends.test.ts::a trend number of zero is rejected because it silently disables the rulepassed1 msFrontend · unit
lib/threshold-trends.test.ts::negative trend numbers are rejectedpassed0 msFrontend · unit
lib/threshold-trends.test.ts::a count that cannot fit its window is rejectedpassed0 msFrontend · unit
lib/threshold-trends.test.ts::the protocol defaults themselves validate cleanpassed1 msFrontend · unit
lib/threshold-trends.test.ts::only numeric keys are editable — action is a label, not a numberpassed1 msFrontend · unit
lib/threshold-trends.test.ts::labels and units are human-readablepassed0 msFrontend · unit
lib/threshold-trends.test.ts::emptied trends are pruned so they do not shadow the default with nothingpassed0 msFrontend · unit
lib/threshold-trends.test.ts::validateOverride covers fields and trends togetherpassed0 msFrontend · unit
lib/time-window-hook-stability.test.ts::useTimeWindow's memo depends on no object identitypassed4 msFrontend · unit
lib/time-window-hook-stability.test.ts::the guard actually fires on the code that caused the incidentpassed2 msFrontend · unit
lib/time-window-hook-stability.test.ts::a comment naming the forbidden identifier does not trip the guardpassed2 msFrontend · unit
lib/time-window.test.ts::the default is the last 24 hours and the presets mirror the server's keyspassed12 msFrontend · unit
lib/time-window.test.ts::a preset resolves to an absolute interval ending nowpassed1 msFrontend · unit
lib/time-window.test.ts::URL round-trip: preset, custom and backlogpassed1 msFrontend · unit
lib/time-window.test.ts::the default preset writes NO parameter, so a clean URL stays cleanpassed0 msFrontend · unit
lib/time-window.test.ts::toParams keeps unrelated parameters and replaces the window onespassed0 msFrontend · unit
lib/time-window.test.ts::garbage in the URL falls back, and a half range is not promoted to a presetpassed0 msFrontend · unit
lib/time-window.test.ts::toQuery speaks the server's parameter namespassed0 msFrontend · unit
lib/time-window.test.ts::a custom range from two date inputs is half-open and localpassed11 msFrontend · unit
lib/time-window.test.ts::a bad custom range is refused with a sentence, never clampedpassed0 msFrontend · unit
lib/time-window.test.ts::labels never contain a raw millisecond valuepassed72 msFrontend · unit
lib/time-window.test.ts::the neighbourhood sentence stops a quiet window reading as a quiet daypassed1 msFrontend · unit
lib/tms-draft.test.ts::an empty note box may be prefilledpassed6 msFrontend · unit
lib/tms-draft.test.ts::a box still holding the last draft may be refreshedpassed0 msFrontend · unit
lib/tms-draft.test.ts::anything the specialist typed is hers and is never overwrittenpassed0 msFrontend · unit
lib/tms-draft.test.ts::verbatim is accepted, a change is edited, nothing offered is typedpassed0 msFrontend · unit
lib/tms-draft.test.ts::edited is never reported when nothing was offeredpassed0 msFrontend · unit
lib/tms-draft.test.ts::recency reads as a person would say itpassed0 msFrontend · unit
lib/tms-draft.test.ts::an undateable row says so rather than showing an epochpassed0 msFrontend · unit
lib/tms-draft.test.ts::no precedent gets its own sentence and never a default notepassed1 msFrontend · unit
lib/tms-draft.test.ts::the notice carries the basis and how stale it ispassed1 msFrontend · unit
lib/tms-draft.test.ts::a candidate summary never renders a raw identifierpassed0 msFrontend · unit
lib/tms-draft.test.ts::preview collapses whitespace and truncates with an ellipsispassed1 msFrontend · unit
lib/tms-report.test.ts::weight and pulse-ox readings are no longer droppedpassed7 msFrontend · unit
lib/tms-report.test.ts::a reading with no time or no number is not a rowpassed1 msFrontend · unit
lib/tms-report.test.ts::both blood-pressure spellings are one sectionpassed13 msFrontend · unit
lib/tms-report.test.ts::each type gets legacy's columns, blood pressure first, newest row firstpassed1 msFrontend · unit
lib/tms-report.test.ts::the summary says how many, on how many days, and the rangepassed1 msFrontend · unit
lib/tms-report.test.ts::a type this report has never heard of is shown under its own name, not droppedpassed1 msFrontend · unit
lib/tms-report.test.ts::notes history reads the stored mode word as the button a person pressedpassed1 msFrontend · unit
lib/tms.test.ts::the suite is gated until a patient is chosenpassed5 msFrontend · unit
lib/tms.test.ts::every child section inherits the one selectionpassed1 msFrontend · unit
lib/tms.test.ts::an id outside the roster still binds, but names nobody it cannot namepassed0 msFrontend · unit
lib/tms.test.ts::no selection means no context for any child to act onpassed0 msFrontend · unit
lib/tms.test.ts::care plan drives the activity listpassed1 msFrontend · unit
lib/tms.test.ts::encode then decode is losslesspassed1 msFrontend · unit
lib/tms.test.ts::an empty note round-trips as empty, not as the meta stringpassed1 msFrontend · unit
lib/tms.test.ts::a note containing the separator survives decodingpassed0 msFrontend · unit
lib/tms.test.ts::legacy rows with separate fields still decodepassed0 msFrontend · unit
lib/tms.test.ts::whenToMs handles both the modern epoch and the legacy objectpassed9 msFrontend · unit
lib/tms.test.ts::no screen infers a person's role from their idpassed1 msFrontend · unit
lib/tms.test.ts::CPT ladder: 99457 at 20 minutes, 99458 per further 20, capped at twopassed2 msFrontend · unit
lib/tms.test.ts::the PDF patient block carries the associated branchpassed1 msFrontend · unit
lib/tms.test.ts::a missing field prints a dash rather than vanishingpassed0 msFrontend · unit
lib/tms.test.ts::age is appended only when the DOB parsespassed1 msFrontend · unit
lib/tms.test.ts::column widths sum to the usable width, so nothing spills past the marginpassed1 msFrontend · unit
lib/tms.test.ts::notes are appended only for the reported patient, in the reported windowpassed1 msFrontend · unit
lib/tms.test.ts::notes come out in chronological orderpassed1 msFrontend · unit
lib/tms.test.ts::the window is inclusive of both end datespassed0 msFrontend · unit
lib/tms.test.ts::the TMS-notes toggle defaults to OFFpassed0 msFrontend · unit
lib/tms.test.ts::the minutes tile is subtitled with the patient's name, never their idpassed0 msFrontend · unit
lib/tms.test.ts::a locked care plan names what IS on file, not what is forbiddenpassed0 msFrontend · unit
lib/tms.test.ts::no plan on record is a distinct message from the wrong planpassed0 msFrontend · unit
lib/tms.test.ts::only the patient's assigned care team is offeredpassed0 msFrontend · unit
lib/tms.test.ts::no care team disables the control and says why, rather than going blankpassed0 msFrontend · unit
lib/tms.test.ts::an unloaded context offers nothing and claims nothingpassed0 msFrontend · unit
lib/tms.test.ts::reads contractType where carePlan is absentpassed0 msFrontend · unit
lib/tms.test.ts::reads communicationMode where commMode is absentpassed0 msFrontend · unit
lib/tms.test.ts::still prefers the modern spelling when both are presentpassed0 msFrontend · unit
lib/tms.test.ts::an unpacked row keeps its own note rather than losing itpassed0 msFrontend · unit
lib/training-curriculum.test.ts::QA 26_8_20 named fourteen workflows and fourteen are offeredpassed2 msFrontend · unit
lib/training-curriculum.test.ts::every workflow is distinguishable from every otherpassed0 msFrontend · unit
lib/training-curriculum.test.ts::each workflow starts on a screen that is in the menupassed1 msFrontend · unit
lib/training-curriculum.test.ts::each workflow says what it covers, in QA's wordspassed0 msFrontend · unit
lib/training-curriculum.test.ts::no workflow is an empty shellpassed0 msFrontend · unit
lib/training-portal.test.ts::a portal that has not arrived yet is loading, not emptypassed3 msFrontend · unit
lib/training-portal.test.ts::a failed fetch is an error the reader can act on, never blank contentpassed0 msFrontend · unit
lib/training-portal.test.ts::an empty body is an error, not a blank page that looks like an empty manualpassed0 msFrontend · unit
lib/training-portal.test.ts::html present means ready, carrying the version alongside itpassed0 msFrontend · unit
lib/training-portal.test.ts::an error wins over content — a stale document is not shown beside a failurepassed0 msFrontend · unit
lib/training-portal.test.ts::the version is reduced to its number for the headerpassed0 msFrontend · unit
lib/training-portal.test.ts::a document that states no version produces no version claimpassed0 msFrontend · unit
lib/training-portal.test.ts::the subtitle names the version actually being readpassed0 msFrontend · unit
lib/training-portal.test.ts::the iframe sandbox never combines allow-scripts with allow-same-originpassed1 msFrontend · unit
lib/training-portal.test.ts::the portal keeps its own scripts — dead lab checkboxes teach the wrong lessonpassed0 msFrontend · unit
lib/two-factor.test.ts::shows the codes between scanning and verifyingpassed2 msFrontend · unit
lib/two-factor.test.ts::an already-enrolled account skips straight to donepassed0 msFrontend · unit
lib/two-factor.test.ts::accepts six digits and nothing elsepassed1 msFrontend · unit
lib/two-factor.test.ts::strips whatever the authenticator app pasted inpassed0 msFrontend · unit
lib/two-factor.test.ts::a wrong six-digit code is still worth sendingpassed0 msFrontend · unit
lib/two-factor.test.ts::says plainly when it is set uppassed1 msFrontend · unit
lib/two-factor.test.ts::names the consequence when it is required and missingpassed0 msFrontend · unit
lib/two-factor.test.ts::is quiet, not alarming, when it is merely not set uppassed0 msFrontend · unit
lib/two-factor.test.ts::names the masked backup number when there is onepassed0 msFrontend · unit
lib/two-factor.test.ts::warns before they run out, not afterpassed1 msFrontend · unit
lib/two-factor.test.ts::names the route back when there are none leftpassed0 msFrontend · unit
lib/two-factor.test.ts::says nothing at all before enrolmentpassed0 msFrontend · unit
lib/two-factor.test.ts::lays the codes out two-up for printingpassed2 msFrontend · unit
lib/two-factor.test.ts::the text copy identifies the account it belongs topassed1 msFrontend · unit
lib/universal-messaging.test.ts::the limit is the NARROWEST rung, not the firstpassed4 msFrontend · unit
lib/universal-messaging.test.ts::a ladder with no limited rung reports no limitpassed0 msFrontend · unit
lib/universal-messaging.test.ts::a stale channel in the ladder is ignored, not thrown onpassed0 msFrontend · unit
lib/universal-messaging.test.ts::wouldBeCut is false when there is no limit at allpassed0 msFrontend · unit
lib/universal-messaging.test.ts::a routine page has no deadline, and that is not 'overdue'passed0 msFrontend · unit
lib/universal-messaging.test.ts::a passed deadline reads as overdue, never as a negativepassed0 msFrontend · unit
lib/universal-messaging.test.ts::a live deadline counts down in minutes and secondspassed0 msFrontend · unit
lib/universal-messaging.test.ts::a send where everybody was held does not read as a failurepassed1 msFrontend · unit
lib/universal-messaging.test.ts::a send where everybody was refused says so plainlypassed0 msFrontend · unit
lib/universal-messaging.test.ts::a partial send names both halvespassed0 msFrontend · unit
lib/universal-messaging.test.ts::a preview says 'would reach', because it has not happenedpassed0 msFrontend · unit
lib/universal-messaging.test.ts::no recipients is its own sentencepassed0 msFrontend · unit
lib/universal-messaging.test.ts::the refusal tally EXCLUDES deferralspassed3 msFrontend · unit
lib/universal-messaging.test.ts::the tally is ordered by frequency and cappedpassed0 msFrontend · unit
lib/universal-messaging.test.ts::hhmm renders a window boundary, clampedpassed0 msFrontend · unit
lib/universal-messaging.test.ts::a tier with no verbs disables the button and says whypassed1 msFrontend · unit
lib/universal-messaging.test.ts::a tier with no verbs and no declared reason still explains itselfpassed0 msFrontend · unit
lib/universal-messaging.test.ts::a real tier enables the buttonpassed0 msFrontend · unit
lib/universal-messaging.test.ts::no module chosen is not the same as an empty tierpassed0 msFrontend · unit
lib/use-search-params-needs-suspense.test.ts::no prerendered page reads searchParams without a boundary above itpassed240 msFrontend · unit
lib/use-search-params-needs-suspense.test.ts::the scanner reaches the pages and the hook, or it proves nothingpassed87 msFrontend · unit
lib/use-search-params-needs-suspense.test.ts::the three exemptions are each real, and each for its own reasonpassed0 msFrontend · unit
lib/use-search-params-needs-suspense.test.ts::reset-password specifically, because it is the page that brokepassed0 msFrontend · unit
lib/use-search-params-needs-suspense.test.ts::the model still flags the defect it was written forpassed0 msFrontend · unit
lib/use-search-params-needs-suspense.test.ts::the comment stripper neither hides a call nor invents onepassed1 msFrontend · unit
lib/version-skew.test.ts::a tab running a build the server has replaced is stalepassed3 msFrontend · unit
lib/version-skew.test.ts::stale is only ever asserted on POSITIVE evidencepassed0 msFrontend · unit
lib/version-skew.test.ts::the running id is read off <html data-dpl-id>, which Next injects itselfpassed0 msFrontend · unit
lib/version-skew.test.ts::a probe that returns something other than our JSON never throwspassed0 msFrontend · unit
lib/version-skew.test.ts::polling backs off on failure and is cappedpassed1 msFrontend · unit
lib/version-skew.test.ts::refocusing probes, but not on every alt-tabpassed0 msFrontend · unit
lib/version-skew.test.ts::the endpoint is NOT under /api, which Caddy proxies to FastAPIpassed1 msFrontend · unit
lib/version-skew.test.ts::the notice is mounted in the dashboard layout, not per screenpassed0 msFrontend · unit
lib/version-skew.test.ts::the notice offers a reload and never forces onepassed1 msFrontend · unit
lib/worklist-history.test.ts::a queue nobody has EVER worked says so, not 'nothing this week'passed2 msFrontend · unit
lib/worklist-history.test.ts::a quiet window on a queue that does move is named as a quiet windowpassed0 msFrontend · unit
lib/worklist-history.test.ts::closures that record no time are counted apart, never drawnpassed0 msFrontend · unit
lib/worklist-history.test.ts::no undated note when every closure carries a timepassed0 msFrontend · unit
lib/worklist-history.test.ts::age is the headline on a queue where nothing closespassed0 msFrontend · unit
lib/worklist-history.test.ts::nothing still open is stated plainly rather than as a zeropassed0 msFrontend · unit
lib/worklist-history.test.ts::a queue younger than a day does not claim an age it cannot supportpassed0 msFrontend · unit
lib/worklist.test.ts::band tones keep overdue as urgent as criticalpassed2 msFrontend · unit
lib/worklist.test.ts::the action verb never claims the work is finished from the inboxpassed1 msFrontend · unit
lib/worklist.test.ts::overdueHours is null when work is not yet duepassed0 msFrontend · unit
lib/worklist.test.ts::dueText says 'No due time' rather than rendering a blank cellpassed0 msFrontend · unit
lib/worklist.test.ts::groupByBand keeps band order and drops empty bandspassed2 msFrontend · unit
lib/worklist.test.ts::the headline names unassigned work instead of only the viewer's ownpassed0 msFrontend · unit
lib/worklist.test.ts::pressing counts critical and overdue togetherpassed0 msFrontend · unit