Spec-Zone.ru › Playwright

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);

Аргументы

  • name string

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

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

    • body string | Buffer (необязательно)

      Содержимое вложения. Не может использоваться одновременно с path.

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

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

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

      Путь к прикрепляемому файлу в файловой системе. Не может использоваться одновременно с body.

Возвращает

  • Promise<void>

fail()​

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

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

testInfo.fail();

fail(condition)​

Условно помечает выполняемый в данный момент тест как «должен завершиться с ошибкой», при необходимости добавляя описание. Аналогично test.fail().

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

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

Аргументы

  • condition boolean

    Тест помечается как «должен завершиться с ошибкой», если условие равно true.

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

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

fixme()​

Помечает тест как «требующий исправления». Тест немедленно прерывается. Аналогично test.fixme().

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

testInfo.fixme();

fixme(condition)​

Условно помечает выполняемый в данный момент тест как «требующий исправления», при необходимости добавляя описание. Аналогично test.fixme().

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

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

Аргументы

  • condition boolean

    Тест помечается как «требующий исправления», если условие равно true.

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

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

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);

Аргументы

  • ...pathSegments Array<string>

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

Возвращает

  • string

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);

Аргументы

  • timeout number

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

skip()​

Безусловно пропускает выполняемый в данный момент тест. Тест немедленно прерывается. Аналогично test.skip().

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

testInfo.skip();

skip(condition)​

Условно пропускает выполняемый в данный момент тест, при необходимости добавляя описание. Аналогично test.skip().

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

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

Аргументы

  • condition boolean

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

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

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

slow()​

Помечает выполняемый в данный момент тест как «медленный», увеличивая тайм-аут по умолчанию втрое. Аналогично test.slow().

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

testInfo.slow();

slow(condition)​

Условно помечает выполняемый в данный момент тест как «медленный», при необходимости добавляя описание и увеличивая тайм-аут по умолчанию втрое. Аналогично test.slow().

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

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

Аргументы

  • condition boolean

    Тест помечается как «медленный», если условие равно true.

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

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

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');

Аргументы

  • ...name Array<string>

    Имя снимка или сегменты пути, задающие путь к файлу снимка. Снимки с одинаковым именем в одном файле теста должны совпадать.

    При указании kind несколько сегментов имени не поддерживаются.

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

    • kind "snapshot" | "screenshot" | "aria" (необязательно)

      Тип снимка определяет, какой шаблон пути к снимку будет использоваться. Подробнее см. в разделе testConfig.snapshotPathTemplate. По умолчанию используется 'snapshot'.

Возвращает

  • string

Свойства​

annotations​

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

Подробнее см. в разделе аннотации тестов.

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

testInfo.annotations

Тип

  • Array<Object>
    • type string

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

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

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

    • location Location (необязательно)

      Необязательное местоположение в исходном коде, где добавлена аннотация.

attachments​

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

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

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

testInfo.attachments

Тип

  • Array<Object>
    • name string

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

    • contentType string

      Тип содержимого вложения, необходимый для корректного отображения в отчёте, например 'application/json' или 'image/png'.

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

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

    • body Buffer (необязательно)

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

column​

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

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

testInfo.column

Тип

  • number

config​

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

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

testInfo.config

Тип

  • FullConfig

duration​

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

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

testInfo.duration

Тип

  • number

error​

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

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

testInfo.error

Тип

  • TestInfoError

errors​

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

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

testInfo.errors

Тип

  • Array<TestInfoError>

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

Тип

  • string

fn​

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

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

testInfo.fn

Тип

  • function

line​

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

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

testInfo.line

Тип

  • number

outputDir​

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

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

testInfo.outputDir

Тип

  • string

parallelIndex​

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

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

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

testInfo.parallelIndex

Тип

  • number

project​

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

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

testInfo.project

Тип

  • FullProject

repeatEachIndex​

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

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

testInfo.repeatEachIndex

Тип

  • number

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

Тип

  • number

snapshotDir​

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

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

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

testInfo.snapshotDir

Тип

  • string

snapshotSuffix​

примечание

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

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

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

testInfo.snapshotSuffix

Тип

  • string

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

Тип

  • Array<string>

testId​

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

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

testInfo.testId

Тип

  • string

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

Тип

  • number

title​

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

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

testInfo.title

Тип

  • string

titlePath​

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

testInfo.titlePath

Тип

  • Array<string>

workerIndex​

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

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

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

testInfo.workerIndex

Тип

  • number

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

Spec-Zone.ru

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