Skip to content

Commit 0d0e5cd

Browse files
authored
feat(browser): expose options on BrowserProviderOption (#8609)
1 parent a0cdc95 commit 0d0e5cd

File tree

6 files changed

+12
-5
lines changed

6 files changed

+12
-5
lines changed

packages/browser/src/node/providers/playwright.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,11 @@ export interface PlaywrightProviderOptions {
6767
actionTimeout?: number
6868
}
6969

70-
export function playwright(options: PlaywrightProviderOptions = {}): BrowserProviderOption {
70+
export function playwright(options: PlaywrightProviderOptions = {}): BrowserProviderOption<PlaywrightProviderOptions> {
7171
return {
7272
name: 'playwright',
7373
supportedBrowser: playwrightBrowsers,
74+
options,
7475
factory(project) {
7576
return new PlaywrightBrowserProvider(project, options)
7677
},

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type { BrowserProvider, BrowserProviderOption, TestProject } from 'vitest
33
export function preview(): BrowserProviderOption {
44
return {
55
name: 'preview',
6+
options: {},
67
factory(project) {
78
return new PreviewBrowserProvider(project)
89
},

packages/browser/src/node/providers/webdriverio.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@ interface WebdriverProviderOptions extends Partial<
2121
Parameters<typeof remote>[0]
2222
> {}
2323

24-
export function webdriverio(options: WebdriverProviderOptions = {}): BrowserProviderOption {
24+
export function webdriverio(options: WebdriverProviderOptions = {}): BrowserProviderOption<WebdriverProviderOptions> {
2525
return {
2626
name: 'webdriverio',
2727
supportedBrowser: webdriverBrowsers,
28+
options,
2829
factory(project) {
2930
return new WebdriverBrowserProvider(project, options)
3031
},

packages/browser/src/node/utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { BrowserProvider, ResolvedBrowserOptions, TestProject } from 'vitest/node'
1+
import type { BrowserProvider, BrowserProviderOption, ResolvedBrowserOptions, TestProject } from 'vitest/node'
22

33
export function replacer(code: string, values: Record<string, string>): string {
44
return code.replace(/\{\s*(\w+)\s*\}/g, (_, key) => values[key] ?? _)
@@ -27,7 +27,7 @@ export async function getBrowserProvider(
2727
if (!(name in providers)) {
2828
throw new Error(`Unknown browser provider "${name}". Available providers: ${Object.keys(providers).join(', ')}.`)
2929
}
30-
return providers[name]().factory(project)
30+
return (providers[name] as (options?: object) => BrowserProviderOption)(options.provider?.options).factory(project)
3131
}
3232
const supportedBrowsers = options.provider.supportedBrowser || []
3333
if (supportedBrowsers.length && !supportedBrowsers.includes(browser)) {

packages/vitest/src/node/config/resolveConfig.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -768,6 +768,9 @@ export function resolveConfig(
768768
else {
769769
resolved.browser.screenshotFailures ??= !isPreview && !resolved.browser.ui
770770
}
771+
if (resolved.browser.provider && resolved.browser.provider.options == null) {
772+
resolved.browser.provider.options = {}
773+
}
771774

772775
resolved.browser.api = resolveApiServerConfig(
773776
resolved.browser,

packages/vitest/src/node/types/browser.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@ export interface BrowserModuleMocker {
2121
clear: (sessionId: string) => Promise<void>
2222
}
2323

24-
export interface BrowserProviderOption {
24+
export interface BrowserProviderOption<Options extends object = object> {
2525
name: string
2626
supportedBrowser?: ReadonlyArray<string>
27+
options: Options
2728
factory: (project: TestProject) => BrowserProvider
2829
}
2930

0 commit comments

Comments
 (0)