Curated list of awesome visual regression testing resources.
Regression testing is a type of software testing which verifies that software which was previously developed and tested still performs the same way after it was changed or interfaced with other software. The purpose of regression testing is to ensure that changes to the software have not introduced new faults.
This is intended to be an incomplete list of resources about visual regression testing. It is not tailored to a specific area or role (Developer/QA/UX-Designer). Note that this is for all areas of regression software testing after the code in question is written. For a awesome list on general software testing see e.g. awesome-testing.
Finally, I'm sure everyone who reads this list has one thing they want to add. Please read the How to Contribute page and Feel free to add to the list!!. If you think this is helpful Please give a Star ★.
- General information
- Browser automation
- Tools and frameworks
- Online services
- Blog posts
- Slideshows, talks and videos
- Wikipedia: Regression testing
- Survey of screenshot-based CSS testing tools
- visualregressiontesting.com - Basic collection of links.
- Selenium - Browser automation framework and ecosystem.
- SlimerJS - Scriptable browser like PhantomJS, based on Firefox.
- trifleJS - Headless automation for Internet Explorer.
- CasperJS - Navigation scripting and testing utility for PhantomJS and SlimerJS.
- Webdriver.io - Node.js bindings implementation for the W3C WebDriver protocol.
- Navalia - Browser Automation based on headless Chrome and GraphQL.
- Chromeless - Chrome automation made simple. Runs locally or headless on AWS Lambda.
- Cypress.io - An automation framework that runs in-browser.
Tools and frameworks
- AyeSpy - 44 image comparisons in 90 seconds.
- Wraith - Easy to use ruby tool with docker support.
- BackstopJS - Config-driven automated screenshot test framework.
- Galen - Java framework based on Selenium.
- Gemini - Feature rich framework with support for Selenium and CasperJS.
- Huxley - Python framework based on Selenium Webdriver.
- PhantomFlow - Experimental approach to UI testing, based on Decision Trees.
- CSSCritic - Lightweight CSS regression testing.
- Spectre - Provides image comparison capabilities and an admin interface for managing screenshots.
- Shoov - UI regression and functional testing focused on Drupal 7 sites.
- OcularJS - uses PhantomJS.
- WebdriverCSS - WebdriverCSS sits on top of Webdriver.io and hooks into Selenium.
- Look-alike - Chrome Extension for taking and comparing screenshots.
- Hardy - Selenium-driven, cucumber-powered CSS testing.
- TestCafe - Automated browser testing for the modern web development stack.
- Needle - Needle is a tool for testing visuals with Selenium and nose (Python).
- gatling - Integrated visual RSpec matcher which makes real visual testing easy (Ruby).
- grunt-photobox - Plugin to prevent your project of broken layout via screenshot photo sessions of your site.
- Happo - Visual diffing in CI for user interfaces.
- reg-cli - Visual regression test tool which output easy-to-read single file html report.
- Nightmare - High-level browser automation library based on Electron.
- Puppeteer - Headless Google Chrome Node API.
- Visual Review - A human-friendly tool for testing and reviewing visual regressions.
- reg-suit - Visual regression testing suite which compares images, stores snapshots, and notifies the difference to your GitHub repo.
- Chimp - Develop acceptance tests & end-to-end tests with realtime feedback.
- Differencify - A library for visual regression testing using Puppeteer.
- Muppeteer - Visual regression testing framework for Chrome using Mocha and Puppeteer.
- ember-visual-test - Simple visual regression testing for Ember.
- AET - Scalable testing tool providing visual regression testing, accessibility and performance validation, markup analysis and more.
- Wendigo - Test-oriented browser automation library based on Puppeteer.
- Loki - Visual regression testing for Storybook using Chrome in docker et al.
- Zombie.js - Insanely fast, headless full-stack testing using Node.js.
- CodeceptJS - Modern Era Acceptance Testing Framework for NodeJS.
- FuncUnit - A functional test suite based on jQuery
- Nightwatch - Automated testing and continuous integration framework based on Node.js and using the Webdriver protocol.
- Protractor - E2E test framework for Angular apps.
- BrowserStack - Free for Open Source. Supports Selenium Webdriver.
- screener.io - For React, looks open source.
- applitools - Cloud base visual tests.
- percy.io - Continuous visual reviews for web apps.
- screenster.io - Cloud based automation testing platform for web and mobile UI.
- MogoTest - Website Browser Testing Tool For SEO Experts.
- browserling - LIVE interactive cross-browser testing.
- Browser Shots - Screenshots only.
- Ghost Inspector - See introduction video.
- CrossBrowserTesting - Manual & exploratory testing on 1500+ real browsers and mobile devices.
- Argos-CI - Automate visual regression testing.
- BackTrac - Cloud based visual regression tool. Uses headless firefox and proprietary comparison algorithm (detect layout shifts).
- Chromatic - Visual testing and UI review for component libraries. Cloud-based. Video
- VisWiz.io - Flexible visual regression testing service.
- Happo - Cloud-based screenshot testing service with support for multiple browsers.
- Visual Knight - Cloud-based visual testing platform with realtime results for testing tools.
- Kevin Lamping: The 5 best visual regression testing tools - Compares: Wraith, PhantomCSS, Gemini, WebdriverCSS and Spectre.
- Garris Shipon: Visual Regression Testing For Angular Applications - Tutorial using BackstopJS.
- Angela Riggs: Visual Regression Testing with BackstopJS - Tutorial using BackstopJS.
- Garris Shipon: Automating CSS Regression Testing - Tutorial using BackstopJS.
- Phillip Gourley: Making visual regression useful - Why you should use BackstopJS.
- Pavels Jelisejevs: Visual Regression Testing with PhantomCSS - Introduction to PhantomCSS.
- Chromeless, Chrominator, Chromy, Navalia, Lambdium, GhostJS, AutoGCD - Headless Chrome is shaking up traditional approaches to test automation.
- Visual regression testing using Jest, Chromeless and AWS Lambda - Tutorial using Chromeless and jest-image-snapshot.
- Make visual regression testing easier - Introduction to Differencify and how to use it.
- Visual Regression Testing with Puppeteer & Jest - Tutorial to setup visual testing with Puppeteer, Jest and VisWiz.io.
- Keeping a React Design System consistent: using visual regression testing to save time and headaches - Using percy, and jest puppeteer to visually test a React component library.
Slideshows, talks and videos
- CSS Regression Testing with Wraith - Screencast: Basic introduction to wraith, a screenshot comparison tool.
- Visual Regression Testing with Shoov - How to setup shoov and get your first test written.
- Visual Regression Testing with PhantomCSS - Talk by Jon Bellah on how to use PhantomCSS during wordpress development.
- Visual Regression Testing: Sanity Checks With BackstopJS - Screencast with code demo and best practices.
- Screenster Tutorial - Tutorial on how to create visual automated tests with Screenster.
- Look-alike - visual regression testing tool - Demo what the Look-alike Chrome extension is, how it works and how and why it was build.
- Screencast on CSS critic - a lightweight testing framework for CSS - How to write your first CSS test with CSS critic, make it pass, break it, and make it pass again.
- Visual Regression Testing - from a tool to a process by Nikhil Verma - How the Mobile Web team in Badoo converted and integrated PhantomCSS into their workflow and connected it to their CI process.
The following projects are no longer maintained actively but are still worth mentioning because of their user base.
- PhantomJS - Scriptable Headless WebKit. No longer maintained since 2 June 2018.
- PhantomCSS - Visual/CSS regression testing with PhantomJS or SlimerJS. No longer maintained since 22 Dec 2017.
- dpxdt - End-to-end testing with Python.
See the Contribution Guide for details on how to contribute.
Code of Conduct
See the Code of Conduct for details. Basically it comes down to:
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
nationality, personal appearance, race, religion, or sexual identity and orientation.
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
License holders are all contributors.