Аннотации тестов
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 2html
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