ci: Create screenshots with `@storybook/test-runner`
What does this MR do?
Apparently @storybook/test-runner is a jest and playwright based test
runner which allows us to test our storybook stories and create
snapshots of them. The benefit of this package over
@storybook/addon-storyshots, is that each story becomes it's own test.
That means that jest is able to parallelise tests run with workers.
Furthermore it has a --shard parameter to further parallelise tests
across multiple jobs, similar to the playwright parameter with the same
name.
This commit introduces the dependency and utilizes them in new jobs:
visual and update_screenshots. The old corresponding puppeteer jobs
have been renamed with an old prefix.
Future improvements:
- Remove storyshots, it's expectations and everything related
- Enable more browsers (firefox, webkit)
- Change our puppeteer image to become a playwright image
- Consider migrating our few integration tests to playwright
Does this MR meet the acceptance criteria?
Conformity
-
Code review guidelines. -
GitLab UI's contributing guidlines. -
If it changes a Pajamas-compliant component's look & feel, the MR has been reviewed by a UX designer. -
If it changes GitLab UI's documentation guidelines, the MR has been reviewed by a Technical Writer. -
If the MR changes a component's API, integration MR(s) have been opened in the following projects to ensure that the @gitlab/uipackage can be upgraded quickly after the changes are released:-
GitLab: mr_url -
CustomersDot: mr_url -
Status Page: mr_url
-
-
Added the ~"component:*"label(s) if applicable.
Security
If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:
-
Label as security and @ mention @gitlab-com/gl-security/appsec -
Security reports checked/validated by a reviewer from the AppSec team
Accessibility
If this MR adds or modifies a component, take a few moments to review the following:
-
All actions and functionality can be done with a keyboard. -
Links, buttons, and controls have a visible focus state. -
All content is presented in text or with a text equivalent. For example, alt text for SVG, or aria-labelfor icons that have meaning or perform actions. -
Changes in a component’s state are announced by a screen reader. For example, changing aria-expanded="false"toaria-expanded="true"when an accordion is expanded. -
Color combinations have sufficient contrast.