Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/vitest-dev/vitest. Next generation testing framework powered by Vite. vitest.dev
test testing-tools vite
Something went wrong. Try again.
2.4 kB · 71 lines
TypeScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172import type { SelectorOptions } from 'vitest/browser'import type { BrowserProvider, BrowserProviderOption, TestProject } from 'vitest/node'import { defineBrowserProvider } from '@vitest/browser'import { resolve } from 'pathe'import { distRoot } from './constants'
export function preview(): BrowserProviderOption { return defineBrowserProvider({ name: 'preview', providerFactory(project) { return new PreviewBrowserProvider(project) }, })}
export class PreviewBrowserProvider implements BrowserProvider { public name = 'preview' as const public supportsParallelism: boolean = false private project!: TestProject private open = false
public distRoot: string = distRoot
public initScripts: string[] = [resolve(distRoot, 'locators.js')]
constructor(project: TestProject) { this.project = project this.open = false if (project.config.browser.headless) { throw new Error( 'You\'ve enabled headless mode for "preview" provider but it doesn\'t support it. Use "playwright" or "webdriverio" instead: https://vitest.dev/guide/browser/#configuration', ) } }
isOpen(): boolean { return this.open }
getCommandsContext() { return {} }
async openPage(_sessionId: string, url: string): Promise<void> { this.open = true this.project.vitest.logger.log(`Browser runner started at ${url}\n`) if (!this.project.browser) { throw new Error('Browser is not initialized') } const options = this.project.browser.vite.config.server const _open = options.open options.open = url this.project.browser.vite.openBrowser() options.open = _open }
async close(): Promise<void> {}}
declare module 'vitest/browser' { export interface UserEventClickOptions extends SelectorOptions {} export interface UserEventHoverOptions extends SelectorOptions {} export interface UserEventFillOptions extends SelectorOptions {} export interface UserEventSelectOptions extends SelectorOptions {} export interface UserEventClearOptions extends SelectorOptions {} export interface UserEventDoubleClickOptions extends SelectorOptions {} export interface UserEventTripleClickOptions extends SelectorOptions {} export interface UserEventUploadOptions extends SelectorOptions {} export interface UserEventWheelBaseOptions extends SelectorOptions {} export interface LocatorScreenshotOptions extends SelectorOptions {}}