Spec-Zone.ru › Playwright

TestConfig

Playwright Test предоставляет множество параметров для настройки сбора и выполнения тестов, например timeout или testDir. Эти параметры описаны в объекте TestConfig в файле конфигурации. Этот тип описывает формат файла конфигурации. Чтобы получить разрешённые параметры конфигурации во время выполнения, используйте FullConfig.

Playwright Test поддерживает одновременный запуск нескольких проектов тестирования. Параметры, относящиеся к конкретному проекту, следует указывать в testConfig.projects, но объект верхнего уровня TestConfig также может определять базовые параметры, общие для всех проектов.

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

export default defineConfig({
  timeout: 30000,
  globalTimeout: 600000,
  reporter: 'list',
  testDir: './tests',
});

Свойства​

build​

Конфигурация транспилятора Playwright.

Использование

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

export default defineConfig({
  build: {
    external: ['**/*bundle.js'],
  },
});

Тип

  • Object
    • external Array<string> (необязательно)

      Список путей, исключаемых из транспиляции, заданный в виде списка шаблонов glob. Обычно здесь указывают крупные JS-сборки, которые использует тест.

captureGitInfo​

Эти параметры определяют, будет ли собираться и сохраняться информация Git в конфигурации testConfig.metadata.

Использование

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

export default defineConfig({
  captureGitInfo: { commit: true, diff: true }
});

Тип

  • Object
    • commit boolean (необязательно)

      Собирать ли информацию о коммите и pull request, такую как хеш, автор и временная метка.

    • diff boolean (необязательно)

      Собирать ли diff коммита.

Подробности

  • Сбор информации commit полезен, если вы хотите видеть её в HTML-отчёте (или отчёте стороннего инструмента).
  • Сбор информации diff полезен для дополнения отчёта фактическим diff исходного кода. Эта информация может использоваться для предоставления рекомендаций по исправлению теста.
примечание

Значения этих параметров по умолчанию зависят от среды. Когда тесты запускаются в CI, где безопасно получать информацию Git, значение по умолчанию — true, в противном случае — false.

примечание

Структура метаданных коммита Git может измениться.

expect​

Конфигурация библиотеки проверок expect. Подробнее о различных тайм-аутах.

Использование

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

export default defineConfig({
  expect: {
    timeout: 10000,
    toMatchSnapshot: {
      maxDiffPixels: 10,
    },
  },
});

Тип

  • Object
    • timeout number (необязательно)

      Тайм-аут по умолчанию для асинхронных проверок expect в миллисекундах; по умолчанию — 5000 мс.

    • toHaveScreenshot Object (необязательно)

      • animations "allow" | "disabled" (необязательно)

        См. animations в page.screenshot(). По умолчанию — "disabled".

      • caret "hide" | "initial" (необязательно)

        См. caret в page.screenshot(). По умолчанию — "hide".

      • maxDiffPixels number (необязательно)

        Допустимое количество отличающихся пикселей; по умолчанию не задано.

      • maxDiffPixelRatio number (необязательно)

        Допустимое отношение количества отличающихся пикселей к общему количеству пикселей, от 0 до 1; по умолчанию не задано.

      • scale "css" | "device" (необязательно)

        См. scale в page.screenshot(). По умолчанию — "css".

      • stylePath string | Array<string> (необязательно)

        См. style в page.screenshot().

      • threshold number (необязательно)

        Допустимая воспринимаемая разница цветов одного и того же пикселя на сравниваемых изображениях — от 0 (строгая) до 1 (мягкая). Компаратор "pixelmatch" вычисляет разницу цветов в цветовом пространстве YIQ и по умолчанию присваивает параметру threshold значение 0.2.

      • pathTemplate string (необязательно)

        Шаблон, определяющий расположение снимков экрана. Подробности см. в testConfig.snapshotPathTemplate.

      Конфигурация метода expect(page).toHaveScreenshot().

    • toMatchAriaSnapshot Object (необязательно)

      • pathTemplate string (необязательно)

        Шаблон, определяющий расположение снимков accessibility-дерева. Подробности см. в testConfig.snapshotPathTemplate.

      • children "contain" | "equal" | "deep-equal" (необязательно)

        Определяет, как сопоставляются дочерние элементы корня снимка с фактическим деревом доступности. Это эквивалентно добавлению свойства /children в начало каждого шаблона снимка aria. Отдельные снимки могут переопределить это значение, указав свойство /children.

      Конфигурация метода expect(locator).toMatchAriaSnapshot().

    • toMatchSnapshot Object (необязательно)

      • maxDiffPixels number (необязательно)

        Допустимое количество отличающихся пикселей; по умолчанию не задано.

      • maxDiffPixelRatio number (необязательно)

        Допустимое отношение количества отличающихся пикселей к общему количеству пикселей, от 0 до 1; по умолчанию не задано.

      • threshold number (необязательно)

        Допустимая воспринимаемая разница цветов одного и того же пикселя на сравниваемых изображениях — от 0 (строгая) до 1 (мягкая). Компаратор "pixelmatch" вычисляет разницу цветов в цветовом пространстве YIQ и по умолчанию присваивает параметру threshold значение 0.2.

      Конфигурация метода expect(value).toMatchSnapshot().

    • toPass Object (необязательно)

      • intervals Array<number> (необязательно)

        Интервалы проверки метода toPass в миллисекундах.

      • timeout number (необязательно)

        Тайм-аут метода toPass в миллисекундах.

      Конфигурация метода expect(value).toPass().

