waybetter/dev-tools/README.md
CRT 5c64f2f6f8 dev-tools: the generic development harnesses (perf probes, close check, tab and webview stress)
Moved from wayBetter for X; an app passes its own origin, process name, scripts and fixtures.
2026-09-30 14:48:06 +07:00

27 lines
2.4 KiB
Markdown

# dev-tools
Development harnesses for a wayBetter app. They are not part of the npm package and nothing here
ships in an app: they probe a build you start yourself. Each file's header says exactly what it
does and what it never does (site pages are only read and reloaded, never clicked; nothing is
uploaded; the owner's session is not touched unless the header says a disposable profile is
needed).
An app calls them with its own values. wayBetter for X keeps thin wrappers
(`apps/desktop/scripts/*`, `verification/live-check/*`) that pass X's origin, process name, theme
commands, scripts and fixtures.
| Tool | Runs against | What it measures or checks |
| --- | --- | --- |
| `perf-probe.mjs` (`runPerfProbe`) | headless Chromium, the app's injected scripts, the app's fixtures | script evaluation time, fetch/XHR wrapper layers and overhead, Response clones, large JSON parses, observer / rAF / timer work of the scripts, long tasks |
| `runtime-start-check.mjs` (`runtimeStartCheck`) | headless Chromium, the built page runtime, static fixtures | the runtime installs at document start; every feature flag on, off, default without a console or page error |
| `resize-perf.mjs` | a running release build with a WebView2 CDP port | `theme` (first paint vs. theme applied), `drag` (divider drag: shell frames, `tabs_sync`, native lag), `switch` (click to tab visible), `window` (with `window-resize.ps1`) |
| `window-resize.ps1` | the app's window (Windows) | a repeatable ~2 s resize workload; never activates the window |
| `close-check.ps1` | the app's release exe (Windows) | the app exits on a plain `taskkill /PID` in every window state and on a simulated sign-out |
| `native-tab-stress.mjs` | a running build with a CDP port | opens shell start tabs, measures responsiveness, closes them |
| `native-webview-stress.mjs` | a running build with a CDP port, a fresh WebView2 profile | ramps native site tabs (6, 12, 24) and records process memory; stops at a memory limit |
| `native-stress-watch.ps1` | the app's process tree (Windows) | independent CPU and memory telemetry while a stress run is going |
| `native-stale-shortcut-check.mjs` | an isolated release build with a CDP port | a stale tab id in a shortcut never targets the active tab |
Requirements: Node 24+, and for the headless probes `playwright` in the app (the probe takes the
app's `chromium`). The CDP tools need the app started with
`WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS=--remote-debugging-port=<port>`.