Toolchain Setup
Everything this track needs runs on a laptop with Node and a Chromium-based browser. There is no native build step — the experiments drive a real browser over the DevTools Protocol.
Required
| Tool | Why |
|---|---|
| Node.js (LTS) | the experiment harnesses in each module's src/ |
| Chrome / Chromium | every measurement; the experiments launch it over CDP |
| Playwright (installed per module) | CDP driver used by the harnesses |
| mdBook | building this book locally |
cd fe-01-execution-model-scheduling/src
npm install
npm run all # regenerates every table in that module's measured-results.md
DevTools settings worth changing once
- CPU throttling 4×/6×. Unthrottled desktop numbers are not evidence about your users, and every measurement in this book is taken throttled unless stated otherwise.
- Rendering panel: paint flashing, layer borders, scroll-performance issues, frame rendering stats.
- Performance panel: enable Screenshots and Memory.
- Network throttling for anything touching loading.
Measurement discipline
Three rules the modules assume:
- Predict in writing before you measure. A prediction made after observation is worth nothing.
- Report medians of repeated runs, not a single run — and say how many.
- State what the number does not prove. Every measured table in this book carries that line, because a measurement without its limits is an advertisement.
Building the book
bash build.sh # writes ./book and ./dist/book
mdbook serve # live reload on :3000
python3 ../tools/gen-summary.py frontend # regenerate SUMMARY.md
The sibling project
../browser-framework-internals/ needs a much larger toolchain — a Chromium checkout, depot_tools,
GN, and a working native build for its later phases. Its
TOOLS.md documents the disk budget and the toolchain
floor. Nothing in this project requires any of it.