failOnFlakyTests​

Завершать ли работу с ошибкой, если какие-либо тесты помечены как нестабильные. Полезно в CI.

Также доступно в командной строке с параметром --fail-on-flaky-tests.

Использование

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

export default defineConfig({
  failOnFlakyTests: !!process.env.CI,
});

Тип

  • boolean

forbidOnly​

Завершать ли работу с ошибкой, если какие-либо тесты или группы помечены как test.only() или test.describe.only(). Полезно в CI.

Использование

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

export default defineConfig({
  forbidOnly: !!process.env.CI,
});

Тип

  • boolean

fullyParallel​

Playwright Test запускает тесты параллельно. Для этого он запускает несколько рабочих процессов, работающих одновременно. По умолчанию параллельно выполняются файлы тестов. Тесты в одном файле выполняются по порядку в одном рабочем процессе.

С помощью этого параметра можно настроить одновременное выполнение всех тестов во всех файлах.

Использование

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

export default defineConfig({
  fullyParallel: true,
});

Тип

  • boolean

globalSetup​

Путь к файлу глобальной настройки. Этот файл будет подключён и выполнен до запуска всех тестов. Он должен экспортировать одну функцию, принимающую аргумент FullConfig. Чтобы указать несколько файлов глобальной настройки, передайте массив путей.

Подробнее о глобальной настройке и очистке.

Использование

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

export default defineConfig({
  globalSetup: './global-setup',
});

Тип

  • string | Array<string>

globalTeardown​

Путь к файлу глобальной очистки. Этот файл будет подключён и выполнен после всех тестов. Он должен экспортировать одну функцию. См. также testConfig.globalSetup. Чтобы указать несколько файлов глобальной очистки, передайте массив путей.

Подробнее о глобальной настройке и очистке.

Использование

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

export default defineConfig({
  globalTeardown: './global-teardown',
});

Тип

  • string | Array<string>

globalTimeout​

Максимальное время в миллисекундах, в течение которого может выполняться весь набор тестов. Нулевой тайм-аут (значение по умолчанию) отключает это ограничение. Полезно в CI, чтобы неисправная настройка не выполнялась слишком долго и не расходовала ресурсы. Подробнее о различных тайм-аутах.

Использование

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

export default defineConfig({
  globalTimeout: process.env.CI ? 60 * 60 * 1000 : undefined,
});

Тип

  • number

grep​

Фильтр для запуска только тестов, заголовки которых соответствуют одному из шаблонов. Например, grep: /cart/ запустит только тесты, в заголовках которых есть "cart". Также доступно в командной строке с параметром -g. Регулярное выражение проверяется по строке, состоящей из имени проекта, имени файла теста, имени test.describe (если есть), имени теста и тегов теста, разделённых пробелами, например chromium my-test.spec.ts my-suite my-test.

Параметр grep также полезен для добавления тегов к тестам.

Использование

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

export default defineConfig({
  grep: /smoke/,
});

Тип

  • RegExp | Array<RegExp>

grepInvert​

Фильтр для запуска только тестов, заголовки которых не соответствуют ни одному из шаблонов. Это противоположность testConfig.grep. Также доступно в командной строке с параметром --grep-invert.

Параметр grepInvert также полезен для добавления тегов к тестам.

