/
browser.ts
70 lines (60 loc) · 1.43 KB
/
browser.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import type { Awaitable } from '@vitest/utils'
import type { WorkspaceProject } from '../node/workspace'
import type { ApiConfig } from './config'
export interface BrowserProviderOptions {
browser: string
}
export interface BrowserProvider {
name: string
getSupportedBrowsers(): readonly string[]
initialize(ctx: WorkspaceProject, options: BrowserProviderOptions): Awaitable<void>
openPage(url: string): Awaitable<void>
catchError(cb: (error: Error) => Awaitable<void>): () => Awaitable<void>
close(): Awaitable<void>
}
export interface BrowserProviderModule {
new (): BrowserProvider
}
export interface BrowserConfigOptions {
/**
* if running tests in the browser should be the default
*
* @default false
*/
enabled?: boolean
/**
* Name of the browser
*/
name: string
/**
* browser provider
*
* @default 'webdriverio'
*/
provider?: 'webdriverio' | 'playwright' | (string & {})
/**
* enable headless mode
*
* @default process.env.CI
*/
headless?: boolean
/**
* Serve API options.
*
* The default port is 63315.
*/
api?: ApiConfig | number
/**
* Update ESM imports so they can be spied/stubbed with vi.spyOn.
* Enabled by default when running in browser.
*
* @default true
* @experimental
*/
slowHijackESM?: boolean
}
export interface ResolvedBrowserOptions extends BrowserConfigOptions {
enabled: boolean
headless: boolean
api: ApiConfig
}