When (And When Not) to Use Headless Testing

Apr 17, 2019

As the volume of testing increases in the software delivery lifecycle as part of the shift left movement, one of the biggest challenges facing development and testing teams is how to optimize resources. After all, time and infrastructure are very real constraints. And in the real world, It’s important to find ways to get the most test coverage with the infrastructure you have available.

One way to do this is to take advantage of headless testing. Headless testing is a software testing technique that makes it possible to expand coverage by running more tests, without requiring a significantly greater investment of time or hosting resources for those tests. Combining this with other approaches to testing, organizations that adopt this blended approach towards testing enable teams to perform testing earlier in the delivery cycle, thereby
shifting testing left and finding bugs earlier.

Sounds good, right? So let’s delve into how headless testing works, when to use it, and how you should look at headless as part of your overall testing strategy.

What is headless testing?

Headless testing is a technique for testing applications (or individual components inside applications) without displaying their visual elements. Generally, applications tested operate in a web browser with a graphical user interface, or GUI. Headless testing still tests the components, but skips the time- and resource-consuming process of rendering a visual display.

Headless testing does not mean the code determining how an application is displayed is ignored. HTML is still rendered and JavaScript is still invoked by the test scripts to determine whether layout rendering and performance goals are met.

Because headless testing doesn't address all testing use cases, it's best to think of headless as one useful testing technique to include in your toolset, but not the only one that you’ll use. Cross-browser tests should certainly remain a part of your testing routine, as should unscripted, manual tests.

Why use headless testing?

Headless does not replace other forms of testing, but it offers several advantages that make it a better fit for tasks that require faster feedback and more efficient use of resources for early pipeline testing. There are a few advantages that headless can offer.

Testing speed

Because headless testing does not require the test environment to display the visual elements of an application, headless tests can typically execute much faster than cross-browser tests. Also, using headless browsers for early pipeline testing means code moves through the pipeline faster, and that bugs can be found and fixed much more quickly.

Cost and infrastructure savings

Skipping the step of displaying an application visually also reduces the amount of resources that each test consumes. As a result, you can run more tests at once on the same infrastructure. Ultimately, this saves you money.

Enabling earlier testing

Because headless tests run more quickly and require less infrastructure, it’s easier to perform tests early in the development cycle. Headless testing can be used at any point in the development cycle, but it is particularly valuable for conducting early pipeline tests that would not be feasible to perform using a cross-browser approach. With Agile development gaining more popularity, this idea of early testing is critical to support accelerated development cycles.

When not to use headless testing

While headless testing enables faster and more frequent tests, it is not the right fit for every testing use case. Below are three scenarios where headless is a poor fit for a given type of test.

  • Tests that evaluate graphical elements: Any tests that require visual elements to be evaluated on a display that mimics real-world conditions, or which involve visual components that cannot be represented by standard web browser code cannot be run effectively using headless testing.
  • Real-world test conditions: Because headless environments rarely exist in the real world, headless testing is not well suited for testing application behavior under genuine real-world conditions. Cross-browser testing is the best approach for mirroring real-world conditions within a testing environment.
  • Performance troubleshooting: Because headless tests don't execute the display, they may miss performance pain points related to either page interactivity or the visual components of the application.

To learn more about the benefits of headless testing, and how to get started, download this new white paper from Sauce Labs on Why, When and How to Use Headless Testing.

To make headless testing easier, Sauce Labs is developing a headless testing platform, Sauce Headless. Sauce Headless saves testing teams from having to set up headless browsers or host infrastructure, placing the focus on tests and developing, coding, and creating new applications. With more insight earlier in the development process, organizations will benefit from code and application branches that are cleaner, more reliable, and more usable across the organization. Combined with a traditional cross-browser testing platform, Sauce Headless helps achieve continuous testing throughout the software development pipeline. To learn more, please visit the Sauce Labs website.

Written by

Alissa Lydon