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.
| Abordagem | Renderização WebGL/Canvas | Custo |
|---|---|---|
| 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.