Live targetSpecs hit a real prepare → start → URL path — cookies, SEO, redirects, locale — not happy-dom stubs.
Shared prepareBuild once per recipe identity, reuse across files and workers via .untestutils. That is the CI time win.
One recipes.tsSame ids for Vitest and Playwright. Drivers for Nuxt, static, command, remote host, and more.