creevey 0.10.0-beta.32 → 0.10.0-beta.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -41
- package/dist/client/addon/withCreevey.js +1 -0
- package/dist/client/addon/withCreevey.js.map +1 -1
- package/dist/server/docker.js +2 -12
- package/dist/server/docker.js.map +1 -1
- package/dist/server/master/start.js +1 -1
- package/dist/server/master/start.js.map +1 -1
- package/dist/server/playwright/webdriver.js +4 -1
- package/dist/server/playwright/webdriver.js.map +1 -1
- package/dist/server/selenium/webdriver.js +4 -1
- package/dist/server/selenium/webdriver.js.map +1 -1
- package/dist/server/utils.js +1 -0
- package/dist/server/utils.js.map +1 -1
- package/dist/server/worker/context.d.ts +3 -0
- package/dist/server/worker/context.js +15 -0
- package/dist/server/worker/context.js.map +1 -0
- package/docs/cli.md +12 -0
- package/docs/config.md +178 -167
- package/docs/storybook.md +60 -0
- package/docs/tests.md +50 -45
- package/package.json +1 -1
- package/src/client/addon/withCreevey.ts +1 -0
- package/src/server/docker.ts +2 -11
- package/src/server/master/start.ts +1 -1
- package/src/server/playwright/webdriver.ts +4 -1
- package/src/server/selenium/webdriver.ts +4 -1
- package/src/server/utils.ts +1 -0
- package/src/server/worker/context.ts +14 -0
package/README.md
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
[<img width="274" alt="Creevey" src="https://user-images.githubusercontent.com/4607770/220418756-89cf4f54-ccb7-4086-a74c-a044ea1d2a61.png">](https://harrypotter.fandom.com/wiki/Colin_Creevey)
|
2
2
|
|
3
|
-
**IMPORTANT** _Looking for any help with maintaining_
|
4
|
-
|
5
3
|
Cross-browser screenshot testing tool for [Storybook](https://storybook.js.org/) with fancy UI Runner.
|
6
4
|
|
7
5
|
[](https://www.npmjs.com/package/creevey)
|
@@ -28,19 +26,20 @@ It named after [Colin Creevey](https://harrypotter.fandom.com/wiki/Colin_Creevey
|
|
28
26
|
- [Pre-requisites](#pre-requisites)
|
29
27
|
- [How to Start](#how-to-start)
|
30
28
|
- [Comparison with other tools](#comparison-with-other-tools)
|
31
|
-
- [Config
|
32
|
-
- [
|
33
|
-
-
|
34
|
-
|
35
|
-
|
29
|
+
- [Config](docs/config.md)
|
30
|
+
- [CLI commands](docs/cli.md)
|
31
|
+
- [Storybook parameters](docs/storybook.md)
|
32
|
+
- [Write interactive tests](docs/tests.md)
|
33
|
+
- [Use your Selenium Grid (LambdaTest/BrowserStack/SauceLabs/etc)](docs/grid.md)
|
36
34
|
- [Future plans](#future-plans)
|
37
35
|
- [Known issues](#known-issues)
|
38
36
|
- [Used by](#used-by)
|
39
37
|
|
40
38
|
## Pre-requisites
|
41
39
|
|
42
|
-
- Make sure you have installed [Docker](https://www.docker.com/products/docker-desktop).
|
43
|
-
- Supported Storybook versions:
|
40
|
+
- Make sure you have installed [Docker](https://www.docker.com/products/docker-desktop). If you are going to use Selenium Grid or run screenshot tests exclusively in CI you don't need Docker in that case.
|
41
|
+
- Supported Storybook versions: >= 7.x.x
|
42
|
+
- Supported Node.js versions: >= 18.x.x
|
44
43
|
|
45
44
|
## How to start
|
46
45
|
|
@@ -53,44 +52,38 @@ yarn add -D creevey
|
|
53
52
|
- Add addon `creevey` into your storybook config
|
54
53
|
|
55
54
|
```js
|
56
|
-
// .storybook/main.
|
57
|
-
|
58
|
-
stories: [
|
59
|
-
/* ... */
|
60
|
-
],
|
55
|
+
// .storybook/main.ts
|
56
|
+
const config: StorybookConfig = {
|
57
|
+
stories: [ /* ... */ ],
|
61
58
|
addons: [
|
62
59
|
/* ... */
|
63
60
|
'creevey',
|
64
61
|
],
|
65
62
|
};
|
63
|
+
|
64
|
+
export default config;
|
66
65
|
```
|
67
66
|
|
68
|
-
- Start
|
67
|
+
- Start Creevey UI Runner, which starts Storybook automatically. (To start tests from CLI, run Creevey without `--ui` flag)
|
69
68
|
|
70
69
|
```bash
|
71
|
-
yarn
|
72
|
-
yarn creevey --ui
|
70
|
+
yarn creevey -s --ui
|
73
71
|
```
|
74
72
|
|
75
|
-
And that's it.
|
73
|
+
- Open [http://localhost:3000](http://localhost:3000) in your browser. And that's it.
|
76
74
|
|
77
|
-
**NOTE:** In first run you may noticed, that all your tests are failing, it because you don't have source screenshot images yet. If you think, that all images are acceptable, you
|
75
|
+
**NOTE:** In first run you may noticed, that all your tests are failing, it because you don't have source screenshot images yet. If you think, that all images are acceptable, you can approve them all from UI.
|
78
76
|
|
79
77
|
**NOTE:** Creevey captures screenshot of the `#storybook-root` element and sometimes you need to capture a whole browser viewport. To achieve this you could define `captureElement` Creevey parameter for story or kind. Or you may pass any different css selector.
|
80
78
|
|
81
79
|
```tsx
|
82
80
|
// stories/MyModal.stories.tsx
|
83
|
-
|
84
|
-
// NOTE: Define parameter for all stories
|
85
81
|
export default {
|
86
82
|
title: 'MyModal',
|
87
|
-
|
83
|
+
component: MyModal,
|
88
84
|
};
|
89
85
|
|
90
|
-
|
91
|
-
|
92
|
-
export const MyModalStory = () => <MyModal />;
|
93
|
-
MyModalStory.parameters = { creevey: { captureElement: null } };
|
86
|
+
export const MyModalStory = { creevey: { captureElement: null } };
|
94
87
|
```
|
95
88
|
|
96
89
|
## Comparison with other tools
|
@@ -109,19 +102,11 @@ MyModalStory.parameters = { creevey: { captureElement: null } };
|
|
109
102
|
|
110
103
|
## Future plans
|
111
104
|
|
112
|
-
- Allow use different webdrivers not only `selenium`, but also `puppeteer` or `playwright`.
|
113
|
-
- Add ability to ignore elements.
|
114
105
|
- Allow to define different viewport sizes for specific stories or capture story with different args.
|
115
106
|
- And more, check [TODO](TODO.md) for more details. Also feel free to ask about feature that you want
|
116
107
|
|
117
108
|
## Known issues
|
118
109
|
|
119
|
-
### Creevey is trying to build storybook but fail or tests don't work
|
120
|
-
|
121
|
-
This might happens because Creevey patches storybook webpack config and build nodejs bundle with stories meta information. And in some cases Creevey couldn't properly remove all unnecessary code cause of side-effects in stories files or you create stories dynamically. Try to rewrite such places. If it still doesn't help, [send to me](mailto:creevey@kich.dev) bundle that Creevey created (it located in `node_modules/creevey/.cache/creevey/storybook/main.js`)
|
122
|
-
|
123
|
-
A little bit later I'll add possibility to run tests without building that bundle, so it fixes this issue.
|
124
|
-
|
125
110
|
### Docker-in-Docker
|
126
111
|
|
127
112
|
Currently it's not possible to run Creevey in this configuration. I'll fix this in later versions.
|
@@ -138,13 +123,6 @@ This cause to flaky screenshots. Possible solutions:
|
|
138
123
|
- Replace border to box-shadow `border: 1px solid red` -> `box-shadow: 0 0 0 1px red`
|
139
124
|
- Set max retries to more than 5
|
140
125
|
|
141
|
-
### You can't directly import `selenium-webdriver` package in story file
|
142
|
-
|
143
|
-
Because tests defined in story parameters and `selenium-webdriver` depends on nodejs builtin packages. Storybook may fail to build browser bundle. To avoid import use these workarounds:
|
144
|
-
|
145
|
-
- `.findElement(By.css('#storybook-root'))` -> `.findElement({ css: '#storybook-root' })`
|
146
|
-
- `.sendKeys(Keys.ENTER)` -> `.sendKeys(this.keys.ENTER)`
|
147
|
-
|
148
126
|
## Used by
|
149
127
|
|
150
128
|
| [](https://whisk.com/) | [](https://kontur.ru/) | [](https://www.abbyy.com/) |
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"withCreevey.js","sourceRoot":"","sources":["../../../src/client/addon/withCreevey.ts"],"names":[],"mappings":";;;;;AAiJA,kCAiLC;
|
1
|
+
{"version":3,"file":"withCreevey.js","sourceRoot":"","sources":["../../../src/client/addon/withCreevey.ts"],"names":[],"mappings":"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"}
|
package/dist/server/docker.js
CHANGED
@@ -10,9 +10,8 @@ const tar_stream_1 = __importDefault(require("tar-stream"));
|
|
10
10
|
const loglevel_1 = __importDefault(require("loglevel"));
|
11
11
|
const stream_1 = require("stream");
|
12
12
|
const dockerode_1 = __importDefault(require("dockerode"));
|
13
|
-
const messages_js_1 = require("./messages.js");
|
14
13
|
const logger_js_1 = require("./logger.js");
|
15
|
-
const
|
14
|
+
const context_js_1 = require("./worker/context.js");
|
16
15
|
const docker = new dockerode_1.default();
|
17
16
|
class DevNull extends stream_1.Writable {
|
18
17
|
_write(_chunk, _encoding, callback) {
|
@@ -143,16 +142,7 @@ async function runImage(image, args, options, debug) {
|
|
143
142
|
});
|
144
143
|
return new Promise((resolve) => {
|
145
144
|
hub.once('container', (container) => {
|
146
|
-
|
147
|
-
(0, messages_js_1.subscribeOn)('shutdown', async () => {
|
148
|
-
try {
|
149
|
-
await Promise.race([(0, webdriver_js_1.waitForBrowserClose)(), new Promise((resolve) => setTimeout(resolve, 2_000))]);
|
150
|
-
await container.remove({ force: true });
|
151
|
-
}
|
152
|
-
catch {
|
153
|
-
/* noop */
|
154
|
-
}
|
155
|
-
});
|
145
|
+
(0, context_js_1.setWorkerContainer)(container);
|
156
146
|
});
|
157
147
|
hub.once('start', (container) => void container.inspect().then((info) => {
|
158
148
|
resolve(info.NetworkSettings.Networks.bridge.IPAddress);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/server/docker.ts"],"names":[],"mappings":";;;;;
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/server/docker.ts"],"names":[],"mappings":";;;;;AAgBA,gCA0CC;AAED,gCA8FC;AAED,4BAsBC;AAlLD,4DAA6B;AAC7B,wDAA8B;AAC9B,mCAAkC;AAClC,0DAAiD;AAEjD,2CAAqC;AACrC,oDAAyD;AAEzD,MAAM,MAAM,GAAG,IAAI,mBAAS,EAAE,CAAC;AAE/B,MAAM,OAAQ,SAAQ,iBAAQ;IAC5B,MAAM,CAAC,MAAe,EAAE,SAAyB,EAAE,QAAwC;QACzF,YAAY,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;CACF;AAEM,KAAK,UAAU,UAAU,CAC9B,MAAgB,EAChB,EAAE,IAAI,EAAE,QAAQ,KAA+C,EAAE;IAEjE,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,IAAI,IAAI;QAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACjC,IAAI,QAAQ;QAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAEvC,IAAA,kBAAM,GAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACpC,kCAAkC;IAClC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAChE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,cAAc,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;YAEvE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,SAAuB,EAAE,MAA8B,EAAE,EAAE;gBACnF,IAAI,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;oBACzB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBAClC,MAAM,CAAC,SAAS,IAAI,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;oBAChD,OAAO;gBACT,CAAC;gBAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;gBAE5D,SAAS,UAAU,CAAC,KAAmB;oBACrC,IAAI,KAAK,EAAE,CAAC;wBACV,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBAC7B,MAAM,CAAC,KAAK,CAAC,CAAC;wBACd,OAAO;oBACT,CAAC;oBACD,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,iBAAiB,CAAC,CAAC;oBAC3C,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAED,SAAS,UAAU,CAAC,KAAwD;oBAC1E,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBAAE,OAAO;oBAE9C,OAAO,CAAC,IAAI,GAAG,GAAG,KAAK,MAAM,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;gBACnF,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,SAAiB,EAAE,OAAe,EAAE,UAAkB;IACrF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,WAAW,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEzF,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,WAAW,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5G,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,UAAU;YACZ,CAAC;QACH,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAC3E,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,CAAC,GAAG,CACf,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,UAAU;YACZ,CAAC;QACH,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QACvC,IAAA,kBAAM,GAAE,CAAC,IAAI,CAAC,SAAS,SAAS,iBAAiB,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,oBAAG,CAAC,IAAI,EAAE,CAAC;IACxB,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;IAEhB,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,GAAG,SAAS,eAAe,EAAE,CAAC,CAAC;IACpE,IAAI,IAAA,kBAAM,GAAE,CAAC,QAAQ,EAAE,GAAG,kBAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC9C,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IACD,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,KAAK,MAAM,CAAC,UAAU;QACpB,gFAAgF;QAChF,IAAI;QACJ,mDAAmD;QACnD,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EACvE,CAAC,UAAwB,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1B,sCAAsC;gBACtC,MAAM,CAAC,UAAU,IAAI,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;gBACjD,OAAO;YACT,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YAE5D,SAAS,UAAU,CAAC,KAAmB;gBACrC,IAAI,QAAQ;oBAAE,OAAO;gBAErB,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC7B,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,kBAAkB,CAAC,CAAC;gBAChD,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,SAAS,UAAU,CACjB,KAG+B;gBAE/B,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;oBACtB,IAAI,IAAA,kBAAM,GAAE,CAAC,QAAQ,EAAE,IAAI,kBAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;wBAC/C,IAAA,kBAAM,GAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;oBACtC,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,GAAG,GAAG,SAAS,eAAe,KAAK,CAAC,MAAM,EAAE,CAAC;oBAC3D,CAAC;gBACH,CAAC;qBAAM,IAAI,aAAa,IAAI,KAAK,EAAE,CAAC;oBAClC,QAAQ,GAAG,IAAI,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC3B,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,QAAQ,CAC5B,KAAa,EACb,IAAc,EACd,OAAgC,EAChC,KAAc;IAEd,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC7F,IAAI,KAAK;YAAE,MAAM,KAAK,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,SAAoB,EAAE,EAAE;YAC7C,IAAA,+BAAkB,EAAC,SAAS,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,IAAI,CACN,OAAO,EACP,CAAC,SAAoB,EAAE,EAAE,CACvB,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACrC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1D,CAAC,CAAC,CACL,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
@@ -99,7 +99,7 @@ async function start(gridUrl, config, options, resolveApi) {
|
|
99
99
|
})
|
100
100
|
.finally(() => {
|
101
101
|
// NOTE: Take some time to kill processes
|
102
|
-
void (0, utils_js_1.shutdownWorkers)().then(() => setTimeout(() => process.exit(),
|
102
|
+
void (0, utils_js_1.shutdownWorkers)().then(() => setTimeout(() => process.exit(), 500));
|
103
103
|
});
|
104
104
|
});
|
105
105
|
// TODO grep
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/server/master/start.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/server/master/start.ts"],"names":[],"mappings":"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"}
|
@@ -4,6 +4,7 @@ exports.PlaywrightWebdriver = void 0;
|
|
4
4
|
const logger_1 = require("../logger");
|
5
5
|
const messages_1 = require("../messages");
|
6
6
|
const webdriver_1 = require("../webdriver");
|
7
|
+
const context_js_1 = require("../worker/context.js"); // Import container context
|
7
8
|
class PlaywrightWebdriver extends webdriver_1.CreeveyWebdriverBase {
|
8
9
|
#browser = null;
|
9
10
|
#browserName;
|
@@ -17,7 +18,9 @@ class PlaywrightWebdriver extends webdriver_1.CreeveyWebdriverBase {
|
|
17
18
|
this.#config = config;
|
18
19
|
this.#options = options;
|
19
20
|
(0, messages_1.subscribeOn)('shutdown', () => {
|
20
|
-
void this.#browser?.closeBrowser().finally(() =>
|
21
|
+
void this.#browser?.closeBrowser().finally(() => {
|
22
|
+
void (0, context_js_1.removeWorkerContainer)().finally(() => process.exit());
|
23
|
+
});
|
21
24
|
this.#browser = null;
|
22
25
|
});
|
23
26
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"webdriver.js","sourceRoot":"","sources":["../../../src/server/playwright/webdriver.ts"],"names":[],"mappings":";;;AAGA,sCAAmC;AACnC,0CAA0C;AAC1C,4CAAoD;
|
1
|
+
{"version":3,"file":"webdriver.js","sourceRoot":"","sources":["../../../src/server/playwright/webdriver.ts"],"names":[],"mappings":"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"}
|
@@ -4,6 +4,7 @@ exports.SeleniumWebdriver = void 0;
|
|
4
4
|
const messages_js_1 = require("../messages.js");
|
5
5
|
const webdriver_js_1 = require("../webdriver.js");
|
6
6
|
const logger_js_1 = require("../logger.js");
|
7
|
+
const context_js_1 = require("../worker/context.js");
|
7
8
|
// TODO Update context interface through references
|
8
9
|
class SeleniumWebdriver extends webdriver_js_1.CreeveyWebdriverBase {
|
9
10
|
#browser = null;
|
@@ -18,7 +19,9 @@ class SeleniumWebdriver extends webdriver_js_1.CreeveyWebdriverBase {
|
|
18
19
|
this.#config = config;
|
19
20
|
this.#options = options;
|
20
21
|
(0, messages_js_1.subscribeOn)('shutdown', () => {
|
21
|
-
void this.#browser?.closeBrowser().finally(() =>
|
22
|
+
void this.#browser?.closeBrowser().finally(() => {
|
23
|
+
void (0, context_js_1.removeWorkerContainer)().finally(() => process.exit());
|
24
|
+
});
|
22
25
|
this.#browser = null;
|
23
26
|
});
|
24
27
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"webdriver.js","sourceRoot":"","sources":["../../../src/server/selenium/webdriver.ts"],"names":[],"mappings":";;;AAGA,gDAA6C;AAC7C,kDAAuD;AAEvD,4CAAsC;
|
1
|
+
{"version":3,"file":"webdriver.js","sourceRoot":"","sources":["../../../src/server/selenium/webdriver.ts"],"names":[],"mappings":"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"}
|
package/dist/server/utils.js
CHANGED
package/dist/server/utils.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/server/utils.ts"],"names":[],"mappings":";;;;;;AA4CA,gCAiBC;AAED,gDA0BC;AAED,
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/server/utils.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.setWorkerContainer = setWorkerContainer;
|
4
|
+
exports.removeWorkerContainer = removeWorkerContainer;
|
5
|
+
let workerContainer = null;
|
6
|
+
function setWorkerContainer(container) {
|
7
|
+
workerContainer = container;
|
8
|
+
}
|
9
|
+
async function removeWorkerContainer() {
|
10
|
+
if (workerContainer) {
|
11
|
+
await workerContainer.remove({ force: true });
|
12
|
+
workerContainer = null;
|
13
|
+
}
|
14
|
+
}
|
15
|
+
//# sourceMappingURL=context.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/server/worker/context.ts"],"names":[],"mappings":";;AAIA,gDAEC;AAED,sDAKC;AAXD,IAAI,eAAe,GAAqB,IAAI,CAAC;AAE7C,SAAgB,kBAAkB,CAAC,SAAoB;IACrD,eAAe,GAAG,SAAS,CAAC;AAC9B,CAAC;AAEM,KAAK,UAAU,qBAAqB;IACzC,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,eAAe,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,eAAe,GAAG,IAAI,CAAC;IACzB,CAAC;AACH,CAAC"}
|
package/docs/cli.md
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
## Creevey CLI Options
|
2
|
+
|
3
|
+
There are several options available for the Creevey CLI:
|
4
|
+
|
5
|
+
- `--ui` — Starts Creevey UI Runner, which allows to run tests individually, compare screenshots and approve them without hesitation
|
6
|
+
- `-s, --storybookStart` — Starts Storybook for you by using `storybook dev` command
|
7
|
+
- `-c, --config` — Specify path to the config file. Default `.creevey/config.ts` or `creevey.config.ts`
|
8
|
+
- `-p, --port` — Specify port in which UI Runner should be started. Default `3000`
|
9
|
+
- `-d, --debug` — Enable debug output. It also enables recording video and traces if Playwright is used
|
10
|
+
- `-u, --update` — Approve all images from `report` directory. But it's recommended to do it from the UI Runner
|
11
|
+
- `--reportDir` — Path where reports will be stored
|
12
|
+
- `--screenDir` — Path where reference images are located
|
package/docs/config.md
CHANGED
@@ -1,215 +1,226 @@
|
|
1
|
-
|
1
|
+
# Creevey Configuration Examples
|
2
2
|
|
3
|
-
|
3
|
+
Creevey is highly configurable and can be tailored to your specific needs. Here are some examples of how to configure Creevey for your Storybook.
|
4
4
|
|
5
|
-
|
6
|
-
- `--ui` — Start runner web server
|
7
|
-
- `--update` — Approve all images from `report` directory
|
8
|
-
- `--port` — Specify port for web server. Default `3000`
|
9
|
-
- `--reportDir` — Path where reports will be stored
|
10
|
-
- `--screenDir` — Path where reference images are located
|
11
|
-
- `--debug` — Enable debug output
|
5
|
+
## Zero Configuration
|
12
6
|
|
13
|
-
|
7
|
+
The simplest way to get started with Creevey, just run it without any configuration:
|
14
8
|
|
15
|
-
|
9
|
+
```bash
|
10
|
+
yarn creevey -s
|
11
|
+
```
|
12
|
+
|
13
|
+
This will start Creevey with default settings, using Chrome as the browser and also start Storybook hosted at `http://localhost:6006`. Adding `--ui` flag will start the web server for the UI Runner.
|
14
|
+
|
15
|
+
**NOTE** By default, Creevey uses Selenium WebDriver, but it's done for backward compatibility and it's recommended to define webdriver explicitly in the configuration.
|
16
16
|
|
17
17
|
```ts
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
},
|
18
|
+
// creevey.config.ts
|
19
|
+
import { SeleniumWebdriver } from 'creevey/selenium';
|
20
|
+
|
21
|
+
const config = {
|
22
|
+
webdriver: SeleniumWebdriver,
|
23
|
+
};
|
24
|
+
|
25
|
+
// or use Playwright instead
|
26
|
+
|
27
|
+
import { PlaywrightWebdriver } from 'creevey/playwright';
|
28
|
+
|
29
|
+
const config = {
|
30
|
+
webdriver: PlaywrightWebdriver,
|
32
31
|
};
|
33
32
|
```
|
34
33
|
|
35
|
-
|
34
|
+
## Basic Configuration
|
36
35
|
|
37
|
-
|
36
|
+
The minimal configuration to test your stories might be:
|
38
37
|
|
39
38
|
```ts
|
40
|
-
|
39
|
+
// creevey.config.ts
|
40
|
+
import { CreeveyConfig } from 'creevey';
|
41
|
+
import { PlaywrightWebdriver } from 'creevey/playwright';
|
41
42
|
|
42
|
-
|
43
|
-
|
44
|
-
// In most cases you don't need this option
|
45
|
-
gridUrl: '<gridUrl>/wd/hub',
|
43
|
+
const config: CreeveyConfig = {
|
44
|
+
webdriver: PlaywrightWebdriver,
|
46
45
|
|
47
|
-
//
|
48
|
-
storybookUrl: 'http://localhost:
|
46
|
+
// The URL where your Storybook is hosted
|
47
|
+
storybookUrl: 'http://localhost:9000',
|
49
48
|
|
50
|
-
//
|
51
|
-
|
49
|
+
// Define which browsers to use for testing
|
50
|
+
browsers: {
|
51
|
+
chromium: {
|
52
|
+
// The browser type name which will be used by Playwright
|
53
|
+
browserName: 'chromium',
|
54
|
+
// Default viewport dimensions
|
55
|
+
viewport: { width: 1024, height: 768 },
|
56
|
+
// Limit of retries for failed tests
|
57
|
+
maxRetries: 2,
|
58
|
+
},
|
59
|
+
},
|
60
|
+
};
|
52
61
|
|
53
|
-
|
54
|
-
|
62
|
+
export default config;
|
63
|
+
```
|
55
64
|
|
56
|
-
|
57
|
-
reportDir: path.join(__dirname, '../report'),
|
65
|
+
## Multiple Browsers Configuration
|
58
66
|
|
59
|
-
|
60
|
-
|
67
|
+
It's possible to est your stories across different browsers:
|
68
|
+
|
69
|
+
```ts
|
70
|
+
// creevey.config.ts
|
71
|
+
import { CreeveyConfig } from 'creevey';
|
72
|
+
import { PlaywrightWebdriver } from 'creevey/playwright';
|
61
73
|
|
62
|
-
|
63
|
-
|
74
|
+
const config: CreeveyConfig = {
|
75
|
+
webdriver: PlaywrightWebdriver,
|
64
76
|
|
65
|
-
// Describe browsers and their options
|
66
77
|
browsers: {
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
otherChrome: {
|
72
|
-
browserName: 'chrome',
|
73
|
-
// Define initial viewport size
|
74
|
-
viewport: { width: 1024, height: 720 },
|
75
|
-
// Increase parallel sessions
|
78
|
+
chromium: {
|
79
|
+
browserName: 'chromium',
|
80
|
+
// Amount of parallel browser sessions
|
76
81
|
limit: 2,
|
77
|
-
/* Also you can define any browser capabilities here */
|
78
|
-
version: '86.0',
|
79
|
-
// It's possible to set Storybook's globals
|
80
|
-
// https://github.com/storybookjs/storybook/blob/v6.0.0/docs/essentials/toolbars-and-globals.md
|
81
|
-
// NOTE: This is an experimental feature and will be replaced in future
|
82
|
-
_storybookGlobals: {
|
83
|
-
myTheme: 'dark',
|
84
|
-
},
|
85
82
|
},
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
browserName: 'internet explorer',
|
90
|
-
// Like user another Selenium Grid url
|
91
|
-
gridUrl: '<anotherGridUrl>/wd/hub',
|
92
|
-
// Or use different storybook instance
|
93
|
-
storybookUrl: 'http://mystoryhost:6007',
|
94
|
-
// And use you own docker image
|
95
|
-
// By default Creevey will use selenoid image according browser name and version:
|
96
|
-
// `selenoid/${browserName}:${version ?? 'latest'}` image
|
97
|
-
dockerImage: 'microsoft/ie:11.0',
|
83
|
+
firefox: {
|
84
|
+
browserName: 'firefox',
|
85
|
+
limit: 2,
|
98
86
|
},
|
99
87
|
},
|
88
|
+
};
|
89
|
+
|
90
|
+
export default config;
|
91
|
+
```
|
92
|
+
|
93
|
+
## Test stories with different themes
|
94
|
+
|
95
|
+
Test your components with different themes:
|
100
96
|
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
97
|
+
```ts
|
98
|
+
// creevey.config.ts
|
99
|
+
import { CreeveyConfig } from 'creevey';
|
100
|
+
import { PlaywrightWebdriver } from 'creevey/playwright';
|
101
|
+
|
102
|
+
const config: CreeveyConfig = {
|
103
|
+
webdriver: PlaywrightWebdriver,
|
104
|
+
browsers: {
|
105
|
+
dark: {
|
106
|
+
browserName: 'chromium',
|
107
|
+
// Define a storybook globals which will be applied to the stories
|
108
|
+
_storybookGlobals: {
|
109
|
+
theme: 'dark',
|
110
|
+
},
|
105
111
|
},
|
106
|
-
|
107
|
-
|
112
|
+
light: {
|
113
|
+
browserName: 'chromium',
|
114
|
+
_storybookGlobals: {
|
115
|
+
theme: 'light',
|
116
|
+
},
|
108
117
|
},
|
109
118
|
},
|
110
119
|
};
|
120
|
+
|
121
|
+
export default config;
|
111
122
|
```
|
112
123
|
|
113
|
-
|
124
|
+
## Using dedicated Selenium Grid server
|
114
125
|
|
115
|
-
|
126
|
+
Use Selenium Grid for distributed testing:
|
116
127
|
|
117
|
-
```
|
118
|
-
// .
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
128
|
+
```ts
|
129
|
+
// creevey.config.ts
|
130
|
+
import { CreeveyConfig } from 'creevey';
|
131
|
+
import { SeleniumWebdriver } from 'creevey/selenium';
|
132
|
+
|
133
|
+
const config: CreeveyConfig = {
|
134
|
+
webdriver: SeleniumWebdriver,
|
135
|
+
// Selenium Grid connection settings
|
136
|
+
gridUrl: 'http://selenium-hub:4444/wd/hub',
|
137
|
+
browsers: {
|
138
|
+
chrome: {
|
139
|
+
browserName: 'chrome',
|
140
|
+
// You can define any additional selenium capabilities here
|
141
|
+
// https://w3c.github.io/webdriver/#capabilities
|
142
|
+
seleniumCapabilities: {
|
143
|
+
browserVersion: '128.0',
|
144
|
+
platformName: 'linux',
|
145
|
+
},
|
124
146
|
},
|
125
147
|
},
|
126
148
|
};
|
149
|
+
|
150
|
+
export default config;
|
127
151
|
```
|
128
152
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
153
|
+
## Playwright configuration options
|
154
|
+
|
155
|
+
Leverage Playwright for testing:
|
156
|
+
|
157
|
+
```ts
|
158
|
+
// creevey.config.ts
|
159
|
+
import { CreeveyConfig } from 'creevey';
|
160
|
+
import { PlaywrightWebdriver } from 'creevey/playwright';
|
161
|
+
|
162
|
+
const config: CreeveyConfig = {
|
163
|
+
webdriver: PlaywrightWebdriver,
|
164
|
+
browsers: {
|
165
|
+
chromium: {
|
166
|
+
browserName: 'chromium',
|
167
|
+
// Playwright-specific options
|
168
|
+
// https://playwright.dev/docs/api/class-browsertype#browser-type-launch-server
|
169
|
+
playwrightOptions: {
|
170
|
+
headless: false,
|
171
|
+
channel: 'chrome-canary',
|
172
|
+
slowMo: 50, // Slow down Playwright operations by 50ms
|
147
173
|
},
|
148
174
|
},
|
149
175
|
},
|
150
|
-
} as Meta & CreeveyMeta;
|
151
|
-
|
152
|
-
export const Basic: Story & CreeveyStory = () => <MyComponent />;
|
153
|
-
Basic.parameters = {
|
154
|
-
creevey: {
|
155
|
-
captureElement: '.container',
|
156
|
-
// elements to ignore in capturing screenshot
|
157
|
-
ignoreElements: ['button', '.local-time'],
|
158
|
-
// Delay before test starts in ms
|
159
|
-
delay: 1000,
|
160
|
-
tests: {
|
161
|
-
/* ... */
|
162
|
-
},
|
163
|
-
},
|
164
176
|
};
|
177
|
+
|
178
|
+
export default config;
|
165
179
|
```
|
166
180
|
|
167
|
-
|
181
|
+
## Advanced Configuration
|
182
|
+
|
183
|
+
Comprehensive example combining multiple features and additional options:
|
168
184
|
|
169
185
|
```ts
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
186
|
+
// creevey.config.ts
|
187
|
+
import path from 'path';
|
188
|
+
import MochaJUnitReporter from 'mocha-junit-reporter';
|
189
|
+
import { CreeveyConfig } from 'creevey';
|
190
|
+
import { PlaywrightWebdriver } from 'creevey/playwright';
|
191
|
+
|
192
|
+
const config: CreeveyConfig = {
|
193
|
+
webdriver: PlaywrightWebdriver,
|
194
|
+
|
195
|
+
// It's possible to resolve Storybook URL at the runtime
|
196
|
+
resolveStorybookUrl: () =>
|
197
|
+
fetch('https://example.com/resolve-ip')
|
198
|
+
.then((res) => res.text())
|
199
|
+
.then((data) => `http://${data}:6006`),
|
200
|
+
|
201
|
+
// Define custom reference screenshots directory
|
202
|
+
screenDir: path.join(process.cwd(), 'screenshots'),
|
203
|
+
|
204
|
+
// Define custom report directory
|
205
|
+
reportDir: path.join(process.cwd(), 'reports'),
|
206
|
+
|
207
|
+
// Define path where Creevey tests are located
|
208
|
+
testDir: path.join(process.cwd(), 'tests'),
|
209
|
+
|
210
|
+
// You can use any Mocha-like reporter
|
211
|
+
reporter: MochaJUnitReporter,
|
179
212
|
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
- `skip: { 'Skip reason message': { stories: ['simple', 'special'] } }`
|
195
|
-
- `skip: { 'Skip reason message': { stories: /.*large$/ } }`
|
196
|
-
- Skip specific tests:
|
197
|
-
- `skip: { 'Skip reason message': { tests: 'click' } }`
|
198
|
-
- `skip: { 'Skip reason message': { tests: ['hover', 'click'] } }`
|
199
|
-
- `skip: { 'Skip reason message': { tests: /^press.*$/ } }`
|
200
|
-
- Multiple skip options:
|
201
|
-
- for one reason
|
202
|
-
```
|
203
|
-
skip: {
|
204
|
-
"reason": [{ /* ... */ }, { /* ... */ }],
|
205
|
-
}
|
206
|
-
```
|
207
|
-
- for several reasons
|
208
|
-
```
|
209
|
-
skip: {
|
210
|
-
"reason 1": { /* ... */ },
|
211
|
-
"reason 2": { /* ... */ },
|
212
|
-
}
|
213
|
-
```
|
214
|
-
|
215
|
-
NOTE: If you try to skip stories by story name, the storybook name format will be used (For more info see [storybook-export-vs-name-handling](https://storybook.js.org/docs/formats/component-story-format/#storybook-export-vs-name-handling))
|
213
|
+
// Pixelmatch options
|
214
|
+
diffOptions: { threshold: 0.1 },
|
215
|
+
|
216
|
+
// Regex pattern to match test files
|
217
|
+
testsRegex: /\.creevey\.ts$/,
|
218
|
+
|
219
|
+
// Disable using docker, to start browsers locally, it's useful for CI
|
220
|
+
useDocker: process.env.CI,
|
221
|
+
|
222
|
+
browsers: {
|
223
|
+
/* ... */
|
224
|
+
},
|
225
|
+
};
|
226
|
+
```
|
@@ -0,0 +1,60 @@
|
|
1
|
+
## Creevey Storybook Parameters
|
2
|
+
|
3
|
+
Creevey allows you to customize how stories will be captured. You could define parameters on `global`, `kind` or `story` levels. All these parameters are deeply merged by Storybook for each story.
|
4
|
+
|
5
|
+
```ts
|
6
|
+
// .storybook/preview.tsx
|
7
|
+
export const parameters = {
|
8
|
+
creevey: {
|
9
|
+
// Global parameters are applied to all stories
|
10
|
+
captureElement: '#storybook-root',
|
11
|
+
},
|
12
|
+
};
|
13
|
+
```
|
14
|
+
|
15
|
+
```ts
|
16
|
+
// stories/MyModal.stories.tsx
|
17
|
+
import React from 'react';
|
18
|
+
import { Meta, StoryObj } from '@storybook/react';
|
19
|
+
import { CreeveyMeta, CreeveyStory } from 'creevey';
|
20
|
+
import MyModal from './src/components/MyModal';
|
21
|
+
|
22
|
+
const Kind: Meta<typeof MyModal> = {
|
23
|
+
title: 'MyModal',
|
24
|
+
component: MyModal,
|
25
|
+
parameters: {
|
26
|
+
creevey: {
|
27
|
+
// It's possible to add additional delay before capturing screenshot
|
28
|
+
delay: 1000,
|
29
|
+
|
30
|
+
// For capturing the whole browser viewport, you can define `null` instead of css selector.
|
31
|
+
captureElement: null,
|
32
|
+
|
33
|
+
// You can skip some stories from capturing, by defining `skip` option:
|
34
|
+
// skip: { "The reason why story is skipped": { in: 'chrome', stories: 'Loading' } }
|
35
|
+
// - `in` - browser name, regex or array of browser names, which are defined in the Creevey config
|
36
|
+
// - `stories` - story name, regex or array of story names
|
37
|
+
// - `tests` - test name, regex or array of test names
|
38
|
+
// NOTE: If you try to skip stories by story name, the storybook name format will be used
|
39
|
+
// For more info see [storybook-export-vs-name-handling](https://storybook.js.org/docs/formats/component-story-format/#storybook-export-vs-name-handling))
|
40
|
+
skip: {
|
41
|
+
"`MyModal` doesn't support ie11": { in: 'ie11' },
|
42
|
+
'Loading stories are flaky in firefox': { in: 'firefox', stories: 'Loading' },
|
43
|
+
"`MyModal` hovering doesn't work correctly": {
|
44
|
+
in: ['firefox', 'chrome'],
|
45
|
+
tests: /.*hover$/,
|
46
|
+
},
|
47
|
+
},
|
48
|
+
},
|
49
|
+
},
|
50
|
+
};
|
51
|
+
|
52
|
+
export default Kind;
|
53
|
+
|
54
|
+
export const Basic: StoryObj<typeof MyModal> = {
|
55
|
+
creevey: {
|
56
|
+
// Lastly some elements can be ignored in capturing screenshot
|
57
|
+
ignoreElements: ['button', '.local-time'],
|
58
|
+
},
|
59
|
+
};
|
60
|
+
```
|
package/docs/tests.md
CHANGED
@@ -1,63 +1,68 @@
|
|
1
|
-
## Write tests
|
1
|
+
## Write interactive screenshot tests
|
2
2
|
|
3
|
-
|
3
|
+
In most cases following Storybook's ideology of [writing stories](https://storybook.js.org/docs/get-started/whats-a-story) is enough to test your UI components. Where each component has a separate stories file with its different states. But sometimes you might have pretty complicated components with a lot of interactions and internal states. In this case, you can write tests for your stories.
|
4
4
|
|
5
|
-
|
6
|
-
import React from 'react';
|
7
|
-
import { Story } from '@storybook/react';
|
8
|
-
import { CreeveyStory } from 'creevey';
|
9
|
-
import MyComponent from './src/components/MyComponent';
|
5
|
+
There are two different ways how to write interactive tests with Creevey:
|
10
6
|
|
11
|
-
|
7
|
+
### Write tests in `*.creevey.ts` files
|
12
8
|
|
13
|
-
|
14
|
-
Basic.parameters = {
|
15
|
-
creevey: {
|
16
|
-
captureElement: '#storybook-root',
|
17
|
-
tests: {
|
18
|
-
async click() {
|
19
|
-
await this.browser.actions().click(this.captureElement).perform();
|
9
|
+
It's the recommended way to write tests. It allows you to run these tests by Creevey itself and utilize webdriver benefits. The crucial part of it is webdriver action calls are more close to real user interactions and mitigate flakiness and false-negative results. Here is a simple example of how to write tests in `*.creevey.ts` files
|
20
10
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
11
|
+
```ts
|
12
|
+
// stories/MyComponent.creevey.ts
|
13
|
+
import { kind, story, test } from 'creevey';
|
14
|
+
|
15
|
+
kind('MyComponent', () => {
|
16
|
+
story('Story', ({ setStoryParameters }) => {
|
17
|
+
// It's possible to pass Creevey parameters to story
|
18
|
+
setStoryParameters({
|
19
|
+
captureElement: 'span[data-test-id~="x"]',
|
20
|
+
ignoreElements: [],
|
21
|
+
});
|
22
|
+
|
23
|
+
test('idle', async (context) => {
|
24
|
+
await context.matchImage(await context.takeScreenshot());
|
25
|
+
});
|
26
|
+
|
27
|
+
test('input', async (context) => {
|
28
|
+
await context.webdriver.keyboard.press('Tab');
|
29
|
+
const focus = await context.takeScreenshot();
|
30
|
+
await context.webdriver.keyboard.type('Hello Creevey');
|
31
|
+
const input = await context.takeScreenshot();
|
32
|
+
await context.matchImages({ focus, input });
|
33
|
+
});
|
34
|
+
});
|
35
|
+
});
|
26
36
|
```
|
27
37
|
|
28
|
-
|
38
|
+
In the example above, we used Playwright API to interact with the story. But Creevey also supports Selenium webdriver. And in that case `context.webdriver` will be an instance of Selenium webdriver. Obviously Selenium API is different from Playwright.
|
29
39
|
|
30
|
-
|
40
|
+
### Using Storybook's `play` function
|
31
41
|
|
32
|
-
|
33
|
-
import React from 'react';
|
34
|
-
import { CSFStory } from 'creevey';
|
35
|
-
import MyForm from './src/components/MyForm';
|
42
|
+
Storybook allows you to write tests in the story file itself by using [`play` function](https://storybook.js.org/docs/writing-tests/component-testing). It's a good way to write simple tests. But there are couple drawbacks of this approach:
|
36
43
|
|
37
|
-
|
44
|
+
- You can have only one test per story. Which is not a big deal, but sometimes you might not want to have multiple stories with the same markup.
|
45
|
+
- Tests are running in browser environment and use https://testing-library.com API under the hood. It's good for unit tests, but might not be suitable for visual regression tests, because testing-library relies on DOM API and not even close to real user interactions. For example, you might have a button that could be visible for user, but it's covered by some other transparent element. With testing-library the button easily accessible and clickable, but the user can't interact with it.
|
38
46
|
|
39
|
-
|
40
|
-
Basic.story = {
|
41
|
-
parameters: {
|
42
|
-
creevey: {
|
43
|
-
captureElement: '#storybook-root',
|
44
|
-
delay: 1000,
|
45
|
-
tests: {
|
46
|
-
async submit() {
|
47
|
-
const input = await this.browser.findElement({ css: '.my-input' });
|
47
|
+
Here is an example of how to write tests using Storybook's `play` function:
|
48
48
|
|
49
|
-
|
49
|
+
```tsx
|
50
|
+
// stories/MyComponent.stories.tsx
|
51
|
+
import React from 'react';
|
52
|
+
import { Meta, StoryObj } from '@storybook/react';
|
53
|
+
import { fireEvent, within } from '@storybook/test';
|
54
|
+
import MyComponent from './src/components/MyComponent';
|
50
55
|
|
51
|
-
|
56
|
+
export default {
|
57
|
+
title: 'MyComponent',
|
58
|
+
component: MyComponent,
|
59
|
+
};
|
52
60
|
|
53
|
-
|
61
|
+
export const Basic: StoryObj<typeof MyComponent> = {
|
62
|
+
play: async ({ canvasElement }) => {
|
63
|
+
const slider = await within(canvasElement).findByTestId('slider');
|
54
64
|
|
55
|
-
|
56
|
-
},
|
57
|
-
},
|
58
|
-
},
|
65
|
+
await fireEvent.change(slider, { target: { value: 50 } });
|
59
66
|
},
|
60
67
|
};
|
61
68
|
```
|
62
|
-
|
63
|
-
NOTE: In this example I fill some simple form and submit it. Also as you could see, I taking two different screenshots `empty` and `submitted` and assert these in the end.
|
package/package.json
CHANGED
@@ -322,6 +322,7 @@ export function withCreevey(): ReturnType<typeof makeDecorator> {
|
|
322
322
|
});
|
323
323
|
}
|
324
324
|
|
325
|
+
// TODO It's not accessible from the outside the package
|
325
326
|
export async function capture(options?: CaptureOptions): Promise<void> {
|
326
327
|
if (!isTestBrowser) return;
|
327
328
|
|
package/src/server/docker.ts
CHANGED
@@ -3,9 +3,8 @@ import Logger from 'loglevel';
|
|
3
3
|
import { Writable } from 'stream';
|
4
4
|
import Dockerode, { Container } from 'dockerode';
|
5
5
|
import { DockerAuth } from '../types.js';
|
6
|
-
import { subscribeOn } from './messages.js';
|
7
6
|
import { logger } from './logger.js';
|
8
|
-
import {
|
7
|
+
import { setWorkerContainer } from './worker/context.js';
|
9
8
|
|
10
9
|
const docker = new Dockerode();
|
11
10
|
|
@@ -167,15 +166,7 @@ export async function runImage(
|
|
167
166
|
|
168
167
|
return new Promise((resolve) => {
|
169
168
|
hub.once('container', (container: Container) => {
|
170
|
-
|
171
|
-
subscribeOn('shutdown', async () => {
|
172
|
-
try {
|
173
|
-
await Promise.race([waitForBrowserClose(), new Promise((resolve) => setTimeout(resolve, 2_000))]);
|
174
|
-
await container.remove({ force: true });
|
175
|
-
} catch {
|
176
|
-
/* noop */
|
177
|
-
}
|
178
|
-
});
|
169
|
+
setWorkerContainer(container);
|
179
170
|
});
|
180
171
|
hub.once(
|
181
172
|
'start',
|
@@ -109,7 +109,7 @@ export async function start(
|
|
109
109
|
})
|
110
110
|
.finally(() => {
|
111
111
|
// NOTE: Take some time to kill processes
|
112
|
-
void shutdownWorkers().then(() => setTimeout(() => process.exit(),
|
112
|
+
void shutdownWorkers().then(() => setTimeout(() => process.exit(), 500));
|
113
113
|
});
|
114
114
|
});
|
115
115
|
// TODO grep
|
@@ -5,6 +5,7 @@ import { logger } from '../logger';
|
|
5
5
|
import { subscribeOn } from '../messages';
|
6
6
|
import { CreeveyWebdriverBase } from '../webdriver';
|
7
7
|
import type { InternalBrowser } from './internal';
|
8
|
+
import { removeWorkerContainer } from '../worker/context.js'; // Import container context
|
8
9
|
|
9
10
|
export class PlaywrightWebdriver extends CreeveyWebdriverBase {
|
10
11
|
#browser: InternalBrowser | null = null;
|
@@ -21,7 +22,9 @@ export class PlaywrightWebdriver extends CreeveyWebdriverBase {
|
|
21
22
|
this.#options = options;
|
22
23
|
|
23
24
|
subscribeOn('shutdown', () => {
|
24
|
-
void this.#browser?.closeBrowser().finally(() =>
|
25
|
+
void this.#browser?.closeBrowser().finally(() => {
|
26
|
+
void removeWorkerContainer().finally(() => process.exit());
|
27
|
+
});
|
25
28
|
this.#browser = null;
|
26
29
|
});
|
27
30
|
}
|
@@ -5,6 +5,7 @@ import { subscribeOn } from '../messages.js';
|
|
5
5
|
import { CreeveyWebdriverBase } from '../webdriver.js';
|
6
6
|
import type { InternalBrowser } from './internal.js';
|
7
7
|
import { logger } from '../logger.js';
|
8
|
+
import { removeWorkerContainer } from '../worker/context.js';
|
8
9
|
|
9
10
|
declare global {
|
10
11
|
interface Window {
|
@@ -31,7 +32,9 @@ export class SeleniumWebdriver extends CreeveyWebdriverBase {
|
|
31
32
|
this.#options = options;
|
32
33
|
|
33
34
|
subscribeOn('shutdown', () => {
|
34
|
-
void this.#browser?.closeBrowser().finally(() =>
|
35
|
+
void this.#browser?.closeBrowser().finally(() => {
|
36
|
+
void removeWorkerContainer().finally(() => process.exit());
|
37
|
+
});
|
35
38
|
this.#browser = null;
|
36
39
|
});
|
37
40
|
}
|
package/src/server/utils.ts
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
import type { Container } from 'dockerode';
|
2
|
+
|
3
|
+
let workerContainer: Container | null = null;
|
4
|
+
|
5
|
+
export function setWorkerContainer(container: Container): void {
|
6
|
+
workerContainer = container;
|
7
|
+
}
|
8
|
+
|
9
|
+
export async function removeWorkerContainer(): Promise<void> {
|
10
|
+
if (workerContainer) {
|
11
|
+
await workerContainer.remove({ force: true });
|
12
|
+
workerContainer = null;
|
13
|
+
}
|
14
|
+
}
|