tree: 359e5c246c25f5fcec720af286a6b1b68fde588e [path history] [tgz]
  1. goldens/
  2. testing/
  3. demo_test.dart
  4. flutter_test_config.dart
  5. home_test.dart
  7. shrine_test.dart

Golden tests

Golden tests, also called screenshot tests, let's you write tests to easily find UI regressions. It compares the UI to saved golden screenshots, and if there is a pixel difference the tests will fail. It gives us confidence that code changes does not cause UI regressions.

Updating goldens

An expected change to the UI will also cause the golden tests to fail. If this is unintended, you will need to change your code to prevent the UI change. If it was intended, you will then need to update the goldens by running the following command on your macOS machine:

flutter test --update-goldens test_goldens

Due to slight differences in rendering across platforms, mostly around text, the tests will only be run on a macOS machine on Github Actions. This means that if you update the tests on a Linux or Windows machine the golden tests will not pass on Github Actions. Instead you are recommended to download the goldens directly from the failed Github Actions job, and use those inside of your branch.

You can find the goldens from a given test run (e.g. at the bottom of the Summary page, under “Artifacts”. The goldens folder includes the golden image, your test image and the difference.

Where to download the golden artifacts>

Loading fonts in golden tests

In Flutter widget tests the font used is the ‘Ahem’-font. It was built to help test writers develop predictable tests, by most glyphs being a square box. To be able to test the rendering of our icons and fonts, the actual fonts are loaded before the test suites run. See font_loader.dart.

Shadows in golden tests

In the golden tests the shadows are opaqued, to reduce the likelihood of golden file tests being flaky. A side effect of this is that we are not testing the exact rendering of shadows inside of the goldens.