Skip to main content

TestConfig

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

Playwright Test поддерживает одновременное выполнение нескольких тестовых проектов. Опции, специфичные для проекта, должны быть помещены в testConfig.projects, но на уровне [TestConfig] также можно определить базовые опции, общие для всех проектов.

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

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

Свойства

build

Добавлено в: v1.35 testConfig.build

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

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

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

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

Тип

  • [Object]
    • external [Array]<[string]> (опционально)

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


captureGitInfo

Добавлено в: v1.51 testConfig.captureGitInfo

Эти настройки управляют тем, будет ли информация о git захвачена и сохранена в конфигурации testConfig.metadata.

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

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

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

Тип

  • [Object]
    • commit [boolean] (опционально)

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

    • diff [boolean] (опционально)

      Захватывать ли различия коммитов.

Детали

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

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

note

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


expect

Добавлено в: v1.10 testConfig.expect

Конфигурация для библиотеки утверждений expect. Узнайте больше о различных таймаутах.

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

playwright.config.ts
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] (опционально)

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

      Конфигурация для метода 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().


forbidOnly

Добавлено в: v1.10 testConfig.forbidOnly

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

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

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

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

Тип

  • [boolean]

fullyParallel

Добавлено в: v1.20 testConfig.fullyParallel

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

Вы можете настроить выполнение всех тестов во всех файлах одновременно, используя эту опцию.

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

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

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

Тип

  • [boolean]

globalSetup

Добавлено в: v1.10 testConfig.globalSetup

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

Узнайте больше о глобальной настройке и завершении.

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

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

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

Тип

  • [string] | [Array]<[string]>

globalTeardown

Добавлено в: v1.10 testConfig.globalTeardown

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

Узнайте больше о глобальной настройке и завершении.

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

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

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

Тип

  • [string] | [Array]<[string]>

globalTimeout

Добавлено в: v1.10 testConfig.globalTimeout

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

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

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

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

Тип

  • [number]

grep

Добавлено в: v1.10 testConfig.grep

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

Опция grep также полезна для тегирования тестов.

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

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

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

Тип

  • [RegExp] | [Array]<[RegExp]>

grepInvert

Добавлено в: v1.10 testConfig.grepInvert

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

Опция grepInvert также полезна для тегирования тестов.

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

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

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

Тип

  • [RegExp] | [Array]<[RegExp]>

ignoreSnapshots

Добавлено в: v1.26 testConfig.ignoreSnapshots

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

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

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

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

Тип

  • [boolean]

maxFailures

Добавлено в: v1.10 testConfig.maxFailures

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

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

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

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

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

Тип

  • [number]

metadata

Добавлено в: v1.10 testConfig.metadata

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

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

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

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

Тип

  • [Metadata]

name

Добавлено в: v1.10 testConfig.name

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

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

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

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

Тип

  • [string]

outputDir

Добавлено в: v1.10 testConfig.outputDir

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

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

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

Добавлено в: v1.10 testConfig.preserveOutput

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

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

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

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

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

Тип

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

projects

Добавлено в: v1.10 testConfig.projects

Playwright Test поддерживает одновременное выполнение нескольких тестовых проектов. См. [TestProject] для получения дополнительной информации.

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

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

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

Тип

  • [Array]<[TestProject]>

quiet

Добавлено в: v1.10 testConfig.quiet

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

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

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

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

Тип

  • [boolean]

repeatEach

Добавлено в: v1.10 testConfig.repeatEach

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

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

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

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

Тип

  • [number]

reportSlowTests

Добавлено в: v1.10 testConfig.reportSlowTests

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

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

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

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

Тип

  • [null] | [Object]
    • max [number]

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

    • threshold [number]

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

Детали

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


reporter

Добавлено в: v1.10 testConfig.reporter

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

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

Вы можете передать опции репортёру в виде кортежа, например, ['json', { outputFile: './report.json' }].

Узнайте больше в руководстве по репортёрам.

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

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

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

Тип

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

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

    • 1 [Object]

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


respectGitIgnore

