-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Snapshot testing] Improve test consistency #1103
Conversation
e871363
to
ecb8779
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome work Meissa! Excited to run these tests all the time!
Since this is a border style defined in the CFPB Design System, | ||
we should be safe not validating this styling as part of our app testing. | ||
*/ | ||
border-style: solid; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good idea @meissadia!
// High enough to ignore dotted border flakiness | ||
// but low enough to catch meaningful diffs?? | ||
maxDiffPixels: 25, | ||
maxDiffPixels: 0, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is incredible!
Closes #1099
I explored a few options to reduce the flakiness of our snapshot tests and the approach implemented in this PR seems to provide the most reliable result with sensible tradeoffs.
Local test runs in
headless
mode have passed 100%, 6x in a row, with 4 workers. Snapshot testing via the UI can still be rather flaky but, since tests pass consistently inheadless
mode, my interpretation is that UI failures are due to excessive system resource consumption by the Playwright UI causing inconsistent page rendering results.Changes
maxDiffPixels
from25
to0
, allowing us to catch even the smallest unexpected UI changesnapshotModifications.css
to apply snapshot-testing-specific style modifications. This approach allows us to replacedotted
borders withsolid
borders on all links to ensure consistent rendering. Since thedotted
style comes from the CFPB Design System, it does not seem necessary to verify it's implementation as part of our app (though it would certainly be preferred that these tests validate exactly what the user is expected to see).mask (ignore)
list. This element tends to trigger false-positives on tests with very tall screenshots and, since it's implementation comes from the Design System, does not seem to be something we need to validate as part of our app. As a next step, we could break these taller pages down into smaller tests of subsections of the page, but for now this workaround seems acceptable.How to test this PR
yarn start
yarn test:e2e:snapshot --headless
Notes - Alternate approaches not chosen
.u-usa-flag
and modifying the link border style, we were able to avoid the effort needed to significantly refactor how these tests are implemented.Screenshots