# Nightly Test Summary — run of 2026-07-12→13 (IST)

**VERDICT: 760 FAILURES across 26 spec files — 12th consecutive mass-failure night ("server unreachable" family, 6th occurrence), but a PARTIAL RECOVERY: failures dropped 920 → 760 and printing/activity/hr/tour_pg/drive/expense/dispatch/production/vehicle/btl all went fully green. NOT code regressions.**

- Marker: `nightly_marker.json` date=20260712, finished_at 2026-07-12T23:24:43Z = **2026-07-13 04:54:43 IST** (marker date field is UTC-run-start-stamped, not IST — same known stamping quirk as prior nights; `finished_at` confirms this is last night's run). exit_code 1.
- Report file: `test_reports/nightly_20260712.json`
- Playwright `startTime`: 2026-07-12T18:45:04.653Z = 2026-07-13 00:15:04 IST; duration ≈ 4h 40m.
- Analyzed: 2026-07-13 (IST).

## Totals

| | This run | Prior night (07-11→12) | Baseline (2026-06-20) |
|---|---|---|---|
| Total | 1688 | 1688 | ~1220+ |
| Passed | 780 | 602 | all |
| Failed | 760 | 920 | 0 |
| Skipped | 148 | 166 | 186 |
| Flaky | 0 | 0 | 1 |

## Regressions vs baseline

The trusted baseline (2026-06-20) is **0 failed**, so all 760 failures are technically non-baseline. However this is the 12th consecutive mass-failure night with an infrastructure signature, NOT 760 independent app regressions. Error-signature breakdown of the underlying failure instances (incl. retries):

- 888 × timeout (pages/dashboards never render)
- 280 × toContain mismatch (raw HTML / wrong content where app content expected)
- 108 × HTTP 404 (`manifest.json returns 200` gets raw Apache HTML)
- 104 × toBe mismatch, 8 × PostgREST 406 (`Accept-Profile` table checks)
- remainder: undefined-property TypeErrors downstream of failed API fetches

No `browserType.launch: Executable doesn't exist` errors — the browser-binary bug stayed fixed this run.

## What changed vs prior nights (partial recovery)

Fully green this run (were mass-failing on prior "server unreachable" nights): **printing (94 pass, was 94 fail)**, activity (42), drive_consolidator (72), tour_pg (58) + tour_pg_sharing (18), hr (38), expense (18), dispatch (12), production (10), vehicle (22), btl (18). This suggests part of the stack was up (or came up) during the run window, unlike prior nights.

## Failing spec files (26 files, worst first)

| Spec file | Failed | Passed | Representative failing tests |
|---|---|---|---|
| fundcustodian.spec.js | 154 | 22 | dashboards/filters never render (timeouts) |
| sales_billing.spec.js | 78 | 18 | undefined `paid_amount`/`invoiced_amount` from failed API |
| vendors.spec.js | 74 | 0 | wholesale — all tests fail |
| upi_pay.spec.js | 68 | 8 | wholesale |
| customers.spec.js | 50 | 0 | wholesale |
| recce.spec.js | 44 | 52 | partial |
| custodian.spec.js | 40 | 40 | partial |
| recce_client.spec.js | 32 | 16 | partial |
| sales.spec.js | 32 | 12 | `openJob is not defined`, content mismatches |
| safe_bottom.spec.js | 28 | 18 | safe-area checks on unreachable PWAs |
| stores.spec.js | 26 | 0 | wholesale (+ ENOENT /tmp/test_stores.csv) |
| counters.spec.js | 18 | 68 | "Phase 4.17 — comments modal + RPCs referenced" |
| yagya-portfolio.spec.js | 18 | 0 | wholesale |
| contacts.spec.js | 14 | 2 | manifest 404, sw.js version, auth screen, Dexie checks |
| finance.spec.js | 10 | 2 | wholesale-ish |
| installation.spec.js | 10 | 2 | wholesale-ish |
| learn.spec.js | 10 | 2 | wholesale-ish |
| tour_planner.spec.js | 10 | 2 | wholesale-ish |
| hub.spec.js | 8 | 22 | partial |
| oc_admin.spec.js | 8 | 2 | wholesale-ish |

Also failing: vrs (8/2), admin (6: `client.zones` via PostgREST → 406, `client.accounts` zone cols, `sales.jobs` zones col ADR-111), smoke (6/28), client (4: manifest/sw), debug_tour (2/0), rentveh (2/28).

## Baseline decision

**NOT re-baselined.** The 2026-06-20 baseline (0 failed) remains trusted. Tonight's partial recovery (760 vs 920, several suites green) is progress but the dev stack was still partially unreachable during the 00:15–04:55 IST window. Still needs the human/ops uptime fix; a clean run is required before re-baselining.
