Pular para o conteúdo
SDETRole
SDETRole

Glossário · Automação de UI

Navegador headless

Em inglês: Headless browser

Também chamado de: navegadores headless, modo headless, headless Chrome, navegador sem interface

Definição

Um motor de navegador real rodando sem janela visível, usado para executar testes de UI em servidores de CI e em outras máquinas que não têm tela.

Um navegador headless carrega páginas, executa JavaScript, monta o DOM e trata as requisições de rede exatamente como um navegador normal, mas não desenha nada na tela. Os testes o controlam pelo mesmo protocolo de automação de um navegador com interface (headed). Como ele não precisa de servidor gráfico, é a forma padrão de rodar testes de UI em containers de CI e agentes de build.

Exemplo

O Playwright roda em modo headless por padrão. Você ativa uma janela visível quando está depurando:

npx playwright test            # headless
npx playwright test --headed   # show the browser
npx playwright test --ui       # interactive UI mode

No Selenium 4, você pede o modo headless pelas opções do navegador:

ChromeOptions options = new ChromeOptions();
options.addArguments("--headless=new");
WebDriver driver = new ChromeDriver(options);
FirefoxOptions options = new FirefoxOptions();
options.addArguments("-headless");
WebDriver driver = new FirefoxDriver(options);

Por que isso importa

  • Roda em qualquer lugar. Agentes de build e containers Docker normalmente não têm tela, então execuções headed precisariam de um framebuffer virtual.
  • Usa menos recursos do que um navegador com interface, então você consegue rodar mais workers em paralelo na mesma máquina.
  • É um navegador de verdade. O Chrome e o Firefox headless modernos usam o mesmo motor de renderização das versões com interface, e é por isso que testes escritos em headless geralmente se comportam igual no modo headed.

Armadilhas comuns

  • Diferenças de viewport. Um navegador headless pode iniciar com um tamanho de janela padrão diferente do seu navegador desktop. Defina o viewport explicitamente para que layouts responsivos se comportem de forma consistente.
  • “Funciona headed, falha headless.” Normalmente isso é timing, não o modo headless em si: a execução headless é mais rápida ou mais lenta e expõe uma espera que está faltando. Capture um trace ou screenshot na falha em vez de mudar a CI para headed.
  • Depurar às cegas. Ative screenshots, vídeo ou traces nos testes com falha para ver o que o navegador headless viu.
  • Confundir headless com “não é um navegador”. Ferramentas que só baixam o HTML, sem executar JavaScript, não são navegadores headless e não conseguem testar uma single-page app moderna.

Digite para buscar em todo o SDETRole.

Busca de texto completo com Pagefind · roda no seu navegador Abrir página de busca →