Аннотации тестов
Vitest поддерживает аннотирование ваших тестов пользовательскими сообщениями и файлами через API context.annotate
. Эти аннотации будут прикреплены к тестовому случаю и переданы репортерам в хуке onTestAnnotate
.
test('hello world', async ({ annotate }) => {
await annotate('this is my test');
if (condition) {
await annotate("this should've errored", 'error');
}
const file = createTestSpecificFile();
await annotate('creates a file', { body: file });
});
WARNING
Функция annotate
возвращает Promise, поэтому ее необходимо ожидать, если вы от нее зависите. Однако Vitest также автоматически ожидает любые аннотации, которые не были явно ожиданы (awaited), до завершения теста.
Эти аннотации будут отображаться по-разному в зависимости от используемого репортера.
Встроенные репортеры
default
Репортер default
выводит аннотации только при неудачном завершении теста:
⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯
FAIL example.test.js > an example of a test with annotation
Error: thrown error
❯ example.test.js:11:21
9 | await annotate('annotation 1')
10| await annotate('annotation 2', 'warning')
11| throw new Error('thrown error')
| ^
12| })
❯ example.test.js:9:15 notice
↳ annotation 1
❯ example.test.js:10:15 warning
↳ annotation 2
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯
verbose
В терминале TTY репортер verbose
ведет себя так же, как default
. Однако в не-TTY-среде репортер verbose
также будет выводить аннотации после каждого теста.
✓ example.test.js > an example of a test with annotation
❯ example.test.js:9:15 notice
↳ annotation 1
❯ example.test.js:10:15 warning
↳ annotation 2
html
HTML-репортер отображает аннотации так же, как и пользовательский интерфейс Vitest. Аннотации показываются на строках, где они были вызваны. В настоящее время, если аннотация не была вызвана в тестовом файле, вы не сможете увидеть ее в пользовательском интерфейсе. Мы планируем добавить отдельное представление сводки тестов, где она будет видна.


junit
Репортер junit
размещает аннотации внутри тега properties
соответствующего тестового случая. Репортер JUnit игнорирует все прикрепленные файлы и выводит только тип и сообщение.
<testcase classname="basic/example.test.js" name="an example of a test with annotation" time="0.14315">
<properties>
<property name="notice" value="the message of the annotation">
</property>
</properties>
</testcase>
github-actions
Репортер github-actions
по умолчанию выводит аннотацию в виде сообщения-уведомления (notice message). Вы можете задать type
, передав второй аргумент как notice
, warning
или error
. Если тип не является одним из перечисленных, Vitest покажет сообщение как уведомление.


tap
Репортеры tap
и tap-flat
отображают аннотации в виде диагностических сообщений, каждое на новой строке, начинающейся с символа #
. Они игнорируют все прикрепленные файлы и выводят только тип и сообщение:
ok 1 - an example of a test with annotation # time=143.15ms
# notice: the message of the annotation