Vai al contenuto
SDETRole
SDETRole

Glossario · Automazione della UI

Browser headless

In inglese: Headless browser

Detto anche: modalità headless, headless mode, Chrome headless

Definizione

Un vero motore di browser che gira senza una finestra visibile, usato per eseguire test di UI su server di CI e altre macchine prive di display.

Un browser headless carica le pagine, esegue JavaScript, costruisce il DOM e gestisce le richieste di rete esattamente come un browser normale, ma non disegna nulla sullo schermo. I test lo pilotano tramite lo stesso protocollo di automazione di un browser con interfaccia grafica (headed). Poiché non richiede un display server, è il modo predefinito per eseguire i test di UI nei container di CI e sugli agent di build.

Esempio

Playwright gira in modalità headless per default. Puoi scegliere di mostrare una finestra quando fai debug:

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

In Selenium 4 richiedi la modalità headless tramite le opzioni del browser:

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);

Perché è importante

  • Gira ovunque. Gli agent di build e i container Docker di solito non hanno un display, quindi un’esecuzione headed richiederebbe un framebuffer virtuale.
  • Usa meno risorse di un browser headed, quindi puoi eseguire più worker in parallelo sulla stessa macchina.
  • È un vero browser. Le versioni headless moderne di Chrome e Firefox usano lo stesso motore di rendering delle versioni headed, ed è per questo che i test scritti in headless in genere si comportano allo stesso modo in headed.

Insidie comuni

  • Differenze di viewport. Un browser headless può partire con una dimensione di finestra predefinita diversa da quella del tuo browser desktop. Imposta il viewport in modo esplicito, così che i layout responsive si comportino in modo coerente.
  • “In headed funziona, in headless fallisce”. Di solito è un problema di tempistiche, non della modalità headless in sé: l’esecuzione headless è più veloce o più lenta e fa emergere un’attesa mancante. Cattura una trace o uno screenshot in caso di fallimento invece di passare la CI in headed.
  • Fare debug alla cieca. Attiva screenshot, video o trace per i test falliti, così puoi vedere quello che ha visto il browser headless.
  • Confondere headless con “non è un browser”. Gli strumenti che si limitano a scaricare l’HTML, senza eseguire JavaScript, non sono browser headless e non possono testare una moderna single-page app.

Scrivi per cercare in tutto SDETRole.

Ricerca full-text con Pagefind · funziona nel tuo browser Apri la pagina di ricerca →