A headless browser is a web browser without a graphical user interface.
Headless browsers provide automated control of a web page in an environment similar to popular web browsers, but are executed via a command-line interface or using network communication.
They are particularly useful for testing web pages as they are able to render and understand HTML the same way a browser would, including execution of JavaScript and AJAX which are usually not available when using other testing methods.
- Test automation in modern web applications.
- Taking screenshots of web pages.
- Running automated tests for JavaScript libraries.
- Scraping web sites for data.
- Automating interaction of web pages.
- Pure HTTP browser emulators.
- Send a real HTTP requests against an application and parse the response content.
- Simplicity to run and configure
- Speed
- Ability to run it without the need of a real browser
- No JS/AJAX support
- Goutte
- Zombie.js – a simulated browser environment for Node.js.
- PhantomJS – a Scriptable Headless Browser using WebKit layout engine [development is suspended]
- SlimerJS – a scriptable browser using Mozilla's Gecko layout engine.
- CasperJS - Navigation scripting & testing utility for PhantomJS and SlimerJS [no longer actively maintained]
- TrifleJS – a headless Internet Explorer scriptable browser using the Trident layout engine
- Google Chrome (only on Linux and MacOS)
- Splash – a headless web browser as service
- Navalia - Drive a headless browser with ease by using GraphQL
- List of headless web browser
- Those emulators aim to control the real browser.
- Simulate user interactions on browser and are able to retrieve actual information from current browser page.
- Support for JS/AJAX interactions on page
- Require the installed browser
- Need extra configuration
- Usually much slower than headless counterparts
- Selenium: A browser automation testing framework and ecosystem.
- Sahi
- Servo (Experimental Browser Engine, by Mozilla Research)
- Google Chrome, the V8 engine (JavaScript, ECMA-262, edition 6)
- V8 - open source, developed by Google, part of Google Chrome and Node.js
- Mozilla Firefox, the SpiderMonkey, and Rhino (JavaScript, ECMA-262, edition 6)
- SpiderMonkey, the first JavaScript engine, which powered Netscape Navigator and today powers Firefox
- Rhino, managed by the Mozilla Foundation, open source, developed entirely in Java
- Apple Safari, the Nitro engine (JavaScript, ECMA-262, edition 6)
- JavaScriptCore - open source, marketed as Nitro and developed by Apple for Safari
- Duktape, an embeddable engine, with focus on portability and a compact footprint.
- JerryScript, is an ultra-lightweight JavaScript engine for the Internet of Things.
- Esper, a JavaScript self-interpreter with a focus on sandboxed execution and runtime introspection.