Перейти к основному содержимому

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

Добавлено в: 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 });
});
примечание

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.

Возвращает


fail()

Добавлено в: v1.10 testInfo.fail()

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

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

testInfo.fail();

fail(condition)

Добавлено в: v1.10 testInfo.fail(condition)

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

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

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

Аргументы

  • condition boolean#

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

  • description string (опционально)#

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


fixme()

Добавлено в: v1.10 testInfo.fixme()

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

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

testInfo.fixme();

fixme(condition)

Добавлено в: v1.10 testInfo.fixme(condition)

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

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

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

Аргументы

  • condition boolean#

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

  • description string (опционально)#

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


outputPath

Добавлено в: 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), в противном случае будет выброшено исключение.

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

testInfo.outputPath(...pathSegments);

Аргументы

  • ...pathSegments Array<string>#

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

Возвращает


setTimeout

Добавлено в: v1.10 testInfo.setTimeout

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

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

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

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

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

testInfo.setTimeout(timeout);

Аргументы

  • timeout number#

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


skip()

Добавлено в: v1.10 testInfo.skip()

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

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

testInfo.skip();

skip(condition)

Добавлено в: v1.10 testInfo.skip(condition)

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

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

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

Аргументы

  • condition boolean#

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

  • description string (опционально)#

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


slow()

Добавлено в: v1.10 testInfo.slow()

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

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

testInfo.slow();

slow(condition)

Добавлено в: v1.10 testInfo.slow(condition)

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

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

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

Аргументы

  • condition boolean#

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

  • description string (опционально)#

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


snapshotPath

Добавлено в: v1.10 testInfo.snapshotPath

Возвращает путь к файлу снапшота с указанным name. Передайте kind, чтобы получить конкретный путь:

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

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" (опционально) Добавлено в: v1.53#

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

Возвращает


Свойства

annotations

Добавлено в: v1.10 testInfo.annotations

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

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

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

testInfo.annotations

Тип

  • Array<Object>
    • type string

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

    • description string (опционально)

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

    • location Location (опционально)

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


attachments

Добавлено в: v1.10 testInfo.attachments

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

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

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

testInfo.attachments

Тип

  • Array<Object>
    • name string

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

    • contentType string

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

    • path string (опционально)

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

    • body Buffer (опционально)

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


column

Добавлено в: v1.10 testInfo.column

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

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

testInfo.column

Тип


config

Добавлено в: v1.10 testInfo.config

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

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

testInfo.config

Тип


duration

Добавлено в: v1.10 testInfo.duration

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

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

testInfo.duration

Тип


error

Добавлено в: v1.10 testInfo.error

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

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

testInfo.error

Тип


errors

Добавлено в: v1.10 testInfo.errors

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

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

testInfo.errors

Тип


expectedStatus

Добавлено в: 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!`);
});

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

testInfo.expectedStatus

Тип

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

file

Добавлено в: v1.10 testInfo.file

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

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

testInfo.file

Тип


fn

Добавлено в: v1.10 testInfo.fn

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

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

testInfo.fn

Тип


line

Добавлено в: v1.10 testInfo.line

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

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

testInfo.line

Тип


outputDir

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

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

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

testInfo.outputDir

Тип


parallelIndex

Добавлено в: v1.10 testInfo.parallelIndex

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

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

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

testInfo.parallelIndex

Тип


project

Добавлено в: v1.10 testInfo.project

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

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

testInfo.project

Тип


repeatEachIndex

Добавлено в: v1.10 testInfo.repeatEachIndex

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

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

testInfo.repeatEachIndex

Тип


retry

Добавлено в: 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();
// ...
});

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

testInfo.retry

Тип


snapshotDir

Добавлено в: v1.10 testInfo.snapshotDir

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

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

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

testInfo.snapshotDir

Тип


snapshotSuffix

Добавлено в: v1.10 testInfo.snapshotSuffix
примечание

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

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

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

testInfo.snapshotSuffix

Тип


status

Добавлено в: 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!`);
});

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

testInfo.status

Тип

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

tags

Добавлено в: v1.43 testInfo.tags

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

примечание

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

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

testInfo.tags

Тип


testId

Добавлено в: v1.32 testInfo.testId

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

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

testInfo.testId

Тип


timeout

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

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

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

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

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

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

testInfo.timeout

Тип


title

Добавлено в: v1.10 testInfo.title

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

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

testInfo.title

Тип


titlePath

Добавлено в: v1.10 testInfo.titlePath

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

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

testInfo.titlePath

Тип


workerIndex

Добавлено в: v1.10 testInfo.workerIndex

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

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

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

testInfo.workerIndex

Тип