Context API
Vitest предоставляет модуль контекста через точку входа @vitest/browser/context
. Начиная с версии 2.0, он включает небольшой набор утилит, которые могут быть полезны при написании тестов.
userEvent
TIP
API userEvent
подробно объясняется в разделе Interactivity API.
/**
* Обработчик пользовательских взаимодействий. Поддержка обеспечивается провайдером браузера (`playwright` или `webdriverio`).
* При использовании с провайдером `preview` происходит откат к симулированным событиям через `@testing-library/user-event`.
* @experimental
*/
export const userEvent: {
setup: () => UserEvent;
cleanup: () => Promise<void>;
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
Этот API подробно объясняется в разделе Commands API.
/**
* Команды, доступные для браузера.
* Является сокращённой записью для `server.commands`.
*/
export const commands: BrowserCommands;
page
Экспорт page
содержит утилиты для взаимодействия с текущей страницей.
WARNING
Хотя он предоставляет некоторые утилиты из объекта page
Playwright, сам по себе он не является этим объектом. Поскольку контекст браузера выполняется в браузере, ваши тесты не имеют доступа к объекту page
Playwright, так как последний работает на сервере.
Используйте Commands API, если вам требуется доступ к объекту page
Playwright.
export const page: {
/**
* Изменяет размер области просмотра iframe.
*/
viewport(width: number, height: number): Promise<void>;
/**
* Делает скриншот тестового iframe или конкретного элемента.
* @returns Путь к файлу скриншота или объект, содержащий путь и строку base64.
*/
screenshot(
options: Omit<ScreenshotOptions, 'base64'> & { base64: true }
): Promise<{
path: string;
base64: string;
}>;
screenshot(options?: ScreenshotOptions): Promise<string>;
/**
* Расширяет объект `page` пользовательскими методами.
*/
extend(methods: Partial<BrowserPage>): BrowserPage;
/**
* Оборачивает HTML-элемент в `Locator`. При поиске элементов всегда будет возвращаться этот элемент.
*/
elementLocator(element: Element): Locator;
/**
* API для работы с локаторами. Подробности см. в документации.
*/
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
API getBy*
объясняется в разделе Locators API.
ВНИМАНИЕ 3.2.0+
Обратите внимание, что screenshot
всегда будет возвращать строку base64, если save
имеет значение false
. В этом случае path
также будет проигнорирован.
cdp
Экспорт cdp
предоставляет текущую сессию Chrome DevTools Protocol. Он в первую очередь полезен авторам библиотек для создания инструментов на его основе.
WARNING
Сессия CDP работает только с провайдером playwright
и только при использовании браузера chromium
. Дополнительную информацию можно найти в документации Playwright по CDPSession
.
export const cdp: () => CDPSession;
server
Экспорт server
предоставляет доступ к среде Node.js, в которой работает сервер Vitest. Он в первую очередь полезен для отладки или адаптации тестов к конкретной среде.
export const server: {
/**
* Платформа, на которой работает сервер Vitest.
* Эквивалентно вызову `process.platform` на сервере.
*/
platform: Platform;
/**
* Версия среды выполнения сервера Vitest.
* Эквивалентно вызову `process.version` на сервере.
*/
version: string;
/**
* Имя используемого провайдера браузера.
*/
provider: string;
/**
* Имя текущего браузера.
*/
browser: string;
/**
* Команды, доступные для браузера.
*/
commands: BrowserCommands;
/**
* Сериализованная конфигурация теста.
*/
config: SerializedConfig;
};