Добавлено в: v1.45 testConfig.respectGitIgnore

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

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

testConfig.respectGitIgnore

Тип

  • [boolean]

retries

Добавлено в: v1.10 testConfig.retries

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

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

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

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

Тип

  • [number]

shard

Добавлено в: v1.10 testConfig.shard

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

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

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

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

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

Тип

  • [null] | [Object]
    • current [number]

      Индекс шарда для выполнения, с единичной базой.

    • total [number]

      Общее количество шардов.


snapshotPathTemplate

Добавлено в: v1.28 testConfig.snapshotPathTemplate

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

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

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

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

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

// Единый шаблон для всех утверждений
snapshotPathTemplate: '{testDir}/__screenshots__/{testFilePath}/{arg}{ext}',

// Шаблоны, специфичные для утверждений
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():

page-click.spec.ts
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
  • {testFileName} - Имя тестового файла с расширением.
    • Значение: page-click.spec.ts
  • {testFilePath} - Относительный путь от testDir до тестового файла.
    • Значение: page/page-click.spec.ts
  • {testName} - Имя теста, безопасное для файловой системы, включая родительские описания, но исключая имя файла.
    • Значение: suite-test-should-work

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

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

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

testDir

Добавлено в: v1.10 testConfig.testDir

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

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

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

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

Тип

  • [string]

testIgnore

Добавлено в: v1.10 testConfig.testIgnore

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

Например, '**/test-assets/**' будет игнорировать любые файлы в директории test-assets.

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

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

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

Тип

  • [string] | [RegExp] | [Array]<[string] | [RegExp]>

testMatch

Добавлено в: v1.10 testConfig.testMatch

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

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

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

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

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

Тип

  • [string] | [RegExp] | [Array]<[string] | [RegExp]>

timeout

Добавлено в: v1.10 testConfig.timeout

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

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

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

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

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

Тип

  • [number]

tsconfig

Добавлено в: v1.49 testConfig.tsconfig

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

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

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

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

Тип

  • [string]

updateSnapshots

Добавлено в: v1.10 testConfig.updateSnapshots

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

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

Узнайте больше о снимках.

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

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

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

Тип

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

updateSourceMethod

Добавлено в: v1.50 testConfig.updateSourceMethod

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

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

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

testConfig.updateSourceMethod

Тип

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

use

Добавлено в: v1.10 testConfig.use

Глобальные опции для всех тестов, например, testOptions.browserName. Узнайте больше о конфигурации и смотрите [доступные опции][TestOptions].

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

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

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

Тип

  • [TestOptions]

webServer

Добавлено в: v1.10 testConfig.webServer

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

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

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

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

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

test('test', async ({ page }) => {
// Это приведёт к http://localhost:3000/foo
await page.goto('/foo');
});

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

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

Тип

  • [Object] | [Array]<[Object]>
    • command [string]

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

    • cwd [string] (опционально)

      Текущая рабочая директория порождённого процесса, по умолчанию директория файла конфигурации.

    • env [Object]<[string], [string]> (опционально)

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

    • ignoreHTTPSErrors [boolean] (опционально)

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

    • port [number] (опционально)

      Порт, на котором ожидается появление вашего http-сервера. Он ждёт, пока не начнёт принимать соединения. Должен быть указан либо port, либо url.

    • reuseExistingServer [boolean] (опционально)

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

    • stdout "pipe" | "ignore" (опционально)

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

    • stderr "pipe" | "ignore" (опционально)

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

    • timeout [number] (опционально)

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

    • gracefulShutdown [Object] (опционально)

      • signal "SIGINT" | "SIGTERM"

      • timeout [number]

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

    • 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 (даже если он содержит только одну запись).

note

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


workers

Добавлено в: v1.10 testConfig.workers

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

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

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

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

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

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

Тип

  • [number] | [string]

Устаревшее

snapshotDir

Добавлено в: v1.10 testConfig.snapshotDir
Не рекомендуется

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

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

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

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

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

Тип

  • [string]

Детали

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

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