Skip to content

Roadmap

Current line: 0.6.x (pre-1.0). Theme: honest consumer path — init → install → e2e, overrides in CI, peers match docs. 1.0 means a clear support matrix and no silent gaps between docs and CI.

Stable now (0.6)

  • Recipe contract: prepare → start → URL/dir, shared identity cache under .untestutils
  • Vitest plugin + Playwright createPlaywrightConfig, same recipes.ts
  • Drivers: staticDir, command, nodeEntry, host, nuxt({ run })
  • Framework dogfood in CI: Vite, Next, Astro, SvelteKit, Remix, SolidStart (+ static)
  • Typed config overrides in CI (viteConfig / nextConfig / kitConfig / …)
  • Nuxt unit (environment: 'untestutils') in playground CI (test:playground:unit)
  • CLI init / doctor / doctor --recipes + temp-dir dogfood (test:cli-dogfood)
  • Node 22 primary CI + Node 20 smoke (test:unit + test:pack)
  • Utils for live checks (cookies, SEO, redirects, poll)
  • Scoped emit-only publish: @untestutils/* + thin untestutils facade; lockstep semver
  • Docs site (this)

Use the same version for facade and any @untestutils/* adapter you install.

Migration note (0.6)

@untestutils/nuxt and vitest-environment-untestutils are optional peers (no longer hard deps of the facade). Nuxt users:

bash
pnpm add -D untestutils @untestutils/nuxt vitest-environment-untestutils nuxt

Before 1.0

Ordered by impact. Full table: Support matrix.

1. Support matrix (docs + CI)

Keep stable vs experimental vs optional honest as features land.

AreaToday1.0 bar
Vitest / Playwright e2eStable, in CIKeep
Nuxt server recipesStable, unit/driver coveredKeep
Vite / Next / Astro / SvelteKit / Remix / SolidStartDogfood in playground CIKeep
Nuxt unitDocumented + test:playground:unit in CIKeep
CLI scaffoldingDogfood in CIKeep
AI codegenOptional, mock in CIStay optional (labeled)
Perf suiteUnit + optional workflow_dispatch dogfoodStay optional (labeled)

2. Package hygiene

  • Clearer peer signal for Vitest as primary consumer (doctor checks majors 4|5)
  • Slimmer facade (optional peers for nuxt / ai / perf) — done in 0.6

3. Typecheck surface

Root typecheck should cover facade-critical packages (nuxt unit subpaths as needed) so published .d.ts do not drift.

4. Semver promise

Ship 1.0.0 with the matrix above, changelog that states stable vs optional, and no “documented as supported but untested in CI” drivers.

After 1.0

  • WebKit in Playwright CI (optional job)
  • Richer framework fixtures as demand appears
  • Live-LLM AI smoke (mock stays CI default)
  • Vitest Browser Mode as a separate optional track (not recipe-e2e)

Explore (pre-release — decided)

Spike: faster browser backends for mass recipe e2e. Out of scope for 1.0 — details: Explore — alternate browsers.

ProjectVerdict
AstralSkip for 1.0 — Deno-only; no Node/Vitest path
ThirtyfourSkip for 1.0 — WebDriver + Node bridge; unclear perf win
ChromiumoxideSkip for 1.0 — Rust CDP is the interesting perf bet; deferred for integration cost (not “Playwright already does CDP”)

Vitest Browser Mode is a separate optional track — not recipe-e2e. See Browser Mode.

@nuxt/test-utils extras ($fetchComponent, full browser render API) stay deferred until real dogfood — not 1.0 goals.

Not goals for 1.0

  • Replacing Vitest or Playwright
  • Drop-in compatibility with @nuxt/test-utils
  • Shipping a second browser stack before Chromiumoxide proves a win

Next

Released under the MIT License.