Como usar o AdsPower com o Playwright para testes E2E confiáveis

Uma olhada rápida

Aprenda a conectar perfis antidetecção do AdsPower ao Playwright para testes ponta a ponta estáveis e isolados de aplicações web multi-contas e sensíveis à geolocalização.

Como usar o AdsPower com o Playwright para testes E2E confiáveis

Testes ponta a ponta falham por motivos que nada têm a ver com o seu código: um cookie jar compartilhado, uma impressão digital que muda entre execuções ou um proxy que rotaciona no meio da sessão. O AdsPower resolve o problema de identidade ao dar a cada execução de teste seu próprio perfil de navegador isolado com uma impressão digital estável. O Playwright resolve o problema de controle com automação rápida e confiável em Chromium, Firefox e WebKit.

Este artigo explica como os dois se encaixam, como conectá-los e quais problemas de teste a combinação realmente elimina.

Por que combinar um navegador antidetecção com o Playwright?

First viewport screenshot of Release notes | Playwright Python

First viewport screenshot of Release notes | Playwright Python.

O Playwright já isola contextos de navegador, então uma pergunta justa é por que você adicionaria um navegador antidetecção. A resposta é que o isolamento do Playwright é em memória e temporário. Feche o navegador e o contexto se vai. O isolamento do AdsPower é persistente e no nível da identidade: cada perfil mantém sua própria impressão digital, cookies, armazenamento local e vinculação de proxy entre sessões.

Essa diferença importa quando seus testes precisam:

  • Simular vários usuários distintos no mesmo site sem contaminação cruzada
  • Manter uma sessão logada ativa entre várias execuções de teste
  • Verificar comportamento de diferentes países usando IPs específicos de cada país
  • Reproduzir um bug que só aparece sob uma impressão digital de dispositivo específica
  • Executar automação contra contas que sistemas antifraude de outra forma vinculariam entre si

Um proxy no Playwright é configurado por contexto de navegador, o que é útil, mas a configuração de proxy sozinha não altera sinais de Canvas, WebGL ou user-agent. O AdsPower cuida dessa camada.

Como as duas ferramentas dividem o trabalho

Pense na divisão assim:

Camada Responsável
Lógica de teste, asserções, seletores, retentativas Playwright
Binário do navegador e mecanismo de renderização AdsPower (SunBrowser no Chromium, FlowerBrowser no Firefox)
Parâmetros de impressão digital (Canvas, WebGL, rede, user agent) AdsPower
Vinculação de proxy por identidade AdsPower
Persistência de sessão (cookies, armazenamento) Perfil do AdsPower
Execução paralela e relatórios Playwright

O Playwright controla o navegador. O AdsPower decide como o navegador se parece para o site.

Pré-requisitos

Antes de começar, confirme que você tem:

  1. AdsPower instalado e pelo menos um perfil criado. O plano gratuito inclui 2 perfis, o que é suficiente para prototipar o fluxo de trabalho.
  2. Node.js e Playwright instalados no seu projeto (npm init playwright@latest).
  3. A API Local do AdsPower habilitada no cliente. Você precisará da porta da API e, se configurada, da chave de API.
  4. Proxies atribuídos aos perfis que você planeja testar. Se você ainda está escolhendo uma configuração, a comparação da comunidade de combinações de navegador antidetecção e proxy é uma verificação útil da realidade sobre quais combinações permanecem estáveis por semanas em vez de horas.

Passo 1: Inicie a API Local do AdsPower

Abra o cliente AdsPower e vá para a seção de API. Habilite o serviço de API local e anote a porta (o padrão normalmente é 50325). Se sua equipe exige autenticação, gere uma chave de API e armazene-a em uma variável de ambiente em vez de no controle de versão.

Verifique se o serviço responde antes de escrever qualquer código de teste:

curl http://local.adspower.net:50325/status

Uma resposta saudável confirma que o cliente está em execução e acessível.

Passo 2: Inicie um perfil e obtenha seu endpoint de depuração

First viewport screenshot of Release notes | Playwright Java

First viewport screenshot of Release notes | Playwright Java.

A API do AdsPower expõe um endpoint que inicia um perfil e retorna uma URL de depurador WebSocket. É a essa URL que o Playwright se conecta.

async function startAdsPowerProfile(profileId) {
  const url = `http://local.adspower.net:50325/api/v1/browser/start?user_id=${profileId}`;
  const res = await fetch(url);
  const data = await res.json();

  if (data.code !== 0) {
    throw new Error(`AdsPower start failed: ${data.msg}`);
  }

  return data.data.ws.puppeteer;
}

