Estratégia de Testes — Cypress Core

Mapa dos formatos de teste usados na prática de QA (smoke, regressão, contrato...) contra o que já existe neste projeto e qual ferramenta cada um usa. Diferente de regras-de-negocio.md (o produto) e historico-de-falhas.md (incidentes) — este arquivo documenta a cobertura de teste em si: o que já roda, o que está pela metade e o que ainda não existe. Atualizar sempre que um formato novo entrar (ex.: virou de "não implementado" pra "em andamento") ou sair do ar.

Índice


Formatos de teste

Tipo O que é Status Ferramenta
Smoke Confere que o sistema "sobe" — sem quebra básica. Raso, roda rápido, é o primeiro filtro. ✅ implementado Cypress (UI pura)
Regressão Cobre toda regra de negócio já confirmada de um módulo — organizada por módulo, roda de ponta a ponta pra pegar qualquer coisa que quebrou. ✅ implementado Cypress (UI + cy.intercept + API real)
Casos de teste Garante que um bug já corrigido e confirmado não volta a acontecer. 1:1 com um incidente documentado. ✅ implementado Cypress (UI + cy.intercept + API real)
Funcional / E2E Valida uma regra de negócio de ponta a ponta, do ponto de vista do usuário. ✅ implementado Cypress (UI)
API / Integração Bate direto no backend, sem UI — valida request/response de verdade. ✅ implementado Cypress + cy.request
Mock / Stub Simula respostas do backend (inclusive erro) pra testar a reação da UI sem depender do backend real. ✅ implementado Cypress + cy.intercept
Contrato Valida que o schema/comportamento da API continua batendo com o esperado. 🟡 em andamento Newman (Postman CLI)
Sanity Smoke bem focado num recorte específico, depois de um deploy pontual. ✅ implementado Cypress (UI)
Exploratório Investigação sem roteiro fixo, pra achar o que o automatizado não previu. 🟡 informal App real + Postman + DevTools

Teste de sanity (implementado)

Diferença pra smoke: smoke é largo e raso (todas as telas, só confere que montaram); sanity é estreito e um pouco mais fundo (1 módulo, 1 ação rápida real — ex.: aplicar 1 filtro, buscar 1 registro). Existe pra cobrir o meio-termo entre "a tela abriu" e "rodar a suíte de regressão/funcional inteira daquele módulo", que seria overkill logo depois de um deploy pontual numa área só.

Estrutura: cypress/e2e/sanity/, 1 spec por módulo — loginSanity.cy.js, contaCorrenteSanity.cy.js, boletoSanity.cy.js, relatorioSanity.cy.js, aplicacaoSanity.cy.js, contaGeradoraSanity.cy.js. Roda tudo com npm run cy:run:sanity, ou só o(s) módulo(s) afetado(s) via --spec (ver README). Nenhum cria dado real.

Ação rápida de cada módulo (reaproveitando Page Objects e valores já validados por outros specs, não inventados na hora):

Módulo Ação
Login Login completo (usuário/senha + 2FA)
Conta Corrente Filtro Status = "Ativa" (mesmo valor de contaCorrente.cy.js), confere ≥ 1 resultado
Boletos Busca por Guid conhecido, confere 1 resultado
Relatórios Abre a aba "Visualizar Relatório" (lista os já solicitados), sem gerar nada
Aplicações Abre o modal "Nova Aplicação" e fecha sem salvar
Contas Geradoras Só abre a tela de Cadastro — não existe ação de leitura segura nesta tela hoje

O Guid usado em boletoSanity.cy.js (6c62f012-49de-47e5-a2c6-90b2b366356f, vindo de postman/core-homol2.postman_environment.jsonguid_boleto) foi confirmado em 25/08/2026 tanto via API (collection de contrato) quanto na própria tela — busca real, 1 resultado, status GERADO, Aplicação V1, cliente João da Silva.

Teste de contrato (em andamento)

O que já está pronto: uma collection Postman dedicada, só leitura (nenhum request de efeito colateral) — postman/CORE_HOMOL_V1_contrato.postman_collection.json. 17 requisições GET cobrindo autenticação, conta digital, boletos, termo de aceite e movimentações, rodando via npm run postman:contract (Newman). Cada request confere:

O ambiente (postman/core-homol2.postman_environment.json) já vem com GUIDs reais e fixos de homologação pré-preenchidos (guid_condominio, guid_administradora, guid_boleto) — o token (token_v1) é obtido sozinho pela primeira request da collection ("Autentica Aplicação").

