Anotações em Testes
O Vitest permite anotar seus testes com mensagens personalizadas e anexar arquivos através da API context.annotate
. Essas anotações serão vinculadas ao caso de teste correspondente e repassadas aos reporters através do hook 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
A função annotate
retorna uma Promise
, portanto, deve ser aguardada (await
) se você depender do seu resultado de alguma forma. No entanto, o Vitest também aguardará automaticamente qualquer anotação não aguardada antes que o teste seja finalizado.
A forma como as anotações são exibidas varia de acordo com o reporter utilizado.
Reporters Integrados
default
O reporter default
imprime anotações somente se o teste falhar:
⎯⎯⎯⎯⎯⎯⎯ 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
Em um terminal TTY, o reporter verbose
funciona de forma similar ao reporter default
. No entanto, em um ambiente que não seja TTY, o reporter verbose
também imprimirá anotações após cada teste, independentemente do seu resultado.
✓ 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
O reporter HTML exibe as anotações de forma semelhante à interface do usuário. Você pode visualizar a anotação na linha onde foi invocada. Atualmente, se a anotação não tiver sido chamada em um arquivo de teste, ela não será visível na UI. Estamos planejando implementar uma visualização de resumo de teste separada onde ela será exibida.


junit
O reporter junit
lista as anotações dentro da tag <properties>
do caso de teste. O reporter JUnit ignorará todos os anexos e imprimirá apenas o tipo e a mensagem da anotação.
<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
O reporter github-actions
imprimirá a anotação como uma mensagem de aviso por padrão. Você pode configurar o type
passando o segundo argumento como notice
, warning
ou error
. Se o tipo não for nenhum desses, o Vitest exibirá a mensagem como um aviso.


tap
Os reporters tap
e tap-flat
imprimem anotações como mensagens de diagnóstico em uma nova linha, começando com um símbolo #
. Eles ignorarão todos os anexos e imprimirão apenas o tipo e a mensagem:
ok 1 - an example of a test with annotation # time=143.15ms
# notice: the message of the annotation