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'));
}); Методы
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 });
}); примечаниеtestInfo.attach() автоматически копирует прикреплённые файлы в место, доступное репортёрам. После вызова attach можно безопасно удалить вложение.
Использование
await testInfo.attach(name); await testInfo.attach(name, options);
Аргументы
-
namestringИмя вложения. Имя также будет очищено и использовано в качестве префикса имени файла при сохранении на диск.
-
optionsObject (необязательно)-
bodystring | Buffer (необязательно)Содержимое вложения. Не может использоваться одновременно с path.
-
contentTypestring (необязательно)Тип содержимого вложения, необходимый для корректного отображения в отчёте, например
'application/json'или'image/png'. Если не указан, тип содержимого определяется по параметру path либо по умолчанию устанавливается вtext/plainдля вложений типа string и вapplication/octet-streamдля вложений типа Buffer. -
pathstring (необязательно)Путь к прикрепляемому файлу в файловой системе. Не может использоваться одновременно с body.
-
Возвращает
fail()
Помечает выполняемый в данный момент тест как «должен завершиться с ошибкой». Playwright Test запускает этот тест и проверяет, что он действительно завершается с ошибкой. Это полезно для документирования и фиксации того, что некоторые функции не работают до их исправления. Аналогично test.fail().
Использование
testInfo.fail();
fail(condition)
Условно помечает выполняемый в данный момент тест как «должен завершиться с ошибкой», при необходимости добавляя описание. Аналогично test.fail().
Использование
testInfo.fail(condition); testInfo.fail(condition, description);
Аргументы
-
conditionbooleanТест помечается как «должен завершиться с ошибкой», если условие равно
true. -
descriptionstring (необязательно)Необязательное описание, которое будет отображаться в отчёте о тестировании.
fixme()
Помечает тест как «требующий исправления». Тест немедленно прерывается. Аналогично test.fixme().
Использование
testInfo.fixme();
fixme(condition)
Условно помечает выполняемый в данный момент тест как «требующий исправления», при необходимости добавляя описание. Аналогично test.fixme().
Использование
testInfo.fixme(condition); testInfo.fixme(condition, description);
Аргументы
-
conditionbooleanТест помечается как «требующий исправления», если условие равно
true. -
descriptionstring (необязательно)Необязательное описание, которое будет отображаться в отчёте о тестировании.
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), иначе будет выброшено исключение.
Использование
testInfo.outputPath(...pathSegments);
Аргументы
Возвращает
setTimeout
Изменяет тайм-аут выполняемого в данный момент теста. Нулевое значение означает отсутствие тайм-аута. Подробнее о различных тайм-аутах.
Тайм-аут обычно задаётся в файле конфигурации, но в некоторых случаях может быть полезно изменить его:
import { test, expect } from '@playwright/test';
test.beforeEach(async ({ page }, testInfo) => {
// Extend timeout for all tests running this hook by 30 seconds.
testInfo.setTimeout(testInfo.timeout + 30000);
}); Использование
testInfo.setTimeout(timeout);
Аргументы
-
timeoutnumberТайм-аут в миллисекундах.
skip()
Безусловно пропускает выполняемый в данный момент тест. Тест немедленно прерывается. Аналогично test.skip().
Использование
testInfo.skip();
skip(condition)
Условно пропускает выполняемый в данный момент тест, при необходимости добавляя описание. Аналогично test.skip().
Использование
testInfo.skip(condition); testInfo.skip(condition, description);
Аргументы
-
conditionbooleanУсловие пропуска. Тест пропускается, если условие равно
true. -
descriptionstring (необязательно)Необязательное описание, которое будет отображаться в отчёте о тестировании.
slow()
Помечает выполняемый в данный момент тест как «медленный», увеличивая тайм-аут по умолчанию втрое. Аналогично test.slow().
Использование
testInfo.slow();
slow(condition)
Условно помечает выполняемый в данный момент тест как «медленный», при необходимости добавляя описание и увеличивая тайм-аут по умолчанию втрое. Аналогично test.slow().
Использование
testInfo.slow(condition); testInfo.slow(condition, description);
Аргументы
-
conditionbooleanТест помечается как «медленный», если условие равно
true. -
descriptionstring (необязательно)Необязательное описание, которое будет отображаться в отчёте о тестировании.
snapshotPath
Возвращает путь к файлу снимка с заданным name. Укажите kind, чтобы получить определённый путь:
-
kind: 'screenshot'для expect(page).toHaveScreenshot(); -
kind: 'aria'для expect(locator).toMatchAriaSnapshot(); -
kind: 'snapshot'для expect(value).toMatchSnapshot().
Использование
await expect(page).toHaveScreenshot('header.png');
// Screenshot assertion above expects screenshot at this path:
const screenshotPath = test.info().snapshotPath('header.png', { kind: 'screenshot' });
await expect(page.getByRole('main')).toMatchAriaSnapshot({ name: 'main.aria.yml' });
// Aria snapshot assertion above expects snapshot at this path:
const ariaSnapshotPath = test.info().snapshotPath('main.aria.yml', { kind: 'aria' });
expect('some text').toMatchSnapshot('snapshot.txt');
// Snapshot assertion above expects snapshot at this path:
const snapshotPath = test.info().snapshotPath('snapshot.txt');
expect('some text').toMatchSnapshot(['dir', 'subdir', 'snapshot.txt']);
// Snapshot assertion above expects snapshot at this path:
const nestedPath = test.info().snapshotPath('dir', 'subdir', 'snapshot.txt'); Аргументы
-
Имя снимка или сегменты пути, задающие путь к файлу снимка. Снимки с одинаковым именем в одном файле теста должны совпадать.
При указании kind несколько сегментов имени не поддерживаются.
-
optionsObject (необязательно)-
kind"snapshot" | "screenshot" | "aria" (необязательно)Тип снимка определяет, какой шаблон пути к снимку будет использоваться. Подробнее см. в разделе testConfig.snapshotPathTemplate. По умолчанию используется
'snapshot'.
-
Возвращает
Свойства
annotations
Список аннотаций, применимых к текущему тесту. Включает аннотации теста, аннотации всех групп test.describe(), к которым относится тест, а также аннотации уровня файла для файла теста.
Подробнее см. в разделе аннотации тестов.
Использование
testInfo.annotations
Тип
attachments
Список файлов или буферов, прикреплённых к текущему тесту. Некоторые репортёры показывают вложения теста.
Чтобы добавить вложение, используйте testInfo.attach(), а не добавляйте его напрямую в этот массив.
Использование
testInfo.attachments
Тип
-
Array<Object>
-
namestringИмя вложения.
-
contentTypestringТип содержимого вложения, необходимый для корректного отображения в отчёте, например
'application/json'или'image/png'. -
pathstring (необязательно)Необязательный путь к прикреплённому файлу в файловой системе.
-
bodyBuffer (необязательно)Необязательное содержимое вложения, используемое вместо файла.
-
column
Номер столбца, в котором объявлен выполняемый в данный момент тест.
Использование
testInfo.column
Тип
config
Обработанная конфигурация из файла конфигурации.
Использование
testInfo.config
Тип
duration
Время выполнения теста в миллисекундах. До завершения теста, независимо от того, завершился ли он успешно, всегда равно нулю. Можно использовать в хуке test.afterEach().
Использование
testInfo.duration
Тип
error
Первая ошибка, выброшенная во время выполнения теста, если таковая имеется. Совпадает с первым элементом в testInfo.errors.
Использование
testInfo.error
Тип
errors
Ошибки, выброшенные во время выполнения теста, если таковые имеются.
Использование
testInfo.errors
Тип
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!`);
}); Использование
testInfo.expectedStatus
Тип
- "passed" | "failed" | "timedOut" | "skipped" | "interrupted"
file
Абсолютный путь к файлу, в котором объявлен выполняемый в данный момент тест.
Использование
testInfo.file
Тип
fn
Функция теста, переданная в test(title, testFunction).
Использование
testInfo.fn
Тип
line
Номер строки, в которой объявлен выполняемый в данный момент тест.
Использование
testInfo.line
Тип
outputDir
Абсолютный путь к выходному каталогу для этого запуска теста. Для каждого запуска теста создаётся отдельный каталог, поэтому они не конфликтуют.
Использование
testInfo.outputDir
Тип
parallelIndex
Индекс рабочего процесса в диапазоне от 0 до workers - 1. Гарантируется, что одновременно работающие процессы имеют разные значения parallelIndex. При перезапуске рабочего процесса, например после сбоя, новый процесс рабочего процесса получает то же значение parallelIndex.
Также доступно как process.env.TEST_PARALLEL_INDEX. Подробнее о параллельном выполнении и разбиении на части в Playwright Test.
Использование
testInfo.parallelIndex
Тип
project
Обработанная конфигурация проекта из файла конфигурации.
Использование
testInfo.project
Тип
repeatEachIndex
Указывает уникальный индекс повтора при запуске в режиме «повторять каждый». Этот режим включается передачей --repeat-each в командную строку.
Использование
testInfo.repeatEachIndex
Тип
retry
Указывает номер повторной попытки после сбоя теста. При первом запуске теста значение testInfo.retry равно нулю, при первой повторной попытке — единице и так далее. Подробнее о повторных попытках.
import { test, expect } from '@playwright/test';
test.beforeEach(async ({}, testInfo) => {
// You can access testInfo.retry in any hook or fixture.
if (testInfo.retry > 0)
console.log(`Retrying!`);
});
test('my test', async ({ page }, testInfo) => {
// Here we clear some server-side state when retrying.
if (testInfo.retry)
await cleanSomeCachesOnTheServer();
// ...
}); Использование
testInfo.retry
Тип
snapshotDir
Абсолютный путь к каталогу выходных данных снимков для этого конкретного теста. Для каждого набора тестов создаётся отдельный каталог, чтобы избежать конфликтов.
Это свойство не учитывает конфигурацию testProject.snapshotPathTemplate.
Использование
testInfo.snapshotDir
Тип
snapshotSuffix
примечаниеНе рекомендуется использовать testInfo.snapshotSuffix. Для настройки путей к снимкам используйте testConfig.snapshotPathTemplate.
Суффикс, используемый для различения снимков между несколькими конфигурациями теста. Например, если снимки зависят от платформы, можно задать testInfo.snapshotSuffix равным process.platform. В этом случае expect(value).toMatchSnapshot(snapshotName) будет использовать разные снимки в зависимости от платформы. Подробнее см. в разделе снимки.
Использование
testInfo.snapshotSuffix
Тип
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!`);
}); Использование
testInfo.status
Тип
- "passed" | "failed" | "timedOut" | "skipped" | "interrupted"
tags
Теги, применяемые к тесту. Подробнее см. в разделе теги.
примечаниеИзменения, внесённые в этот список во время выполнения теста, не будут видны репортёрам тестирования.
Использование
testInfo.tags
Тип
testId
Идентификатор теста, соответствующий идентификатору тестового случая в API репортёра.
Использование
testInfo.testId
Тип
timeout
Тайм-аут выполняемого в данный момент теста в миллисекундах. Нулевое значение означает отсутствие тайм-аута. Подробнее о различных тайм-аутах.
Тайм-аут обычно задаётся в файле конфигурации
import { test, expect } from '@playwright/test';
test.beforeEach(async ({ page }, testInfo) => {
// Extend timeout for all tests running this hook by 30 seconds.
testInfo.setTimeout(testInfo.timeout + 30000);
}); Использование
testInfo.timeout
Тип
title
Название выполняемого в данный момент теста, переданное в test(title, testFunction).
Использование
testInfo.title
Тип
titlePath
Использование
testInfo.titlePath
Тип
workerIndex
Уникальный индекс рабочего процесса, выполняющего тест. При перезапуске рабочего процесса, например после сбоя, новый рабочий процесс получает новый уникальный workerIndex.
Также доступно как process.env.TEST_WORKER_INDEX. Подробнее о параллельном выполнении и разделении на сегменты в Playwright Test.
Использование
testInfo.workerIndex
Тип
© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-testinfo