Integrations

Isolamento de perfis de navegador para QA com CaptchaAI

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

Configure perfis isolados no seu ambiente de staging e valide o primeiro desafio CAPTCHA com a CaptchaAI.

Os comentários estão desativados para este artigo.