Использование

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

export default defineConfig({
  grepInvert: /manual/,
});

Тип

  • RegExp | Array<RegExp>

ignoreSnapshots​

Пропускать ли проверки снимков, например expect(value).toMatchSnapshot() и await expect(page).toHaveScreenshot().

Использование

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

export default defineConfig({
  ignoreSnapshots: !process.env.CI,
});

Тип

  • boolean

maxFailures​

Максимальное количество ошибок тестирования за весь запуск набора тестов. После достижения этого числа тестирование прекратится и завершится с ошибкой. Значение ноль (по умолчанию) отключает это поведение.

Также доступно в командной строке с параметрами --max-failures и -x.

Использование

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

export default defineConfig({
  maxFailures: process.env.CI ? 1 : 0,
});

Тип

  • number

metadata​

Метаданные содержат пары ключ-значение, которые включаются в отчёт. Например, JSON-отчёт будет содержать метаданные в формате JSON.

Использование

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

export default defineConfig({
  metadata: { title: 'acceptance tests' },
});

Тип

  • Metadata

name​

Имя конфигурации отображается в отчёте и во время выполнения тестов, если оно не переопределено с помощью testProject.name.

Использование

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

export default defineConfig({
  name: 'acceptance tests',
});

Тип

  • string

outputDir​

Каталог для файлов, создаваемых во время выполнения тестов. По умолчанию — <package.json-directory>/test-results.

Использование

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

export default defineConfig({
  outputDir: './test-results',
});

Тип

  • string

Подробности

Этот каталог очищается при запуске. При запуске теста внутри testConfig.outputDir создаётся уникальный подкаталог, что гарантирует отсутствие конфликтов между параллельно выполняющимися тестами. К этому каталогу можно обратиться через testInfo.outputDir и testInfo.outputPath().

Ниже приведён пример использования testInfo.outputPath() для создания временного файла.

import { test, expect } from '@playwright/test';
import fs from 'fs';

test('example test', async ({}, testInfo) => {
  const file = testInfo.outputPath('temporary-file.txt');
  await fs.promises.writeFile(file, 'Put some data to the file', 'utf8');
});

preserveOutput​

Сохранять ли вывод тестов в testConfig.outputDir. По умолчанию — 'always'.

  • 'always' — сохранять вывод всех тестов;
  • 'never' — не сохранять вывод ни одного теста;
  • 'failures-only' — сохранять вывод только неудачных тестов.

Использование

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

export default defineConfig({
  preserveOutput: 'always',
});

Тип

  • "always" | "never" | "failures-only"

projects​

Playwright Test поддерживает одновременный запуск нескольких проектов тестирования. Подробнее см. в разделе TestProject.

Использование

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

export default defineConfig({
  projects: [
    { name: 'chromium', use: devices['Desktop Chrome'] }
  ]
});

Тип

  • Array<TestProject>

quiet​

Подавлять ли вывод stdout и stderr тестов.

Использование

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

export default defineConfig({
  quiet: !!process.env.CI,
});

Тип

  • boolean

repeatEach​

Количество повторных запусков каждого теста; полезно для отладки нестабильных тестов.

Использование

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

export default defineConfig({
  repeatEach: 3,
});

Тип

  • number

reportSlowTests​

Создавать ли отчёт о медленных файлах тестов. Передайте null, чтобы отключить эту функцию.

Использование

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

export default defineConfig({
  reportSlowTests: null,
});

Тип

  • null | Object
    • max number

      Максимальное количество медленных файлов тестов в отчёте. По умолчанию — 5.

    • threshold number

      Продолжительность выполнения файла теста в миллисекундах, при превышении которой он считается медленным. По умолчанию — 5 минут.

Подробности

Файлы тестов, выполнение которых заняло более threshold миллисекунд, считаются медленными; в отчёт включаются самые медленные из них, но не более max. Если для max передать ноль, в отчёт попадут все файлы тестов, превысившие порог.

reporter​

Список используемых репортёров. Каждый репортёр может быть:

  • Встроенным репортёром, например 'list' или 'json'.
  • Именем модуля, например 'my-awesome-reporter'.
  • Относительным путём к репортёру, например './reporters/my-awesome-reporter.js'.

Параметры репортёра можно передать в виде кортежа, например ['json', { outputFile: './report.json' }]. Если свойство не указано, Playwright использует репортёр 'dot', когда задана переменная среды CI, и репортёр 'list' в противном случае.

