browser (experimental)
- Type:
- Default:
Browser Mode configuration. When enabled, tests run in a real browser instead of the Node.js environment.
Options
enabled
- Type:
boolean - Default:
false - CLI:
--browser,--browser.enabled
Enable Browser Mode.
Enabling Browser Mode requires installing the @rstest/browser package and Playwright browsers.
provider
- Type:
'playwright' - Default:
'playwright'
Browser driver provider. Currently only Playwright is supported.
Mixing multiple providers in the same test run is currently not supported.
browser
- Type:
'chromium' | 'firefox' | 'webkit' - Default:
'chromium' - CLI:
--browser.name <name>
The browser type to use for testing.
chromium- Google Chrome, Microsoft Edgefirefox- Mozilla Firefoxwebkit- Safari
You need to install the corresponding browser before use:
headless
- Type:
boolean - Default:
truein CI environments,falsefor local development - CLI:
--browser.headless
Whether to run the browser in headless mode (without UI).
During local development, setting headless: false shows the browser window for easier debugging.
If you want headed mode for local debugging and headless in CI, control it with environment variables:
port
- Type:
number - Default:
undefined(automatically selects an available port) - CLI:
--browser.port <port>
The port number for the Browser Mode Dev Server.
If you set port and the port is already in use, the behavior is controlled by strictPort: when strictPort: true, Rstest throws an error and exits; when strictPort: false, it falls back to another available port. If port is not specified, an available port is always selected automatically.
strictPort
- Type:
boolean - Default:
false - CLI:
--browser.strictPort
When port is specified, whether the port must be available:
true: throw an error and exit if the port is in usefalse: fall back to another available port if the port is in use
providerOptions
- Type:
Record<string, unknown> - Default:
{}
Provider-specific options passed through to the selected browser provider. Rstest does not validate or interpret the contents of this object — it is forwarded as-is to the provider at both browser launch and context creation time.
The structure of providerOptions is defined by each provider. See the Provider options section below for details.
Current limitation: browser launch options must match in one run
In one rstest process, all Browser Mode projects must share the same browser launch options:
providerbrowserheadlessportstrictPortproviderOptions
This means mixing multiple providers, or running Chromium/Firefox/WebKit together in the same run, is not supported yet.
For cross-browser coverage, run tests in separate executions (for example, in a CI matrix):
Multi-project config isolation
When using projects in Browser Mode, each project still compiles and executes with its own build config (for example plugins, include, and framework-specific setup).
Browser launch options still need to stay aligned across browser projects: provider, browser, headless, port, strictPort, and providerOptions.
Mixing with node tests
You can configure both browser tests and Node.js tests together:
Provider options
Playwright
When using provider: 'playwright', the Playwright provider recognizes the following fields in providerOptions:
launch— Passed to Playwright'sbrowserType.launch(). Controls how the browser process is started.context— Passed to Playwright'sbrowser.newContext(). Controls the browser context created for each test file.
Since providerOptions is typed as Record<string, unknown>, you won't get IntelliSense out of the box. To get type checking and autocompletion, import types directly from the playwright package and use TypeScript's satisfies operator:
Related links
- Browser Mode Guide - Introduction and usage guide for Browser Mode
- Getting Started - Configure Browser Mode tests
- User interactions - Write semantic tests with
page+expect.element