Monorepo de testes automatizados de API, BDD e E2E para os microserviços
ms-notification, ms-payment e ms-voucher.
As suítes usam Playwright com TypeScript como executor e cliente HTTP. Os cenários atuais não automatizam navegador: eles exercitam contratos REST, jornadas integradas, processamento assíncrono, filas, persistência, resiliência, segurança e chamadas a dependências simuladas.
O nome lógico da raiz em
settings.gradle.ktséPlaywrightTestCase. O diretório do checkout atual ainda se chamaPlaywrightSwitchCase; essa diferença não altera a execução das suítes.
| Subprojeto | Serviço validado | Cobertura principal | Casos coletados |
|---|---|---|---|
ms-notification-playwright-e2e |
ms-notification |
SMS, WhatsApp BLiP/Salesforce, Voucher adhoc, Routeasy, notificações, filas e observabilidade | 68 em 13 specs |
ms-payment-playwright-e2e |
ms-payment |
crédito, PIX, split, contrato, retry, idempotência e sanitização | 9 em 7 specs |
ms-voucher-playwright-e2e |
ms-voucher |
setup, pricing, venda, notificação, mensagens funcionais e operações em lote | 48 em 10 specs |
Os números refletem npx playwright test --list executado em 24/07/2026. Declarações
parametrizadas explicam por que os 125 casos coletados são gerados por 118 declarações
test(...).
Este repositório adota o conceito de monorepo porque mantém, em uma única raiz Git, três projetos relacionados, com documentação e visão arquitetural compartilhadas. Ao mesmo tempo, preserva a autonomia de cada suíte:
- cada subprojeto possui seu próprio
package.json, dependências, configuração TypeScript, configuração Playwright, variáveis de ambiente e comandos npm; - testes, clientes HTTP, builders de massa, scripts e infraestrutura local ficam próximos do microserviço que validam;
- os módulos podem evoluir e ser executados separadamente;
settings.gradle.ktsregistra os três módulos no projeto lógicoPlaywrightTestCase, facilitando a navegação como projeto multiprojeto;- a raiz não é um npm workspace e o Gradle não executa os scripts npm. Os comandos de teste devem ser iniciados dentro do subprojeto correspondente.
PlaywrightTestCase/
├── README.md
├── settings.gradle.kts
├── docs/
│ └── RELATORIO_TECNICO_DOCUMENTACAO_JSDOC_PLAYWRIGHT.md
├── ms-notification-playwright-e2e/
│ ├── infra/
│ ├── scripts/
│ ├── src/
│ ├── tests/
│ ├── docs/
│ ├── package.json
│ └── playwright.config.ts
├── ms-payment-playwright-e2e/
│ ├── docker/
│ ├── scripts/
│ ├── src/
│ ├── tests/
│ ├── docs/
│ ├── docker-compose.yml
│ ├── package.json
│ └── playwright.config.ts
└── ms-voucher-playwright-e2e/
├── docker/
├── fixtures/
├── postman/
├── scripts/
├── src/
├── tests/
├── docs/
├── package.json
└── playwright.config.ts
O fluxo predominante é:
spec Playwright
-> cliente HTTP do serviço alvo
-> microserviço em local, HML ou PROD
-> banco, fila ou dependência mockada
-> polling/journal do WireMock/consulta de fila
-> asserções de contrato e regra de negócio
-> relatório HTML, JUnit e, quando configurado, JSON
Padrões compartilhados:
- Playwright
APIRequestContextpara testes de API; - TypeScript em modo estrito;
- configuração centralizada por ambiente;
- payloads criados por builders ou factories;
- WireMock para observar e controlar integrações externas;
- LocalStack para serviços AWS locais;
expect.pollou helpers de polling para efeitos assíncronos;- trace e, em parte das suítes, screenshot retidos em falhas;
- JSDoc em português-BR associado a todas as 118 declarações de teste;
- filtros, tags e guards para reduzir o risco de mutações em ambientes compartilhados.
Valida os canais e fluxos do ms-notification em local, hml e prod. A stack local reúne
MySQL, LocalStack/SQS, WireMock HTTP/HTTPS e duas instâncias do serviço: uma com BLiP e outra com
Salesforce como provedor de WhatsApp.
Principais áreas:
- health, SMS e WhatsApp;
- Voucher adhoc e fallback SMS;
- webhook Routeasy e encurtamento;
- criação, consulta e atualização de notificações;
- retry e hospital em SQS;
- OAuth, cache, renovação de token e idempotência do Salesforce;
- observabilidade e ausência de dados sensíveis.
Consulte o README do módulo e sua matriz de cenários.
Valida a API do ms-payment em local, hml e prod. A infraestrutura local usa MySQL,
LocalStack/SQS/SSM, WireMock para representar a Malga e um mock de webhook; o serviço alvo pode
ser incluído por perfil do Docker Compose.
Principais áreas:
- contrato público de pagamento;
- fluxo de crédito
customer -> card -> charge; - pagamento com e sem split;
- regressão de PIX;
- retry sem duplicar customer ou card;
- sanitização de tokens e identificadores internos.
Consulte o README do módulo e sua matriz BDD/E2E.
Valida a API do ms-voucher nos perfis local, local-hml, hml e prod. A stack local reúne
MySQL, Redis, LocalStack/SQS/S3, mocks de ms-notification e SOA/EBS, além de perfis opcionais para
o serviço alvo e Oracle.
Principais áreas:
- setup e seleção de canal de notificação;
- importação e aplicação de regras de preço Gestão VG;
- venda, cancelamento, SMS, WhatsApp e fallback;
- mensagens funcionais;
- bloqueio assíncrono em lote, códigos
422.007,422.062e422.064; - localização, webhook, concorrência e proteção do DTO público.
Consulte o README do módulo e sua matriz BDD/E2E.
- Node.js 20 ou superior;
- npm;
- Docker com Docker Compose para os ambientes locais;
- repositório do microserviço alvo disponível quando o Compose precisar construir a aplicação;
- requisitos próprios do backend, descritos no README de cada módulo.
As dependências são instaladas por subprojeto:
cd ms-notification-playwright-e2e
npm install
cd ../ms-payment-playwright-e2e
npm install
cd ../ms-voucher-playwright-e2e
npm installOs caminhos das aplicações alvo são configuráveis por:
MS_NOTIFICATION_SOURCE_DIR;MS_PAYMENT_PROJECT_DIR;MS_VOUCHER_PROJECT_DIR.
Prefira arquivos .env locais e ignorados pelo Git para caminhos, credenciais e tokens reais.
Use os arquivos .example disponíveis em cada módulo como referência.
Execute os comandos a partir do módulo desejado.
| Objetivo | Notification | Payment | Voucher |
|---|---|---|---|
| Validar ambiente | npm run lint:env |
npm run doctor:env |
npm run doctor:env |
| Subir dependências locais | npm run compose:up |
npm run infra:up |
npm run infra:up |
| Subir dependências e aplicação | incluído em compose:up |
npm run infra:up:app |
npm run infra:up:app |
| Executar local | npm run test:local |
npm run test:local |
npm run test:local |
| Executar HML | npm run test:hml |
npm run test:hml |
npm run test:hml |
| Executar PROD seguro | npm run test:prod |
npm run test:prod |
npm run test:prod |
| Abrir relatório | npm run report |
npm run report |
npm run report |
| Derrubar infraestrutura | npm run compose:down |
npm run infra:down |
npm run infra:down |
Exemplo:
cd ms-payment-playwright-e2e
cp .env.local.example .env.local
npm run infra:up
npm run doctor:env
npm run test:local
npm run infra:downNão há, na raiz, um comando test:all. Isso é intencional no estado atual: as stacks locais
compartilham algumas portas padrão, como 4566 e 3306, e devem ser executadas isoladamente ou
com portas reconfiguradas.
| Ambiente | Finalidade | Proteção esperada |
|---|---|---|
local |
execução reproduzível com dependências simuladas | pode alterar apenas recursos locais descartáveis |
local-hml |
ms-voucher local com dependências de HML |
somente smoke por padrão; workers e mutações bloqueados |
hml |
validação em homologação | dados autorizados e mutações explicitamente habilitadas |
prod |
verificação não destrutiva | somente cenários seguros selecionados pelo módulo |
Antes de executar HML ou PROD, revise tags, guards, massa e variáveis do módulo. No
ms-voucher, mutações em HML exigem confirmação textual, e PROD nunca permite mutação.
Conforme o módulo, a execução gera:
- relatório interativo HTML;
- JUnit XML para integração com CI;
- JSON para análise automatizada;
- trace e screenshot de falha;
- artefatos em
test-results.
Esses diretórios são locais e não devem ser versionados.
- Relatório técnico consolidado: análise da arquitetura, monorepo, testes, JSDoc, documentação, riscos e validações.
- Documentação de notification: ambientes, matriz, relatórios BLiP/Salesforce e guia BDD.
- Documentação de payment: inventário, matriz e relatórios técnicos.
- Documentação de voucher: matriz, guias BDD, execução local, local-HML e relatórios das regras em lote.
Para manter o padrão do monorepo:
- crie um diretório autônomo com
package.json,playwright.config.tsetsconfig.json; - organize
tests,src,scripts,docse a infraestrutura local necessária; - centralize ambiente, clientes HTTP e builders fora das specs;
- proteja cenários mutantes com tags e guards;
- adicione o módulo em
settings.gradle.kts; - documente instalação, ambientes, comandos, relatórios e riscos no README do módulo;
- atualize a visão geral e o relatório técnico da raiz.