vitest-dev/vitest · error · Error
stackblitz environment does not support the ${resolved.brows
Error message
stackblitz environment does not support the ${resolved.browser.provider?.name} provider. Please, use "@vitest/browser-preview" instead. What it means
StackBlitz runs in a sandboxed browser environment that cannot launch real browser drivers (Playwright/WebdriverIO). Only the `preview` provider works there. The check at resolveConfig.ts:871 throws when browser mode is enabled with a non-preview provider inside a StackBlitz environment.
Source
Thrown at packages/vitest/src/node/config/resolveConfig.ts:872
resolved.browser.viewport.height ??= 896
resolved.browser.locators ??= {} as any
resolved.browser.locators.testIdAttribute ??= 'data-testid'
resolved.browser.locators.exact ??= true
resolved.browser.locators.errorFormat ??= 'all'
if (typeof resolved.browser.provider === 'string') {
const source = `@vitest/browser-${resolved.browser.provider}`
throw new TypeError(
'The `browser.provider` configuration was changed to accept a factory instead of a string. '
+ `Add an import of "${resolved.browser.provider}" from "${source}" instead. See: https://vitest.dev/config/browser/provider`,
)
}
const isPreview = resolved.browser.provider?.name === 'preview'
if (!isPreview && resolved.browser.enabled && stdProvider === 'stackblitz') {
throw new Error(`stackblitz environment does not support the ${resolved.browser.provider?.name} provider. Please, use "@vitest/browser-preview" instead.`)
}
if (isPreview && resolved.browser.screenshotFailures === true) {
console.warn(c.yellow(
[
`Browser provider "preview" doesn't support screenshots, `,
`so "browser.screenshotFailures" option is forcefully disabled. `,
`Set "browser.screenshotFailures" to false or remove it from the config to suppress this warning.`,
].join(''),
))
resolved.browser.screenshotFailures = false
}
else {
resolved.browser.screenshotFailures ??= !isPreview && !resolved.browser.ui
}
if (resolved.browser.provider && resolved.browser.provider.options == null) {
resolved.browser.provider.options = {}
}
View on GitHub (pinned to d568f8ce37)
Solutions
- Use the preview provider on StackBlitz: `browser: { enabled: true, provider: preview }`.
- Install/use `@vitest/browser-preview` as the error suggests.
- Conditionally set the provider based on environment (e.g. `provider: process.env.STACKBLITZ ? preview : playwright`).
Example fix
// before
export default defineConfig({ test: { browser: { enabled: true, provider: playwright } } })
// after (on StackBlitz)
import { preview } from '@vitest/browser-preview'
export default defineConfig({ test: { browser: { enabled: true, provider: preview } } }) Defensive patterns
Strategy: fallback
Validate before calling
function pickStackblitzProvider(playwright: any, preview: any) {
return process.env.STACKBLITZ || /stackblitz/i.test(navigator?.userAgent || '') ? preview : playwright
} Type guard
function isStackblitz(): boolean {
return !!process.env.STACKBLITZ
} Prevention
- On StackBlitz, default to the preview provider.
- Conditionally choose the provider based on environment.
- Document the sandbox limitation for contributors.
When it happens
Trigger: On StackBlitz, set `browser: { enabled: true, provider: playwright }` and run vitest. `stdProvider === 'stackblitz'` is detected from the runtime.
Common situations: Opening a project on StackBlitz that was authored locally with a real browser provider; CI config reused inside StackBlitz.
Related errors
- The ${provider.name} provider does not support tracing.
- The ${context.provider.name} provider does not support traci
- provider ${context.provider.name} is not supported
- You've enabled headless mode for "preview" provider but it d
- Browser is not initialized
AI-assisted analysis of vitest-dev/vitest@d568f8ce37 (2026-08-03).
Data as JSON: /data/errors/181783b7344b4f5f.json.
Report an issue: GitHub.