Schema de sucesso (7 requests, resposta 200 real): "Autentica Aplicação", "Buscar config boleto", "termo-aceite", "Consulta CEP", "Consulta Termo Vigente", "Consulta boleto", "Buscar Status da Remessa".

Schema de erro — permissão (8 requests, sem acesso ao recurso hoje — ver pendência de permissão abaixo, mas o formato do erro em si é real e validado): "Buscar Informações da Conta Digital", "Exibir plano da Conta Digital", "Configurações da Conta Digital", "Buscar Subconta", "Consultar aplicações", "Consulta Usuários", "Buscar Termo Aceito", "Consulta Histórico Boleto". Confirmamos que a API usa dois envelopes de erro consistentes: {code, domain, description} nos 404 e {title, status, detail} nos 403 — o teste de schema garante que esse formato não muda mesmo que o conteúdo do erro surpreenda depois.

Nota de confiabilidade do schema, já confirmada na prática: cada um foi gerado a partir de uma única resposta real capturada (não inventado) — então um campo que veio null nessa amostra vira type: "null" no schema, mesmo que na prática ele possa às vezes vir string/number também. Isso realmente aconteceu: ao trocar guid_condominio por um outro condomínio real, o schema de "Consulta boleto" passou a falhar porque cliente.email, fornecedor.telefone e outros campos vieram null nesses boletos (tinham vindo string na amostra original). Corrigido ampliando o tipo desses campos pra ["string", "null"] — mais uma amostra real incorporada, não um chute. Se esse padrão se repetir, é sinal de ampliar o tipo, não de remover o teste.

Pendências conhecidas:

