Blog

Selenium e Playwright com aceleração GPU: não precisa de uma GPU de 500 €/mês

Execute os seus testes Selenium e Playwright com aceleração GPU (WebGL, Canvas, vídeo) num servidor com GPU integrada iGPU/APU. CI de testes de navegador rápida e fiel, a partir de 14,99 €/mês, k3s/k8s.

Selenium e Playwright com aceleração GPU: não precisa de uma GPU de 500 €/mês

Correr o Selenium e o Playwright em CI não exige uma placa gráfica dedicada de várias centenas de euros. Mas correr os seus testes com aceleração GPU — para que o WebGL, o Canvas e o vídeo se comportem tal como acontece com os seus utilizadores — isso sim, muda tudo. E uma GPU integrada (iGPU / APU) é suficiente, a partir de 14,99 €/mês.

O verdadeiro problema: a renderização por software

Sem GPU, o Chromium passa para renderização por software (SwiftShader): o WebGL, o Canvas e o vídeo tornam-se lentos e, por vezes, diferentes da realidade. Os seus testes passam… mas não refletem o que os seus utilizadores veem. No sentido oposto, alugar uma GPU dedicada a 300-500 €/mês para arrancar navegadores headless é um desperdício.

AbordagemRenderização WebGL/CanvasCusto
Só CPU (software)⚠️ lento, por vezes errado💶 mas enganador
GPU dedicada (~300-500 €/mês)✅💸💸💸 sobredimensionado
iGPU Linux GPU (a partir de 14,99 €/mês)✅ renderização em hardware real💶

Porque é que a GPU muda os seus testes de navegador

A iGPU/APU está exposta ao sistema (/dev/dri). Os seus navegadores usam-na para:

  • WebGL / WebGPU: desempenho real, resultados visuais reais;
  • Canvas 2D e compositing acelerados;
  • leitura de vídeo descodificada em hardware.

Resultado: suites E2E mais rápidas e, sobretudo, mais fiéis ao navegador real do utilizador.

Chromium em iGPU (ANGLE / Vulkan)

Ative a aceleração GPU do Chromium através do ANGLE/Vulkan — tanto em headless como sob Xvfb. Exemplo do lado do Playwright:

// playwright.config.ts
use: { launchOptions: { args: [
  '--use-gl=angle', '--use-angle=vulkan',
  '--enable-features=Vulkan', '--ignore-gpu-blocklist',
] } }

E o equivalente do lado do Selenium (Python):

from selenium import webdriver
opts = webdriver.ChromeOptions()
for a in ('--use-gl=angle', '--use-angle=vulkan',
          '--enable-features=Vulkan', '--ignore-gpu-blocklist'):
    opts.add_argument(a)
driver = webdriver.Chrome(options=opts)

Verifique a aceleração em chrome://gpu: as linhas WebGL / Vulkan devem indicar «Hardware accelerated».

Em CI e à escala

  • Coloque em contentores os seus workers Playwright / Selenium / Puppeteer;
  • Paralelize as suas suites E2E por vários nós em k3s / Kubernetes;
  • SSH root, IPv6 e LUKS incluídos. Opção cluster k3s +5 €/nó.

FAQ

Tenho de usar o Xvfb? No headless moderno (--headless=new), muitas vezes não. O Xvfb continua a ser útil para um display completo (extensões, casos particulares) — e a iGPU acelera ambos.

O Playwright e o Selenium são ambos suportados? Sim, assim como o Puppeteer: são as mesmas flags do Chromium e a mesma GPU.

E para testar WebGL / WebGPU em CI? É precisamente o caso ideal: a iGPU fornece um contexto GPU real, muito mais representativo do que a renderização por software.

Conclusão

Para testes de navegador com aceleração GPU, a iGPU faz o trabalho — sem a fatura de uma GPU dedicada. Arranque o seu servidor de CI a partir de 14,99 €/mês.