Skip to content

Commit 1831008

Browse files
authored
feat(browser): rename none provider to preview, make it default (#5826)
1 parent fe3190d commit 1831008

File tree

12 files changed

+24
-27
lines changed

12 files changed

+24
-27
lines changed

docs/guide/browser.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ This page provides information about the experimental browser mode feature in th
88

99
## Installation
1010

11-
By default, Browser Mode doesn't require any provider to run tests locally because it reuses your existing browser.
11+
By default, Browser Mode doesn't require any additional E2E provider to run tests locally because it reuses your existing browser.
1212

1313
::: code-group
1414
```bash [npm]
@@ -26,7 +26,7 @@ bun add -D vitest @vitest/browser
2626
:::
2727

2828
::: warning
29-
However, to run tests in CI you need to install either [`playwright`](https://npmjs.com/package/playwright) or [`webdriverio`](https://www.npmjs.com/package/webdriverio). We also recommend switching to either one of them for testing locally instead of using the default `none` provider since it relies on simulating events instead of using Chrome DevTools Protocol.
29+
However, to run tests in CI you need to install either [`playwright`](https://npmjs.com/package/playwright) or [`webdriverio`](https://www.npmjs.com/package/webdriverio). We also recommend switching to either one of them for testing locally instead of using the default `preview` provider since it relies on simulating events instead of using Chrome DevTools Protocol.
3030
:::
3131

3232
### Using Playwright
@@ -208,7 +208,7 @@ export const server: {
208208

209209
/**
210210
* Handler for user interactions. The support is provided by the browser provider (`playwright` or `webdriverio`).
211-
* If used with `none` provider, fallbacks to simulated events via `@testing-library/user-event`.
211+
* If used with `preview` provider, fallbacks to simulated events via `@testing-library/user-event`.
212212
* @experimental
213213
*/
214214
export const userEvent: {

examples/lit/vite.config.ts

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export default defineConfig({
1010
browser: {
1111
enabled: true,
1212
name: 'chrome',
13+
provider: 'webdriverio',
1314
},
1415
},
1516
})

packages/browser/context.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export const server: {
8888

8989
/**
9090
* Handler for user interactions. The support is provided by the browser provider (`playwright` or `webdriverio`).
91-
* If used with `none` provider, fallbacks to simulated events via `@testing-library/user-event`.
91+
* If used with `preview` provider, fallbacks to simulated events via `@testing-library/user-event`.
9292
* @experimental
9393
*/
9494
export const userEvent: UserEvent

packages/browser/providers.d.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import type { BrowserProvider } from 'vitest/node'
1+
import type { BrowserProviderModule } from 'vitest/node'
22

3-
declare const webdriverio: BrowserProvider
4-
declare const playwright: BrowserProvider
5-
declare const none: BrowserProvider
3+
declare const webdriverio: BrowserProviderModule
4+
declare const playwright: BrowserProviderModule
5+
declare const preview: BrowserProviderModule
66

7-
export { webdriverio, playwright, none }
7+
export { webdriverio, playwright, preview }

packages/browser/src/node/plugins/pluginContext.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ function getPathTo(element) {
116116
}
117117

118118
async function getUserEventImport(provider: BrowserProvider, resolve: (id: string, importer: string) => Promise<null | { id: string }>) {
119-
if (provider.name !== 'none')
119+
if (provider.name !== 'preview')
120120
return ''
121121
const resolved = await resolve('@testing-library/user-event', __dirname)
122122
if (!resolved)
@@ -125,7 +125,7 @@ async function getUserEventImport(provider: BrowserProvider, resolve: (id: strin
125125
}
126126

127127
function getUserEventScript(project: WorkspaceProject) {
128-
if (project.browserProvider?.name === 'none')
128+
if (project.browserProvider?.name === 'preview')
129129
return `__vitest_user_event__`
130130
return `{
131131
async click(element, options) {
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { PlaywrightBrowserProvider } from './playwright'
22
import { WebdriverBrowserProvider } from './webdriver'
3-
import { NoneBrowserProvider } from './none'
3+
import { PreviewBrowserProvider } from './preview'
44

55
export const webdriverio = WebdriverBrowserProvider
66
export const playwright = PlaywrightBrowserProvider
7-
export const none = NoneBrowserProvider
7+
export const preview = PreviewBrowserProvider

packages/browser/src/node/providers/none.ts packages/browser/src/node/providers/preview.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { BrowserProvider, WorkspaceProject } from 'vitest/node'
22

3-
export class NoneBrowserProvider implements BrowserProvider {
4-
public name = 'none'
3+
export class PreviewBrowserProvider implements BrowserProvider {
4+
public name = 'preview'
55
private ctx!: WorkspaceProject
66
private open = false
77

@@ -18,7 +18,7 @@ export class NoneBrowserProvider implements BrowserProvider {
1818
this.ctx = ctx
1919
this.open = false
2020
if (ctx.config.browser.headless)
21-
throw new Error('You\'ve enabled headless mode for "none" provider but it doesn\'t support it.')
21+
throw new Error('You\'ve enabled headless mode for "preview" provider but it doesn\'t support it.')
2222
}
2323

2424
async openPage(_url: string) {

packages/vitest/src/integrations/browser.ts

+3-7
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
import type { WorkspaceProject } from '../node/workspace'
22
import type { BrowserProviderModule, ResolvedBrowserOptions } from '../types/browser'
33

4-
const builtinProviders = ['webdriverio', 'playwright', 'none']
4+
const builtinProviders = ['webdriverio', 'playwright', 'preview']
55

66
export async function getBrowserProvider(options: ResolvedBrowserOptions, project: WorkspaceProject): Promise<BrowserProviderModule> {
77
if (options.provider == null || builtinProviders.includes(options.provider)) {
88
await project.ctx.packageInstaller.ensureInstalled('@vitest/browser', project.config.root)
9-
const providers = await project.runner.executeId('@vitest/browser/providers') as {
10-
webdriverio: BrowserProviderModule
11-
playwright: BrowserProviderModule
12-
none: BrowserProviderModule
13-
}
14-
const provider = (options.provider || 'webdriverio') as 'webdriverio' | 'playwright' | 'none'
9+
const providers = await project.runner.executeId('@vitest/browser/providers') as typeof import('@vitest/browser/providers')
10+
const provider = (options.provider || 'preview') as 'webdriverio' | 'playwright' | 'preview'
1511
return providers[provider]
1612
}
1713

packages/vitest/src/node/cli/cli-config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ export const cliOptionsConfig: VitestCLIOptions = {
332332
subcommands: apiConfig(defaultBrowserPort),
333333
},
334334
provider: {
335-
description: 'Provider used to run browser tests. Some browsers are only available for specific providers. Can be "webdriverio", "playwright", or the path to a custom provider. Visit [`browser.provider`](https://vitest.dev/config/#browser-provider) for more information (default: `"webdriverio"`)',
335+
description: 'Provider used to run browser tests. Some browsers are only available for specific providers. Can be "webdriverio", "playwright", "preview", or the path to a custom provider. Visit [`browser.provider`](https://vitest.dev/config/#browser-provider) for more information (default: `"preview"`)',
336336
argument: '<name>',
337337
subcommands: null, // don't support custom objects
338338
},

packages/vitest/src/types/browser.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ export interface BrowserConfigOptions {
4141
/**
4242
* Browser provider
4343
*
44-
* @default 'webdriverio'
44+
* @default 'preview'
4545
*/
46-
provider?: 'webdriverio' | 'playwright' | 'none' | (string & {})
46+
provider?: 'webdriverio' | 'playwright' | 'preview' | (string & {})
4747

4848
/**
4949
* Options that are passed down to a browser provider.

test/browser/fixtures/mocking/vitest.config.ts

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ export default defineConfig({
1111
provider,
1212
name,
1313
headless: true,
14-
fileParallelism: false,
1514
},
1615
},
1716
})

test/config/fixtures/bail/vitest.config.ts

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export default defineConfig({
3030
browser: {
3131
headless: true,
3232
name: 'chrome',
33+
provider: 'webdriverio',
3334
},
3435
},
3536
})

0 commit comments

Comments
 (0)