mirror of
https://github.com/hanzoai/vitest.git
synced 2026-09-24 17:04:25 +00:00
53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
import type { BrowserInstanceOption } from 'vitest/node'
|
|
import { playwright } from '@vitest/browser-playwright'
|
|
import { preview } from '@vitest/browser-preview'
|
|
|
|
const providerName = (process.env.PROVIDER || 'playwright') as 'playwright' | 'preview'
|
|
|
|
const wsEndpoint = process.env.BROWSER_WS_ENDPOINT === 'true' ? 'ws://127.0.0.1:6677/' : process.env.BROWSER_WS_ENDPOINT
|
|
|
|
export const providers = {
|
|
playwright: (options?: Parameters<typeof playwright>[0]) => playwright(wsEndpoint
|
|
? {
|
|
...options,
|
|
connectOptions: {
|
|
wsEndpoint,
|
|
exposeNetwork: '<loopback>',
|
|
},
|
|
}
|
|
: options),
|
|
preview,
|
|
}
|
|
|
|
export const provider = providers[providerName]()
|
|
|
|
const playwrightInstances: BrowserInstanceOption[] = [
|
|
{ browser: 'chromium' },
|
|
{ browser: 'firefox' },
|
|
// hard to setup playwright webkit on some machines (e.g. ArchLinux)
|
|
// this allows skipping it locally by BROWSER_NO_WEBKIT=true
|
|
...(process.env.BROWSER_NO_WEBKIT ? [] : [{ browser: 'webkit' as const }]),
|
|
]
|
|
|
|
const previewInstances: BrowserInstanceOption[] = [
|
|
{ browser: 'chrome' },
|
|
{ browser: 'firefox' },
|
|
]
|
|
|
|
// use TEST_BROWSER to avoid BROWSER being selected for UI --open
|
|
const testBrowser = process.env.TEST_BROWSER ?? process.env.BROWSER
|
|
|
|
export const instances: BrowserInstanceOption[] = testBrowser
|
|
? [
|
|
{
|
|
browser: testBrowser as any,
|
|
headless:
|
|
wsEndpoint
|
|
? true
|
|
: testBrowser === 'safari' ? false : undefined,
|
|
},
|
|
]
|
|
: provider.name === 'playwright'
|
|
? playwrightInstances
|
|
: previewInstances
|