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
Прикрепить значение или файл с диска к текущему тесту. Некоторые отчётные системы показывают вложения к тестам. Должен быть указан либо путь, либо тело вложения, но не оба.
Например, можно прикрепить скриншот к тесту:
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строкаИмя вложения. Это имя также будет очищено и использовано в качестве префикса имени файла при сохранении на диск.
-
optionsобъект (необязательно)-
bodyстрока | Буфер (необязательно)Тело вложения. Взаимоисключающее с путь.
-
contentTypeстрока (необязательно)Тип содержимого этого вложения для правильного отображения в отчёте, например
'application/json'или'image/png'. Если опущено, тип содержимого определяется на основе пути или по умолчанию устанавливается вtext/plainдля строковых вложений иapplication/octet-streamдля вложений типа Buffer. -
pathстрока (необязательно)Путь к файлу на файловой системе. Взаимоисключающее с телом.
-
Возвращает
fail()
Помечает текущий выполняемый тест как «должен завершиться ошибкой». Playwright Test выполняет этот тест и гарантирует, что он фактически завершится с ошибкой. Это полезно для документации, чтобы признать, что какая-то функциональность сломана до её исправления. Аналогично test.fail().
Использование
testInfo.fail();
fail(condition)
Условно помечает текущий выполняемый тест как «должен завершиться ошибкой» с необязательным описанием. Аналогично test.fail().
Использование
testInfo.fail(condition); testInfo.fail(condition, description);
Аргументы
-
conditionбулево значениеТест помечается как «должен завершиться ошибкой», когда условие
true. -
descriptionстрока (необязательно)Необязательное описание, которое будет отображено в отчёте о тесте.
fixme()
Помечает тест как «fixme», со значением, что необходимо его исправить. Тест немедленно прерывается. Аналогично test.fixme().
Использование
testInfo.fixme();
fixme(condition)
Условно помечает текущий выполняемый тест как «fixme» с необязательным описанием. Аналогично test.fixme().
Использование
testInfo.fixme(condition); testInfo.fixme(condition, description);
Аргументы
-
conditionбулево значениеТест помечается как «fixme», когда условие
true. -
descriptionстрока (необязательно)Необязательное описание, которое будет отображено в отчёте о тесте.
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массив<строка>Сегменты пути, которые необходимо добавить в конец результирующего пути.
Возвращает
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числоТаймаут в миллисекундах.
skip()
Безусловно пропускает текущий выполняемый тест. Тест немедленно прерывается. Аналогично test.skip().
Использование
testInfo.skip();
skip(condition)
Условно пропускает текущий выполняемый тест с необязательным описанием. Аналогично test.skip().
Использование
testInfo.skip(condition); testInfo.skip(condition, description);
Аргументы
-
conditionбулево значениеУсловие пропуска. Тест пропускается, когда условие
true. -
descriptionстрока (необязательно)Необязательное описание, которое будет отображено в отчёте о тесте.
slow()
Помечает текущий выполняемый тест как «медленный», увеличивая его таймаут втрое по умолчанию. Аналогично test.slow().
Использование
testInfo.slow();
slow(condition)
Условно помечает текущий выполняемый тест как «медленный» с необязательным описанием, увеличивая его таймаут втрое по умолчанию. Аналогично test.slow().
Использование
testInfo.slow(condition); testInfo.slow(condition, description);
Аргументы
-
conditionbooleanТест отмечается как «медленный», когда условие
true. -
descriptionстрока (необязательно)Необязательное описание, которое будет отображено в отчете о тесте.
snapshotPath
Возвращает путь к файлу снимков с заданным pathSegments. Подробнее о снимках.
Обратите внимание, что
pathSegmentsпринимает сегменты пути к файлу снимков, такие какtestInfo.snapshotPath('relative', 'path', 'to', 'snapshot.png'). Однако этот путь должен оставаться в пределах каталога снимков для каждого тестового файла (т.е.a.spec.js-snapshots), в противном случае произойдёт ошибка.
Использование
testInfo.snapshotPath(...pathSegments);
Аргументы
-
...pathSegmentsМассив<строка>Имя снимка или сегменты пути для определения пути к файлу снимка. Снимки с одинаковым именем в одном и том же тестовом файле должны быть одинаковыми.
Возвращает
Свойства
аннотации
Список аннотаций, применимых к текущему тесту. Включает аннотации из теста, аннотации из всех групп test.describe(), к которым принадлежит тест, и аннотации на уровне файла для тестового файла.
Подробнее о аннотациях тестов.
Использование
testInfo.annotations
Тип
вложения
Список файлов или буферов, прикрепленных к текущему тесту. Некоторые репортеры отображают вложения к тестам.
Для добавления вложения используйте testInfo.attach() вместо непосредственного добавления в этот массив.
Использование
testInfo.attachments
Тип
-
Массив<объект>
-
nameстрокаНазвание вложения.
-
contentTypeстрокаТип содержимого этого вложения для правильного отображения в отчете, например
'application/json'или'image/png'. -
pathстрока (необязательно)Необязательный путь к прикрепленному файлу в файловой системе.
-
bodyБуфер (необязательно)Необязательное тело вложения, используемое вместо файла.
-
номер_колонки
Номер колонки, в которой объявлен текущий выполняемый тест.
Использование
testInfo.column
Тип
конфигурация
Обработанная конфигурация из файла конфигурации.
Использование
testInfo.config
Тип
продолжительность
Количество миллисекунд, которое потребовалось тесту для завершения. Всегда ноль до завершения теста, будь то успешно или нет. Может использоваться в test.afterEach() крючке.
Использование
testInfo.duration
Тип
ошибка
Первая ошибка, возникшая во время выполнения теста, если таковая имеется. Это равно первому элементу в testInfo.errors.
Использование
testInfo.error
Тип
ошибки
Ошибки, возникшие во время выполнения теста, если таковые имеются.
Использование
testInfo.errors
Тип
ожидаемый_статус
Ожидаемый статус для текущего выполняемого теста. Обычно '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"
файл
Абсолютный путь к файлу, в котором объявлен текущий выполняемый тест.
Использование
testInfo.file
Тип
фунция
Функция теста, переданная в test(title, testFunction).
Использование
testInfo.fn
Тип
строка
Номер строки, в которой объявлен текущий выполняемый тест.
Использование
testInfo.line
Тип
каталог_вывода
Абсолютный путь к каталогу вывода для этого конкретного выполнения теста. Каждое выполнение теста получает свой собственный каталог, чтобы они не конфликтовали.
Использование
testInfo.outputDir
Тип
индекс_параллельности
Индекс рабочего процесса между 0 и workers - 1. Гарантируется, что рабочие процессы, выполняющиеся одновременно, имеют различные parallelIndex. При перезапуске рабочего процесса, например, после ошибки, новый рабочий процесс имеет тот же parallelIndex.
Также доступен как process.env.TEST_PARALLEL_INDEX. Подробнее о параллелизме и фрагментации с Playwright Test.
Использование
testInfo.parallelIndex
Тип
проект
Обработанная конфигурация проекта из файла конфигурации.
Использование
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
Тип
© 2024 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-testinfo