Visual Comparison Testing with Angular, together with the power of Cypress, is a good method to improve your test suite.
By taking screenshots of your Angular app, you can compare your UI with baseline images. If a screenshot is different from the original screenshot, a (visual) bug could have slipped in your UI.
Using the extensive browser grid of TestingBot, it's possible to test your Angular UI on various browsers and platforms.
Advantages of Visual Comparison Testing
Visual UI testing is a method of taking screenshots, comparing these to baseline images and triggering an error when there's a difference detected.
UI testing can be used as part of your test suite in your CI/CD environment, next to functional tests, unit tests and more.
There are several advantages to using Visual Comparison Testing. Below are the most popular advantages.
-
Automation:
These tests are done automatically, which means they can be repeated whenever you want and how many times you like. In combination with a CI/CD system, this is much more efficient than going through every UI change manually.
-
Quality:
A pixel comparison algorithm will detect the slightest UI change. Compared with a human tester, the algorithm will detect changes faster and more efficient.
-
Scalability:
Because this is an automated verification, you can choose to run the algorithm in parallel on a wide variety of configurations. You can choose to run the checks on different viewport sizes, screen resolutions, operating systems, browsers and (mobile) devices.
Angular Visual Regression Testing with Cypress
Cypress is a popular test framework, used by developers and QA to write tests in clear syntax.
With the power of plugins, Cypress can be extended with various enhancements to improve your test suite.
One plugin is called cypress-image-snapshot which allows you to take screenshots during a Cypress test.
Under the hood, the plugin uses the jest-image-snapshot image diffing logic, which uses pixelmatch under the hood.
Once you've used Angular to create your website, you can use Cypress to test the webpages on a variety of browsers, versions and devices.
Angular Visual UI Testing Example
To get started, let's assume that you have an existing Angular project that you want to test visually. If you don't have an Angular project, you can create one using the Angular CLI by running the following command:
Once you have an Angular project, you can add Cypress and cypress-image-snapshot to your project by running the following commands:
Now that you have Cypress and cypress-image-snapshot installed, you can start writing visual UI tests. Below is an example on how to do visual UI testing with Cypress and cypress-image-snapshot:
The first time that you will run this test, Cypress will take a screenshot of the entire page and save it as a baseline image. On the next run, Cypress will take another screenshot and compare it to the baseline image. If differences are detected, the Cypress test will fail and display a visual diff of the two images. The diff is useful to visually compare what has changed.
Using Cypress in combination with cypress-image-snapshot for visual UI testing is a useful method to ensure that your Angular application's UI remains consistent and bug free.
Visual UI testing can be very beneficial early in the development process, to make sure any visual defects are detected early.