Опции использования тестов
Введение
Помимо настройки тестового раннера, вы также можете настроить Эмуляцию, Сеть и Запись для Browser или BrowserContext. Эти опции передаются в объект use: {}
в конфигурации Playwright.
Основные опции
Установите базовый URL и состояние хранилища для всех тестов:
import { defineConfig } from '@playwright/test';
export default defineConfig({
use: {
// Базовый URL для использования в действиях, таких как `await page.goto('/')`.
baseURL: 'http://localhost:3000',
// Заполняет контекст заданным состоянием хранилища.
storageState: 'state.json',
},
});
Опция | Описание |
---|---|
testOptions.baseURL | Базовый URL, используемый для всех страниц в контексте. Позволяет навигацию, используя только путь, например page.goto('/settings') . |
testOptions.storageState | Заполняет контекст заданным состоянием хранилища. Полезно для простой аутентификации, узнать больше. |
Опции эмуляции
С помощью Playwright вы можете эмулировать реальное устройство, такое как мобильный телефон или планшет. Ознакомьтесь с нашим руководством по проектам для получения дополнительной информации об эмуляции устройств. Вы также можете эмулировать "геолокацию"
, "локаль"
и "часовой пояс"
для всех тестов или для конкретного теста, а также установить "разрешения"
для показа уведомлений или изменить "цветовую схему"
. Ознакомьтесь с нашим руководством по эмуляции, чтобы узнать больше.
import { defineConfig } from '@playwright/test';
export default defineConfig({
use: {
// Эмулирует медиа-функцию `'prefers-colors-scheme'`.
colorScheme: 'dark',
// Геолокация контекста.
geolocation: { longitude: 12.492507, latitude: 41.889938 },
// Эмулирует локаль пользователя.
locale: 'en-GB',
// Предоставляет указанные разрешения для контекста браузера.
permissions: ['geolocation'],
// Эмулирует часовой пояс пользователя.
timezoneId: 'Europe/Paris',
// Видовая область, используемая для всех страниц в контексте.
viewport: { width: 1280, height: 720 },
},
});
Опция | Описание |
---|---|
testOptions.colorScheme | Эмулирует медиа-функцию 'prefers-colors-scheme' , поддерживаемые значения: 'light' и 'dark' |
testOptions.geolocation | Контекст геолокации. |
testOptions.locale | Эмулирует локаль пользователя, например en-GB , de-DE и т.д. |
testOptions.permissions | Список разрешений, предоставляемых всем страницам в контексте. |
testOptions.timezoneId | Изменяет часовой пояс контекста. |
testOptions.viewport | Видовая область, используемая для всех страниц в контексте. |
Опции сети
Доступные опции для настройки сетевых параметров:
import { defineConfig } from '@playwright/test';
export default defineConfig({
use: {
// Автоматически загружать все вложения.
acceptDownloads: false,
// Объект, содержащий дополнительные HTTP-заголовки, отправляемые с каждым запросом.
extraHTTPHeaders: {
'X-My-Header': 'value',
},
// Учетные данные для HTTP-аутентификации.
httpCredentials: {
username: 'user',
password: 'pass',
},
// Игнорировать ли ошибки HTTPS во время навигации.
ignoreHTTPSErrors: true,
// Эмулировать ли отключение сети.
offline: true,
// Настройки прокси, используемые для всех страниц в тесте.
proxy: {
server: 'http://myproxy.com:3128',
bypass: 'localhost',
},
},
});
Опция | Описание |
---|---|
testOptions.acceptDownloads | Автоматически загружать все вложения, по умолчанию true . Узнайте больше о работе с загрузками. |
testOptions.extraHTTPHeaders | Объект, содержащий дополнительные HTTP-заголовки, отправляемые с каждым запросом. Все значения заголовков должны быть строками. |
testOptions.httpCredentials | Учетные данные для HTTP-аутентификации. |
testOptions.ignoreHTTPSErrors | Игнорировать ли ошибки HTTPS во время навигации. |
testOptions.offline | Эмулировать ли отключение сети. |
testOptions.proxy | Настройки прокси, используемые для всех страниц в тесте. |
Вам не нужно ничего настраивать для имитации сетевых запросов. Просто определите пользовательский Route, который имитирует сеть для контекста браузера. Ознакомьтесь с нашим руководством по имитации сети, чтобы узнать больше.
Опции записи
С помощью Playwright вы можете делать скриншоты, записывать видео, а также трассировки вашего теста. По умолчанию они отключены, но вы можете включить их, установив опции screenshot
, video
и trace
в вашем файле playwright.config.js
.
Файлы трассировок, скриншоты и видео будут появляться в каталоге вывода теста, обычно test-results
.
import { defineConfig } from '@playwright/test';
export default defineConfig({
use: {
// Делать скриншот после каждого сбоя теста.
screenshot: 'only-on-failure',
// Записывать трассировку только при повторной попытке теста в первый раз.
trace: 'on-first-retry',
// Записывать видео только при повторной попытке теста в первый раз.
video: 'on-first-retry'
},
});
Опция | Описание |
---|---|
testOptions.screenshot | Делать скриншоты вашего теста. Опции включают 'off' , 'on' и 'only-on-failure' |
testOptions.trace | Playwright может создавать трассировки тестов во время их выполнения. Позже вы можете просмотреть трассировку и получить подробную информацию о выполнении Playwright, открыв Trace Viewer. Опции включают: 'off' , 'on' , 'retain-on-failure' и 'on-first-retry' |
testOptions.video | Playwright может записывать видео для ваших тестов. Опции включают: 'off' , 'on' , 'retain-on-failure' и 'on-first-retry' |
Другие опции
import { defineConfig } from '@playwright/test';
export default defineConfig({
use: {
// Максимальное время, которое может занять каждое действие, такое как `click()`. По умолчанию 0 (без ограничений).
actionTimeout: 0,
// Название браузера, который выполняет тесты. Например, `chromium`, `firefox`, `webkit`.
browserName: 'chromium',
// Переключает обход Content-Security-Policy.
bypassCSP: true,
// Канал для использования, например "chrome", "chrome-beta", "msedge", "msedge-beta".
channel: 'chrome',
// Запускать браузер в безголовом режиме.
headless: false,
// Изменяет атрибут data-testid по умолчанию.
testIdAttribute: 'pw-test-id',
},
});
Опция | Описание |
---|---|
testOptions.actionTimeout | Тайм-аут для каждого действия Playwright в миллисекундах. По умолчанию 0 (без тайм-аута). Узнайте больше о тайм-аутах и как установить их для одного теста. |
testOptions.browserName | Название браузера, который выполняет тесты. По умолчанию 'chromium'. Опции включают chromium , firefox или webkit . |
testOptions.bypassCSP | Переключает обход Content-Security-Policy. Полезно, когда CSP включает производственное происхождение. По умолчанию false . |
testOptions.channel | Канал браузера для использования. Узнайте больше о различных браузерах и каналах. |
testOptions.headless | Запускать ли браузер в безголовом режиме, что означает, что браузер не отображается при выполнении тестов. По умолчанию true . |
testOptions.testIdAttribute | Изменяет атрибут data-testid , используемый локаторами Playwright. |
Дополнительные опции браузера и контекста
Любые опции, принимаемые browserType.launch() или browser.newContext(), могут быть помещены в launchOptions
или contextOptions
соответственно в разделе use
.
import { defineConfig } from '@playwright/test';
export default defineConfig({
use: {
launchOptions: {
slowMo: 50,
},
},
});
Однако наиболее распространенные, такие как headless
или viewport
, доступны непосредственно в разделе use
- см. основные опции, эмуляция или сеть.
Явное создание контекста и наследование опций
Если используется встроенный фикстура browser
, вызов browser.newContext() создаст контекст с опциями, унаследованными из конфигурации:
import { defineConfig } from '@playwright/test';
export default defineConfig({
use: {
userAgent: 'some custom ua',
viewport: { width: 100, height: 100 },
},
});
Пример теста, иллюстрирующий, что начальные опции контекста установлены:
test('should inherit use options on context when using built-in browser fixture', async ({
browser,
}) => {
const context = await browser.newContext();
const page = await context.newPage();
expect(await page.evaluate(() => navigator.userAgent)).toBe('some custom ua');
expect(await page.evaluate(() => window.innerWidth)).toBe(100);
await context.close();
});
Области конфигурации
Вы можете настроить Playwright глобально, для каждого проекта или для каждого теста. Например, вы можете установить локаль, которая будет использоваться глобально, добавив locale
в опцию use
конфигурации Playwright, а затем переопределить ее для конкретного проекта, используя опцию project
в конфигурации. Вы также можете переопределить ее для конкретного теста, добавив test.use({})
в файл теста и передав опции.
import { defineConfig } from '@playwright/test';
export default defineConfig({
use: {
locale: 'en-GB'
},
});
Вы можете переопределить опции для конкретного проекта, используя опцию project
в конфигурации Playwright.
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
projects: [
{
name: 'chromium',
use: {
...devices['Desktop Chrome'],
locale: 'de-DE',
},
},
],
});
Вы можете переопределить опции для конкретного файла теста, используя метод test.use()
и передав опции. Например, чтобы запустить тесты с французской локалью для конкретного теста:
import { test, expect } from '@playwright/test';
test.use({ locale: 'fr-FR' });
test('example', async ({ page }) => {
// ...
});
То же самое работает внутри блока describe. Например, чтобы запустить тесты в блоке describe с французской локалью:
import { test, expect } from '@playwright/test';
test.describe('french language block', () => {
test.use({ locale: 'fr-FR' });
test('example', async ({ page }) => {
// ...
});
});