Конфигурация тестов
Введение
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.timeout | Playwright устанавливает таймаут для каждого теста, по умолчанию 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() . |