Фикстуры
Playwright Test основан на концепции тестовых фикстур. Фикстуры используются для настройки окружения каждого теста, предоставляя ему всё необходимое и ничего лишнего.
Playwright Test анализирует объявление каждого теста, определяет набор необходимых ему фикстур и подготавливает их специально для этого теста. Значения, подготовленные фикстурами, объединяются в один объект, который передаётся в качестве первого параметра в test, хуки, аннотации и другие фикстуры.
import { test, expect } from '@playwright/test';
test('basic test', async ({ page }) => {
// ...
}); Для приведённого выше теста Playwright Test настроит фикстуру page перед запуском теста и удалит её после его завершения. Фикстура page предоставляет объект Page, доступный тесту.
Playwright Test включает перечисленные ниже встроенные фикстуры, и вы также можете добавлять собственные. Playwright Test также предоставляет параметры для настройки fixtures.browser, fixtures.context и fixtures.page.
Методы
mount
Монтирует историю компонента и возвращает Locator, указывающий на корневой элемент, в который была отрисована история. Выполняйте поиск относительно возвращённого локатора: component.getByRole('button'), а не page.getByRole('button').
История — это небольшая обёртка-компонент, которая помещает тестируемый компонент в один конкретный сценарий: жёстко заданные свойства, тестовые данные, провайдеры, записанные обратные вызовы. Истории отображаются на странице галереи, которую вы реализуете и размещаете по адресу testOptions.baseURL. Галерея предоставляет функции window.mount(params) и window.unmount(), которые отображают историю в её корневом элементе. Каждый вызов fixtures.mount() переходит по адресу testOptions.baseURL и вызывает window.mount() с идентификатором истории и свойствами, поэтому тесты полностью изолированы друг от друга.
Использование
test('click should expand', async ({ mount }) => {
const component = await mount('components/Expandable/Stateful');
await component.getByRole('button').click();
await expect(component.getByTestId('expanded')).toHaveValue('true');
}); Передайте тип истории в качестве аргумента шаблона, чтобы проверить типы свойств:
import type { WithTitle } from './Button.story';
test('renders the title', async ({ mount }) => {
const component = await mount<typeof WithTitle>('Button/WithTitle', { title: 'Hello' });
await expect(component).toContainText('Hello');
}); К возвращённому локатору добавлены два метода:
-
update(props)— повторно отображает ту же историю с новыми свойствами без повторного монтирования, сохраняя состояние компонента; -
unmount()— размонтирует историю.
Аргументы
-
storyIdstringИдентификатор истории для монтирования, определяемый страницей галереи. Обычно это путь к файлу истории и имя экспортируемой истории, например
'components/Button/Primary'. -
propsObject (необязательно)Необязательные простые сериализуемые свойства, передаваемые истории.
Возвращает
Свойства
browser
Экземпляр Browser используется совместно всеми тестами в одном рабочем процессе — это повышает эффективность тестирования. При этом каждый тест выполняется в изолированном BrowserContext и получает чистое окружение.
Узнайте, как настроить браузер, и ознакомьтесь с доступными параметрами.
Использование
test.beforeAll(async ({ browser }) => {
const page = await browser.newPage();
// ...
}); Тип
browserName
Название браузера, в котором запускаются тесты. По умолчанию — 'chromium'. Полезно для добавления аннотаций к тестам в зависимости от браузера.
Использование
test('skip this test in Firefox', async ({ page, browserName }) => {
test.skip(browserName === 'firefox', 'Still working on it');
// ...
}); Тип
- "chromium" | "firefox" | "webkit"
context
Изолированный экземпляр BrowserContext, создаваемый для каждого теста. Контексты изолированы друг от друга, поэтому каждый тест получает чистое окружение, даже если несколько тестов выполняются в одном Browser для максимальной эффективности.
Узнайте, как настроить контекст, и ознакомьтесь с доступными параметрами.
Фикстура fixtures.page по умолчанию относится к этому контексту.
Использование
test('example test', async ({ page, context }) => {
await context.route('*external.com/*', route => route.abort());
// ...
}); Тип
page
Изолированный экземпляр Page, создаваемый для каждого теста. Страницы изолированы друг от друга благодаря изоляции fixtures.context.
Это наиболее часто используемая в тестах фикстура.
Использование
import { test, expect } from '@playwright/test';
test('basic test', async ({ page }) => {
await page.goto('/signin');
await page.getByLabel('User Name').fill('user');
await page.getByLabel('Password').fill('password');
await page.getByText('Sign in').click();
// ...
}); Тип
request
Изолированный экземпляр APIRequestContext для каждого теста.
Использование
import { test, expect } from '@playwright/test';
test('basic test', async ({ request }) => {
await request.post('/signin', {
data: {
username: 'user',
password: 'password'
}
});
// ...
}); Тип
© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-fixtures