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