Skip to content

Commit

Permalink
chore: add docs
Browse files Browse the repository at this point in the history
  • Loading branch information
sheremet-va committed Oct 26, 2023
1 parent 3ed14be commit d294b45
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 15 deletions.
38 changes: 37 additions & 1 deletion docs/config/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -1332,7 +1332,7 @@ Path to a provider that will be used when running browser tests. Vitest provides
export interface BrowserProvider {
name: string
getSupportedBrowsers(): readonly string[]
initialize(ctx: Vitest, options: { browser: string }): Awaitable<void>
initialize(ctx: Vitest, options: { browser: string; options?: BrowserProviderOptions }): Awaitable<void>
openPage(url: string): Awaitable<void>
close(): Awaitable<void>
}
Expand All @@ -1342,6 +1342,42 @@ export interface BrowserProvider {
This is an advanced API for library authors. If you just need to run tests in a browser, use the [browser](/config/#browser) option.
:::

#### browser.providerOptions

- **Type:** `BrowserProviderOptions`
- **Version:** Since Vitest 1.0.0-beta.3

Options that will be passed down to provider when calling `provider.initialize`.

```ts
export default defineConfig({
test: {
browser: {
providerOptions: {
launch: {
devtools: true,
}
}
}
}
})
```

::: tip
To have a better type safety when using built-in providers, you can add one of these types (for provider that you are using) to your tsconfig's `compilerOptions.types` field:

```json
{
"compilerOptions": {
"types": [
"@vitest/browser/providers/webdriverio",
"@vitest/browser/providers/playwright"
]
}
}
```
:::

#### browser.slowHijackESM

- **Type:** `boolean`
Expand Down
6 changes: 2 additions & 4 deletions packages/browser/providers/playwright.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@ import type { Browser, LaunchOptions } from 'playwright'

declare module 'vitest/node' {
interface BrowserProviderOptions {
playwright?: {
launch?: LaunchOptions
page?: Parameters<Browser['newPage']>[0]
}
launch?: LaunchOptions
page?: Parameters<Browser['newPage']>[0]
}
}
4 changes: 1 addition & 3 deletions packages/browser/providers/webdriverio.d.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import type { RemoteOptions } from 'webdriverio'

declare module 'vitest/node' {
interface BrowserProviderOptions {
webdriverio?: RemoteOptions
}
interface BrowserProviderOptions extends RemoteOptions {}
}
9 changes: 6 additions & 3 deletions packages/browser/src/node/providers/playwright.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { Browser, Page } from 'playwright'
import type { BrowserProvider, BrowserProviderInitializationOptions, BrowserProviderOptions, WorkspaceProject } from 'vitest/node'
import type { Browser, LaunchOptions, Page } from 'playwright'
import type { BrowserProvider, BrowserProviderInitializationOptions, WorkspaceProject } from 'vitest/node'
import { ensurePackageInstalled } from 'vitest/node'

type Awaitable<T> = T | PromiseLike<T>
Expand All @@ -19,7 +19,10 @@ export class PlaywrightBrowserProvider implements BrowserProvider {
private browser!: PlaywrightBrowser
private ctx!: WorkspaceProject

private options?: BrowserProviderOptions['playwright']
private options?: {
launch?: LaunchOptions
page?: Parameters<Browser['newPage']>[0]
}

getSupportedBrowsers() {
return playwrightBrowsers
Expand Down
5 changes: 2 additions & 3 deletions packages/vitest/src/node/workspace.ts
Original file line number Diff line number Diff line change
Expand Up @@ -356,8 +356,7 @@ export class WorkspaceProject {
throw new Error(`[${this.getName()}] Browser name is required. Please, set \`test.browser.name\` option manually.`)
if (!supportedBrowsers.includes(browser))
throw new Error(`[${this.getName()}] Browser "${browser}" is not supported by the browser provider "${this.browserProvider.name}". Supported browsers: ${supportedBrowsers.join(', ')}.`)
const providerOptions = this.config.browser.providerOptions as any || {}
const options = providerOptions[this.browserProvider.name]
await this.browserProvider.initialize(this, { browser, options })
const providerOptions = this.config.browser.providerOptions
await this.browserProvider.initialize(this, { browser, options: providerOptions })
}
}
2 changes: 1 addition & 1 deletion packages/vitest/src/types/browser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import type { ApiConfig } from './config'

export interface BrowserProviderInitializationOptions {
browser: string
options?: unknown
options?: BrowserProviderOptions
}

export interface BrowserProvider {
Expand Down

0 comments on commit d294b45

Please sign in to comment.