From 570a1bccac1ddcfad6cd1464179492e4a5dcbf1f Mon Sep 17 00:00:00 2001 From: Logan Graham Date: Mon, 29 Jan 2024 16:13:03 -0500 Subject: [PATCH] Add new / updated documentation for storybook visual & variants plugin --- docs/visual-testing/integrations/storybook.md | 42 ++++++++++++++++++ static/img/sauce-visual/visual-variants.png | Bin 0 -> 30662 bytes 2 files changed, 42 insertions(+) create mode 100644 static/img/sauce-visual/visual-variants.png diff --git a/docs/visual-testing/integrations/storybook.md b/docs/visual-testing/integrations/storybook.md index d0a01ef05f..6c40cf5eb7 100644 --- a/docs/visual-testing/integrations/storybook.md +++ b/docs/visual-testing/integrations/storybook.md @@ -140,6 +140,40 @@ Below are the environment variables available in the visual-storybook plugin: | `SAUCE_PROJECT_NAME` | | The label / project you would like to associated this build with. | | `SAUCE_VISUAL_BUILD_ID` | | For advanced users, a custom build ID. Can be used to create builds in advance. This can be used to parallelize tests, shard, or more.
By default, this is not set and we create / finish a build during setup / teardown. | +## Story / Global Configuration + +Additional configuration options are exposed via the `sauceVisual` [Storybook parameters](https://storybook.js.org/docs/writing-stories/parameters). You can use these to tweak settings on a global, component, or per-story basis -- see the Storybook docs for details on how to apply them to each. + +The below configuration options are also exported as the type `SauceVisualParams` from `@saucelabs/visual-storybook` if you'd like TypeScript types for them. + +Parameters key: `sauceVisual` + +| Key | Type | Default | Description | +|----------------|-----------|-------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `clip` | `boolean` | `true` | If the story & layout supports it, will automatically clip to the `clipSelector` to remove extraneous whitespace. Recommended to be used in conjunction with [`centered` layout](https://storybook.js.org/docs/configure/story-layout#global-layout). Currently defaults to `false`, however, will default to `true` in a future version. | +| `clipSelector` | `string` | `#storybook-root` | The selector to clip to when `clip = true`. Defaults to Storybook's default root element, `#storybook-root`. | +| `delay` | `number` | `0` (no delay) | A number, in ms, that we should delay the snapshot by. Useful if the beginning of the story has unavoidable / javascript animations. | + +Component-level Example: + +```jsx +const meta = { + title: 'Example/Button', + component: Button, + parameters: { + // ... Your other Storybook parameters here + sauceVisual: { + // Add storybook visual configuration options here + clip: true, + // clipSelector: '#custom-root-element', + // delay: 200, + }, + }, +}; + +export default meta; +``` + ## Different Browsers and Devices By default the tests are run on your local machine/in your pipeline with Chromium. You have the option to run them on different [browser and device configurations](https://github.com/microsoft/playwright/blob/main/packages/playwright-core/src/server/deviceDescriptorsSource.json) preconfigured by playwright or define your own device, a combination or all of them. To do so, you need to add the following to your `test-runner-jest.config.js` file: @@ -177,3 +211,11 @@ module.exports = { ``` If you'd like to configure your own devices, please follow the configuration steps inside the [playwright docs](https://playwright.dev/docs/emulation#devices). + +## Auto Testing Variations + +
+Visual variant grid example +
+ +We have a separate Storybook plugin, `@saucelabs/storybook-variants`, available for rendering all variants of a component in a grid to ease the testing and development process. Read the full [README on NPM](https://www.npmjs.com/package/@saucelabs/storybook-variants) for installation & usage. diff --git a/static/img/sauce-visual/visual-variants.png b/static/img/sauce-visual/visual-variants.png new file mode 100644 index 0000000000000000000000000000000000000000..6e786658474c8e3e1b310b5e46cef23e15997362 GIT binary patch literal 30662 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