Подробнее см. в руководстве по репортёрам.

Использование

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

export default defineConfig({
  reporter: 'line',
});

Тип

  • string | Array<Object> | "list" | "dot" | "line" | "github" | "json" | "junit" | "null" | "html" | "perfetto"
    • 0 string

      Имя репортёра, имя модуля или путь к файлу

    • 1 Object

      Объект с параметрами репортёра, если они есть

respectGitIgnore​

Пропускать ли записи из .gitignore при поиске файлов тестов. По умолчанию, если явно не заданы ни testConfig.testDir, ни testProject.testDir, Playwright будет игнорировать все файлы тестов, соответствующие записям .gitignore.

Использование

testConfig.respectGitIgnore

Тип

  • boolean

retries​

Максимальное количество повторных попыток для неудачных тестов. По умолчанию неудачные тесты не повторяются. Подробнее о повторных запусках тестов.

Использование

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

export default defineConfig({
  retries: 2,
});

Тип

  • number

retryStrategy​

Определяет, когда повторяются неудачные тесты. По умолчанию — 'immediate'.

  • 'immediate' — Неудачный тест повторно запускается, как только становится доступен рабочий процесс, вперемежку с остальными тестами запуска. Это значение используется по умолчанию.
  • 'isolated' — Повторные запуски выполняются в конце, после завершения всех остальных тестов, по одному в одном рабочем процессе. Это сводит к минимуму взаимное влияние повторно запускаемых тестов и остальной части набора, но увеличивает общее время выполнения.

Подробнее о повторном запуске тестов.

Использование

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

export default defineConfig({
  retries: 2,
  retryStrategy: 'isolated',
});

Тип

  • "immediate" | "isolated"

shard​

Разбейте тесты на группы и выполните только выбранную группу. Укажите значение в формате с нумерацией от единицы, например { total: 5, current: 2 }.

Узнайте больше о параллельном выполнении и разбиении на группы в Playwright Test.

Использование

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

export default defineConfig({
  shard: { total: 10, current: 3 },
});

Тип

  • null | Object
    • current number

      Индекс выполняемой группы, начиная с единицы.

    • total number

      Общее количество групп.

snapshotPathTemplate​

Этот параметр задаёт шаблон, определяющий расположение снимков, создаваемых с помощью expect(page).toHaveScreenshot(), expect(locator).toMatchAriaSnapshot() и expect(value).toMatchSnapshot().

Шаблоны для каждого утверждения можно настроить отдельно в testConfig.expect.

Использование

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

export default defineConfig({
  testDir: './tests',

  // Single template for all assertions
  snapshotPathTemplate: '{testDir}/__screenshots__/{testFilePath}/{arg}{ext}',

  // Assertion-specific templates
  expect: {
    toHaveScreenshot: {
      pathTemplate: '{testDir}/__screenshots__{/projectName}/{testFilePath}/{arg}{ext}',
    },
    toMatchAriaSnapshot: {
      pathTemplate: '{testDir}/__snapshots__/{testFilePath}/{arg}{ext}',
    },
  },
});

Тип

  • string

Подробности

Значение может содержать «токены», которые во время выполнения теста заменяются фактическими значениями.

Рассмотрим следующую структуру файлов:

playwright.config.ts
tests/
└── page/
    └── page-click.spec.ts

И следующий page-click.spec.ts, использующий вызов toHaveScreenshot():

import { test, expect } from '@playwright/test';

test.describe('suite', () => {
  test('test should work', async ({ page }) => {
    await expect(page).toHaveScreenshot(['foo', 'bar', 'baz.png']);
  });
});

