Ir para o conteúdo principal

🃏 Jest 19: Modo Watch Imersivo e Melhorias na Plataforma de Testes

· 9 min de leitura"
Rogelio Guzman
Rogelio Guzman
Tradução Beta Não Oficial

Esta página foi traduzida por PageTurner AI (beta). Não é oficialmente endossada pelo projeto. Encontrou um erro? Reportar problema →

Hoje temos o prazer de lançar a versão 19 da plataforma de testes Jest. É o maior lançamento do Jest até agora e estamos muito animados para mostrar o que construímos nos últimos dois meses:

Modo Watch Imersivo

Nós reescrevemos completamente o modo watch para torná-lo instantâneo e mais extensível. Como resultado, a experiência de uso é verdadeiramente imersiva: os testes são reexecutados instantaneamente após uma alteração de arquivo e facilitamos a seleção dos testes corretos.

Atualizações de Snapshots

Fizemos algumas alterações no formato de snapshot. Não fazemos mudanças assim com frequência e só as consideramos se realmente melhorarem o funcionamento dos snapshots. Além de introduzir um número de versão para snapshots, acumulamos várias mudanças que queríamos fazer no formato há algum tempo:

  • Removemos o prefixo "test" nos nomes de snapshots provenientes de chamadas de nível superior test ou it.

  • Melhoramos a impressão de elementos React para causar menos alterações quando a última prop em um elemento muda.

  • Melhoramos o mecanismo de escape de caracteres para ser mais à prova de falhas.

Antes:

exports[`test snap 1`] = `
<header>
<h1>
Jest \"19\"
</h1>
<Subtitle
name="Painless JavaScript Testing" />
</header>
`;

Depois (sem prefixo "test", melhor renderização de JSX, cabeçalho de versão):

// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`snap 1`] = `
<header>
<h1>
Jest "19"
</h1>
<Subtitle
name="Painless JavaScript Testing"
/>
</header>
`;

Decidimos que é um bom momento para introduzir snapshots versionados para garantir que todos os desenvolvedores estejam usando uma versão compatível do Jest. Veja como avisamos sobre a necessidade de atualizar seu snapshot:

snapshot-version

Por favor, certifique-se de reverter quaisquer alterações locais antes de atualizar para tornar a transição suave e garantir que você não está incluindo alterações indesejadas de testes com falha em seus novos snapshots.

Impressão melhorada de testes ignorados

Testes ignorados agora são impressos em uma única linha, em vez de mostrar cada um individualmente ao testar no modo verboso ou em um único conjunto. Esperamos que isso permita que você se concentre nos testes atualmente importantes. Além disso, ocupa muito menos espaço!

skipped-tests

Novos argumentos de CLI

O Jest 19 traz dois novos argumentos relacionados à cobertura que podem ser executados pela CLI:

  • --collectCoverageFrom

  • --coverageDirectory

Agora também geramos erros para argumentos de CLI inválidos, em vez de ignorá-los. Mas estamos de prontidão com mensagens de erro úteis como a abaixo, por exemplo, quando você tenta executar jest --watc:

cli-error

Melhorias no expect

Estamos próximos de ter quase paridade total de recursos com o pacote npm expect. Michael Jackson, o autor do pacote, concordou em doá-lo ao projeto Jest, o que significa que jest-matchers será renomeado para expect. Como nossa versão do expect não pretende ser totalmente compatível, Christopher Chedeau está trabalhando em um codemod para tornar a transição indolor. Christopher também trabalhou em várias melhorias no jest-matchers que permitem seu uso fora do Jest e até funciona dentro de navegadores.

eslint-plugin-jest – nosso próprio plugin ESLint

Graças a Jonathan Kim, o Jest finalmente tem seu próprio plugin oficial ESLint. Ele oferece três regras:

  • no-disabled-tests - impede que você cometa acidentalmente testes desativados.

  • no-focused-tests - evita que você comita testes focados, o que desabilitaria todos os outros testes no mesmo conjunto.

  • no-identical-title - proíbe títulos idênticos em nomes de testes.

Você pode instalá-lo usando npm install --save-dev eslint-plugin-jest ou yarn add --dev eslint eslint-plugin-jest e ativá-lo adicionando {"plugins": ["jest"]} à sua configuração do ESLint.

Novo pacote público: jest-validate

Durante a refatoração do código de validação e normalização da configuração do Jest, ficamos tão satisfeitos com as novas mensagens de erro que extraímos esse módulo para compartilhá-lo com todos. Com o Jest 19, damos as boas-vindas ao jest-validate em nossa família de pacotes autossustentáveis.

O jest-validate é uma ferramenta genérica de validação de configuração que ajuda com mensagens de aviso, erro e depreciação em suas ferramentas JavaScript. Ele também mostra exemplos claros de configurações corretas e oferece uma API simples mas poderosa. Esperamos que seja uma ótima adição aos seus projetos!

validação

É com satisfação que anunciamos que o jest-validate está validando opções de configuração do prettier desde a v0.12. Sinta-se à vontade para adicioná-lo ao seu projeto, testá-lo, enviar feedback e melhorá-lo via pull requests no GitHub.

Matchers assimétricos aprimorados

Migramos a implementação de matchers assimétricos do Jasmine para o Jest, permitindo melhorar ainda mais a experiência do usuário. Como resultado, eles agora têm uma exibição mais elegante, adicionamos o novo matcher expect.stringContaining() e os combinamos com expect.toMatchObject() para você aproveitar o melhor dos dois mundos:

matchers-assimétricos

Mocks manuais aprimorados

Nesta versão, os mocks manuais finalmente funcionam com pastas aninhadas. Por exemplo, __mocks__/react-native/Libraries/Text/Text.js agora funcionará como esperado, simulando o módulo correto. Também corrigimos problemas com mocks virtuais e dependências transitivas e melhoramos o moduleNameMapper para não sobrescrever mocks quando múltiplos padrões mapeiam para o mesmo arquivo.

Mudanças que Quebram Compatibilidade

Como parte de nossas melhorias, removemos a opção de configuração mocksPattern (nunca oficialmente suportada) e renomeamos testPathDirs para roots, nome que explica melhor sua finalidade. A configuração padrão de roots é ["<rootDir>"] e pode ser personalizada para incluir vários diretórios. A opção rootDir sempre foi usada principalmente como token em outras configurações, e essa renomeação tornará o Jest mais claro de configurar.

Documentação renovada

Como você já deve ter notado, Hector Ramos e Kevin Lacker deram um visual novo à documentação do Jest. Mudamos a organização do site, que agora apresenta páginas separadas para Documentação e API:

A homepage foi completamente redesenhada para descrever melhor o que é o Jest: "Plataforma de testes com configuração zero". Também garantimos melhor leitura em dispositivos móveis. E para usuários de RSS - finalmente disponibilizamos um feed para nosso blog.

Atualizações da Comunidade

Finalmente, anunciamos que o test runner ava adotou partes da plataforma Jest e agora inclui suporte básico a snapshots e usa pretty-format. Consolidar infraestruturas de teste facilita o aprendizado e permite compartilhar melhores práticas. Estamos ansiosos para aprender com outras bibliotecas de teste no futuro.

O changelog completo pode ser encontrado no GitHub. O Jest 19 foi um verdadeiro esforço da comunidade JavaScript, com 17 pessoas contribuindo para esta versão. Agradecemos a cada um de vocês pela ajuda para tornar este projeto incrível.

Este post do blog foi escrito por Rogelio Guzman e Michał Pierzchała.