Voltar as noticias
Pare de Executar Toda a Sua Suite de Testes. Use o AST em vez disso.
MCP ProtocolMediaEN

Pare de Executar Toda a Sua Suite de Testes. Use o AST em vez disso.

Dev.to - MCP·15 de maio de 2026

Você acabou de mudar uma função utilitária. O CI é acionado. 2.000 testes do Playwright começam a ser executados.

45 minutos depois, você recebe seu sinal verde.

Esse é o estado dos testes E2E em grande escala: cada PR paga o preço da suíte completa, independentemente do que realmente mudou. Não é um problema de ferramentas — é um problema de informação. Seu CI não sabe quais testes dependem da sua mudança. Então, ele executa tudo.

ast-impact-mapper-mcp corrige isso.

🧠 A Ideia: Gráficos de Importação Não Mentem

Cada projeto TypeScript é um gráfico direcionado de importações. Quando você muda src/utils/auth.ts, os únicos testes que precisam ser executados são aqueles que — direta ou indiretamente — o importam.

Isso não é um palpite baseado em nomes de arquivos ou estrutura de pastas. É uma travessia precisa do seu gráfico de dependência real.

A ferramenta usa ts-morph para analisar seu projeto TypeScript (incluindo tsconfig.json, aliases de caminho, arquivos JS/JSX) e constrói dois gráficos:

  • Gráfico direto: arquivo → arquivos que ele importa
  • Gráfico reverso: arquivo → arquivos que o importam

Dado um conjunto de arquivos alterados, uma BFS através do gráfico reverso encontra todos os testes que dependem deles de forma transitiva. Tudo o mais pode ser ignorado.

🛠️ Oito Ferramentas para Análise de Impacto Completa

Uma vez conectado ao seu assistente de IA (Claude, Cursor), o servidor MCP expõe oito ferramentas:

get_affected_tests

A ferramenta principal. Dê-lhe uma lista de arquivos alterados — ou a saída bruta de git diff --name-only — e receba de volta todos os arquivos de teste que os importam de forma transitiva.

Suporta TypeScript, JavaScript e JSX. Combina com *.spec.ts, *.test.ts, e arquivos dentro de diretórios __tests__/.

get_affected_tests_by_branch

Mesma coisa que acima, mas o servidor executa git diff por conta própria. Aponte para uma branch base (padrão: main) e ele cuida de tudo — nenhuma listagem manual de arquivos necessária.

get_dependency_graph

Importações diretas e importadores para qualquer arquivo. Retorna JSON por padrão, ou um fluxograma Mermaid que você pode colar diretamente no markdown do GitHub:

graph TD
  "src/fixtures/base-fixture.ts" --> "src/pages/google-home-page.ts"
  "src/fixtures/base-fixture.ts" --> "src/pages/google-results-page.ts"
  "tests/google-pom.spec.ts" --> "src/fixtures/base-fixture.ts"

explain_impact

Encontra a cadeia de importação mais curta de um arquivo de teste para um arquivo de origem alterado. A IA pode dizer exatamente por que um teste é afetado:

"checkout.spec.ts é afetado porque importa CartPage.ts → PriceCalc.ts → o arquivo que você mudou."

get_coverage_gaps

Encontra arquivos de origem que não são alcançáveis a partir de nenhum teste através do gráfico de importação — código completamente não testado, encontrado estaticamente em milissegundos, sem necessidade de execução de cobertura.

get_test_summary

Visão geral da saúde do projeto em uma chamada: taxa de cobertura, os 10 arquivos de origem mais importados (maior raio de explosão se mudados), e testes com as cadeias de importação mais profundas.

refresh_project

Limpa o AST em cache e os gráficos de dependência para a raiz do projeto. Chame-o após mudar de branches ou puxar alterações.

get_dependency_graph com format: "mermaid"

Um fluxograma visual do bairro de importação de qualquer arquivo — pronto para GitHub, Notion ou qualquer renderizador Mermaid.

🕵️‍♂️ Cenário do Mundo Real: O Refatoramento Direcionado

Você está refatorando DateHelper.ts. Você quer executar apenas os testes afetados localmente antes de enviar — não a suíte completa.

Você pergunta à sua IA:

"Estou prestes a mudar src/utils/DateHelper.ts. Quais testes devo executar?"

A IA chama get_affected_tests:

"4 testes estão afetados: calendar.spec.ts, booking.spec.ts, history.spec.ts, e profile.spec.ts. Tudo o mais pode ser ignorado."

Você executa esses 4 testes em 2 minutos. O CI confirma verde 40 minutos depois. Essa é a melhoria de 20x no ciclo de feedback — não por executar testes mais rápido, mas por executar menos deles.

🔍 Cenário do Mundo Real: O Risco Desconhecido

Você está revisando um PR que toca src/api/client.ts. Você quer saber o raio de explosão antes de mesclar.

Você pergunta:

"Quantos testes dependem de src/api/client.ts? Mostre-me o gráfico de dependência."

A IA chama get_test_summary, depois get_dependency_graph:

"api/client.ts é importado por 11 outros arquivos e é o arquivo de origem mais importado no projeto. Mudá-lo afeta 23 arquivos de teste — cerca de 40% da sua suíte. Eu recomendaria revisar este PR com cuidado."

Essa é uma informação que você não poderia obter apenas de um diff de código.

📊 Exemplo de Saída

Dada esta estrutura de projeto:

src/
  fixtures/base-fixture.ts   ← importa home-page e results-page
  pages/google-home-page.ts
  pages/google-results-page.ts
tests/
  google-pom.spec.ts         ← importa base-fixture

get_affected_tests após mudar google-home-page.ts:

{
  "changed_files": ["/meu-projeto/src/pages/google-home-page.ts"],
  "affected_tests": ["/meu-projeto/tests/google-pom.spec.ts"],
  "total_affected": 1
}

explain_impact — a cadeia de importação exata:

{
  "found": true,
  "import_chain": [
    "tests/google-pom.spec.ts",
    "src/fixtures/base-fixture.ts",
    "src/pages/google-home-page.ts",
Contexto Triplo Up

A otimização de testes pode reduzir significativamente o tempo de CI, permitindo que empresas brasileiras implementem mudanças mais rapidamente. Isso é crucial em um ambiente de desenvolvimento ágil, onde a eficiência é vital para a competitividade.

Noticias relacionadas

Gostou do conteudo?

Receba toda semana as principais novidades sobre WebMCP.