Um teste que passa isolado e falha em lote quase sempre tem a mesma causa: cookies, storage ou conta reutilizada vazando de um cenário para o outro. Isolar o perfil de navegador elimina essa contaminação e torna a validação do CAPTCHA reproduzível a cada execução, sem depender da ordem em que os testes rodam. Este guia cobre apenas ambiente próprio, QA, staging ou pré-produção com autorização explícita — os exemplos usam páginas internas, dados fictícios e endpoints de validação controlados pela sua equipe. Não há orientação para automatizar serviço de terceiros, compra real, fila pública ou controle de acesso fora do seu ambiente.
Por que testes CAPTCHA falham sem isolamento de perfil
Quando dois cenários compartilham o mesmo perfil, o storage e os cookies de um teste de login "vazam" para o teste de checkout seguinte, feature flags ficam presas em um estado antigo e a conta QA acumula histórico que não representa mais um usuário novo. O resultado: o desafio CAPTCHA às vezes aparece, às vezes não, e o time perde tempo tentando reproduzir uma falha que na verdade é um problema de ambiente, não de integração. Separar um perfil por cenário resolve isso na raiz — cada execução começa do mesmo estado conhecido, e uma falha real de integração CAPTCHA fica fácil de distinguir de uma falha de contaminação entre testes.
O que isolar em cada perfil de teste
Cada perfil deve ter cookies, localStorage, sessionStorage e cache próprios, além de conta de teste, feature flags, idioma, região de staging e configuração CAPTCHA independentes. Nunca misture cenários de login, checkout e registro no mesmo perfil — cada um tem seu próprio ciclo de estado e, ao compartilhar o perfil, uma falha em um cenário contamina o diagnóstico do outro. Se os testes envolvem dados de usuário, mesmo fictícios, vale registrar a política de retenção do ambiente de staging — considerar as obrigações da LGPD ao lidar com dados de teste é uma boa prática, mesmo fora de produção.
Estrutura de um perfil QA reprodutível
Um perfil de teste reprodutível guarda seu próprio estado em um registro simples, com os seguintes campos:
| Campo | Função |
|---|---|
profile_id |
Identificador único do perfil, usado para isolar dados entre execuções |
qa_account |
Conta de teste fictícia associada a este perfil |
environment |
Ambiente de staging ou pré-produção onde o perfil roda |
captcha_type |
Tipo de CAPTCHA esperado no cenário (reCAPTCHA v2, Cloudflare Turnstile) |
created_at |
Data de criação — usada para decidir quando recriar o perfil |
last_run_id |
Última execução associada, útil para correlacionar logs |
O perfil deve ser recriado sempre que o caso exigir estado limpo — não reutilize um perfil "sujo" só para economizar tempo de setup.
Como a CaptchaAI entra na suíte QA interna
Na prática, a suíte abre o perfil, acessa a página de staging, envia a tarefa para a CaptchaAI e valida o resultado no backend interno da sua aplicação:
import os, time, requests
API_KEY = os.environ['CAPTCHAAI_API_KEY']
SITEKEY = os.environ['QA_CAPTCHA_SITEKEY']
def criar_tarefa_captcha(pageurl):
resposta = requests.post('https://ocr.captchaai.com/in.php', data={
'key': API_KEY,
'method': 'userrecaptcha',
'googlekey': SITEKEY,
'pageurl': pageurl,
'json': 1,
}).json()
return resposta['request']
def aguardar_resultado(task_id):
while True:
time.sleep(5)
resposta = requests.get('https://ocr.captchaai.com/res.php', params={
'key': API_KEY,
'action': 'get',
'id': task_id,
'json': 1,
}).json()
if resposta.get('status') == 1:
return resposta['request']
task_id = criar_tarefa_captcha('https://staging.example.com/captcha-demo')
token_qa = aguardar_resultado(task_id)
print({'token_recebido': bool(token_qa)})
Se os workers da sua suíte rodam em uma região como sa-east-1 (São Paulo), o RTT até a CaptchaAI costuma ser pequeno perto do próprio tempo de resolução — mas vale medir no seu ambiente antes de fixar um timeout agressivo no pipeline de CI. O mesmo padrão de envio e consulta funciona tanto para reCAPTCHA v2 quanto para Cloudflare Turnstile; só o method enviado ao in.php muda.
Diagnosticando falhas: isolado passa, em lote falha
| Sintoma | Causa provável | Como confirmar |
|---|---|---|
| Passa sozinho, falha em lote | Vazamento de cookies entre perfis | Compare os cookies salvos antes e depois de cada execução |
| Falha intermitente no mesmo cenário | Storage persistente entre execuções | Verifique se o perfil foi recriado ou apenas reaproveitado |
| Conta de teste "esquece" o estado esperado | Conta QA reutilizada por múltiplos cenários | Associe uma qa_account exclusiva por perfil |
| Resultado varia sem mudança de código | Limpeza incompleta entre execuções | Adicione um passo explícito de reset antes de cada execução |
Antes de publicar: checklist de critérios
Confirme que a documentação aponta para o ambiente próprio, que os exemplos usam dados fictícios e que nenhum endpoint de produção é acionado pelo teste. A página de staging deve ter domínio autorizado, a sitekey esperada e configuração de backend separada da produção, com política clara de expiração de dados. Garanta também que os logs contêm correlação suficiente para auditoria — o campo last_run_id ajuda exatamente nisso. Quando o resultado variar entre execuções, trate os números como amostra interna: repita a medição, anote a janela de execução e compare apenas cenários equivalentes entre si.
Perguntas frequentes
Preciso recriar o perfil QA a cada execução?
Não sempre. Recrie quando o caso exigir estado limpo — por exemplo, ao testar um fluxo de primeiro acesso. Para regressão, um perfil reaproveitado com reset explícito de cookies e storage costuma bastar.
Quantos perfis de teste posso manter em paralelo?
Depende do número de cenários independentes que você precisa cobrir, não de um limite técnico da CaptchaAI. Como regra prática, mantenha um perfil por combinação de cenário e conta de teste — login, checkout e registro nunca no mesmo perfil.
O isolamento de perfil substitui o ambiente de staging?
Não. São camadas diferentes: staging isola o ambiente de execução (domínio, backend, dados); o perfil de navegador isola o estado do cliente (cookies, storage, conta). Você precisa das duas coisas para um teste CAPTCHA reproduzível.
Como saber se uma falha é vazamento de perfil e não um bug real?
Rode o mesmo cenário isolado, em um perfil novo. Se ele passa isolado e falha só em lote, o problema quase sempre está em cookies, storage ou conta reutilizada — não na integração CAPTCHA em si.
Guias relacionados seguros
- Início rápido da CaptchaAI
- Testes QA autorizados de CAPTCHA
- Testes de endpoint CAPTCHA em formulários próprios
- Depuração: navegador falha, API funciona
- Como resolver reCAPTCHA v2 pela API
- Como resolver Cloudflare Turnstile pela API
- Como resolver GeeTest v3 pela API
Configure perfis isolados no seu ambiente de staging e valide o primeiro desafio CAPTCHA com a CaptchaAI.