Camada C3 do estudo WebTestPilot · v2.2 · corte 27 ago 2026 Público: quem vai escolher peças. Critério de qualidade: todo N4 datado e reproduzível (
gh api,curl, npm); toda capacidade de produto marcada N3. Estes dados envelhecem — script de reverificação empesquisa/ferramentas.md.
1 · As duas perguntas, e o veredito
O problema tem duas metades e o mercado responde às duas de maneiras radicalmente diferentes.
Gerar o critério de julgamento — dado um fluxo e uma tela, qual relação deve valer entre a execução-fonte e a seguidora. Trabalho de especificação.
Executar e monitorar o oráculo — dirigir o navegador duas ou mais vezes, controlar estado e tempo, extrair a projeção de cada execução, avaliar a relação, reportar violação com evidência. Trabalho de infraestrutura.
Veredito. Nenhum produto comercial se descreve como teste metamórfico E2E de navegador. Sustentado por 15 buscas de mercado em 27/08/2026 (7 em
gh api searchauditáveis, 8 em índice web incluindo os sites de 13 fornecedores — § 9) e por mais 40 buscas de uma leitura adversarial (registro empesquisa/revisoes/v2/R2-redteam.md) por sinônimos, registros de pacote, HN, DBLP, arXiv e quatro idiomas. Três ressalvas obrigatórias: Bombadil (Antithesis, MIT, jan/2026, 24 repos consumidores, 9 de terceiros com specs próprias — § 3.3) executa em navegador relações entre estados consecutivos que equivalem a MR-A1/MR-A2/MR-A6/MR-A7/MR-B1/MR-B2/MR-C7/MR-C10 — o playground do autor temfilterFromAllShowsFewerItems— sob o nome de propriedade temporal de sessão única (família P na nota do C1); é P ∩ D e concorrente direto da Fase 2, faltando só o par em contextos separados, a validação e a falsificação. metamorph (tese, 0 ★, sem licença) é o único artefato Playwright + MT — para OSS o vazio não é absoluto. E onde MT vira produto hoje é em saída de IA (topic:metamorphic-testing: 46 repos, maioria de 2026 sobre LLM; testRigor, QA Wolf) — o único lugar com demanda comercial. [protocolo · A01]
O que existe é um mercado que resolveu muito bem a metade da infraestrutura e quase nada da metade da especificação. A camada de execução — dirigir o browser, congelar o tempo, isolar sessão, capturar evidência, rodar em CI, monitorar produção — está madura, é barata e majoritariamente open source. A camada que produz o critério tem, fora da academia, uma resposta comercial: pedir a um LLM que olhe a tela e opine em linguagem natural. E em 2026 essa resposta se consolidou também na triagem: Momentic, Datadog, Checkly e mabl puseram LLM no passo "isto é bug ou ruído?" em três meses (§ 7).
A consequência prática: a parte cara está construída — para o navegador. Para o estado, não (C4). O que falta construir na camada que gera o critério (§ 2, camada 4) é pequeno, específico, e é onde a diferenciação estaria — se o comprador quisesse comprar garantia em vez de custo de autoria (divergência D2 — o mercado não compra especificação, ou não compra ainda? — § 7).
2 · O modelo de camadas
| # | Camada | Pergunta que responde | Estado do mercado |
|---|---|---|---|
| 1 | Driver de navegador + infra de navegador | Como o teste toca a página, e de onde vêm N Chromiums | ✅ biblioteca é commodity; infra tem preço e licença que importam |
| 2 | Determinismo e isolamento | O que torna fonte e seguidor comparáveis | ✅ nativo para tempo/rede/sessão; estado de backend é a decisão cara |
| 3 | Motor de relação | Onde a MR vira código executável | ⚠️ gerador e shrinker existem; a relação é código próprio; nada web-nativo |
| 4 | Geração do critério | Qual MR se aplica a esta tela | ⚠️ despovoada — nenhum produto; uma tese (metamorph) |
| 5 | Projeção e comparação | Que abstração da página entra na relação | ✅ peças soltas; decisão não terceirizável |
| 6 | Execução, monitoramento e observabilidade de suíte | Rodar, guardar evidência, correlacionar, triar | ✅ madura em três sub-camadas; nenhuma modela pares |
| — | Agente | Descobrir fluxos-fonte | ✅ ativa; agentes oficiais do Playwright desde 1.56 |
| — | ↳ Transporte de agente | Como o agente alcança o navegador | ✅ MCP e CLI, ambos empacotados desde 1.62 |
A fronteira que importa. No oráculo em execução quem toca a página é a biblioteca
Playwright, chamada em processo pelo harness. @playwright/mcp e @playwright/cli são
transporte de agente e só aparecem na descoberta. Qualquer transporte no caminho de
execução põe um modelo entre a execução e o veredito — o que a regra "o veredito é
código" proíbe (C2 § 7.3). Os Playwright Test Agents oficiais falam MCP, não CLI
(§ 4).
3 · Camada a camada
3.1 Camada 1 — driver e infra de navegador
Playwright, versão 1.62.1 (30/07/2026). Decisão com pouca margem. O que a camada 2
exige do driver: browser contexts baratos ("fast and cheap to create", doc),
page.clock e routeFromHAR nativos, e ARIA snapshot como candidata a projeção —
detalhe de versão (o que 1.59–1.62 acrescentou e o que quebrou) no C4 § 2 e ADR-11.
page.clock não mudou entre 1.59 e 1.62.
Por que não Cypress: roda dentro da aba da aplicação, o que dificulta dois contextos
verdadeiramente independentes — o que um par exige. cypress tap (15.21, ago/2026) é
transporte de agente, não muda isso. Selenium serve, mas reimplementa-se relógio, HAR e
snapshot à mão.
Infra de navegador. Um oráculo metamórfico consome 2× a n+1 vezes os navegadores de uma suíte convencional. Preços de página oficial, 27/08/2026 (N3):
| Fornecedor | Preço | Concorrência | Limite de sessão | Licença |
|---|---|---|---|---|
| Browserbase | Dev US$ 20/mês (100 h, depois 0,12/h); Startup US$ 99/mês (500 h, 0,10/h) | 25 / 100 / 250+ | — | Stagehand MIT |
| Steel | Launch 0,10/h; Scale US$ 250/mês + 0,08/h | 10 / 100 / 1.000+ | 15 min / 1 h / 24 h | steel-browser Apache-2.0 (self-host limpo) |
| Anchor | US$ 0,01 por navegador + 0,05/h; Starter US$ 50; Growth US$ 2.000 | 5 / 25 / 200 / 500+ | — | sem OSS |
| browserless | US$ 25–350/mês por unidades; self-host exige licença comercial | 2–100 | — | SSPL-1.0 — a licença nomeia CI closed-source como uso pago; o pricing não avisa |
| BrowserStack Automate | US$ 59–225/mês por slot paralelo | por slot | — | — |
Leitura: Anchor é o mais barato por hora, mas cobra criação — e MT cria um contexto por
seguidor, o que fere o isolamento se reutilizar navegador. Steel Launch limita sessão a
15 min: partição n+1 sequencial estoura. Grids por slot são o modelo errado para
fan-out. No alvo AWS, a opção padrão é não sair da conta (C4); se sair, Steel Scale é
a de licença limpa e limite compatível.
3.2 Camada 2 — determinismo e isolamento
| Ruído | Ferramenta | Pegadinha |
|---|---|---|
| Tempo | page.clock |
install deve preceder qualquer outra chamada de clock (doc) |
| Rede / terceiros | routeFromHAR, Tracing.startHar(); WebSocket desde 1.61 |
Qualquer service worker da aplicação — MSW é só o caso famoso — intercepta antes das rotas. Mitigação documentada: serviceWorkers: 'block'. Consequência: a app sob teste não é exatamente a de produção; declarar. |
| Sessão | storageState + contexts; credentials (1.61–1.62) |
Viabiliza MR-B6/MR-C1/MR-C6 com dois storageState |
| Backend | Postgres sidecar na mesma task, PGDATA pré-semeado |
Aurora clone, Neon e Testcontainers rejeitados no C4 (ADR-03/04). |
| Terceira via para backend | Keploy (Apache-2.0, 18.4k ★) — grava e reproduz chamadas de API/DB via eBPF | Família B (expectativa = gravação); útil onde o sidecar for inviável; muda o objeto testado |
Um oráculo metamórfico é uma máquina de comparar duas execuções; toda fonte de não-determinismo que sobrar aparece como violação. Número do metamorph sem essa camada: 20% de drift, 34% de falha de execução em replay (C2 § 6.2).
3.3 Camada 3 — motor de relação
| Ferramenta | Papel | Estado (27/08/26) |
|---|---|---|
| fast-check 4.9.0 | Gerador de sequências (commands), shrinker, scheduledModelRun (corrida — MR-B2), entityGraph (4.5+, encolhível em 4.9: grafo consistente de entidades usuário→carrinho→itens — a fixture relacional que faltava) |
MIT · 5.1k ★ · ativo. Divergência D3 (fast-check é gerador, não motor de relação) aceita: commands compara contra um modelo — oráculo especificado, não metamórfico. A relação é código próprio. Shrinking fora do CI (cada replay é um round-trip de navegador). |
| Hypothesis 6.165 | RuleBasedStateMachine, o análogo Python |
MPL-2.0 · 8.9k ★ · ativo. Substitui o gemtest (10 ★, 440 dias parado, PyPI 1.0.1). |
| jqwik | Caminho JVM | EPL-2.0 · 841 ★ |
| SQLancer | MT de verdade em produção: TLP (ternary logic partitioning, OOPSLA 2020) é o MRP de partição completa implementado; anos de bugs reais em DBMS | MIT · 1.751 ★ · ativo. Melhor referência de arquitetura que o Antithesis para a forma do oráculo. antithesishq/sqlancer existe. |
| Bombadil v0.7.2 | Sucessor do Quickstrom: propriedades LTL em TypeScript (always, next, now, extract) sobre trace de navegador via CDP; roda em CI e dentro do Antithesis. next com closure sobre o estado atual expressa "estado após ação = f(estado antes)" — é MR de sessão única (P ∩ D; a fronteira está no C2 § 7.1) |
MIT · 1.451 ★ · push diário · 197 arquivos em 24 repos. Candidato a motor de relação da camada 3 para as MRs de sessão única de classe de custo K0 (sem estado; K1 par com estado, K2 fan-out — C2 § 4), na Fase 2. Não faz par em contextos separados, validação contra baseline nem falsificação. Adoção fora do autor: 9 repositórios de terceiros com specs próprias; três usam now/next para relação entre estados consecutivos; nenhum faz par em contextos separados (lista em pesquisa/ferramentas.md § Bombadil). |
| Hegel (Antithesis, 24/03/2026) | "Universal property-based testing protocol, built on Hypothesis": Hypothesis como motor de geração/shrinking por trás de bibliotecas finas em várias linguagens; o blog promete ao Bombadil shrinking e integração com o fuzzer via Hegel | hegel-typescript 38 ★, push 27/08; org hegeldev, licença a verificar por repo. Não muda a camada 3 hoje (não fala de navegador; é o shrinker que o fast-check já dá); relevante se a Fase 2 adotar o Bombadil. Reavaliar na próxima reverificação de atualidade. |
| Quickstrom | Ler o paper (PLDI 2022) | BSD-3 · 739 dias parado · sucedido |
| SMRL / MST-wi | Minerar as 76 MRs (Zenodo 7702754, CC-BY-4.0 — não o site, que descreve as 22 de 2020) | repo sem licença, 1.241 dias parado. Não adotar Eclipse + Xtext. |
| CCML/CCMT (Sun et al., TOSEM 2026) | DSL geral de MR + gerador de MRs compostas | Vizinho acadêmico do SMRL; texto não aberto |
3.4 Camada 4 — geração do critério
Despovoada. Nenhum produto, comercial ou OSS maduro, gera MRs para uma aplicação web. O que existe está no C2 § 5: protótipos que exigem artefatos que E2E não tem (suíte unitária, código analisável, mutantes baratos, spec OpenAPI) e um que roda em navegador — o metamorph, com molde travado, one-shot, saída Zod, e sem validação contra baseline.
O que o mercado oferece no lugar: asserção em linguagem natural julgada por LLM (Momentic "AI Checks", mabl, qa.tech, testRigor, Autify Genesis/Aximo, BrowserStack Test Companion). É a família F — o julgamento é o ponto de falha, e a própria doc da Momentic manda envolver passos agênticos em asserções explícitas porque são "flexíveis e não-determinísticos". Uma MR, ao contrário, é avaliada por comparação determinística: o modelo pode errar ao propor a relação, mas não participa do julgamento. A assimetria que torna a camada construível está quantificada no C2 § 5.
3.5 Camada 5 — projeção e comparação
A decisão mais subestimada do projeto. Screenshot não é projeção primária — carrega
tudo que a camada 2 eliminou (antialiasing, animação a meio caminho, scrollbar, sombra
sub-pixel), e a linha WebDiff → X-PERT abandonou imagem como detector por falso positivo
(C2 § 7.2, N1). ARIA snapshot e locator tipado são a projeção: estruturados,
semânticos, textuais; ariaSnapshot({ boxes }) dá geometria sem pixel; errorContext
anexa o snapshot à falha de graça.
Três níveis na prática: projeção estreita por MR (conjunto de chaves, total, estado de
campo — locator tipado); ARIA snapshot com filtro explícito para estrutura pequena e
regular; varredura implícita em toda execução (5xx, console, NaN, axe-core 4.13). Dado
de rede só como cross-check — é o mesmo caminho de renderização nos dois lados do par e
ancora (C2 § 6.5). Regras completas no C4.
Camada visual paralela, se quiser: Argos (MIT, 616 ★, revisão no PR). Lost Pixel está arquivado desde abr/2026 e ainda é recomendado por comparativos. Applitools/Percy resolvem outro problema.
3.6 Camada 6 — execução, monitoramento, observabilidade
Três coisas distintas:
(a) Execução e evidência. Playwright runner + Trace Viewer. Trace é o material da
triagem: DOM por passo, rede, console. O par tem de ser um único test(), com fonte e
seguidores como test.step() e a MR como anotação — senão retain-on-failure perde um
dos dois traces e toda ferramenta abaixo marca flake em cada metade separadamente.
(b) Monitoramento de produção. O subconjunto K0 que o C2 § 4 põe na Fase 2 (MR-A5 só caixa, MR-A7, MR-B3, MR-C10; MR-A3 e MR-C7 condicionais — só em SPA com estado acumulado na UI) não precisa de baseline nem de ambiente controlado — é monitor sintético perfeito.
| CloudWatch Synthetics | Checkly | |
|---|---|---|
| Runtime | syn-nodejs-playwright-8.0 fixa Playwright 1.61.1 (npm: 1.62.1 — um minor atrás; perde retryStrategy, WebP, signal, preprocess) |
versão escolhida pelo usuário |
| Preço | US$ 0,0012/execução + Lambda (≈ US$ 0,0041 por canário de 60 s a 3 GB) | Team US$ 64/mês, 12.000 runs, US$ 6,25/1k; 1 run = 30 s de Playwright Check Suite → par de 3 min = 6 runs = US$ 0,0375 |
| Limites | 3.008 MB, 840 s, dentro da VPC | Private Locations (plano não declarado) |
| Diferença | ~10× por par de 3 min | Melhor DX; MCP server (jun/2026); Rocky AI RCA (F na triagem) |
A tese "a mesma verificação roda em CI e em produção" não vale com Synthetics: a versão diverge por construção. Escolher qual paridade importa mais é decisão do C4.
(c) Observabilidade de suíte. Atribuição de flake, histórico por caso, correlação. Nenhuma modela pares correlacionados — todas rastreiam "caso identificado por nome × execução" e definem flake por retry.
| Ferramenta | Preço | O que faz | Limite para MT |
|---|---|---|---|
| Currents | US$ 49/mês (10k resultados) · US$ 99 | flake por retry; retenção 21/90/365 d | fan-out n+1 multiplica "resultados" cobrados |
| Trunk Flaky Tests | Free até 5 committers | quarentena automática; agrupa modos de falha de um teste | quarentena esconde violação |
| BuildPulse | US$ 99/mês | flake entre builds | — |
| CloudBees Smart Tests (ex-Launchable, GA abr/2026) | — | seleção preditiva por LLM | seleciona quais testes — para partição, não se pode rodar metade do grupo |
| Allure TestOps · ReportPortal | US$ 39/usuário · Apache-2.0 | ID estável por caso; ML de padrão de falha | grupo = mesmo teste repetido |
A distinção "MR mal especificada × ruído ambiental" é resolvida por estas ferramentas com histórico do mesmo teste — desde que o par seja a unidade. Ruído dentro do par é problema do harness: o protocolo do Diffy (§ 6) é a arte prévia.
Se houver LLM no laço: Langfuse (MIT + ee/ proprietário, © ClickHouse desde jan/2026,
33.8k ★). Não instrumentar o que ainda não tem modelo.
4 · Camada de agente e transporte
| Ferramenta | Saúde (27/08/26) | Papel no oráculo | Decisão |
|---|---|---|---|
| Playwright Test Agents (planner · generator · healer) | Apache-2.0 · embarcado desde 1.56 (out/2025) | Planner explora e produz plano Markdown; generator produz .spec.ts; healer edita o .spec.ts e pode pular teste que "acredita" quebrado |
Planner e generator: usar. Healer: desligar — tem edit + test_run + test_debug; é julgamento com permissão de escrita dentro da stack. |
| ↳ transporte | MCP (verificado no código dos Test Agents em 27/08; rastro em pesquisa/exploracao/X3-mercado-n4.md). Zero menção a CLI. |
A economia de token do CLI não vem de graça com os agentes oficiais. | Aceitar MCP na descoberta (é dev-time, não runtime) ou escrever definição de agente própria sobre CLI. |
| Playwright CLI 0.1.18 · MCP 0.0.79 (36.5k ★) | ativos; empacotados desde 1.62 | Transporte. CLI: comandos de shell, artefato em disco, headless por padrão, skills sob demanda; MCP: estado no contexto, headed por padrão. Benchmark de terceiro ~27k vs ~114k tokens (N2, não replicado). | Preferir CLI para agente próprio; MCP é o que os Test Agents usam. |
| Stagehand 4.0.2 | MIT · 24.1k ★ · push diário | act/extract/observe/agent; cache observe→act. Biblioteca de runtime: o cache erra em silêncio quando a página muda, rechamando o modelo no instante em que fonte e seguidor deixam de ser comparáveis. extract nunca constrói R(·). |
Alternativa para descoberta em tempo de execução; fora do caminho de julgamento. |
| browser-use 0.13.8 | MIT · 111.4k ★ | Melhor explorador (89,1% WebVoyager). Autônomo demais para o caminho crítico. | Só exploração. |
| Skyvern | AGPL-3.0 · 22.9k ★ | Por pixel. Licença viral. | Consultar jurídico; abordagem menos alinhada a projeção estrutural. |
Vercel agent-browser |
Apache-2.0 · 41.4k ★ (jan/2026) | CLI Rust sobre CDP, snapshot com refs; roda sobre Chrome for Testing ou Lightpanda |
Transporte alternativo ao playwright-cli; não produz .spec.ts. |
Anthropic browser_toolset_20260801 (GA 19/08/2026) |
— | Toolset que lê árvore de acessibilidade, elementos, formulários, abas | Transporte; idem. |
| Lightpanda | AGPL-3.0 · 34.3k ★ | Headless sem render completo | Mesma decisão jurídica do Skyvern. |
Duas distinções que organizam a camada. (1) Dev-time (Test Agents: produzem
.spec.ts, saem de cena, o sistema implantado não chama modelo) versus runtime
(Stagehand: modelo é dependência do sistema rodando). Para um oráculo, falha barulhenta
é melhor que replanejamento silencioso — Test Agents ocupam a vaga. (2) Transporte não
concorre com agente: CLI e MCP ficam por baixo de todos.
A regra de arquitetura — "o veredito é código" (C2 § 7.3). O agente descobre o caso-fonte. A violação de MR é decidida por comparação determinística; o modelo entra antes (propondo, validado por execução) e depois (triando). Adversário nomeado dentro da própria fundação: o healer. [protocolo · A20]
5 · Matriz de ferramentas
Saúde verificada em 27/08/2026 por gh api autenticado; licença lida do arquivo
LICENSE quando a API diz NOASSERTION. Aderência é julgamento editorial (N5), em
quatro valores: Alta — entra na stack no papel indicado; Média — útil com
ressalva (licença, escopo, custo) ou como referência de arquitetura e catálogo a
minerar; Baixa — não entra na stack, registrada por ser vizinha, rebaixada ou ainda
recomendada; ⛔ — fora: família F no caminho do veredito, projeto morto ou licença
que impede o uso.
| Ferramenta | Camada | Licença | Saúde | Aderência | Nota |
|---|---|---|---|---|---|
| Playwright 1.62.1 | 1,2,5,6 | Apache-2.0 | 95.3k ★ · ativo | Alta | A fundação. |
| fast-check 4.9.0 | 3 | MIT | 5.1k ★ · ativo | Alta | Gerador + shrinker + entityGraph; não é "o motor de relação" (divergência D3). |
| Hypothesis 6.165 | 3 | MPL-2.0 (LICENSE) | 8.9k ★ · ativo | Alta | Python. |
| SQLancer | 3 | MIT | 1.8k ★ · ativo | Média | Referência de arquitetura: MT em produção; TLP = partição completa. |
| Bombadil 0.7.2 | 3 | MIT | 1.5k ★ · 24 repos consumidores | Alta | P ∩ D. Sucessor do Quickstrom; expressa MRs de sessão única; concorrente da Fase 2. |
AlexeyRaga/ui-pbt · wswiecicki/model-testing-cf |
3 | OSS | jul/2026 · mai/2026 | Média | Referência: fast-check + Playwright com invariantes sobre UI real; model-based + Playwright. A forma "propriedade + Playwright" está sendo escrita à mão em 2026. |
| Playwright Test Agents | agente | Apache-2.0 | embarcado | Alta | Planner/generator sim; healer não. Transporte MCP. |
| Playwright CLI 0.1.18 / MCP 0.0.79 | transporte | Apache-2.0 | ativos | Alta / Média | Não são camada 1. |
| Stagehand 4.0.2 | agente | MIT | 24.1k ★ · ativo | Média | Alternativa de runtime; extract ∉ R(·). |
| browser-use 0.13.8 | agente | MIT | 111.4k ★ | Média | Só exploração. |
Skyvern · Lightpanda · agent-browser |
agente/transporte | AGPL · AGPL · Apache | ativos | Média/Baixa | Licença ou escopo. |
| CloudWatch Synthetics 8.0 | 6b | AWS | Playwright 1.61.1 | Alta | ~10× mais barato que Checkly por par; versão imposta. |
| Checkly | 6b | comercial | ativo · CLI 8 · MCP | Alta | 1 run = 30 s; Rocky RCA é F. |
| Currents · Trunk · BuildPulse · Allure · ReportPortal | 6c | variada | ativos | Baixa–Média | Nenhuma modela pares. |
| Browserbase · Steel · Anchor · browserless · BrowserStack | 1 (infra) | ver § 3.1 | ativos | Média/⛔ | browserless SSPL; grids por slot. |
| Argos | 5 | MIT | 616 ★ | Média | Visual paralelo. |
| axe-core 4.13 | 5 | MPL-2.0 | 7.4k ★ | Média | Oráculo implícito. |
| Keploy | 2 | Apache-2.0 | 18.4k ★ | Média | Adjacente (família B): determinismo de backend por gravação. |
| Diffy (opendiffy) | 3,6 | CC BY-NC-ND 4.0 | 1.5k ★ · 101 d | Média | Adjacente (família C): só ler; importar o protocolo primary/secondary. |
| GoReplay · Speedscale | 2 | LGPL+comercial · comercial | 212 d · ativo | Baixa | Adjacente (família C): replay de tráfego. |
| Meticulous | 5 | comercial · US$ 15M jul/2026 | ativo | Baixa | Adjacente (família C): base × head. |
| mabl | 5 + F | comercial | ativo | Média | Visual é B; Runtime Recovery / Cloud Test Gen / Conversational Analysis (abr/2026) são F — Runtime Recovery mascara divergência num harness de MR. |
| Momentic · qa.tech · testRigor · Autify · BrowserStack Test Companion · Autonoma | 4 (aparente) | comercial | ativos | ⛔ | Família F. Momentic: Failure Classification Agent (jun/2026) = passo de triagem vendido como produto. |
| Langfuse | 6 | MIT + ee/ |
33.8k ★ | Média | Só com LLM no laço. |
| Neon | 2 | comercial (Databricks/Lakebase) | ativo | Baixa | Rebaixada: SaaS fora da VPC; 5.000 branches/projeto. |
| SMRL / MST-wi | 3,4 | sem licença (repo); catálogo CC-BY-4.0 (Zenodo) | 1.241 d | Média | Catálogo: minerar, não adotar. |
| metamorph | 3,4 | sem licença | 0 ★ · 46 d sem push | Média | Referência: ler; não copiar código. |
| gemtest | 3 | MIT | 10 ★ · 440 d | ⛔ | Substituído por Hypothesis. |
| Quickstrom · Morfify · Lost Pixel · Octomind | — | — | 739 d · 1.029 d · arquivado · DNS morto | ⛔ | Ainda recomendados por comparativos de 2026. |
6 · A vizinhança "compara duas execuções sem chamar de MT"
Seis produtos compartilham a forma "mesma entrada, dois lados": Meticulous (base × head), mabl (execução anterior do plano), Diffy (primary × secondary × candidate), Keploy e GoReplay (gravação × replay), Speedscale (antes × depois). Nenhum transforma a entrada; nenhum é MT. O que vale importar, como ideia e não como código (licença NC-ND): o protocolo de ruído do Diffy — rodar a mesma versão duas vezes para medir o piso de divergência e só acusar quando fonte × seguidor exceder fonte × fonte. Custa +1 execução por MR e responde diretamente à taxa-base de violação≠bug (C2 § 6.4).
7 · Sinais de mercado
O player mais autônomo morreu — e a divergência D2 continua. O Octomind (aponte uma URL, o agente devolve Playwright) encerrou em mai/2026; DNS morto, último Wayback 27/05/2026. A carta diz "we didn't find the market validation we needed", não atribui o fim ao oráculo. Duas leituras, ambas consistentes com os fatos:
- Otimista: descobrir fluxo é resolvido; saber o que deveria ter acontecido, não. A camada 4 está despovoada por falta de técnica.
- Leitura adversarial: o Octomind era o fornecedor mais próximo desta
arquitetura — Playwright puro, LLM na descoberta e não no runtime. O post
ai-doesnt-belong-in-test-runtime(título real "Not all AI in e2e testing is created equal", 10 capturas no Wayback, set/2025) diz a regra "o veredito é código" palavra por palavra: "Ideally, AI should not be used during runtime. It's slow. It's brittle. It's costly. … Only if the expectation is formulated precisely enough (code / steps) it can be validated against." Foi ele que morreu, enquanto os que julgam em runtime seguem captando.
A versão forte da segunda leitura: o mercado já precificou a especificação em zero. O Meticulous vende "automated e2e screenshot testing without writing or maintaining tests" — o comprador não compara MR com asserção; compara MR com nada. Mesmo o PBT, primo com tooling maduro, só é adotado "opportunistically in high-leverage scenarios where properties are readily available; developers rarely go out of their way to write subtle specifications" (Goldstein et al., ICSE 2024, 30 entrevistas na Jane Street). A autoria de MR é o custo que o campo nunca removeu ("requires creativity and domain knowledge", Segura 2020). Vinte anos de MT, zero produto de UI, 16 threads no HN. E a forma "propriedade sobre trace" — Bombadil, 1.451 ★ em sete meses, 24 repos consumidores — capturou o espaço adjacente com custo de autoria menor. Onde MT tem demanda comercial hoje é em saída de IA, não em UI.
O estudo desenha com a primeira leitura e dimensiona com a segunda. A pergunta que o piloto precisa responder é o enunciado E12: que bug a família D acha que Meticulous (C) e Bombadil (P) não acham, e quanto o comprador paga por ele? — e não "instanciar MR custa menos que escrever asserção?", que pode dar sim sem haver comprador. Só o piloto com mutantes responde, junto com E9c (com MR validada em E2E web, que fração das violações é bug?).
O capital foi para determinismo. US$ 105M no Antithesis (Jane Street, dez/2025), US$ 15M no Meticulous (jul/2026), US$ 15M na Momentic (Série A de nov/2025; a data jun/2026 do post é de atualização). A frase "o mercado apostou na família F" não se sustenta; a interface de produto convergiu em LLM, o dinheiro grande foi para oráculos determinísticos, e a família D continua desocupada nos dois lados.
A família F consolidou-se na triagem. Momentic Failure Classification Agent (jun/2026: "real bug, intentional change, test setup issue, or transient error?"), Datadog Bits Investigation (jun/2026), Checkly Rocky RCA com OTel e último resultado passante (jun/2026), mabl Conversational Analysis (abr/2026). Quatro fornecedores em três meses puseram LLM no passo de triagem do laço de julgamento (C4 § 3, passo 7). O C4 decide se segue ou se usa histórico determinístico primeiro.
Navegador agêntico standalone não vingou. ChatGPT Atlas encerrado em 09/08/2026; capacidades migram para app + extensão. Sinal fraco, mas na mesma direção do Octomind.
Ferramentas mortas ainda recomendadas. Lost Pixel (arquivado abr/2026), Quickstrom
(739 dias), gemtest (440 dias) aparecem em comparativos de 2026. Dez segundos de API
resolvem; o script está em pesquisa/ferramentas.md.
8 · Risco de fornecedor
Para OSS, saúde é commit e estrela; para comercial, capital e sinal — e o Octomind mostrou que "ativo" vira "morto" em quatro meses. Fonte primária (blog/press release) ou marcado como indício não confirmado (PISTA):
| Fornecedor | Último capital | Sinal 2026 | Risco |
|---|---|---|---|
| Checkly | US$ 20M B, jul/2024 | CLI 8, MCP, Rocky — ativo | médio-baixo; único no caminho crítico sem substituto OSS trivial, mas com substituto AWS |
| Neon | Databricks, mai/2025 → Lakebase | roadmap serve "Postgres para agentes" | baixo de morrer; médio de deriva |
| Meticulous | US$ 15M A, 15/07/2026 | frontend-only | baixo |
| Momentic | US$ 15M A, nov/2025 | relançamento jun/2026 | baixo |
| Browserbase | US$ 40M B, 2025 | Stagehand 4, push diário | baixo |
| mabl | US$ 40M C, 2021 — só agregador | press release abr/2026 | médio: cinco anos sem capital verificável |
| qa.tech | seed 2024 — só agregador | changelog ativo | médio-alto: o mais frágil da lista |
| Currents | nenhum encontrado (bootstrapped?) | MCP ago/2026 | baixo-médio |
| Antithesis | US$ 105M, dez/2025 | Bombadil, release notes mensais | muito baixo |
9 · Protocolo de busca da asserção de ausência
Registrado para que a próxima rodada ataque pelo mesmo caminho e não por outro.
| # | String | Base | Resultado |
|---|---|---|---|
| S1 | metamorphic+playwright |
gh api search/repositories |
5 repos: metamorph (0 ★) + 4 de tese Xahidian/* |
| S2–S6 | metamorphic+cypress · +selenium · +testing+web+e2e · +relation+browser · +testing+gui |
idem | 0 · 3 (tese/Morfify) · 0 · 0 · 1 (chatbot) |
| S7 | repo:antithesishq/bombadil metamorphic |
gh api search/code |
0 — buscou a palavra, não a forma; a leitura adversarial achou MRs de subconjunto no playground do autor (owickstrom/bombadil-playground, todomvc.ts l. 537–571) e 197 consumidores |
| S8 | "metamorphic testing" product OR platform "end-to-end" web browser launch 2026 |
web | só acadêmico e listas sem MT |
| S9–S11 | "metamorphic" site: × 13 domínios de fornecedor |
web | testRigor (blog conceitual sobre IA) · TestMu (conceito) · QA Wolf (gen-AI) — nenhum feature de produto |
| S12–S15 | variações com "tool", "startup", "Quickstrom Bombadil", "Antithesis 2026" | web | vazio; S15 revelou o Bombadil |
Complementa o protocolo acadêmico do C2 (36 consultas em 5 bases,
pesquisa/exploracao/X1-literatura.md) e as 40+ buscas da leitura adversarial
(pesquisa/revisoes/v2/R2-redteam.md § 6: sinônimos
"relational/consistency/self-consistency testing", npm/crates, HN Algolia, DBLP, arXiv
API, JA/ZH/ES/PT, YC/Product Hunt — todas vazias para produto de UI).
Comandos, saídas literais e URLs de cada linha desta camada em
pesquisa/exploracao/X3-mercado-n4.md. Registro das buscas e revisões desta camada:
pesquisa/protocolo.md § 6; scripts de reverificação: pesquisa/ferramentas.md.