Skip to main content

TestInfo

TestInfo содержит информацию о текущем выполняемом тесте. Он доступен для тестовых функций, хуков test.beforeEach(), test.afterEach(), test.beforeAll() и test.afterAll(), а также для фикстур с областью видимости теста. TestInfo предоставляет утилиты для управления выполнением теста: прикрепление файлов, обновление тайм-аута теста, определение, какой тест в данный момент выполняется и был ли он повторно запущен и т.д.

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

test('basic test', async ({ page }, testInfo) => {
expect(testInfo.title).toBe('basic test');
await page.screenshot(testInfo.outputPath('screenshot.png'));
});

Methods

attach

Added in: v1.10 testInfo.attach

Прикрепляет значение или файл с диска к текущему тесту. Некоторые репортеры отображают вложения теста. Должен быть указан либо path, либо body, но не оба.

Например, вы можете прикрепить скриншот к тесту:

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

test('basic test', async ({ page }, testInfo) => {
await page.goto('https://playwright.dev');
const screenshot = await page.screenshot();
await testInfo.attach('screenshot', { body: screenshot, contentType: 'image/png' });
});

Или вы можете прикрепить файлы, возвращаемые вашими API:

import { test, expect } from '@playwright/test';
import { download } from './my-custom-helpers';

test('basic test', async ({}, testInfo) => {
const tmpPath = await download('a');
await testInfo.attach('downloaded', { path: tmpPath });
});
note

testInfo.attach() автоматически заботится о копировании прикрепленных файлов в место, доступное для репортеров. Вы можете безопасно удалить вложение после ожидания вызова attach.

Usage

await testInfo.attach(name);
await testInfo.attach(name, options);

Arguments

  • name string#

    Имя вложения. Имя также будет очищено и использовано в качестве префикса имени файла при сохранении на диск.

  • options Object (optional)

    • body string | Buffer (optional)#

      Тело вложения. Взаимоисключающее с path.

    • contentType string (optional)#

      Тип содержимого этого вложения для правильного отображения в отчете, например 'application/json' или 'image/png'. Если не указано, тип содержимого определяется на основе path, или по умолчанию используется text/plain для string вложений и application/octet-stream для Buffer вложений.

    • path string (optional)#

      Путь в файловой системе к прикрепленному файлу. Взаимоисключающее с body.

Returns


fail()

Added in: v1.10 testInfo.fail()

Отмечает текущий выполняемый тест как "должен провалиться". Playwright Test выполняет этот тест и гарантирует, что он действительно проваливается. Это полезно для документирования, чтобы признать, что некоторая функциональность сломана, пока она не будет исправлена. Это похоже на test.fail().

Usage

testInfo.fail();

fail(condition)

Added in: v1.10 testInfo.fail(condition)

Условно отмечает текущий выполняемый тест как "должен провалиться" с необязательным описанием. Это похоже на test.fail().

Usage

testInfo.fail(condition);
testInfo.fail(condition, description);

Arguments

  • condition boolean#

    Тест отмечается как "должен провалиться", когда условие true.

  • description string (optional)#

    Необязательное описание, которое будет отражено в отчете о тестировании.


fixme()

Added in: v1.10 testInfo.fixme()

Отмечает тест как "fixme", с намерением его исправить. Тест немедленно прерывается. Это похоже на test.fixme().

Usage

testInfo.fixme();

fixme(condition)

Added in: v1.10 testInfo.fixme(condition)

Условно отмечает текущий выполняемый тест как "fixme" с необязательным описанием. Это похоже на test.fixme().

Usage

testInfo.fixme(condition);
testInfo.fixme(condition, description);

Arguments

  • condition boolean#

    Тест отмечается как "fixme", когда условие true.

  • description string (optional)#

    Необязательное описание, которое будет отражено в отчете о тестировании.


outputPath

Added in: v1.10 testInfo.outputPath

Возвращает путь внутри testInfo.outputDir, где тест может безопасно разместить временный файл. Гарантирует, что тесты, выполняемые параллельно, не будут мешать друг другу.

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

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

Обратите внимание, что pathSegments принимает сегменты пути к каталогу вывода теста, такие как testInfo.outputPath('relative', 'path', 'to', 'output'). Однако этот путь должен оставаться в пределах каталога testInfo.outputDir для каждого теста (например, test-results/a-test-title), в противном случае будет выброшено исключение.

Usage

testInfo.outputPath(...pathSegments);

Arguments

  • ...pathSegments Array<string>#

    Сегменты пути, которые будут добавлены в конец результирующего пути.

Returns


setTimeout

Added in: v1.10 testInfo.setTimeout

Изменяет тайм-аут для текущего выполняемого теста. Ноль означает отсутствие тайм-аута. Узнайте больше о различных тайм-аутах.

Тайм-аут обычно указывается в файле конфигурации, но может быть полезно изменить тайм-аут в определенных сценариях:

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

