vitest-dev/vitest · error
stackblitz environment does not support the
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 WebContainer that cannot launch a real browser driver. Only the `preview` provider (which opens the user's local browser against the StackBlitz URL) works there. Vitest detects the StackBlitz environment and refuses any other provider, redirecting the user to `@vitest/browser-preview`.
Solutions
- Switch to the `preview` provider inside StackBlitz.
- Conditionally set the provider based on `process.env.SHELL` / a StackBlitz-detected env var.
- Maintain a separate `vitest.stackblitz.config.ts` that uses preview.
Example fix
// before
import { playwright } from '@vitest/browser-playwright'
export default defineConfig({ test: { browser: { enabled: true, provider: playwright() } } })
// after (in StackBlitz)
import { preview } from '@vitest/browser-preview'
export default defineConfig({ test: { browser: { enabled: true, provider: preview() } } }) Defensive patterns
Strategy: validation
Validate before calling
const isStackBlitz = !!process.env.SHELL?.includes('stackblitz') || !!process.env.WEBcontainer
if (isStackBlitz && config.test?.browser?.provider?.name !== 'preview') {
throw new Error('StackBlitz supports only the preview browser provider.')
} Type guard
function isStackBlitzEnv(): boolean {
return Boolean(process.env.WEB_CONTAINER) || /stackblitz/i.test(process.env.SHELL ?? '')
} Prevention
- Maintain a separate `vitest.stackblitz.config.ts` using the preview provider.
- Detect the env early and branch the config before handing off to Vitest.
When it happens
Trigger: Running Vitest inside StackBlitz with `browser.provider: playwright()` (or webdriverio) and `browser.enabled: true`.
Common situations: Reproducing a repo in a StackBlitz link with the same config used locally; a CI matrix that happens to include a StackBlitz runner.
Related errors
- All browser instances within a project must use the same…
- browser is not initialized
- Browser Mode requires the "provider" to always be specified.
- Browser Mode was enabled, but provider was not specified…
- Cannot find environment for
AI-assisted analysis of vitest-dev/vitest@1fa9837ec2 (2026-08-11).
Data as JSON: /api/errors/181783b7344b4f5f.
Report an issue: GitHub.
Appendix: source
Thrown at packages/vitest/src/node/config/resolveConfig.ts:900
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 1fa9837ec2)