vitest-dev/vitest · error · Error
browser is not initialized
Error message
browser is not initialized
What it means
_openBrowserPage is an internal entry point that opens a browser test page for a session. It requires this.browser (the browser provider/server) to already be initialized; if it is null/undefined the method throws immediately because there is no browser orchestrator to open a page with.
Solutions
- Confirm the project has browser config (test.browser or browser project) and a valid provider.
- Install browser provider deps and the browser binaries (npx playwright install).
- Check earlier logs for the provider initialization error that left this.browser unset.
- Ensure you are not manually invoking internal browser methods out of order.
Example fix
// before
export default defineConfig({
test: { /* no browser config */ }
})
// after
export default defineConfig({
test: {
browser: { enabled: true, provider: 'playwright', instances: [{ browser: 'chromium' }] }
}
}) Defensive patterns
Strategy: type-guard
Validate before calling
// Confirm browser readiness before browser operations.
function assertBrowserReady(project: { browser?: unknown }) {
if (!project.browser) throw new Error('Browser provider not initialized; check browser config and provider install.')
} Type guard
const isBrowserInitialized = (project: { browser?: unknown }): project is { browser: object } => Boolean(project.browser) Prevention
- Enable browser config and install provider + browser binaries before runs.
- Read provider startup logs for the failure that left browser unset.
- Do not call internal browser methods out of order.
When it happens
Trigger: _openBrowserPage is called before the browser provider finished initialization, or in a project that is not configured for browser testing so this.browser was never assigned.
Common situations: Calling browser APIs on a non-browser project, a browser provider that failed to start (e.g. playwright not installed, browser not downloaded), or a race where the page open is attempted before server listen completes.
Related errors
- All browser instances within a project must use the same…
- Browser Mode requires the "provider" to always be specified.
- Browser Mode was enabled, but provider was not specified…
- Browser " " is not supported by the browser provider " "…
- The `browser.provider` configuration was changed to accept…
AI-assisted analysis of vitest-dev/vitest@1fa9837ec2 (2026-08-11).
Data as JSON: /api/errors/e2dfac4faaf443c1.
Report an issue: GitHub.
Appendix: source
Thrown at packages/vitest/src/node/project.ts:478
* Import a file using Vite module runner.
* @param moduleId The ID of the module in Vite module graph
*/
public import<T>(moduleId: string): Promise<T> {
return this.runner.import(moduleId)
}
/** @internal */
public _getViteEnvironments(): DevEnvironment[] {
return Object.values(this.vite.environments || {})
}
/** @internal */
public async _openBrowserPage(sessionId: string, pool: {
reject: (error: Error) => void
parallel?: boolean
}): Promise<void> {
if (!this.browser) {
throw new Error(`browser is not initialized`)
}
const resolvedUrls = this.browser.vite.resolvedUrls
const origin = resolvedUrls?.local[0] ?? resolvedUrls?.network[0]
if (!origin) {
throw new Error(
`Can't find browser origin URL for project "${this.name}"`,
)
}
const url = new URL('/__vitest_test__/', origin)
url.searchParams.set('sessionId', sessionId)
const otelCarrier = this.vitest._traces.getContextCarrier()
this.vitest._browserSessions.sessionIds.add(sessionId)
const sessionPromise = this.vitest._browserSessions.createSession(
sessionId,
this,
pool,View on GitHub (pinned to 1fa9837ec2)