Headless vs Headful
Headful Client
A Client is an application program that provides a way to look at and interact with all the information on the World Wide Web or OS application. Technically a Browser, alternatively referred as a Web Browser or Internet Browser, is a client program that uses HTTP (Hypertext Transfer Protocol) to make requests of Web servers throughout the Internet on behalf of the Browser User.
Headless Client
A Headless Client is also a client but without a graphical user interface (GUI) that can be controlled programmatically, and can be extensively used for automation, testing, and other purposes.
Why to use Headless Client?
There are a lot of advantages and disadvantages in using the Headless Client. Using a headless Client might not be very helpful for browsing the Web, but for Automating tasks and tests it’s awesome.
Advantages of Headless Client
There is a lot of advantages in using Headless Client. Some of them are as follows:
A definite advantage of using Headless Client is that they are typically faster than real Client. The reason for being faster is because we are not starting up a Client GUI and can bypass all the time a real Client takes to load CSS, JavaScript and open and render HTML DOM.
Performance wise you can typically see a 2x to 15x faster performance when using a headless Client. While Scraping Websites you don’t necessarily want to have to manually start up a website. So you can access the website headlessly and just scrape the HTML. You don’t need to render a Full Client to do that.
Lots of developers use a Headless Client for unit testing code changes for their websites and mobile apps. Being able to do all this from a command line without having to manually refresh or start a Client saves them lots of effort.
When You Might NOT Want to Use a Headless Browser
There can be number of reasons why you may opt to use a Real Client instead of a Headless Client. A couple of instances:
- You need to mimic real users.
- You need to visually see the test run.
- If you need to do lots of debugging, headless debugging can be difficult.
By default Test Maker runs in headless mode
but this can be configured on both global and per client level.
The following command runs the tests in a headless mode (if default settings are used).
npm run test:ci