O valor retornado é um endpoint do Chrome DevTools Protocol. Apesar do nome do campo, ele funciona com qualquer cliente compatível com CDP, incluindo o Playwright.

Passo 3: Conecte o Playwright ao perfil em execução

First viewport screenshot of Release notes | Playwright .NET

First viewport screenshot of Release notes | Playwright .NET.

Use chromium.connectOverCDP para se conectar ao navegador já em execução em vez de iniciar um novo.

const { chromium } = require('playwright');

async function runTest(profileId) {
  const wsEndpoint = await startAdsPowerProfile(profileId);
  const browser = await chromium.connectOverCDP(wsEndpoint);

  const context = browser.contexts()[0];
  const page = context.pages()[0] || await context.newPage();

  await page.goto('https://example.com/dashboard');
  await page.waitForLoadState('networkidle');

  // Suas asserções aqui
  const title = await page.title();
  console.log('Loaded:', title);

  await browser.close();
}

Dois detalhes importam aqui. Primeiro, você está se conectando a um contexto existente, então não crie um novo — a impressão digital e o proxy vivem no perfil que o AdsPower iniciou. Segundo, sempre feche a conexão do navegador quando o teste terminar, depois chame o endpoint de parada do AdsPower para que o perfil seja liberado para a próxima execução.

Passo 4: Pare o perfil de forma limpa

First viewport screenshot of Release notes | Playwright Java

First viewport screenshot of Release notes | Playwright Java.

Perfis vazados são a causa mais comum de suítes de teste multi-contas instáveis. Adicione uma etapa de encerramento:

async function stopAdsPowerProfile(profileId) {
  await fetch(
    `http://local.adspower.net:50325/api/v1/browser/stop?user_id=${profileId}`
  );
}

Envolva isso em um bloco finally ou em uma fixture do Playwright para que seja executado mesmo quando um teste falhar.

Passo 5: Execute perfis em paralelo

O modelo de workers do Playwright mapeia naturalmente para os perfis do AdsPower. Atribua um perfil por worker, e cada worker recebe uma identidade totalmente isolada.

// playwright.config.js
module.exports = {
  workers: 4,
  use: {
    // Configuração base; a atribuição de perfil acontece por teste
  },
};

Um padrão simples é manter um array de IDs de perfil e indexá-lo usando o índice do worker, para que dois workers nunca toquem o mesmo perfil ao mesmo tempo.

Exemplo prático: testando preços específicos por geolocalização

Suponha que sua aplicação mostre preços diferentes com base no país do visitante. Você quer verificar as variantes alemã, japonesa e brasileira.

  1. Crie três perfis AdsPower, cada um vinculado a um proxy residencial no país alvo.
  2. Defina o idioma e o fuso horário de cada perfil para corresponder à localização do proxy.
  3. No seu teste, inicie o perfil, conecte via CDP, navegue até a página de preços e verifique a moeda e o valor.
const cases = [
  { profileId: 'de_profile', currency: 'EUR' },
  { profileId: 'jp_profile', currency: 'JPY' },
  { profileId: 'br_profile', currency: 'BRL' },
];

for (const testCase of cases) {
  const wsEndpoint = await startAdsPowerProfile(testCase.profileId);
  const browser = await chromium.connectOverCDP(wsEndpoint);
  const page = browser.contexts()[0].pages()[0];

  await page.goto('https://example.com/pricing');
  const shown = await page.locator('[data-testid="currency"]').innerText();

  if (shown !== testCase.currency) {
    throw new Error(`Expected ${testCase.currency}, got ${shown}`);
  }

  await browser.close();
  await stopAdsPowerProfile(testCase.profileId);
}

É aqui que a combinação se justifica. Uma execução simples do Playwright com um único proxy exigiria que você reconstruísse o estado do contexto para cada país e ainda exporia a mesma impressão digital em todos os três testes.

Exemplo prático: mantendo uma sessão logada entre execuções

Alguns fluxos — onboarding, checkout em várias etapas, aquecimento de conta — são caros de repetir. Como o perfil do AdsPower persiste cookies e armazenamento, você pode fazer login uma vez e reutilizar a sessão:

  1. Execute um script de configuração que inicia o perfil, conecta, realiza o login e fecha a conexão sem limpar o armazenamento.
  2. Nas execuções de teste subsequentes, conecte-se ao mesmo perfil e navegue diretamente para a área autenticada.
  3. Adicione uma proteção que detecta um estado deslogado e reautentica, para que a suíte se autocorrija.

