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Прикрепляет значение или файл с диска к текущему тесту. Некоторые репортеры отображают вложения теста. Должен быть указан либо 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);
Аргументы
-
Имя вложения. Имя также будет очищено и использовано в качестве префикса имени файла при сохранении на диск.
-
optionsObject (опционально)-
bodystring | Buffer (опционально)#Тело вложения. Взаимоисключающее с path.
-
contentTypestring (опционально)#Тип содержимого этого вложения для правильного отображения в отчете, например
'application/json'или'image/png'. Если не указано, тип содержимого определяется на основе path, или по умолчанию используетсяtext/plainдля string вложений иapplication/octet-streamдля Buffer вложений. -
Путь в файловой системе к прикрепленному файлу. Взаимоисключающее с body.
-
Возвращает
fail()
Добавлено в: v1.10Отмечает текущий выполняемый тест как "должен провалиться". Playwright Test выполняет этот тест и гарантирует, что он действительно проваливается. Это полезно для документирования, чтобы признать, что некоторая функциональность сломана, пока она не будет исправлена. Это похоже на test.fail().
Использование
testInfo.fail();
fail(condition)
Добавлено в: v1.10Условно отмечает текущий выполняемый тест как "должен провалиться" с необязательным описанием. Это похоже на test.fail().
Использование
testInfo.fail(condition);
testInfo.fail(condition, description);
Аргументы
-
Тест отмечается как "должен провалиться", когда условие
true. -
descriptionstring (опционально)#Необязательное описание, которое будет отражено в отчете о тестировании.
fixme()
Добавлено в: v1.10Отмечает тест как "fixme", с намерением его исправить. Тест немедленно прерывается. Это похоже на test.fixme().
Использование
testInfo.fixme();
fixme(condition)
Добавлено в: v1.10Условно отмечает текущий выполняемый тест как "fixme" с необязательным описанием. Это похоже на test.fixme().
Использование
testInfo.fixme(condition);
testInfo.fixme(condition, description);
Аргументы
-
Тест отмечается как "fixme", когда условие
true. -
descriptionstring (опционально)#Необязательное описание, которое будет отражено в отчете о тестировании.
outputPath
Добавлено в: v1.10Возвращает путь внутри 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
Добавлено в: v1.10Изменяет тайм-аут для текущего выполняемого теста. Ноль означает отсутствие тайм-аута. Узнайте больше о различных тайм-аутах.
Тайм-аут обычно указывается в файле конфигурации, но может быть полезно изменить тайм-аут в определенных сценариях:
import { test, expect } from '@playwright/test';
test.beforeEach(async ({ page }, testInfo) => {
// Увеличьте тайм-аут для всех тестов, выполняющих этот хук, на 30 секунд.
testInfo.setTimeout(testInfo.timeout + 30000);
});
Использование
testInfo.setTimeout(timeout);
Аргументы
skip()
Добавлено в: v1.10Безусловно пропускает текущий выполняемый тест. Тест немедленно прерывается. Это похоже на test.skip().
Использование
testInfo.skip();
skip(condition)
Добавлено в: v1.10Условно пропускает текущий выполняемый тест с необязательным описанием. Это похоже на test.skip().
Использование
testInfo.skip(condition);
testInfo.skip(condition, description);
Аргументы
-
Условие пропуска. Тест пропускается, когда условие
true. -
descriptionstring (опционально)#Необязательное описание, которое будет отражено в отчете о тестировании.
slow()
Добавлено в: v1.10Отмечает текущий выполняемый тест как "медленный", давая ему тройной стандартный тайм-аут. Это похоже на test.slow().
Использование
testInfo.slow();
slow(condition)
Добавлено в: v1.10Условно отмечает текущий выполняемый тест как "медленный" с необязательным описанием, давая ему тройной стандартный тайм-аут. Это похоже на test.slow().
Использование
testInfo.slow(condition);
testInfo.slow(condition, description);
Аргументы
-
Тест отмечается как "медленный", когда условие
true. -
descriptionstring (опционально)#Необязательное описание, которое будет отражено в отчете о тестировании.
snapshotPath
Добавлено в: v1.10Возвращает путь к файлу снапшота с указанным 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" (опционально) Добавлено в: v1.53#Тип снапшота определяет, какой шаблон пути к снапшотам будет использован. Подробнее см. testConfig.snapshotPathTemplate. По умолчанию
'snapshot'.
-
Возвращает
Свойства
annotations
Добавлено в: v1.10Список аннотаций, применимых к текущему тесту. Включает аннотации из теста, аннотации из всех групп test.describe(), к которым принадлежит тест, и аннотации на уровне файла для тестового файла.
Узнайте больше о аннотациях тестов.
Использование
testInfo.annotations
Тип
attachments
Добавлено в: v1.10Список файлов или буферов, прикрепленных к текущему тесту. Некоторые репортеры отображают вложения теста.
Чтобы добавить вложение, используйте testInfo.attach() вместо прямого добавления в этот массив.
Использование
testInfo.attachments
Тип
- Array<Object>
-
namestringИмя вложения.
-
contentTypestringТип содержимого этого вложения для правильного отображения в отчете, например
'application/json'или'image/png'. -
pathstring (опционально)Необязательный путь в файловой системе к прикрепленному файлу.
-
bodyBuffer (опционально)Необязательное тело вложения, используемое вместо файла.
-
column
Добавлено в: v1.10Номер столбца, где объявлен текущий выполняемый тест.
Использование
testInfo.column
Тип
config
Добавлено в: v1.10Обработанная конфигурация из файла конфигурации.
Использование
testInfo.config
Тип
duration
Добавлено в: v1.10Количество миллисекунд, которое потребовалось тесту для завершения. Всегда равно нулю до завершения теста, независимо от того, успешно или нет. Может использоваться в хуке test.afterEach().
Использование
testInfo.duration
Тип
error
Добавлено в: v1.10Первая ошибка, возникшая во время выполнения теста, если таковая имеется. Это равно первому элементу в testInfo.errors.
Использование
testInfo.error
Тип
errors
Добавлено в: v1.10Ошибки, возникшие во время выполнения теста, если таковые имеются.
Использование
testInfo.errors
Тип
expectedStatus
Добавлено в: v1.10Ожидаемый статус для текущего выполняемого теста. Обычно это '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
Тип
fn
Добавлено в: v1.10Функция теста, переданная в test(title, testFunction).
Использование
testInfo.fn
Тип
line
Добавлено в: v1.10Номер строки, где объявлен текущий выполняемый тест.
Использование
testInfo.line
Тип
outputDir
Добавлено в: v1.10Абсолютный путь к каталогу вывода для этого конкретного запуска теста. Каждый запуск теста получает свой собственный каталог, чтобы они не могли конфликтовать.
Использование
testInfo.outputDir
Тип
parallelIndex
Добавлено в: v1.10Индекс рабочего процесса между 0 и workers - 1. Гарантируется, что рабочие процессы, выполняемые одновременно, имеют разный parallelIndex. Когда рабочий процесс перезапускается, например, после сбоя, новый процесс рабочего процесса имеет тот же parallelIndex.
Также доступно как process.env.TEST_PARALLEL_INDEX. Узнайте больше о параллелизме и шардировании с Playwright Test.
Использование
testInfo.parallelIndex
Тип
project
Добавлено в: v1.10Обработанная конфигурация проекта из файла конфигурации.
Использование
testInfo.project
Тип
repeatEachIndex
Добавлено в: v1.10Указывает уникальный индекс повтора при запуске в режиме "повторять каждый". Этот режим включается путем передачи --repeat-each в командную строку.
Использование
testInfo.repeatEachIndex
Тип
retry
Добавлено в: v1.10Указывает номер повторной попытки, когда тест повторяется после сбоя. Первый запуск теста имеет 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Абсолютный путь к каталогу вывода снимков для этого конкретного теста. Каждый набор тестов получает свой собственный каталог, чтобы они не могли конфликтовать.
Это свойство не учитывает конфигурацию testProject.snapshotPathTemplate.
Использование
testInfo.snapshotDir
Тип
snapshotSuffix
Добавлено в: v1.10Использование testInfo.snapshotSuffix не рекомендуется. Пожалуйста, используйте testConfig.snapshotPathTemplate для настройки путей к снимкам.
Суффикс, используемый для различения снимков между несколькими конфигурациями тестов. Например, если снимки зависят от платформы, вы можете установить testInfo.snapshotSuffix, равный process.platform. В этом случае expect(value).toMatchSnapshot(snapshotName) будет использовать разные снимки в зависимости от платформы. Узнайте больше о снимках.
Использование
testInfo.snapshotSuffix
Тип
status
Добавлено в: v1.10Фактический статус для текущего выполняемого теста. Доступен после завершения теста в хуке 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
Тип
testId
Добавлено в: v1.32Идентификатор теста, соответствующий идентификатору тестового случая в API репортера.
Использование
testInfo.testId
Тип
timeout
Добавлено в: v1.10Тайм-аут в миллисекундах для текущего выполняемого теста. Ноль означает отсутствие тайм-аута. Узнайте больше о различных тайм-аутах.
Тайм-аут обычно указывается в файле конфигурации
import { test, expect } from '@playwright/test';
test.beforeEach(async ({ page }, testInfo) => {
// Увеличьте тайм-аут для всех тестов, выполняющих этот хук, на 30 секунд.
testInfo.setTimeout(testInfo.timeout + 30000);
});
Использование
testInfo.timeout
Тип
title
Добавлено в: v1.10Название текущего выполняемого теста, переданное в test(title, testFunction).
Использование
testInfo.title
Тип
titlePath
Добавлено в: v1.10Полный путь к названию, начиная с имени тестового файла.
Использование
testInfo.titlePath
Тип
workerIndex
Добавлено в: v1.10Уникальный индекс процесса рабочего, который выполняет тест. Когда рабочий процесс перезапускается, например, после сбоя, новый процесс рабочего получает новый уникальный workerIndex.
Также доступно как process.env.TEST_WORKER_INDEX. Узнайте больше о параллелизме и шардировании с Playwright Test.
Использование
testInfo.workerIndex
Тип