test.beforeEach(async ({ page }, testInfo) => {
// Увеличьте тайм-аут для всех тестов, выполняющих этот хук, на 30 секунд.
testInfo.setTimeout(testInfo.timeout + 30000);
});

Usage

testInfo.setTimeout(timeout);

Arguments

  • timeout number#

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


skip()

Added in: v1.10 testInfo.skip()

Безусловно пропускает текущий выполняемый тест. Тест немедленно прерывается. Это похоже на test.skip().

Usage

testInfo.skip();

skip(condition)

Added in: v1.10 testInfo.skip(condition)

Условно пропускает текущий выполняемый тест с необязательным описанием. Это похоже на test.skip().

Usage

testInfo.skip(condition);
testInfo.skip(condition, description);

Arguments

  • condition boolean#

    Условие пропуска. Тест пропускается, когда условие true.

  • description string (optional)#

    Необязательное описание, которое будет отражено в отчете о тестировании.


slow()

Added in: v1.10 testInfo.slow()

Отмечает текущий выполняемый тест как "медленный", давая ему тройной стандартный тайм-аут. Это похоже на test.slow().

Usage

testInfo.slow();

slow(condition)

Added in: v1.10 testInfo.slow(condition)

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

Usage

testInfo.slow(condition);
testInfo.slow(condition, description);

Arguments

  • condition boolean#

    Тест отмечается как "медленный", когда условие true.

  • description string (optional)#

    Необязательное описание, которое будет отражено в отчете о тестировании.


snapshotPath

Added in: v1.10 testInfo.snapshotPath

Возвращает путь к файлу снимка с заданными pathSegments. Узнайте больше о снимках.

Обратите внимание, что pathSegments принимает сегменты пути к файлу снимка, такие как testInfo.snapshotPath('relative', 'path', 'to', 'snapshot.png'). Однако этот путь должен оставаться в пределах каталога снимков для каждого тестового файла (например, a.spec.js-snapshots), в противном случае будет выброшено исключение.

Usage

testInfo.snapshotPath(...pathSegments);

Arguments

  • ...pathSegments Array<string>#

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

Returns


Properties

annotations

Added in: v1.10 testInfo.annotations

Список аннотаций, применимых к текущему тесту. Включает аннотации из теста, аннотации из всех групп test.describe(), к которым принадлежит тест, и аннотации на уровне файла для тестового файла.

Узнайте больше о аннотациях тестов.

Usage

testInfo.annotations

Type

  • Array<Object>
    • type string

      Тип аннотации, например 'skip' или 'fail'.

    • description string (optional)

      Необязательное описание.


attachments

Added in: v1.10 testInfo.attachments

Список файлов или буферов, прикрепленных к текущему тесту. Некоторые репортеры отображают вложения теста.

Чтобы добавить вложение, используйте testInfo.attach() вместо прямого добавления в этот массив.

Usage

testInfo.attachments

Type

  • Array<Object>
    • name string

      Имя вложения.

    • contentType string

      Тип содержимого этого вложения для правильного отображения в отчете, например 'application/json' или 'image/png'.

    • path string (optional)

      Необязательный путь в файловой системе к прикрепленному файлу.

    • body Buffer (optional)

      Необязательное тело вложения, используемое вместо файла.


column

Added in: v1.10 testInfo.column

Номер столбца, где объявлен текущий выполняемый тест.

Usage

testInfo.column

Type


config

Added in: v1.10 testInfo.config

Обработанная конфигурация из файла конфигурации.

Usage

testInfo.config

Type


duration

Added in: v1.10 testInfo.duration

Количество миллисекунд, которое потребовалось тесту для завершения. Всегда равно нулю до завершения теста, независимо от того, успешно или нет. Может использоваться в хуке test.afterEach().

Usage

testInfo.duration

Type


error

Added in: v1.10 testInfo.error

Первая ошибка, возникшая во время выполнения теста, если таковая имеется. Это равно первому элементу в testInfo.errors.

Usage

testInfo.error

Type


errors

Added in: v1.10 testInfo.errors

Ошибки, возникшие во время выполнения теста, если таковые имеются.

Usage

testInfo.errors

Type


expectedStatus

Added in: v1.10 testInfo.expectedStatus

Ожидаемый статус для текущего выполняемого теста. Обычно это 'passed', за исключением нескольких случаев:

  • 'skipped' для пропущенных тестов, например, с test.skip();
  • 'failed' для тестов, отмеченных как проваленные с помощью test.fail().

Ожидаемый статус обычно сравнивается с фактическим testInfo.status:

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

test.afterEach(async ({}, testInfo) => {
if (testInfo.status !== testInfo.expectedStatus)
console.log(`${testInfo.title} did not run as expected!`);
});

Usage

testInfo.expectedStatus

Type

  • "passed" | "failed" | "timedOut" | "skipped" | "interrupted"

file

Added in: v1.10 testInfo.file

