Fixtures
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.
Свойства
browser
Добавлено в: v1.10Экземпляр Browser разделяется между всеми тестами в одном и том же worker — это делает тестирование более эффективным. Однако каждый тест выполняется в изолированном BrowserContext и получает новое окружение.
Узнайте, как настроить браузер и посмотрите доступные параметры.
Использование
test.beforeAll(async ({ browser }) => {
const page = await browser.newPage();
// ...
});
Тип
browserName
Добавлено в: v1.10Имя браузера, в котором выполняются тесты. По умолчанию 'chromium'
. Полезно для аннотирования тестов в зависимости от браузера.
Использование
test('skip this test in Firefox', async ({ page, browserName }) => {
test.skip(browserName === 'firefox', 'Still working on it');
// ...
});
Тип
- "chromium" | "firefox" | "webkit"
context
Добавлено в: v1.10Изолированный экземпляр BrowserContext, созданный для каждого теста. Поскольку контексты изолированы друг от друга, каждый тест получает новое окружение, даже когда несколько тестов выполняются в одном Browser для максимальной эффективности.
Узнайте, как настроить контекст и посмотрите доступные параметры.
По умолчанию fixtures.page принадлежит этому контексту.
Использование
test('example test', async ({ page, context }) => {
await context.route('*external.com/*', route => route.abort());
// ...
});
Тип
page
Добавлено в: v1.10Изолированный экземпляр 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
Добавлено в: v1.10Изолированный экземпляр APIRequestContext для каждого теста.
Использование
import { test, expect } from '@playwright/test';
test('basic test', async ({ request }) => {
await request.post('/signin', {
data: {
username: 'user',
password: 'password'
}
});
// ...
});
Тип