O quê Afeta Por quê
guid_remessa (6cc8fe3f-c092-4c1b-a339-b21875b13b6f, do condomínio 1c7cc93d-b9e7-4f69-8286-5a46a01e03a8) retorna corpo vazio nesse endpoint específico "Buscar boletos de uma remessa" Mesmo par condomínio/remessa que faz "Buscar Status da Remessa" responder 200 dá corpo vazio aqui — não é dado errado (já confirmamos a remessa existe), é algo desse endpoint específico que precisa de investigação (talvez espere outro parâmetro, ou o corpo realmente vem vazio nesse caso e o teste deveria esperar isso, não 200 com JSON).
baseURL_V1 vazio no environment "Buscar boletos do condomínio" Já estava sem valor definido na collection original CORE HOMOL V1 — não foi esquecimento deste trabalho, é herdado. Mesmo efeito: sem URL válida, não tem resposta nenhuma pra basear schema.
403/404 mesmo com GUID e token corretos, sem causa confirmada As 8 listadas acima em "schema de erro" Provável restrição de permissão da API pra esse tipo de conta (ex.: /adm/* pode ser escopo de backoffice, não de administradora comum) — não confirmado. O formato do erro já está coberto por schema; o que falta é investigar se o 403/404 em si é esperado ou um bug de permissão.

Nota de escopo mais ampla: avaliamos gerar um spec OpenAPI formal (schema centralizado, sincronizado automaticamente com a collection via MCP do Postman) e descartamos — sem ganho claro pro tamanho atual do projeto. O JSON Schema por request acima é a versão simples desse mesmo objetivo (validar campo/tipo), sem precisar de um spec separado nem de sincronização via MCP. Se o projeto crescer a ponto de precisar de schema centralizado/versionado, reavaliar a ideia do spec formal do zero.


Inventário de testes por módulo

Todo it() que existe hoje, agrupado por módulo/função do sistema (não por pasta) — pra ver de uma vez o que já está coberto e o que falta. Categoria = pasta onde mora (ver Smoke, sanity, regressão e testes pontuais no README).

Login

Categoria Spec Testa
Pontual login.cy.js Login válido (usuário/senha + 2FA); erro com credenciais inválidas
Sanity loginSanity.cy.js Login completo, chega no dashboard
Smoke smoke.cy.js Dashboard carrega após login

Aplicações

Categoria Spec Testa
Pontual aplicacao.cy.js Campo obrigatório em branco barra salvar; preenche nome e confere valor (não salva)
Sanity aplicacaoSanity.cy.js Abre modal "Nova Aplicação", fecha sem salvar
Smoke smoke.cy.js Tela "Aplicações" carrega; "DDA > Aplicações" carrega

Contas Correntes

Categoria Spec Testa
Pontual contaCorrente.cy.js 14 filtros, 1 por 1: Guid, Razão Social, CNPJ, Código Banco, Agência, Conta Corrente, Status, Status Aprovação, Aplicação, Principal, Conta Geradora, Data Cadastro, Data Modificação, Data Última Aprovação
Pontual contaCorrente.cy.js Botão "Limpar Seleção" zera filtros e volta a listar tudo
Regressão contaCorrenteRegressao.cy.js Filtro Agência/Conta com dígito verificador zera resultado (bug já confirmado); combinação sem dígito acha o registro
Sanity contaCorrenteSanity.cy.js Filtro Status "Ativa" retorna ≥ 1 resultado
Smoke smoke.cy.js Tela "Contas Correntes" carrega

Contas Geradoras

Categoria Spec Testa
Pontual contaGeradora.cy.js Campo obrigatório em branco barra salvar; preenche tudo e confere (não salva)
Pontual (dado real) contaGeradora.cy.js Salva de verdade com todos os campos — cria registro real
Sanity contaGeradoraSanity.cy.js Abre a tela de Cadastro
Smoke smoke.cy.js "Cadastro", "Distribuição Percentual", "Alteração em Lote" carregam

Boletos

Categoria Spec Testa
Pontual (dado real) boletoViaApi.cy.js Boleto padrão e customizado (dados no modal de Detalhes); vencimento retroativo → ERRO_VALIDACAO; cancelamento → PEDIDO_CANCELAMENTO; remessa com 2 boletos, cada um com guid próprio
Pontual (dado real) boletoSimulaErroEmissao.cy.js Token inválido → 403; condomínio inexistente → 404; CPF/CNPJ faltando → 500 (bug real, vaza stack trace); código externo repetido → 400
Regressão boletoRegressao.cy.js 8 comportamentos: token inválido (403), condomínio inexistente (404), código duplicado (400), guid provisório ≠ guid real, cancelamento (PEDIDO_CANCELAMENTO), retroativo (ERRO_VALIDACAO), guid de Condomínio aceito, guid de Administradora deveria ser barrado (ainda não é — demanda em andamento)
Regressão + Segurança boletoGuidExistenteRegressao.cy.js Condomínio real sem relação com a Aplicação é aceito (sem checagem de posse); guid de Administradora no lugar de Condomínio deveria ser barrado — ainda não é
Segurança (dado real) boletoCancelamentoCrossTenant.cy.js Administradora sem relação nenhuma NÃO consegue cancelar boleto alheio (BOLA/IDOR)
Segurança autenticacaoObrigatoria.cy.js Gerar Boleto, Buscar Boletos, Cancelar Boleto — cada um sem AuthCG e com AuthCG inválido (6 checagens)
Sanity boletoSanity.cy.js Busca por Guid conhecido, acha 1 resultado
Smoke smoke.cy.js "Boletos", "Remessa", "Notificações > Boletos" (Geral/Bolepix), "DDA > Boletos" carregam

Subconta

Categoria Spec Testa
Pontual (dado real, irreversível) subconta.cy.js Habilita subconta de verdade; CNPJ duplicado vira subconta da subconta; CNPJ duplicado SEM permissão é barrado

Relatórios

Categoria Spec Testa
Pontual (dado real) relatorios.cy.js Os 11 tipos, 1 por 1 (Boletos Gerados, Boletos Pagos Mensal, Cadastro Condomínios, DIMP Clientes, DIMP Transações, Financeiro, Indicação de Churn, Projeção de MRR, Transferências Pagas, Zoho Boletos Pagos Core/VS): gera com sucesso + bloqueia repetição em menos de 15 min
Regressão relatorioRegressao.cy.js "Transferências Pagas" sem Guid Administradora/Condomínio não dispara request nenhum
Sanity relatorioSanity.cy.js Aba "Visualizar Relatório" abre, sem gerar nada
Smoke smoke.cy.js Tela "Relatórios" carrega

Segurança (cruza módulos)

Categoria Spec Testa
Segurança autenticacaoObrigatoria.cy.js Cria Administradora sem/com Api-Key/Application inválidos; Cria Condomínio, Gerar Boleto, Buscar Boletos, Cancelar Boleto, Criar Conta Corrente ADM — cada um sem/com AuthCG inválido. 12 checagens, nenhuma cria dado real
Segurança (dado real) boletoCancelamentoCrossTenant.cy.js Cross-tenant em Cancelar Boleto (ver Boletos, acima)
Regressão + Segurança boletoGuidExistenteRegressao.cy.js Falta de checagem de posse na remessa (ver Boletos, acima)

Backlog de segurança (priorizado)

Consolidado em 28/08/2026 — antes vivia espalhado em comentários soltos por vários arquivos. 2 de 2 endpoints de Entidade testados pra cross-tenant já confirmaram falta de checagem de posse — por isso os outros endpoints de Entidade (mesma família, mesmo padrão de teste) entram como alta prioridade, não como "seria bom ter".

⚠️ Gravidade real das 4 linhas "cross-tenant" abaixo (Gerar Boleto, Cancelar Boleto, Buscar Boletos, Cria Condomínio) depende de uma pergunta ainda sem resposta (esclarecido 02/09/2026): o Core é ferramenta interna da Partner — a tela de backoffice mostrar qualquer Administradora/Condomínio é o design, não bug. O token AuthCG de Entidade (o que essas 4 linhas usam) é outra coisa — não confirmado se ele chega a ser usado por algum ERP externo do cliente final, ou se é estritamente interno à Partner. Achado técnico (API não confere posse) continua confirmado do mesmo jeito nos 2 casos — só muda se é exposição real entre clientes ou falta de camada de proteção sem exploração ativa hoje. Perguntar isso pro time do Core junto do reporte.

Prioridade Item Por quê Status
🔴 Aguardando correção do produto Falta de posse em POST /contaDigital/remessa (Gerar Boleto) Confirmado — Administradora gera boleto pro Condomínio de outra Travado em boletoGuidExistenteRegressao.cy.js; reportar pro time do Core
🔴 Aguardando correção do produto Falta de posse em POST .../boleto/{codigo}/cancelamento (Cancelar Boleto) Confirmado 2x — Administradora cancela boleto de outra Travado em boletoCancelamentoCrossTenant.cy.js; reportar pro time do Core
🔴 Aguardando correção do produto POST /job/contas-digitais/atualizar-flag-emissao não exige autenticação Confirmado 01/09/2026 — roda mesmo sem AuthCG ou com AuthCG inválido, processa TODAS as contas digitais ativas. Possível regressão da migração Java 25/Spring Boot 3.5.7 (ver docs/historico-de-falhas.md) Travado em autenticacaoObrigatoria.cy.js; reportar pro time do Core
🔴 Aguardando correção do produto Cross-tenant em GET .../boletos (Buscar Boletos) Confirmado 02/09/2026 — Administradora B consulta boletos do Condomínio de A Travado em contaDigitalCrossTenant.cy.js; reportar pro time do Core
🔴 Aguardando correção do produto Cross-tenant em POST /contaDigital/{guid} (Cria Condomínio) Confirmado 02/09/2026 — Administradora B cria Condomínio de verdade "dentro" da Administradora A, só sabendo o guid Travado em contaDigitalCrossTenant.cy.js; reportar pro time do Core
✅ Protegido, confirmado Cross-tenant em POST .../contas-digitais/{guid}/contas-correntes (Criar Conta Corrente ADM) Confirmado 02/09/2026 — API rejeita corretamente Travado em contaDigitalCrossTenant.cy.js, sem ação
🟡 Média — precisa investigação antes Rotas de backoffice (/adm/*: Editar Conta Digital, Configurar Conta Geradora, Habilitar Subconta, Inativar Conta Digital) Não é cross-tenant clássico (backoffice acessar qualquer entidade é o design) — a pergunta certa é "um token de Entidade também funciona nessas rotas?" (não confirmado, ver docs/regras-de-negocio.md#autenticação-e-permissões) Não investigado
⚪ Descartado Cross-tenant entre 2 sessões de backoffice Não faz sentido — backoffice é por natureza uma sessão que acessa qualquer entidade, não teria "dono" pra violar

Fonte: docs/regras-de-negocio.md#autenticação-e-permissões, conversa de 28/08/2026 sobre próximos passos pós-confirmação dos 2 achados.

Convenção: toda API nova exige teste de autenticação

Regra, a partir de 01/09/2026 (decisão explícita do usuário): toda vez que este projeto passa a usar de verdade um endpoint novo (Postman confirma o contrato, um Cypress spec chama ele pela 1ª vez), esse endpoint precisa ganhar 2 it()s em autenticacaoObrigatoria.cy.js — mesmo padrão dos já existentes: chamar sem o header de auth, e chamar com um valor inválido; esperar que nenhum dos dois "funcione" (expectNaoFuncionaSemAutenticacao — status fora de [200, 201, 202, 204]).

Por que essa regra existe: o job atualizarFlagEmissao (ver entrada de 01/09/2026 em docs/historico-de-falhas.md) ficou semanas sem esse teste — só foi descoberto que ele não exigia mais autenticação (possível regressão da migração Java 25/Spring Boot 3.5.7) porque o usuário pediu explicitamente pra confirmar isso numa demanda específica. Sem o teste automatizado rodando desde o começo, uma regressão de segurança dessas passa despercebida indefinidamente — o mesmo risco existe agora pras ~30 rotas novas de ADM/ContaDigital/ADM/ContaDigitalApi descobertas em 31/08/2026 (Postman) e ainda sem nenhum teste de autenticação escrito.

Onde essa regra bate no escopo já documentado do spec: o próprio autenticacaoObrigatoria.cy.js hoje só cobre a API de Entidade (/api/v1/*) — as rotas de /adm/* (backoffice) ficaram de fora por decisão de 26/08/2026 ("mecanismo de autenticação diferente, merece investigação própria"). Essa exclusão não é permanente — é só "ainda não investigado". A regra desta seção vale pra qualquer rota nova, /api/v1/*, /adm/* ou /job/* — a decisão de 26/08 só adiou a tarefa pras rotas de backoffice que já existiam na época, não isenta rotas novas.

Mapeamento completo (feito em 01/09/2026, baseado em uso real — grep em todo cypress/ pelas chamadas config.baseUrl/config.adminBaseUrl, não em achismo):

Status Endpoint Onde é usado Mecanismo de auth
✅ Testado POST /credenciamento (Cria Administradora) autenticacaoObrigatoria.cy.js + toda spec que cria Administradora Api-Key+Application
✅ Testado POST /contaDigital/{guid} (Cria Condomínio) idem AuthCG (Entidade)
✅ Testado POST /contaDigital/remessa (Gerar Boleto) idem AuthCG (Entidade)
✅ Testado GET /contaDigital/{guid}/boletos (Buscar Boletos) idem AuthCG (Entidade)
✅ Testado POST .../boleto/{codigo}/cancelamento (Cancelar Boleto) idem AuthCG (Entidade)
✅ Testado POST /contas-digitais/{guid}/contas-correntes (Criar Conta Corrente ADM) idem AuthCG (Entidade)
✅ Testado POST /job/contas-digitais/atualizar-flag-emissao (Job) manual/Postman AuthCG (achado: não exigia, ver acima)
🔴 Usado, SEM teste — maior prioridade PUT /adm/contas-digitais/{guid}/configuracoes/boleto (Configurar Conta Geradora) commands.js (definirContaGeradora), boletoRegressao.cy.js, boletoCancelamentoCrossTenant.cy.js, boletoSimulaErroEmissao.cy.js, subconta.cy.js tokenSessao (sessão de backoffice via cy.login(), 2FA — diferente do resto, é o motivo da exclusão de /adm/* em 26/08)
🟡 Candidato (existe no Postman, nunca usado de verdade no Cypress) contas-correntes-subconta, remessa/{guid}/requisicao, termo-aceite, origem-movimentacao, transfeera/*, legal-person/* (todos /api/v1) AuthCG (Entidade)
🟡 Candidato (achado 31/08, nunca usado) ~19 rotas de ADM/ContaDigital (/adm/contas-digitais/*) Postman, pasta "ADM/ContaDigital" Provável tokenSessao (mesma família de /adm/* acima — não confirmado individualmente)
🟡 Candidato (achado 31/08, nunca usado) 7 rotas de ADM/ContaDigitalApi (/adm/conta-digital-api/*) Postman, pasta "ADM/ContaDigitalApi" Idem
⚪ Não mapeado ainda ADM/BancoGeradorAlteracao, Routes (start/stop integrador) Swagger, nunca explorado Desconhecido

Por que a linha 🔴 importa mais que as 🟡: é a única que já está em uso real, ativo, em vários specs — exatamente o padrão que o job (atualizarFlagEmissao) mostrou ser arriscado deixar sem teste. As 🟡 ainda nem têm confirmação de que fazem parte do fluxo real de algum teste, então o risco de "regressão silenciosa" é menor (ninguém depende delas ainda).

Ainda não implementado — precisa de decisão antes: testar a linha 🔴 exige logar via cy.login() (2FA) pra conseguir um tokenSessao válido antes de testar sem/com ele inválido — mais pesado que os testes atuais (só precisam de /auth com credenciais de Aplicação, sem 2FA). As linhas 🟡 dependem de confirmar o payload mínimo válido de cada endpoint contra a API real antes de escrever qualquer teste (mesma regra de sempre: nunca no chute).

Smoke — só "a tela carrega" (sem módulo de negócio próprio)

Unidade Organizacional, Usuários (Listar/Perfil), Contas Digitais Boleto, Termos Aceite, Conta Condominial (Geral/Dashboard/Despesas/Webhook), Integrador, Notificações > Cadastros, DDA > Empresas, DDA > Consumo — 13 telas cobertas só por smoke.cy.js, sem spec pontual/regressão próprio ainda.


Inventário de testes por tipo

Mesmo conjunto de testes do inventário acima, agora agrupado por categoria/pasta em vez de módulo — 1 linha por spec, não por it() (contagem exata em cada linha).

Smoke (smoke/) — 26 testes

A tela carrega, sem quebrar? Raso, roda rápido, não valida regra de negócio nenhuma.

Spec Qtd Cobre
smoke.cy.js 26 Todo item do menu lateral carrega, sem checar regra de negócio

Sanity (sanity/) — 6 testes

A área que acabou de sofrer deploy pontual ainda funciona? 1 ação rápida real por módulo, meio-termo entre smoke e regressão/pontual.

Spec Qtd Cobre
loginSanity.cy.js 1 Login completo
contaCorrenteSanity.cy.js 1 Filtro Status "Ativa"
boletoSanity.cy.js 1 Busca por Guid conhecido
relatorioSanity.cy.js 1 Aba "Visualizar Relatório"
aplicacaoSanity.cy.js 1 Modal "Nova Aplicação"
contaGeradoraSanity.cy.js 1 Tela de Cadastro abre

Casos de teste (casos_de_teste/) — 14 testes

Um bug específico, já confirmado antes, voltou? 1:1 com uma entrada de historico-de-falhas.md. (Nomenclatura trocada em 09/09/2026 — este era o conteúdo de regressao/ antes disso.)

Spec Qtd Trava
boletoRegressao.cy.js 8 Token inválido, condomínio inexistente, código duplicado, guid provisório, cancelamento, retroativo, guid Condomínio/Administradora no campo codigo
boletoGuidExistenteRegressao.cy.js 2 Falta de checagem de posse; guid de Administradora no lugar de Condomínio
contaCorrenteRegressao.cy.js 3 Filtro Agência/Conta com dígito verificador
relatorioRegressao.cy.js 1 "Transferências Pagas" sem Guid não dispara request

Segurança (seguranca/) — 12 testes

Varredura sistemática de autorização/autenticação, cruzando módulos — não é por tela, é por preocupação de segurança.

Spec Qtd Confirma
autenticacaoObrigatoria.cy.js 12 Toda API de Entidade exige autenticação (6 endpoints, sem/com credencial inválida)

Regressão — cria dado real (regressao/<módulo>/) — 27 testes

Regra de negócio de ponta a ponta, fundo — cria Administradora/Condomínio/Boleto de verdade em homologação a cada execução (ver SPECS_COM_DADOS_REAIS em scripts/specs-utils.js — nomenclatura trocada em 09/09/2026, era casos_de_teste/com_dados/ antes disso).

Spec Qtd Valida
relatorios.cy.js 11 Os 11 tipos de relatório, geração + bloqueio de 15 min
boletoViaApi.cy.js 5 Boleto via API, dados na tela, cancelamento, remessa múltipla
boletoSimulaErroEmissao.cy.js 4 Erros reais da API de Gerar Boleto (403/404/500/400)
contaGeradora.cy.js 3 Validação de formulário + salva de verdade
subconta.cy.js 3 Habilitar subconta (irreversível), CNPJ duplicado
boletoCancelamentoCrossTenant.cy.js 1 BOLA/IDOR em Cancelar Boleto

Regressão — sem dado real (regressao/<módulo>/) — 19 testes

Mesma profundidade da linha acima, mas seguro de rodar a qualquer momento — sem efeito colateral real (nomenclatura trocada em 09/09/2026, era casos_de_teste/sem_dados/ antes disso).

Spec Qtd Valida
contaCorrente.cy.js 15 14 filtros + botão "Limpar Seleção"
login.cy.js 2 Login válido + credenciais inválidas
aplicacao.cy.js 2 Campo obrigatório + preenchimento sem salvar