Esse padrão é comum em operações multi-contas, onde a longevidade da sessão é a métrica que mais importa. Se você está gerenciando muitas contas em vez de muitos testes, os mesmos princípios são abordados neste guia de multi-contas com navegadores antidetecção.

Onde essa combinação falha

Vale a pena ser honesto sobre os limites.

  • O AdsPower não é um executor de testes. Ele não tem asserções, relatórios ou lógica de retentativa. O Playwright fornece tudo isso.
  • O realismo da impressão digital varia conforme a configuração. Comparações de terceiros de navegadores antidetecção, como esta análise AdsPower vs Vision, levantaram questões sobre parâmetros de hardware gerados automaticamente. Teste seus perfis contra um verificador de impressão digital antes de confiar neles em suítes semelhantes à produção.
  • A conexão CDP tem sobrecarga. Conectar-se a um navegador existente é mais lento do que iniciar uma instância headless nova. Para testes de UI puramente unitários, o Playwright simples é mais rápido.
  • A contagem de perfis é uma restrição real. Os 2 perfis do plano gratuito limitam o paralelismo. Dimensione os planos de acordo.

Quando usar esta configuração — e quando não usar

Use AdsPower com Playwright quando seus testes dependem de identidade: fluxos multi-contas, conteúdo geolocalizado, persistência de sessão ou renderização sensível à impressão digital. Use Playwright simples quando estiver testando lógica de UI que nada tem a ver com quem o visitante parece ser.

Uma regra prática: se duas execuções de teste seriam indistinguíveis para o servidor, você não precisa de um navegador antidetecção. Se elas precisam parecer duas pessoas diferentes em duas máquinas diferentes, você precisa.

Leitura relacionada

Perguntas frequentes

O Playwright pode iniciar perfis do AdsPower diretamente?

Não. O AdsPower inicia o navegador; o Playwright se conecta a ele pelo Chrome DevTools Protocol usando o endpoint WebSocket retornado pela API Local do AdsPower.

Isso funciona com o FlowerBrowser (Firefox)?

O connectOverCDP do Playwright é específico do Chromium. Para perfis baseados no Firefox, você precisa de uma estratégia de conexão diferente, e o suporte depende do protocolo de depuração que o perfil expõe. O SunBrowser (Chromium) é o caminho direto.

Como evito colisões de perfil em execuções paralelas?

Atribua a cada worker do Playwright um ID de perfil exclusivo e nunca reutilize um perfil enquanto ele estiver em execução. Rastreie o estado do perfil em uma fixture e libere-o no encerramento.

Posso definir o proxy pelo Playwright em vez do AdsPower?

Você pode, mas não deveria. O proxy faz parte da identidade do perfil. Defini-lo no Playwright enquanto o AdsPower relata uma configuração de rede diferente cria uma inconsistência que os verificadores de impressão digital vão sinalizar.

A API Local é segura?

Ela se vincula ao localhost por padrão. Se você habilitar uma chave de API, armazene-a em variáveis de ambiente e nunca a faça commit. Para configurações de equipe, restrinja o acesso à máquina que executa o cliente AdsPower.

E os CAPTCHAs durante testes automatizados?

Fluxos automatizados frequentemente acionam desafios. Lidar com eles é uma preocupação separada da identidade do navegador; o fluxo de trabalho para integrar um serviço de resolução está documentado neste guia de configuração do AdsPower e Anti Captcha.

Conclusão

AdsPower e Playwright resolvem metades diferentes do mesmo problema. O Playwright oferece uma maneira rápida e expressiva de controlar um navegador e fazer asserções sobre o que ele renderiza. O AdsPower dá a cada uma dessas sessões de navegador uma identidade crível, persistente e isolada, com sua própria impressão digital e proxy.

Juntos, eles permitem testar comportamento multi-contas, experiências geolocalizadas e sessões de longa duração sem a instabilidade que vem do estado compartilhado. A configuração não é complicada — habilite a API Local, inicie um perfil, conecte via CDP e limpe no encerramento — mas a disciplina de tratar perfis como fixtures de teste de primeira classe é o que separa uma suíte estável de uma frágil.

Comece com dois perfis no plano gratuito, comprove o fluxo de trabalho em um único teste geográfico e depois escale o padrão para sua matriz completa.

Compartilhar