Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/wix-incubator/storybook-snapper


https://github.com/wix-incubator/storybook-snapper

applitools eyes-storybook storybook visual-testing

Last synced: about 2 months ago
JSON representation

Awesome Lists containing this project

README

        

# storybook-snapshot

A utility library originally created as an accompanying tool for [`eyes-storybook`](https://github.com/applitools/eyes-storybook).

The idea is to write snapshot tests as `describe/it` test suites like in familiar testing frameworks. Each test suite creates a `storybook` story, which `eyes-storybook`, in turn, takes a snapshot of.

This library relies on some of `eyes-storybook`'s methods, however, it does not depend on `eyes-storybook`, which means it can be used just for generating stories.

## Usage
Install with
```bash
npm install --save-dev storybook-snapper
```
or
```bash
yarn add --dev storybook-snapper
```

For testing, use the `applitoolsConfig` method in your `applitools.config.js` file, in order to generate a preconfigured configuration.
This configuration is necessary for async tests to work.

In you `applitools.config.js` file:
```js
const applitoolsConfig = require('storybook-snapper/config/applitools.config');

// optional local configuration file for overrides
let config;

try {
// for local testing you can add the `apiKey` to your private configuration file
config = require('./applitools.private.config.js');
} catch (e) {}

// Note that the `appName` property is required
module.exports = applitoolsConfig({config});
```

In your visual/story file:
```jsx
import React from 'react';
import { visualize, story, snap, xsnap } from 'storybook-snapper';
import { MyComponent } from 'path/to/MyComponent';

visualize('MyComponent', () => {
story('basic story', () => {
snap('simple render', );
snap('as a function', () => );
});

story('another story', () => {
class AsyncStoryWrapper extends React.Component {
componentDidMount() {
setTimeout(() => {
this.props.onDone();
}, 3000);
}

render() {
return ;
}
}

snap('async story', done => );
});

snap('only one level of nesting', );

/**
* when used with eyes-storybook,
* a snapshot can be ignored with xsnap
*/
snap.skip('ignore this test', );

/**
* alias for "snap.skip"
*/
xsnap('ignore this test', );

/**
* adds a red outline when a snapshot is taken
* helpful for debugging async stories
*/
snap.debug('debug story', done => )
});
```