Skip to main content

Опции использования тестов

Введение

Помимо настройки тестового раннера, вы также можете настроить Эмуляцию, Сеть и Запись для Browser или BrowserContext. Эти опции передаются в объект use: {} в конфигурации Playwright.

Основные опции

Установите базовый URL и состояние хранилища для всех тестов:

playwright.config.ts
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 вы можете эмулировать реальное устройство, такое как мобильный телефон или планшет. Ознакомьтесь с нашим руководством по проектам для получения дополнительной информации об эмуляции устройств. Вы также можете эмулировать "геолокацию", "локаль" и "часовой пояс" для всех тестов или для конкретного теста, а также установить "разрешения" для показа уведомлений или изменить "цветовую схему". Ознакомьтесь с нашим руководством по эмуляции, чтобы узнать больше.

playwright.config.ts
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Видовая область, используемая для всех страниц в контексте.

Опции сети

Доступные опции для настройки сетевых параметров:

playwright.config.ts
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Настройки прокси, используемые для всех страниц в тесте.
note

Вам не нужно ничего настраивать для имитации сетевых запросов. Просто определите пользовательский Route, который имитирует сеть для контекста браузера. Ознакомьтесь с нашим руководством по имитации сети, чтобы узнать больше.

Опции записи

С помощью Playwright вы можете делать скриншоты, записывать видео, а также трассировки вашего теста. По умолчанию они отключены, но вы можете включить их, установив опции screenshot, video и trace в вашем файле playwright.config.js.

Файлы трассировок, скриншоты и видео будут появляться в каталоге вывода теста, обычно test-results.

playwright.config.ts
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.tracePlaywright может создавать трассировки тестов во время их выполнения. Позже вы можете просмотреть трассировку и получить подробную информацию о выполнении Playwright, открыв Trace Viewer. Опции включают: 'off', 'on', 'retain-on-failure' и 'on-first-retry'
testOptions.videoPlaywright может записывать видео для ваших тестов. Опции включают: 'off', 'on', 'retain-on-failure' и 'on-first-retry'

Другие опции

playwright.config.ts
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.

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
use: {
launchOptions: {
slowMo: 50,
},
},
});

Однако наиболее распространенные, такие как headless или viewport, доступны непосредственно в разделе use - см. основные опции, эмуляция или сеть.

Явное создание контекста и наследование опций

Если используется встроенный фикстура browser, вызов browser.newContext() создаст контекст с опциями, унаследованными из конфигурации:

playwright.config.ts
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({}) в файл теста и передав опции.

playwright.config.ts
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 }) => {
// ...
});
});