inspector/scripts
Repository files (latest commit first)
Filename Latest commit message Latest commit date
cliffhall 2e4e76aa1a
test(scripts): anchor the render-smoke overlap paint to the parent's clock
The case reproduces an overlap — the render deadline expiring while the
survival window is still open — and it had to buy that overlap with a
startup allowance. `paintAt` is measured from the child's first JS tick
while `renderTimer` is armed in the parent at spawn, so a plain
`setTimeout(paint, N)` lands at `N + startup` and the deadline has to
cover whatever startup turns out to be. #2177 widened that allowance
(150ms to 950ms), which moves the threshold rather than removing it: the
case still fails, as "did not render", on any machine loaded enough to
blow the new number.

The child is now told the wall-clock instant to paint at and sleeps for
whatever is left of it on arrival, so startup is absorbed by the sleep
instead of added to it and the paint lands at ~300ms from spawn however
slow the boot was. `timeoutMs: 600` / `surviveMs: 900` then satisfies
the right-hand side of the overlap for ANY paint time including 0, so a
boot slow enough to swallow the anchor entirely still reproduces the
shape rather than degrading into a different case. The one startup
assumption left is that boot completes before the deadline at all, an
order of magnitude over the 46-59ms measured idle here.

Passing is no longer taken as evidence on its own: the verdict's
first-paint time is read back and the overlap asserted, so a paint
landing early enough to put the deadline outside the survival window
fails loudly instead of passing while testing nothing.

Verified by mutation — removing the `clearTimeout(renderTimer)` this
case guards fails it at 607ms, i.e. the timer still fires inside the
survival window. Verified under load — 8/8 with 16 busy loops pinning
all 8 cores. Runtime drops from ~1.75s to ~1.2s.

Closes #2180

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013hzwzS8UvBsr4yZm7o7sev
Signed-off-by: cliffhall <cliff@futurescale.com>
2026-08-27 23:51:36 -04:00
..
lib test(scripts): anchor the render-smoke overlap paint to the parent's clock 2026-08-27 23:51:36 -04:00
install-clients.mjs feat: port CLI, TUI, and launcher from v1.5 into v2 (#1452) 2026-06-14 20:27:49 -04:00
install-smoke-browser.mjs fix(smoke): reject an empty SMOKE_BROWSER; test the installer's argument logic 2026-08-25 22:52:02 -04:00
install-smoke-browser.test.mjs fix(smoke): reject an empty SMOKE_BROWSER; test the installer's argument logic 2026-08-25 22:52:02 -04:00
pack-and-verify.mjs ci: drop the Firefox smoke job; keep the engines as an on-demand tool 2026-08-25 23:55:19 -04:00
run-engine-smokes.mjs fix(smoke): route the Chromium tier through ENGINE_SMOKES too 2026-08-26 08:55:51 -04:00
run-engine-smokes.test.mjs Merge remote-tracking branch 'origin/v2/main' into v2/chore/2146-rename-local-gate 2026-08-27 00:16:14 -04:00
smoke-cli.mjs chore(scripts): build test-servers unconditionally from one shared helper 2026-08-25 00:57:48 -04:00
smoke-launcher.mjs refactor: self-validating clients, fast validate + separate coverage/smoke (#1504) (#1505) 2026-06-21 11:41:33 -04:00
smoke-tui.mjs fix(scripts): make the test stubs drain, and the raw-mode guard testable (#2147) 2026-08-26 22:13:35 -04:00
smoke-web-app.mjs chore(scripts): rename the local pre-push gate off ci, and guard it out of CI (#2146) 2026-08-26 23:56:34 -04:00
smoke-web-browser.mjs chore(scripts): rename the local pre-push gate off ci, and guard it out of CI (#2146) 2026-08-26 23:56:34 -04:00
smoke-web-elicitation.mjs Merge remote-tracking branch 'origin/v2/main' into v2/chore/2146-rename-local-gate 2026-08-27 00:16:14 -04:00
smoke-web-tabs.mjs Merge remote-tracking branch 'origin/v2/main' into v2/chore/2146-rename-local-gate 2026-08-27 00:16:14 -04:00
smoke-web.mjs fix(smoke): await the server's exit before removing its catalog, and test it 2026-08-11 14:32:20 -04:00
verify-build-gate.mjs chore(scripts): rename the local pre-push gate off ci, and guard it out of CI (#2146) 2026-08-26 23:56:34 -04:00
verify-bundle-externals.mjs test(proxy): isolate proxy env per file; word the guard failure by candidate source 2026-08-23 23:00:28 -04:00
verify-bundle-externals.test.mjs test(proxy): isolate proxy env per file; word the guard failure by candidate source 2026-08-23 23:00:28 -04:00
verify-dep-lockstep.main.test.mjs Merge origin/v2/main: move the #1939 npx fix into the shared tsc-program lib 2026-08-16 17:07:50 -07:00
verify-dep-lockstep.mjs chore(scripts): compare only the copies a program actually met 2026-08-16 12:35:38 -04:00
verify-dep-lockstep.test.mjs chore(scripts): compare only the copies a program actually met 2026-08-16 12:35:38 -04:00
verify-format-coverage.main.test.mjs test(scripts): cover verify-format-coverage's sibling-guard vouch 2026-08-10 22:16:29 -04:00
verify-format-coverage.mjs chore(deps): scope the allowlist to a major, cover vitest.shared.mts, fix the vouch comment 2026-08-10 21:00:31 -04:00
verify-typecheck-coverage.main.test.mjs Merge origin/v2/main: move the #1939 npx fix into the shared tsc-program lib 2026-08-16 17:07:50 -07:00
verify-typecheck-coverage.mjs Merge origin/v2/main: move the #1939 npx fix into the shared tsc-program lib 2026-08-16 17:07:50 -07:00
verify-typecheck-coverage.test.mjs chore(scripts): derive dep-lockstep candidates from what enters each tsc program 2026-08-16 12:17:15 -04:00