The Importance of Visual Regression Testing

Written by Santiago Castro

A large part of what software developers do is improve existing code. Yes, we sometimes write entirely new programs and build interesting software from scratch. But that’s just part of the story. The other part is building onto existing code, adding features, updating for evolving needs, and making improvements. And when we do that, there’s always a chance adding to what’s already working will...well, break what was already working.

This is where regression testing comes in, and visual regression testing along with it.

In simple terms, a regression is when something slides backwards or goes back to how it was before, and regression testing is checking to make sure this has not happened when your code has been tweaked, changed, or improved upon. Visual regression testing is a way of doing that testing with the visual aspects of the software -- mostly notably, the user interface (UI) or user experience design (UX).

When you run visual regression tests, you’re seeking to ensure that the visual design on the front end is displaying correctly -- be it the layout of the webpage, web app, real device, or the button distribution on a piece of software.

Likewise, the process seeks to validate the layout and appearance of the interface which users will see, whatever that may be for the context you’re developing.

When to Do Regression Testing, in General

We’ve all had the experience: you’re doing your thing online, clicking from one webpage to the next, reading up on an interesting topic, keeping up on the news, or trying to learn a new skill, when suddenly you come upon a webpage or application that isn’t displaying correctly.

Perhaps the lines of text are overlapping, or the image that’s loading is stuck in an endless spiral of blur. Or maybe the button you want to press is taking you where you don’t intend to go, and the format is confusing you to such a degree that you don’t know how to navigate your way back.

This is a situation that could have benefited from visual regression testing.

What might have happened is the designers and developers of this site ran an update or installed new code and didn’t do their due diligence or test case analysis to ensure the site was regression tested to an adequate degree. The result? This mess.

It seems simple to say: great, then run a visual regression test whenever the code is finished, and before you “ship” it out to users. And while this isn’t untrue, because in agile development code is often updated iteratively, throughout many phases of an ongoing process, the reality is more complicated.

Remember this simple rule: regression testing, and in particular visual regression testing, should be completed after any change is made to your base code. (You don’t fix your car engine and then put the car in the lot for the night, do you? No! Rev that engine and drive around the block first to make sure it’s working).

Likewise, visual regression testing should be run anytime an issue or bug has been noticed and fixed. Again: if you discover your car is short on oil, and fill the engine with oil -- check to make sure it drives. Don’t want until the next day when it’s time to leave for when to realize...oh, shucks, it wasn’t the oil at all.

When To Do Visual Regression Testing, Specifically

Developers often assume that if they’re testing for regression in their base code, and all was well, then they’re probably in the clear.

If only this were so.

The special import of visual regression testing, as opposed to regression testing more generally, is that visual regression testing seeks to use UI testing to ensure the user-facing components of the software or web experience are clear, consistent, and functional in a way that leads to a perfect user experience.

This means: they not only work well, but they also look as they should look at all times.

Visual Regression Testing should occur not only when changes are made to the base code, but when any visual or interface change or need shifts as well.

For instance, if you designed a webpage with a subset of web browsers in mind, and new web browsers have come onto the market or are gaining prominence, you’ll need to run visual regression testing to ensure that these web browsers don’t alter your user interface or user experience.

Also, if you’re transferring your software from website to mobile, or from Apple iOS to Android -- all these changes will require more than just regression testing, but visual regression testing, too. The test results you derive will help ensure your web app, program, or web page looks as good across all media as it’s meant to.

How to Run Visual Regression Testing

Lucky for you, visual regression testing does not mean opening up your application or website on every single possible browser, screen size, type of phone, and model of laptop in existence and painstakingly comparing visual components on each to those on the others (though this is one valid, if potentially endless, method).

Rather, there are a large number of automation frameworks, tools, and applications built (and visual regression tested, certainly) specifically to help you optimize your improved code for user experience and user interface visuals.

GitHub has a nearly comprehensive list of tools for Visual Regression Testing here. They include basset, which allows you to generate and view visual differences across code versions (and is an open source option) as well as Creevey, for cross-browser visual testing, including a UI Runner, and Storybook integration, and Chimp, which will help you create and run acceptance & end-to-end tests with real time feedback.

All of these, and the three dozen other options Github outlines, serve different purposes within the general category of visual regression testing, including a range of coding languages, applications, and other nuances. The repository also provides blogs and other literature on best practices for visual regression testing, online resources for visual regression testing, and learning material for those seeking to better understand visual regression testing and to integrate it fully into their design and development processes.

While it may sound complex to immerse yourself in these issues, it is important to do so if you want what you develop to perform at a professional level. If you have questions, don’t hesitate to reach out to us at Jobsity: we have the top 3% of LATAM developers working on our team, and a number of those are the best QA (Quality Assurance) developers in the business.

We’re standing by and ready to help.


If you want to stay up to date with all the new content we publish on our blog, share your email and hit the subscribe button.

Also, feel free to browse through the other sections of the blog where you can find many other amazing articles on: Programming, IT, Outsourcing, and even Management.

Interested in hiring talented Latin American nearshore developers to add capacity to your team? Contact Jobsity: the nearshore staff augmentation choice for U.S. companies.

linkedIn icon
Written by Santiago Castro

With over +16 years of experience in the technology and software industry and +12 of those years at Jobsity, Santi has performed a variety of roles including UX/UI web designer, senior front-end developer, technical project manager, and account manager. Wearing all of these hats has provided him with a wide range of expertise and the ability to manage teams, create solutions, and understand industry needs. At present, he runs the Operations Department at Jobsity, creating a high-level strategy for the company's success and leading a team of more than 400 professionals in their work on major projects.