mirror of
https://github.com/vitest-dev/vitest.git
synced 2025-12-08 18:26:03 +00:00
153 lines
4.8 KiB
Markdown
153 lines
4.8 KiB
Markdown
---
|
|
title: Context API | Browser Mode
|
|
---
|
|
|
|
# Context API
|
|
|
|
Vitest exposes a context module via `@vitest/browser/context` entry point. As of 2.0, it exposes a small set of utilities that might be useful to you in tests.
|
|
|
|
## `userEvent`
|
|
|
|
::: tip
|
|
The `userEvent` API is explained in detail at [Interactivity API](/guide/browser/interactivity-api).
|
|
:::
|
|
|
|
```ts
|
|
/**
|
|
* Handler for user interactions. The support is implemented by the browser provider (`playwright` or `webdriverio`).
|
|
* If used with `preview` provider, fallbacks to simulated events via `@testing-library/user-event`.
|
|
* @experimental
|
|
*/
|
|
export const userEvent: {
|
|
setup: () => UserEvent
|
|
click: (element: Element, options?: UserEventClickOptions) => Promise<void>
|
|
dblClick: (element: Element, options?: UserEventDoubleClickOptions) => Promise<void>
|
|
tripleClick: (element: Element, options?: UserEventTripleClickOptions) => Promise<void>
|
|
selectOptions: (
|
|
element: Element,
|
|
values: HTMLElement | HTMLElement[] | string | string[],
|
|
options?: UserEventSelectOptions,
|
|
) => Promise<void>
|
|
keyboard: (text: string) => Promise<void>
|
|
type: (element: Element, text: string, options?: UserEventTypeOptions) => Promise<void>
|
|
clear: (element: Element) => Promise<void>
|
|
tab: (options?: UserEventTabOptions) => Promise<void>
|
|
hover: (element: Element, options?: UserEventHoverOptions) => Promise<void>
|
|
unhover: (element: Element, options?: UserEventHoverOptions) => Promise<void>
|
|
fill: (element: Element, text: string, options?: UserEventFillOptions) => Promise<void>
|
|
dragAndDrop: (source: Element, target: Element, options?: UserEventDragAndDropOptions) => Promise<void>
|
|
}
|
|
```
|
|
|
|
## `commands`
|
|
|
|
::: tip
|
|
This API is explained in detail at [Commands API](/guide/browser/commands).
|
|
:::
|
|
|
|
```ts
|
|
/**
|
|
* Available commands for the browser.
|
|
* A shortcut to `server.commands`.
|
|
*/
|
|
export const commands: BrowserCommands
|
|
```
|
|
|
|
## `page`
|
|
|
|
The `page` export provides utilities to interact with the current `page`.
|
|
|
|
::: warning
|
|
While it exposes some utilities from Playwright's `page`, it is not the same object. Since the browser context is evaluated in the browser, your tests don't have access to Playwright's `page` because it runs on the server.
|
|
|
|
Use [Commands API](/guide/browser/commands) if you need to have access to Playwright's `page` object.
|
|
:::
|
|
|
|
```ts
|
|
export const page: {
|
|
/**
|
|
* Change the size of iframe's viewport.
|
|
*/
|
|
viewport(width: number, height: number): Promise<void>
|
|
/**
|
|
* Make a screenshot of the test iframe or a specific element.
|
|
* @returns Path to the screenshot file or path and base64.
|
|
*/
|
|
screenshot(options: Omit<ScreenshotOptions, 'base64'> & { base64: true }): Promise<{
|
|
path: string
|
|
base64: string
|
|
}>
|
|
screenshot(options?: ScreenshotOptions): Promise<string>
|
|
/**
|
|
* Extend default `page` object with custom methods.
|
|
*/
|
|
extend(methods: Partial<BrowserPage>): BrowserPage
|
|
/**
|
|
* Wrap an HTML element in a `Locator`. When querying for elements, the search will always return this element.
|
|
*/
|
|
elementLocator(element: Element): Locator
|
|
|
|
/**
|
|
* Locator APIs. See its documentation for more details.
|
|
*/
|
|
getByRole(role: ARIARole | string, options?: LocatorByRoleOptions): Locator
|
|
getByLabelText(text: string | RegExp, options?: LocatorOptions): Locator
|
|
getByTestId(text: string | RegExp): Locator
|
|
getByAltText(text: string | RegExp, options?: LocatorOptions): Locator
|
|
getByPlaceholder(text: string | RegExp, options?: LocatorOptions): Locator
|
|
getByText(text: string | RegExp, options?: LocatorOptions): Locator
|
|
getByTitle(text: string | RegExp, options?: LocatorOptions): Locator
|
|
}
|
|
```
|
|
|
|
::: tip
|
|
The `getBy*` API is explained at [Locators API](/guide/browser/locators).
|
|
:::
|
|
|
|
## `cdp`
|
|
|
|
The `cdp` export returns the current Chrome DevTools Protocol session. It is mostly useful to library authors to build tools on top of it.
|
|
|
|
::: warning
|
|
CDP session works only with `playwright` provider and only when using `chromium` browser. You can read more about it in playwright's [`CDPSession`](https://playwright.dev/docs/api/class-cdpsession) documentation.
|
|
:::
|
|
|
|
```ts
|
|
export const cdp: () => CDPSession
|
|
```
|
|
|
|
## `server`
|
|
|
|
The `server` export represents the Node.js environment where the Vitest server is running. It is mostly useful for debugging or limiting your tests based on the environment.
|
|
|
|
```ts
|
|
export const server: {
|
|
/**
|
|
* Platform the Vitest server is running on.
|
|
* The same as calling `process.platform` on the server.
|
|
*/
|
|
platform: Platform
|
|
/**
|
|
* Runtime version of the Vitest server.
|
|
* The same as calling `process.version` on the server.
|
|
*/
|
|
version: string
|
|
/**
|
|
* Name of the browser provider.
|
|
*/
|
|
provider: string
|
|
/**
|
|
* Name of the current browser.
|
|
*/
|
|
browser: string
|
|
/**
|
|
* Available commands for the browser.
|
|
*/
|
|
commands: BrowserCommands
|
|
/**
|
|
* Serialized test config.
|
|
*/
|
|
config: SerializedConfig
|
|
}
|
|
```
|