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​

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

Например, можно прикрепить скриншот к тесту:

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 строка (необязательно)

      Путь к файлу на файловой системе. Взаимоисключающее с телом.

Возвращает

  • Обещание<void>

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

Аргументы

  • condition boolean

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

  • description строка (необязательно)

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

snapshotPath​

Возвращает путь к файлу снимков с заданным pathSegments. Подробнее о снимках.

Обратите внимание, что pathSegments принимает сегменты пути к файлу снимков, такие как testInfo.snapshotPath('relative', 'path', 'to', 'snapshot.png'). Однако этот путь должен оставаться в пределах каталога снимков для каждого тестового файла (т.е. a.spec.js-snapshots), в противном случае произойдёт ошибка.

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

testInfo.snapshotPath(...pathSegments);

Аргументы

  • ...pathSegments Массив<строка>

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

Возвращает

  • строка

Свойства​

аннотации​

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

Подробнее о аннотациях тестов.

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

testInfo.annotations

Тип

  • Массив<объект>
    • type строка

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

    • description строка (необязательно)

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

вложения​

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

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

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

testInfo.attachments

Тип

  • Массив<объект>
    • name строка

      Название вложения.

    • contentType строка

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

    • path строка (необязательно)

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

    • body Буфер (необязательно)

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

номер_колонки​

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

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

testInfo.column

Тип

  • число

конфигурация​

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

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

testInfo.config

Тип

  • FullConfig

продолжительность​

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

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

testInfo.duration

Тип

  • число

ошибка​

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

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

testInfo.error

Тип

  • TestInfoError

ошибки​

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

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

testInfo.errors

Тип

  • Массив<TestInfoError>

ожидаемый_статус​

Ожидаемый статус для текущего выполняемого теста. Обычно '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

Тип

  • FullProject

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

Spec-Zone.ru

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