Абсолютный путь к файлу, где объявлен текущий выполняемый тест.

Usage

testInfo.file

Type


fn

Added in: v1.10 testInfo.fn

Функция теста, переданная в test(title, testFunction).

Usage

testInfo.fn

Type


line

Added in: v1.10 testInfo.line

Номер строки, где объявлен текущий выполняемый тест.

Usage

testInfo.line

Type


outputDir

Added in: v1.10 testInfo.outputDir

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

Usage

testInfo.outputDir

Type


parallelIndex

Added in: v1.10 testInfo.parallelIndex

Индекс рабочего процесса между 0 и workers - 1. Гарантируется, что рабочие процессы, выполняемые одновременно, имеют разный parallelIndex. Когда рабочий процесс перезапускается, например, после сбоя, новый процесс рабочего процесса имеет тот же parallelIndex.

Также доступно как process.env.TEST_PARALLEL_INDEX. Узнайте больше о параллелизме и шардировании с Playwright Test.

Usage

testInfo.parallelIndex

Type


project

Added in: v1.10 testInfo.project

Обработанная конфигурация проекта из файла конфигурации.

Usage

testInfo.project

Type


repeatEachIndex

Added in: v1.10 testInfo.repeatEachIndex

Указывает уникальный индекс повтора при запуске в режиме "повторять каждый". Этот режим включается путем передачи --repeat-each в командную строку.

Usage

testInfo.repeatEachIndex

Type


retry

Added in: v1.10 testInfo.retry

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

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

test.beforeEach(async ({}, testInfo) => {
// Вы можете получить доступ к testInfo.retry в любом хуке или фикстуре.
if (testInfo.retry > 0)
console.log(`Retrying!`);
});

test('my test', async ({ page }, testInfo) => {
// Здесь мы очищаем некоторое состояние на сервере при повторной попытке.
if (testInfo.retry)
await cleanSomeCachesOnTheServer();
// ...
});

Usage

testInfo.retry

Type


snapshotDir

Added in: v1.10 testInfo.snapshotDir

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

Это свойство не учитывает конфигурацию testProject.snapshotPathTemplate.

Usage

testInfo.snapshotDir

Type


snapshotSuffix

Added in: v1.10 testInfo.snapshotSuffix
note

Использование testInfo.snapshotSuffix не рекомендуется. Пожалуйста, используйте testConfig.snapshotPathTemplate для настройки путей к снимкам.

Суффикс, используемый для различения снимков между несколькими конфигурациями тестов. Например, если снимки зависят от платформы, вы можете установить testInfo.snapshotSuffix, равный process.platform. В этом случае expect(value).toMatchSnapshot(snapshotName) будет использовать разные снимки в зависимости от платформы. Узнайте больше о снимках.

Usage

testInfo.snapshotSuffix

Type


status

Added in: v1.10 testInfo.status

Фактический статус для текущего выполняемого теста. Доступен после завершения теста в хуке test.afterEach() и фикстурах.

Статус обычно сравнивается с testInfo.expectedStatus:

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

test.afterEach(async ({}, testInfo) => {
if (testInfo.status !== testInfo.expectedStatus)
console.log(`${testInfo.title} did not run as expected!`);
});

Usage

testInfo.status

Type

  • "passed" | "failed" | "timedOut" | "skipped" | "interrupted"

tags

Added in: v1.43 testInfo.tags

Теги, которые применяются к тесту. Узнайте больше о тегах.

note

Любые изменения, внесенные в этот список во время выполнения теста, не будут видны репортерам тестов.

Usage

testInfo.tags

Type


testId

Added in: v1.32 testInfo.testId

Идентификатор теста, соответствующий идентификатору тестового случая в API репортера.

Usage

testInfo.testId

Type


timeout

Added in: v1.10 testInfo.timeout

Тайм-аут в миллисекундах для текущего выполняемого теста. Ноль означает отсутствие тайм-аута. Узнайте больше о различных тайм-аутах.

Тайм-аут обычно указывается в файле конфигурации

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

test.beforeEach(async ({ page }, testInfo) => {
// Увеличьте тайм-аут для всех тестов, выполняющих этот хук, на 30 секунд.
testInfo.setTimeout(testInfo.timeout + 30000);
});

Usage

testInfo.timeout

Type


title

Added in: v1.10 testInfo.title

Название текущего выполняемого теста, переданное в test(title, testFunction).

Usage

testInfo.title

Type


titlePath

Added in: v1.10 testInfo.titlePath

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

Usage

testInfo.titlePath

Type


workerIndex

Added in: v1.10 testInfo.workerIndex

Уникальный индекс процесса рабочего, который выполняет тест. Когда рабочий процесс перезапускается, например, после сбоя, новый процесс рабочего получает новый уникальный workerIndex.

Также доступно как process.env.TEST_WORKER_INDEX. Узнайте больше о параллелизме и шардировании с Playwright Test.

Usage

testInfo.workerIndex

Type