Список поддерживаемых токенов:

  • {arg} — относительный путь к снимку без расширения. Он задаётся аргументами, переданными в toHaveScreenshot(), toMatchAriaSnapshot() или toMatchSnapshot(); если вызов выполнен без аргументов, используется автоматически сгенерированное имя снимка.
    • Значение: foo/bar/baz
  • {ext} — расширение снимка (с начальной точкой).
    • Значение: .png
  • {platform} — значение process.platform.
  • {projectName} — имя проекта, очищенное для использования в файловой системе, если оно задано.
    • Значение: '' (пустая строка).
  • {snapshotDir} — значение testProject.snapshotDir проекта.
    • Значение: /home/playwright/tests (поскольку snapshotDir не задано в конфигурации, по умолчанию используется testDir)
  • {testDir} — значение testProject.testDir проекта.
    • Значение: /home/playwright/tests (абсолютный путь, так как testDir разрешается относительно каталога с файлом конфигурации)
  • {testFileDir} — каталоги в относительном пути от testDir до файла теста.
    • Значение: page
  • {testFileBaseName} — имя файла теста без последнего расширения.
    • Значение: page-click.spec
  • {testFileName} — имя файла теста с расширением.
    • Значение: page-click.spec.ts
  • {testFilePath} — относительный путь от testDir до файла теста.
    • Значение: page/page-click.spec.ts
  • {testName} — заголовок теста, очищенный для использования в файловой системе, включая описания родительских групп, но без имени файла.
    • Значение: suite-test-should-work

Перед каждым токеном можно указать один символ, который будет использоваться только если значение этого токена не пустое.

Рассмотрим следующую конфигурацию:

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

export default defineConfig({
  snapshotPathTemplate: '__screenshots__{/projectName}/{testFilePath}/{arg}{ext}',
  testMatch: 'example.spec.ts',
  projects: [
    { use: { browserName: 'firefox' } },
    { name: 'chromium', use: { browserName: 'chromium' } },
  ],
});

В этой конфигурации:

  1. У первого проекта нет имени, поэтому его снимки будут храниться в <configDir>/__screenshots__/example.spec.ts/....
  2. У второго проекта есть имя, поэтому его снимки будут храниться в <configDir>/__screenshots__/chromium/example.spec.ts/...
  3. Поскольку snapshotPathTemplate разрешается в относительный путь, он будет разрешён относительно configDir.
  4. В качестве разделителей пути на любой платформе можно использовать косые черты "/".

tag​

Тег или теги, добавляемые перед каждым тестом в отчёте. Полезно помечать запуск тестов, чтобы различать среды CI.

Обратите внимание: каждый тег должен начинаться с символа @. Подробнее о добавлении тегов.

Использование

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

export default defineConfig({
  tag: process.env.CI_ENVIRONMENT_NAME,  // for example "@APIv2"
});

Тип

  • string | Array<string>

testDir​

Каталог, в котором рекурсивно выполняется поиск файлов тестов. По умолчанию используется каталог файла конфигурации.

Использование

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

export default defineConfig({
  testDir: './tests/playwright',
});

Тип

  • string

testIgnore​

Файлы, соответствующие одному из этих шаблонов, не запускаются как файлы тестов. Сопоставление выполняется по абсолютному пути к файлу. Строки рассматриваются как шаблоны glob.

Например, '**/test-assets/**' исключит любые файлы из каталога test-assets.

Использование

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

export default defineConfig({
  testIgnore: '**/test-assets/**',
});

Тип

  • string | RegExp | Array<string | RegExp>

testMatch​

Как файлы тестов запускаются только файлы, соответствующие одному из этих шаблонов. Сопоставление выполняется по абсолютному пути к файлу. Строки рассматриваются как шаблоны glob.

