You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.8 KiB
1.8 KiB
Screenshot testing
Overview
- Screenshot tests are tests which record the content of a rendered screen and verify subsequent runs to check if the screen renders differently.
- ElementX uses Paparazzi to render, record and verify Composable. All Composable Preview will be use to make screenshot test, thanks to the usage of Showkase.
- The screenshot verification occurs on every pull request as part of the
tests.yml
workflow.
Setup
- Install Git LFS through your package manager of choice (
brew install git-lfs
|yay -S git-lfs
). - Install the Git LFS hooks into the project.
# with element-android as the current working directory
git lfs install --local
If installed correctly, git push
and git pull
will now include LFS content.
Recording
It's recommended to delete the content of the folder /snapshots
before recording.
rm -rf ./tests/uitests/src/test/snapshots
./gradlew recordPaparazziDebug
Paparazzi will generate images in :tests:uitests/src/test/snapshots
, which will need to be committed to the repository using Git LFS.
Verifying
./gradlew verifyPaparazziDebug
In the case of failure, Paparazzi will generate images in :tests:uitests/out/failure
. The images will show the expected and actual screenshots along with a delta of the two images.
Contributing
- Creating Previewable Composable will automatically creates new screenshot tests.
- After creating the new test, record and commit the newly rendered screens.
./tools/git/validate_lfs.sh
can be run to ensure everything is working correctly with Git LFS, the CI also runs this check.