> For the complete documentation index, see [llms.txt](https://lunarie.gitbook.io/lunarie-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lunarie.gitbook.io/lunarie-docs/desenvolvimento/05-testes.md).

# Testes

> **Última atualização:** 08/10/2026 O repositório não tem testes automatizados (conferido em 08/10/2026: sem Vitest, Jest ou Playwright, sem arquivos `*.test.*` ou `*.spec.*`). A validação é manual, apoiada em verificações estáticas e no Storybook. As funções `play` das stories fazem o papel de teste de componente, mas só rodam dentro do Storybook, não no `npm test` nem em CI.

## O que existe

| Camada                | Como é validada                                                                                                                                                                                                                                                                                                          |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Tipos                 | `tsc` em modo `strict`, antes de todo push.                                                                                                                                                                                                                                                                              |
| Estilo e erros comuns | `eslint` e `prettier`, antes de todo push.                                                                                                                                                                                                                                                                               |
| Componentes           | Storybook, com uma story por componente. Cada story tem uma função `play` que clica, digita e usa o teclado, e confere estado, foco e callbacks (aba Interactions). O addon `addon-a11y` roda o axe em cada story (aba Accessibility). Ver [Rotina do Design System](/lunarie-docs/marca/09-rotina-do-design-system.md). |
| Fluxos                | Teste manual da fundadora, em produção, depois da publicação.                                                                                                                                                                                                                                                            |
| Regras de negócio     | RLS e triggers do banco garantem as regras críticas mesmo se a interface falhar. Elas são verificadas com consultas SQL e pelos Security Advisors do Supabase depois de cada migração.                                                                                                                                   |
| Integrações           | Painel de diagnóstico em `/admin`, que consulta Google Books, Groq e demais serviços e mostra a resposta de cada um. Pós-deploy, `send-to-kindle` e `kindle-bounce-check` são testados com envios reais.                                                                                                                 |
| Erros em produção     | PostHog (captura de exceções) e `ErrorBoundary` global ([Monitoramento](/lunarie-docs/qualidade/04-monitoramento.md)).                                                                                                                                                                                                   |

## Validação manual antes de publicar

O roteiro manual está no [Checklist de Entrega](/lunarie-docs/qualidade/02-checklist-de-entrega.md). Ele cobre o cenário principal, os casos de erro e a regressão do que já funcionava.

## Lacunas

* **`play` das stories não roda em CI:** elas só são executadas ao abrir o Storybook. O `test-runner` ou o Vitest com o addon de testes do Storybook rodariam todas no terminal, mas ainda não foram configurados.
* **`aria-valuenow` ausente no Progress:** achado das stories. `ui/progress.tsx` não repassa `value` ao Radix, então a barra é anunciada como indeterminada por leitores de tela.
* **Sem testes automatizados:** nenhuma regra, função de normalização ou fluxo crítico tem teste que rode sozinho. Mudanças em `lib/` (detecção de série, normalização de gênero, nomes de arquivo) dependem de conferência manual.
* **Sem teste dos fluxos de falha do Kindle:** o `kindle-bounce-check` grava `erro_conversao`, e o CHECK do banco rejeita esse valor ([Regras de Dados](/lunarie-docs/banco-de-dados/06-regras-de-dados.md)). Um teste automatizado teria exposto o problema.
* **Sem ambiente de teste:** não há staging. Todo teste de integração ocorre contra produção ([Ambientes](/lunarie-docs/arquitetura/03-ambientes.md)).

## Documentos relacionados

* [Critérios de Aceitação](/lunarie-docs/requisitos/05-criterios-de-aceitacao.md)
* [Checklist de Entrega](/lunarie-docs/qualidade/02-checklist-de-entrega.md)
* [Acessibilidade](/lunarie-docs/experiencia-do-usuario/06-acessibilidade.md)
