Painel de chamados técnicos e suíte de testes automatizados com Playwright, TypeScript, Axe-core e K6.
O projeto tem dois componentes: uma aplicação web funcional com backend em Fastify e banco SQLite nativo (node:sqlite), e uma suíte de testes cobrindo fluxos ponta a ponta, contratos de API, acessibilidade e carga.
Tela com autenticação via token JWT e botões de preenchimento rápido para cada perfil.
Listagem com 10 chamados iniciais, filtros por severidade (P1 a P4), status e campo de busca textual em tempo real.
Visualização completa do chamado #INC-1001 com notas técnicas (públicas e internas), anexos e trilha de auditoria de cada ação.
Layout responsivo adaptado para telas pequenas, com tabela convertida em cards verticais e botões com área de toque mínima de 44px.
Todos os 31 testes passando em 40 segundos, cobrindo fluxos de login, máquina de estados, permissões, uploads, acessibilidade e API REST.
O sistema possui três níveis de acesso configurados no banco:
| Cargo | Nome | Senha | O que pode fazer | |
|---|---|---|---|---|
| Administrador | Carlos Rocha | admin@opsdesk.local |
Admin123! |
Acesso total. Pode excluir chamados e alterar qualquer status. |
| Analista | Mariana Souza | analyst@opsdesk.local |
Analyst123! |
Assume chamados, adiciona notas internas e resolve incidentes. |
| Relator | Lucas Lima | reporter@opsdesk.local |
Reporter123! |
Abre novos chamados. Não vê notas internas nem botão de exclusão. |
Na tela de login há botões para preencher essas credenciais com um clique.
- Permissões por Perfil (RBAC): o Relator só visualiza notas públicas e não tem acesso a botões de exclusão ou transição de status. O Analista pode marcar notas como internas. O Administrador pode deletar chamados.
- Ciclo de Vida do Incidente:
OPEN(Aberto) →TRIAGED(Triado) →INVESTIGATING(Em investigação) →MITIGATED(Mitigado) →RESOLVED(Resolvido) →CLOSED(Fechado).- O sistema bloqueia a mudança direta de
OPENparaCLOSED. - Mudar para
RESOLVEDexige o preenchimento de uma nota com a causa raiz e a solução aplicada.
- Upload de Anexos: aceita arquivos
.log,.txt,.pdf,.pnge.jpgde até 10 MB. Arquivos executáveis como.exesão rejeitados com erro 400. - Trilha de Auditoria: toda criação, mudança de status, inclusão de nota ou anexo gera um registro imutável com data e autor.
- Acessibilidade: navegação por teclado funcional (tecla Tab nos formulários e Escape para fechar modais), com contraste verificado no padrão WCAG 2.1 AA.
A suíte conta com 31 testes automatizados divididos em:
tests/e2e/auth-login.spec.ts: visualização da tela de login, autenticação com sucesso, rejeição de senha inválida, preenchimento rápido e logout.tests/e2e/auth-rbac.spec.ts: visibilidade de botões por perfil, bloqueio de notas internas para o relator e ações do analista.tests/e2e/ticket-lifecycle.spec.ts: abertura de chamados, bloqueio de fechamento direto e fluxo completo de resolução com nota obrigatória.tests/e2e/attachments.spec.ts: envio de arquivo.log, recusa de arquivo.exee exclusão de anexos.tests/e2e/filters-search.spec.ts: filtros por severidade, busca em tempo real, estado vazio e restauração da lista.tests/e2e/accessibility.spec.ts: varredura com Axe-core na tela principal e nos modais, além de testes com teclado.tests/e2e/mobile-responsive.spec.ts: verificação de overflow horizontal e tamanho de botões em viewport de celular (Pixel 7).tests/api/tickets-api.spec.ts: validação de schemas de resposta com Zod, códigos HTTP (401, 403, 422) e prevenção contra SQL Injection.
A fixture de teste executa um reset automático do banco de dados antes de cada teste (POST /api/test/reset), garantindo que um teste não interfira nos dados do outro.
- Node.js 22 ou superior.
- NPM 10 ou superior.
git clone <url-do-repositorio>
cd PROJ1
npm install
npx playwright install chromiumnpm startAbra http://localhost:3000 no navegador.
# Executa todos os testes (E2E, API e Acessibilidade)
npm test
# Executa apenas os testes de contrato de API
npm run test:api
# Executa os testes abrindo a interface do Playwright
npm run test:ui
# Abre o relatório HTML detalhado da última execução
npm run test:reportOs scripts ficam na pasta tests/k6/:
# Teste de fumaça: 1 usuário virtual por 30 segundos
k6 run tests/k6/smoke-test.js
# Teste de carga: rampa de até 30 usuários virtuais concorrentes
k6 run tests/k6/load-test.jsCritérios definidos nos scripts:
- 95% das requisições devem responder em menos de 300ms.
- Taxa de erros menor que 1%.
├── .github/workflows/test-e2e.yml # Pipeline de CI no GitHub Actions
├── app/
│ └── src/
│ ├── client/ # Interface web (HTML5, CSS, JS)
│ ├── server/ # Servidor Fastify, rotas e SQLite
│ └── shared/ # Tipos e schemas Zod
├── docs/screenshots/ # Imagens das telas e relatórios
├── scripts/capture-screenshots.ts # Script Playwright para capturar as telas
├── tests/
│ ├── api/ # Testes de contrato de API REST
│ ├── e2e/ # Testes ponta a ponta e acessibilidade
│ ├── factories/ # Geração de dados de teste
│ ├── fixtures/ # Fixtures do Playwright e reset de banco
│ ├── k6/ # Scripts de teste de carga
│ └── pages/ # Page Objects (POM)
├── DESIGN.md # Especificação visual e tokens de cor
├── PLAN.md # Planejamento inicial
└── playwright.config.ts # Configuração do Playwright