По умолчанию Playwright ищет файлы, соответствующие следующему шаблону glob: **/*.@(spec|test).?(c|m)[jt]s?(x). Это означает файлы JavaScript или TypeScript с суффиксом ".test" или ".spec", например login-screen.wrong-credentials.spec.ts.

Использование

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

export default defineConfig({
  testMatch: /.*\.e2e\.js/,
});

Тип

  • string | RegExp | Array<string | RegExp>

timeout​

Тайм-аут для каждого теста в миллисекундах. По умолчанию — 30 секунд.

Это базовый тайм-аут для всех тестов. Кроме того, для каждого теста можно задать собственный тайм-аут с помощью test.setTimeout(). Подробнее о различных тайм-аутах.

Использование

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

export default defineConfig({
  timeout: 5 * 60 * 1000,
});

Тип

  • number

tsconfig​

Путь к единому файлу tsconfig, применяемому ко всем импортированным файлам. По умолчанию для каждого импортированного файла отдельно ищется файл tsconfig. Обратите внимание: свойство tsconfig не действует, пока загружается файл конфигурации или любая из его зависимостей. Игнорируется, если указан параметр командной строки --tsconfig.

Использование

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

export default defineConfig({
  tsconfig: './tsconfig.test.json',
});

Тип

  • string

updateSnapshots​

Следует ли обновлять ожидаемые снимки, используя фактические результаты запуска тестов. По умолчанию — 'missing'.

  • 'all' — все выполняемые тесты обновляют снимки.
  • 'changed' — все выполняемые тесты обновляют снимки, которые не совпали. Совпавшие снимки не обновляются. Также создаются отсутствующие снимки.
  • 'missing' — создаются отсутствующие снимки, например при написании нового теста и его первом запуске. Это значение используется по умолчанию.
  • 'none' — снимки не обновляются.

Подробнее о снимках.

Использование

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

export default defineConfig({
  updateSnapshots: 'missing',
});

Тип

  • "all" | "changed" | "missing" | "none"

updateSourceMethod​

Определяет способ обновления снимков в исходном коде.

  • 'patch' — создаёт файл с унифицированным diff, который можно использовать для последующего обновления исходного кода. Это значение используется по умолчанию.
  • '3way' — добавляет в исходный код маркеры конфликта слияния. Это позволяет пользователю вручную выбрать нужные изменения, как при разрешении конфликта слияния в IDE.
  • 'overwrite' — перезаписывает исходный код новыми значениями снимков.

Использование

testConfig.updateSourceMethod

Тип

  • "overwrite" | "3way" | "patch"

use​

Глобальные параметры для всех тестов, например testOptions.browserName. Подробнее о конфигурации и см. доступные параметры.

Использование

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

export default defineConfig({
  use: {
    browserName: 'chromium',
  },
});

Тип

  • TestOptions

webServer​

Запускает один или несколько веб-серверов разработки на время выполнения тестов.

Использование

import { defineConfig } from '@playwright/test';
export default defineConfig({
  webServer: {
    command: 'npm run start',
    url: 'http://localhost:3000',
    timeout: 120 * 1000,
    reuseExistingServer: !process.env.CI,
  },
  use: {
    baseURL: 'http://localhost:3000/',
  },
});

Теперь для навигации по странице можно использовать относительный путь:

import { test } from '@playwright/test';

test('test', async ({ page }) => {
  // This will result in http://localhost:3000/foo
  await page.goto('/foo');
});

Можно запустить несколько веб-серверов (или фоновых процессов):

import { defineConfig } from '@playwright/test';
export default defineConfig({
  webServer: [
    {
      command: 'npm run start',
      url: 'http://localhost:3000',
      name: 'Frontend',
      timeout: 120 * 1000,
      reuseExistingServer: !process.env.CI,
    },
    {
      command: 'npm run backend',
      url: 'http://localhost:3333',
      name: 'Backend',
      timeout: 120 * 1000,
      reuseExistingServer: !process.env.CI,
    }
  ],
  use: {
    baseURL: 'http://localhost:3000',
  },
});

Если веб-сервер работает на портах, которые могут меняться, используйте wait, чтобы получить номер порта:

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

export default defineConfig({
  webServer: {
    command: 'npm run start',
    wait: {
      stdout: /Listening on port (?<my_server_port>\d+)/
    },
  },
});
import { test, expect } from '@playwright/test';

test.use({ baseUrl: `http://localhost:${process.env.MY_SERVER_PORT ?? 3000}` });

test('homepage', async ({ page }) => {
  await page.goto('/');
});

Тип

  • Object | Array<Object>
    • command string

      Команда оболочки для запуска. Например, npm run start..

    • cwd string (необязательно)

      Рабочий каталог запущенного процесса; по умолчанию используется каталог файла конфигурации.

    • env Object<string, string> (необязательно)

      Переменные среды, задаваемые для команды; по умолчанию process.env.

    • gracefulShutdown Object (необязательно)

      • signal "SIGINT" | "SIGTERM"

      • timeout number

      Способ завершения процесса. Если не задан, группа процессов принудительно получает сигнал SIGKILL. Если задано значение { signal: 'SIGTERM', timeout: 500 }, группе процессов отправляется сигнал SIGTERM, а через 500 мс — SIGKILL, если процесс не завершился. Вместо этого в качестве сигнала можно использовать SIGINT. Если тайм-аут задан как 0, сигнал SIGKILL отправлен не будет. Windows не поддерживает сигналы SIGTERM и SIGINT, поэтому в Windows этот параметр игнорируется. Обратите внимание: для остановки контейнера Docker требуется SIGTERM.

    • ignoreHTTPSErrors boolean (необязательно)

      Игнорировать ли ошибки HTTPS при получении url. По умолчанию — false.

    • name string (необязательно)

      Задаёт пользовательское имя веб-сервера. Это имя будет добавляться к сообщениям журнала. По умолчанию — [WebServer].

    • port number (необязательно)

      Порт, на котором должен быть доступен HTTP-сервер. Ожидание продолжается, пока сервер не начнёт принимать подключения. Необходимо указать port или url.

    • reuseExistingServer boolean (необязательно)

      Если значение равно true, при наличии будет повторно использоваться существующий сервер на port или url. Если на этом port или url сервер не запущен, будет выполнена команда запуска нового сервера. Если задано значение false, будет выброшена ошибка, если существующий процесс прослушивает port или url. Обычно этому параметру следует задавать значение !process.env.CI, чтобы разрешить использование локального сервера разработки при запуске тестов на локальном компьютере.

    • stderr "pipe" | "ignore" (необязательно)

      Следует ли перенаправлять stderr команды в stderr процесса или игнорировать его. По умолчанию — "pipe".

    • stdout "pipe" | "ignore" (необязательно)

      Если задано значение "pipe", stdout команды будет перенаправлен в stdout процесса. Если задано значение "ignore", stdout команды будет проигнорирован. Значение по умолчанию — "ignore".

    • wait Object (необязательно)

      • stdout RegExp (необязательно)

        Регулярное выражение, которое необходимо обнаружить в stdout вывода команды. Именованные группы захвата сохраняются в среде; например, /Listening on port (?<my_server_port>\d+)/ сохранит номер порта в process.env['MY_SERVER_PORT'].

      • stderr RegExp (необязательно)

        Регулярное выражение, которое необходимо обнаружить в stderr вывода команды. Именованные группы захвата сохраняются в среде; например, /Listening on port (?<my_server_port>\d+)/ сохранит номер порта в process.env['MY_SERVER_PORT'].

      Команда считается запущенной только после появления указанного вывода.

    • timeout number (необязательно)

      Время ожидания запуска процесса и его готовности в миллисекундах. По умолчанию — 60000.

    • url string (необязательно)

      URL HTTP-сервера, который должен возвращать код состояния 2xx, 3xx, 400, 401, 402 или 403, когда сервер готов принимать подключения. Перенаправления (коды состояния 3xx) отслеживаются, после чего проверяется новый адрес. Необходимо указать port или url.

Подробности

Если указан порт, Playwright Test будет ждать, пока он станет доступен на 127.0.0.1 или ::1, прежде чем запускать тесты. Если указан URL, Playwright Test будет ждать, пока URL не вернёт код состояния 2xx, 3xx, 400, 401, 402 или 403, прежде чем запускать тесты.

Для непрерывной интеграции можно использовать параметр reuseExistingServer: !process.env.CI, который не использует существующий сервер в CI. Чтобы видеть stdout, задайте переменную среды DEBUG=pw:webserver.

Значение port (но не url) передаётся в Playwright как testOptions.baseURL. Например, порт 8080 задаёт baseURL со значением http://localhost:8080. Если webServer задан как массив, необходимо явно настроить baseURL (даже если в массиве только один элемент).

примечание

Также рекомендуется задать в конфигурации testOptions.baseURL, чтобы тесты могли использовать относительные URL.

workers​

Максимальное количество параллельных рабочих процессов, используемых для параллельного выполнения тестов. Можно также задать в процентах от числа логических ядер ЦП, например '50%'.

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

По умолчанию используется половина числа логических ядер ЦП. Узнайте больше о параллельном выполнении и разбиении на группы в Playwright Test.

Использование

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

export default defineConfig({
  workers: 3,
});

Тип

  • number | string

Устарело​

snapshotDir​

Не рекомендуется

Используйте testConfig.snapshotPathTemplate для настройки путей к снимкам.

Базовый каталог, относительно файла конфигурации, для файлов снимков, созданных с помощью toMatchSnapshot. По умолчанию используется testConfig.testDir.

Использование

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

export default defineConfig({
  snapshotDir: './snapshots',
});

Тип

  • string

Подробности

Каталог для каждого теста доступен через testInfo.snapshotDir и testInfo.snapshotPath().

Этот путь служит базовым каталогом для каталога снимков каждого файла теста. Если задать snapshotDir равным 'snapshots', значение testInfo.snapshotDir будет разрешаться в snapshots/a.spec.js-snapshots.

© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-testconfig

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API