Skip to main content

Конфигурация тестов

Введение

Playwright предлагает множество опций для настройки выполнения ваших тестов. Вы можете указать эти опции в файле конфигурации. Обратите внимание, что опции тестового раннера являются верхнеуровневыми, не помещайте их в секцию use.

Базовая конфигурация

Вот некоторые из наиболее распространенных опций конфигурации.

import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
// Ищите файлы тестов в директории "tests", относительно этого файла конфигурации.
testDir: 'tests',

// Запускайте все тесты параллельно.
fullyParallel: true,

// Прерывайте сборку на CI, если вы случайно оставили test.only в исходном коде.
forbidOnly: !!process.env.CI,

// Повторять только на CI.
retries: process.env.CI ? 2 : 0,

// Отключить параллельные тесты на CI.
workers: process.env.CI ? 1 : undefined,

// Репортер для использования
reporter: 'html',

use: {
// Базовый URL для использования в действиях, таких как `await page.goto('/')`.
baseURL: 'http://localhost:3000',

// Собирать трассировку при повторной попытке неудачного теста.
trace: 'on-first-retry',
},
// Настройте проекты для основных браузеров.
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
},
],
// Запустите ваш локальный сервер разработки перед началом тестов.
webServer: {
command: 'npm run start',
url: 'http://localhost:3000',
reuseExistingServer: !process.env.CI,
},
});
ОпцияОписание
testConfig.forbidOnlyВыходить с ошибкой, если какие-либо тесты помечены как test.only. Полезно на CI.
testConfig.fullyParallelЗапускать все тесты во всех файлах параллельно. Подробнее см. Параллелизм и Шардинг.
testConfig.projectsЗапускать тесты в нескольких конфигурациях или на нескольких браузерах
testConfig.reporterРепортер для использования. Подробнее о доступных репортерах см. в разделе Тестовые репортеры.
testConfig.retriesМаксимальное количество попыток повторного выполнения теста. Подробнее о повторных попытках см. в разделе Повторные попытки тестов.
testConfig.testDirДиректория с файлами тестов.
testConfig.useОпции с use{}
testConfig.webServerДля запуска сервера во время тестов используйте опцию webServer
testConfig.workersМаксимальное количество параллельных рабочих процессов для использования при параллелизации тестов. Также может быть установлено в процентах от логических ядер процессора, например, '50%'. Подробнее см. Параллелизм и Шардинг.

Фильтрация тестов

Фильтруйте тесты с помощью шаблонов glob или регулярных выражений.

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

export default defineConfig({
// Шаблоны glob или регулярные выражения для игнорирования файлов тестов.
testIgnore: '*test-assets',

// Шаблоны glob или регулярные выражения, которые соответствуют файлам тестов.
testMatch: '*todo-tests/*.spec.ts',
});
ОпцияОписание
testConfig.testIgnoreШаблоны glob или регулярные выражения, которые должны быть проигнорированы при поиске файлов тестов. Например, '*test-assets'
testConfig.testMatchШаблоны glob или регулярные выражения, которые соответствуют файлам тестов. Например, '*todo-tests/*.spec.ts'. По умолчанию Playwright запускает файлы .*(test|spec).(js|ts|mjs).

Расширенная конфигурация

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

export default defineConfig({
// Папка для артефактов тестов, таких как скриншоты, видео, трассировки и т.д.
outputDir: 'test-results',

// путь к файлам глобальной настройки.
globalSetup: require.resolve('./global-setup'),

// путь к файлам глобального завершения.
globalTeardown: require.resolve('./global-teardown'),

// Каждому тесту дается 30 секунд.
timeout: 30000,

});
ОпцияОписание
testConfig.globalSetupПуть к файлу глобальной настройки. Этот файл будет загружен и выполнен перед всеми тестами. Он должен экспортировать одну функцию.
testConfig.globalTeardownПуть к файлу глобального завершения. Этот файл будет загружен и выполнен после всех тестов. Он должен экспортировать одну функцию.
testConfig.outputDirПапка для артефактов тестов, таких как скриншоты, видео, трассировки и т.д.
testConfig.timeoutPlaywright устанавливает таймаут для каждого теста, по умолчанию 30 секунд. Время, затраченное на выполнение функции теста, фикстур теста и хуков beforeEach, включено в таймаут теста.

Опции Expect

Конфигурация для библиотеки утверждений expect.

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

export default defineConfig({
expect: {
// Максимальное время, которое expect() должен ждать, чтобы условие было выполнено.
timeout: 5000,

toHaveScreenshot: {
// Допустимое количество пикселей, которые могут отличаться, по умолчанию не установлено.
maxDiffPixels: 10,
},

toMatchSnapshot: {
// Допустимое соотношение пикселей, которые отличаются от
// общего количества пикселей, между 0 и 1.
maxDiffPixelRatio: 0.1,
},
},

});
ОпцияОписание
testConfig.expectВеб-первичные утверждения, такие как expect(locator).toHaveText(), имеют отдельный таймаут по умолчанию 5 секунд. Это максимальное время, которое expect() должен ждать, чтобы условие было выполнено. Узнайте больше о таймаутах тестов и expect и как установить их для одного теста.
expect(page).toHaveScreenshot()Конфигурация для метода expect(locator).toHaveScreenshot().
expect(value).toMatchSnapshot()Конфигурация для метода expect(locator).toMatchSnapshot().