@wdio/visual-service 6.3.3 → 6.4.0
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/CHANGELOG.md +21 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +8 -8
- package/dist/storybook/Types.d.ts +17 -4
- package/dist/storybook/Types.d.ts.map +1 -1
- package/dist/storybook/launcher.d.ts.map +1 -1
- package/dist/storybook/launcher.js +23 -0
- package/dist/storybook/utils.d.ts +4 -4
- package/dist/storybook/utils.d.ts.map +1 -1
- package/dist/storybook/utils.js +35 -13
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @wdio/visual-service
|
|
2
2
|
|
|
3
|
+
## 6.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 7f859aa: Add `additionalSearchParams` to the Storybook Runner API
|
|
8
|
+
- 307fbec: Add `getStoriesBaselinePath` to Storybook Runner API, enabling custom file paths (e.g. files with a flat hierarchy in the baselines folder)
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- 3d232d1: Fix compareOptions not passed from config to the storybook runner tests
|
|
13
|
+
- Updated dependencies [7f859aa]
|
|
14
|
+
- Updated dependencies [307fbec]
|
|
15
|
+
- webdriver-image-comparison@7.4.0
|
|
16
|
+
|
|
17
|
+
### Committers: 2
|
|
18
|
+
|
|
19
|
+
- Fábio Correia [@fabioatcorreia](https://github.com/fabioatcorreia)
|
|
20
|
+
- alcpereira ([@alcpereira](https://github.com/alcpereira))
|
|
21
|
+
|
|
3
22
|
## 6.3.3
|
|
4
23
|
|
|
5
24
|
### Patch Changes
|
|
@@ -8,7 +27,8 @@
|
|
|
8
27
|
|
|
9
28
|
### Committers: 1
|
|
10
29
|
|
|
11
|
-
-
|
|
30
|
+
- alcpereira ([@ alcpereira](https://github.com/alcpereira))
|
|
31
|
+
|
|
12
32
|
## 6.3.2
|
|
13
33
|
|
|
14
34
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -90,12 +90,6 @@ declare global {
|
|
|
90
90
|
toMatchTabbablePageSnapshot(tag: string, expectedResult?: number | ExpectWebdriverIO.PartialMatcher, options?: WdioCheckFullPageMethodOptions): R;
|
|
91
91
|
toMatchTabbablePageSnapshot(tag: string, options?: WdioCheckFullPageMethodOptions): R;
|
|
92
92
|
}
|
|
93
|
-
interface PartialMatcher {
|
|
94
|
-
sample?: any;
|
|
95
|
-
$$typeof: symbol;
|
|
96
|
-
asymmetricMatch(...args: any[]): boolean;
|
|
97
|
-
toString(): string;
|
|
98
|
-
}
|
|
99
93
|
}
|
|
100
94
|
}
|
|
101
95
|
export type { VisualServiceOptions };
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,0BAA0B,MAAM,cAAc,CAAA;AACrD,OAAO,cAAc,MAAM,yBAAyB,CAAA;AACpD,OAAO,KAAK,EACR,MAAM,EACN,MAAM,EACN,oBAAoB,EACpB,8BAA8B,EAC9B,6BAA6B,EAC7B,4BAA4B,EAC5B,2BAA2B,EAC3B,6BAA6B,EAC7B,4BAA4B,EAC/B,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,sBAAsB,CAAA;AAE/E,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,WAAW,CAAC;QAClB,UAAU,WAAW;YACjB;;eAEG;YACH,WAAW,CACP,OAAO,EAAE,UAAU,EACnB,GAAG,EAAE,MAAM,EACX,kBAAkB,CAAC,EAAE,4BAA4B,GAClD,OAAO,CAAC,MAAM,CAAC,CAAC;YAEnB;;eAEG;YACH,UAAU,CACN,GAAG,EAAE,MAAM,EACX,iBAAiB,CAAC,EAAE,2BAA2B,GAChD,OAAO,CAAC,MAAM,CAAC,CAAC;YAEnB;;eAEG;YACH,kBAAkB,CACd,GAAG,EAAE,MAAM,EACX,yBAAyB,CAAC,EAAE,6BAA6B,GAC1D,OAAO,CAAC,MAAM,CAAC,CAAC;YAEnB;;eAEG;YACH,gBAAgB,CACZ,GAAG,EAAE,MAAM,EACX,mBAAmB,CAAC,EAAE,6BAA6B,GACpD,OAAO,CAAC,MAAM,CAAC,CAAC;YAEnB;;eAEG;YACH,YAAY,CACR,OAAO,EAAE,UAAU,EACnB,GAAG,EAAE,MAAM,EACX,mBAAmB,CAAC,EAAE,6BAA6B,GACpD,OAAO,CAAC,MAAM,CAAC,CAAC;YAEnB;;eAEG;YACH,WAAW,CACP,GAAG,EAAE,MAAM,EACX,kBAAkB,CAAC,EAAE,4BAA4B,GAClD,OAAO,CAAC,MAAM,CAAC,CAAC;YAEnB;;eAEG;YACH,mBAAmB,CACf,GAAG,EAAE,MAAM,EACX,oBAAoB,CAAC,EAAE,8BAA8B,GACtD,OAAO,CAAC,MAAM,CAAC,CAAC;YAEnB;;eAEG;YACH,iBAAiB,CACb,GAAG,EAAE,MAAM,EACX,oBAAoB,CAAC,EAAE,8BAA8B,GACtD,OAAO,CAAC,MAAM,CAAC,CAAC;YAEnB;;eAEG;YACH,mCAAmC,CAC/B,OAAO,EAAE,mCAAmC,GAC7C,OAAO,CAAC,IAAI,CAAC,CAAC;SACpB;QACD,UAAU,OAAQ,SAAQ,WAAW;SAAG;QACxC,UAAU,kBAAmB,SAAQ,WAAW;SAAG;QACnD,UAAU,OAAO;SAAG;QACpB,UAAU,YAAY;YAClB,kBAAkB,CAAC,EAAC;gBAChB,OAAO,CAAC,EAAE,MAAM,CAAC;aACpB,CAAA;SACJ;KACJ;IAED,UAAU,iBAAiB,CAAC;QAGxB,UAAU,QAAQ,CAAC,CAAC,EAAE,CAAC;YACnB;;;;;eAKG;YACH,qBAAqB,CACjB,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,cAAc,EAC1D,OAAO,CAAC,EAAE,4BAA4B,GACvC,CAAC,CAAA;YACJ,qBAAqB,CACjB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,4BAA4B,GACvC,CAAC,CAAA;YACJ;;;;;eAKG;YACH,uBAAuB,CACnB,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,cAAc,EAC1D,OAAO,CAAC,EAAE,8BAA8B,GACzC,CAAC,CAAA;YACJ,uBAAuB,CACnB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,8BAA8B,GACzC,CAAC,CAAA;YACJ;;;;;eAKG;YACH,sBAAsB,CAClB,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,cAAc,EAC1D,OAAO,CAAC,EAAE,6BAA6B,GACxC,CAAC,CAAA;YACJ,sBAAsB,CAClB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,6BAA6B,GACxC,CAAC,CAAA;YACJ;;;;;eAKG;YACH,2BAA2B,CACvB,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,cAAc,EAC1D,OAAO,CAAC,EAAE,8BAA8B,GACzC,CAAC,CAAA;YACJ,2BAA2B,CACvB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,8BAA8B,GACzC,CAAC,CAAA;SACP;KACJ;CACJ;AACD,YAAY,EAAE,oBAAoB,EAAE,CAAA;AAEpC,eAAe,0BAA0B,CAAA;AACzC,eAAO,MAAM,QAAQ,uBAAiB,CAAA"}
|
package/dist/service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAgB,UAAU,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,EACH,SAAS,EAWZ,MAAM,4BAA4B,CAAA;AAYnC,OAAO,KAAK,EAA+C,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAenG,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,SAAS;;IAM7D,OAAO,CAAC,gBAAgB,CAA+B;gBAE3C,OAAO,EAAE,oBAAoB,EAAE,CAAC,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM;IAOlG;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,kBAAkB;IAIzE,MAAM,CACR,YAAY,EAAE,WAAW,CAAC,YAAY,EACtC,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,kBAAkB;IAgC3D,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI;IAOtC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK;IAItC,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAgB,UAAU,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,EACH,SAAS,EAWZ,MAAM,4BAA4B,CAAA;AAYnC,OAAO,KAAK,EAA+C,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAenG,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,SAAS;;IAM7D,OAAO,CAAC,gBAAgB,CAA+B;gBAE3C,OAAO,EAAE,oBAAoB,EAAE,CAAC,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM;IAOlG;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,kBAAkB;IAIzE,MAAM,CACR,YAAY,EAAE,WAAW,CAAC,YAAY,EACtC,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,kBAAkB;IAgC3D,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI;IAOtC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK;IAItC,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG;CA2WzF"}
|
package/dist/service.js
CHANGED
|
@@ -149,8 +149,8 @@ export default class WdioImageComparisonService extends BaseClass {
|
|
|
149
149
|
const elementOptionsKey = commandName === 'saveElement' ? 'saveElementOptions' : 'checkElementOptions';
|
|
150
150
|
return command({
|
|
151
151
|
methods: {
|
|
152
|
-
executor: (
|
|
153
|
-
return this.execute.bind(browser)(
|
|
152
|
+
executor: (fn, ...args) => {
|
|
153
|
+
return this.execute.bind(browser)(fn, ...args);
|
|
154
154
|
},
|
|
155
155
|
getElementRect: this.getElementRect.bind(browser),
|
|
156
156
|
screenShot: this.takeScreenshot.bind(browser),
|
|
@@ -188,8 +188,8 @@ export default class WdioImageComparisonService extends BaseClass {
|
|
|
188
188
|
browser.addCommand(commandName, function (tag, pageOptions = {}) {
|
|
189
189
|
return command({
|
|
190
190
|
methods: {
|
|
191
|
-
executor: (
|
|
192
|
-
return this.execute.bind(browser)(
|
|
191
|
+
executor: (fn, ...args) => {
|
|
192
|
+
return this.execute.bind(browser)(fn, ...args);
|
|
193
193
|
},
|
|
194
194
|
getElementRect: this.getElementRect.bind(browser),
|
|
195
195
|
screenShot: this.takeScreenshot.bind(browser),
|
|
@@ -224,8 +224,8 @@ export default class WdioImageComparisonService extends BaseClass {
|
|
|
224
224
|
const instanceData = await getInstanceData(browserInstance);
|
|
225
225
|
returnData[browserName] = await command({
|
|
226
226
|
methods: {
|
|
227
|
-
executor: (
|
|
228
|
-
return
|
|
227
|
+
executor: (fn, ...args) => {
|
|
228
|
+
return this.execute.bind(browser)(fn, ...args);
|
|
229
229
|
},
|
|
230
230
|
getElementRect: browserInstance.getElementRect.bind(browserInstance),
|
|
231
231
|
screenShot: browserInstance.takeScreenshot.bind(browserInstance),
|
|
@@ -267,8 +267,8 @@ export default class WdioImageComparisonService extends BaseClass {
|
|
|
267
267
|
const instanceData = await getInstanceData(browserInstance);
|
|
268
268
|
returnData[browserName] = await command({
|
|
269
269
|
methods: {
|
|
270
|
-
executor: (
|
|
271
|
-
return
|
|
270
|
+
executor: (fn, ...args) => {
|
|
271
|
+
return this.execute.bind(browser)(fn, ...args);
|
|
272
272
|
},
|
|
273
273
|
getElementRect: browserInstance.getElementRect.bind(browserInstance),
|
|
274
274
|
screenShot: browserInstance.takeScreenshot.bind(browserInstance),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Folders } from 'webdriver-image-comparison';
|
|
1
|
+
import type { CheckElementMethodOptions, ClassOptions, Folders } from 'webdriver-image-comparison';
|
|
2
2
|
export interface StorybookData {
|
|
3
3
|
id: string;
|
|
4
4
|
title: string;
|
|
@@ -31,7 +31,9 @@ export type Stories = {
|
|
|
31
31
|
[key: string]: StorybookData;
|
|
32
32
|
};
|
|
33
33
|
export type CreateTestFileOptions = {
|
|
34
|
+
additionalSearchParams: URLSearchParams;
|
|
34
35
|
clip: boolean;
|
|
36
|
+
compareOptions: CheckElementMethodOptions;
|
|
35
37
|
clipSelector: string;
|
|
36
38
|
directoryPath: string;
|
|
37
39
|
folders: Folders;
|
|
@@ -40,7 +42,7 @@ export type CreateTestFileOptions = {
|
|
|
40
42
|
skipStories: string[] | RegExp;
|
|
41
43
|
storiesJson: StorybookData[];
|
|
42
44
|
storybookUrl: string;
|
|
43
|
-
}
|
|
45
|
+
} & Pick<CreateTestContent, 'getStoriesBaselinePath'>;
|
|
44
46
|
export interface CapabilityMap {
|
|
45
47
|
chrome: WebdriverIO.Capabilities;
|
|
46
48
|
firefox: WebdriverIO.Capabilities;
|
|
@@ -48,23 +50,27 @@ export interface CapabilityMap {
|
|
|
48
50
|
edge: WebdriverIO.Capabilities;
|
|
49
51
|
}
|
|
50
52
|
export type CreateTestContent = {
|
|
53
|
+
additionalSearchParams: URLSearchParams;
|
|
51
54
|
clip: boolean;
|
|
52
55
|
clipSelector: string;
|
|
56
|
+
compareOptions: CheckElementMethodOptions;
|
|
53
57
|
folders: Folders;
|
|
54
58
|
framework: string;
|
|
55
59
|
skipStories: string[] | RegExp;
|
|
56
60
|
stories: StorybookData[];
|
|
57
61
|
storybookUrl: string;
|
|
58
|
-
}
|
|
62
|
+
} & Pick<CreateItContent, 'getStoriesBaselinePath'>;
|
|
59
63
|
export type CreateItContent = {
|
|
64
|
+
additionalSearchParams: URLSearchParams;
|
|
60
65
|
clip: boolean;
|
|
61
66
|
clipSelector: string;
|
|
67
|
+
compareOptions: CheckElementMethodOptions;
|
|
62
68
|
folders: Folders;
|
|
63
69
|
framework: string;
|
|
64
70
|
skipStories: string[] | RegExp;
|
|
65
71
|
storyData: StorybookData;
|
|
66
72
|
storybookUrl: string;
|
|
67
|
-
}
|
|
73
|
+
} & Pick<NonNullable<ClassOptions['storybook']>, 'getStoriesBaselinePath'>;
|
|
68
74
|
export type CategoryComponent = {
|
|
69
75
|
category: string;
|
|
70
76
|
component: string;
|
|
@@ -84,6 +90,13 @@ export type EmulatedDeviceType = {
|
|
|
84
90
|
userAgent: string;
|
|
85
91
|
};
|
|
86
92
|
export type WaitForStorybookComponentToBeLoaded = {
|
|
93
|
+
/**
|
|
94
|
+
* Additional search parameters to be added to the Storybook URL
|
|
95
|
+
*
|
|
96
|
+
* @example addtionalSearchParams: new URLSearchParams({ foo: 'bar', abc: 'def' })
|
|
97
|
+
* This will generate the following Storybook URL for stories test: `http://storybook.url/iframe.html?id=story-id&foo=bar&abc=def`
|
|
98
|
+
*/
|
|
99
|
+
additionalSearchParams?: URLSearchParams;
|
|
87
100
|
clipSelector?: string;
|
|
88
101
|
id: string;
|
|
89
102
|
timeout?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["../../src/storybook/Types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["../../src/storybook/Types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../../src/storybook/launcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../../src/storybook/launcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAA8B,MAAM,4BAA4B,CAAA;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAetD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,SAAS;;gBAGrC,OAAO,EAAE,YAAY;IAK3B,SAAS,CAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,sBAAsB;IA+FxF,UAAU;CAuBnB"}
|
|
@@ -34,6 +34,21 @@ export default class VisualLauncher extends BaseClass {
|
|
|
34
34
|
// Clear the capabilities
|
|
35
35
|
capabilities.length = 0;
|
|
36
36
|
log.info('Clearing the current capabilities.');
|
|
37
|
+
// Get compare options from config
|
|
38
|
+
const compareOptions = {
|
|
39
|
+
blockOutSideBar: this.#options.blockOutSideBar,
|
|
40
|
+
blockOutStatusBar: this.#options.blockOutStatusBar,
|
|
41
|
+
blockOutToolBar: this.#options.blockOutToolBar,
|
|
42
|
+
ignoreAlpha: this.#options.ignoreAlpha,
|
|
43
|
+
ignoreAntialiasing: this.#options.ignoreAntialiasing,
|
|
44
|
+
ignoreColors: this.#options.ignoreColors,
|
|
45
|
+
ignoreLess: this.#options.ignoreLess,
|
|
46
|
+
ignoreNothing: this.#options.ignoreNothing,
|
|
47
|
+
rawMisMatchPercentage: this.#options.rawMisMatchPercentage,
|
|
48
|
+
returnAllCompareData: this.#options.returnAllCompareData,
|
|
49
|
+
saveAboveTolerance: this.#options.saveAboveTolerance,
|
|
50
|
+
scaleImagesToSameSize: this.#options.scaleImagesToSameSize,
|
|
51
|
+
};
|
|
37
52
|
// Determine some run options
|
|
38
53
|
// --version
|
|
39
54
|
const versionOption = this.#options?.storybook?.version;
|
|
@@ -60,13 +75,21 @@ export default class VisualLauncher extends BaseClass {
|
|
|
60
75
|
const skipStoriesArgv = getArgvValue('--skipStories', value => value);
|
|
61
76
|
const skipStories = skipStoriesOption ?? skipStoriesArgv ?? [];
|
|
62
77
|
const parsedSkipStories = parseSkipStories(skipStories);
|
|
78
|
+
// --additionalSearchParams
|
|
79
|
+
const additionalSearchParamsOption = this.#options?.storybook?.additionalSearchParams;
|
|
80
|
+
const additionalSearchParamsArgv = getArgvValue('--additionalSearchParams', value => new URLSearchParams(value));
|
|
81
|
+
const additionalSearchParams = additionalSearchParamsOption ?? additionalSearchParamsArgv ?? new URLSearchParams();
|
|
82
|
+
const getStoriesBaselinePath = this.#options?.storybook?.getStoriesBaselinePath;
|
|
63
83
|
// Create the test files
|
|
64
84
|
createTestFiles({
|
|
85
|
+
additionalSearchParams,
|
|
65
86
|
clip,
|
|
66
87
|
clipSelector,
|
|
88
|
+
compareOptions,
|
|
67
89
|
directoryPath: tempDir,
|
|
68
90
|
folders: this.folders,
|
|
69
91
|
framework,
|
|
92
|
+
getStoriesBaselinePath,
|
|
70
93
|
numShards,
|
|
71
94
|
skipStories: parsedSkipStories,
|
|
72
95
|
storiesJson,
|
|
@@ -36,12 +36,12 @@ export declare function getStoriesJson(url: string): Promise<Stories>;
|
|
|
36
36
|
/**
|
|
37
37
|
* Get arg value from the process.argv
|
|
38
38
|
*/
|
|
39
|
-
export declare function getArgvValue(argName: string, parseFunc: (value: string) =>
|
|
39
|
+
export declare function getArgvValue<ParseFuncReturnType>(argName: string, parseFunc: (value: string) => ParseFuncReturnType): ParseFuncReturnType | undefined;
|
|
40
40
|
/**
|
|
41
41
|
* Creates a it function for the test file
|
|
42
42
|
* @TODO: improve this
|
|
43
43
|
*/
|
|
44
|
-
export declare function itFunction({ clip, clipSelector, folders
|
|
44
|
+
export declare function itFunction({ additionalSearchParams, clip, clipSelector, compareOptions, folders, framework, skipStories, storyData, storybookUrl, getStoriesBaselinePath }: CreateItContent): string;
|
|
45
45
|
/**
|
|
46
46
|
* Write the test file
|
|
47
47
|
*/
|
|
@@ -49,7 +49,7 @@ export declare function writeTestFile(directoryPath: string, fileID: string, tes
|
|
|
49
49
|
/**
|
|
50
50
|
* Create the test content
|
|
51
51
|
*/
|
|
52
|
-
export declare function createTestContent({ clip, clipSelector, folders, framework, skipStories, stories, storybookUrl }: CreateTestContent, itFunc?: typeof itFunction): string;
|
|
52
|
+
export declare function createTestContent({ additionalSearchParams, clip, clipSelector, compareOptions, folders, framework, getStoriesBaselinePath, skipStories, stories, storybookUrl }: CreateTestContent, itFunc?: typeof itFunction): string;
|
|
53
53
|
/**
|
|
54
54
|
* The custom command
|
|
55
55
|
*/
|
|
@@ -61,7 +61,7 @@ export declare function createFileData(describeTitle: string, testContent: strin
|
|
|
61
61
|
/**
|
|
62
62
|
* Create the test files
|
|
63
63
|
*/
|
|
64
|
-
export declare function createTestFiles({ clip, clipSelector, directoryPath, folders, framework, numShards, skipStories, storiesJson, storybookUrl }: CreateTestFileOptions, createTestCont?: typeof createTestContent, createFileD?: typeof createFileData, writeTestF?: typeof writeTestFile): void;
|
|
64
|
+
export declare function createTestFiles({ additionalSearchParams, clip, clipSelector, compareOptions, directoryPath, folders, framework, getStoriesBaselinePath, numShards, skipStories, storiesJson, storybookUrl }: CreateTestFileOptions, createTestCont?: typeof createTestContent, createFileD?: typeof createFileData, writeTestF?: typeof writeTestFile): void;
|
|
65
65
|
export declare function createChromeCapabilityWithEmulation({ screen: { width, height, dpr }, name, userAgent }: EmulatedDeviceType, isHeadless: boolean): WebdriverIO.Capabilities;
|
|
66
66
|
/**
|
|
67
67
|
* Throw an error message if the capabilities are not set up correctly
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/storybook/utils.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,OAAO,KAAK,EACR,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EAErB,uBAAuB,EACvB,OAAO,EAGP,kBAAkB,EAClB,aAAa,EACb,mCAAmC,EACtC,MAAM,YAAY,CAAA;AAKnB;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,GAAG,OAAO,CAEjG;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,GAAG,OAAO,CAEhG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,GAAG,OAAO,CAE9F;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,MAAM,iBAUxD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAY/C;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,CAMzE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/storybook/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/storybook/utils.js
CHANGED
|
@@ -80,8 +80,13 @@ export async function getStoriesJson(url) {
|
|
|
80
80
|
]);
|
|
81
81
|
for (const response of [storiesRes, indexRes]) {
|
|
82
82
|
if (response.ok) {
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
try {
|
|
84
|
+
const data = await response.json();
|
|
85
|
+
return data.stories || data.entries;
|
|
86
|
+
}
|
|
87
|
+
catch (_ign) {
|
|
88
|
+
// Ignore the json parse error
|
|
89
|
+
}
|
|
85
90
|
}
|
|
86
91
|
}
|
|
87
92
|
}
|
|
@@ -107,11 +112,15 @@ export function getArgvValue(argName, parseFunc) {
|
|
|
107
112
|
}
|
|
108
113
|
return undefined;
|
|
109
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Get the story baseline path for the given category and component
|
|
117
|
+
*/
|
|
118
|
+
const getStoriesBaselinePathFn = ((category, component) => `./${category}/${component}/`);
|
|
110
119
|
/**
|
|
111
120
|
* Creates a it function for the test file
|
|
112
121
|
* @TODO: improve this
|
|
113
122
|
*/
|
|
114
|
-
export function itFunction({ clip, clipSelector, folders
|
|
123
|
+
export function itFunction({ additionalSearchParams, clip, clipSelector, compareOptions, folders, framework, skipStories, storyData, storybookUrl, getStoriesBaselinePath = getStoriesBaselinePathFn }) {
|
|
115
124
|
const { id } = storyData;
|
|
116
125
|
const screenshotType = clip ? 'n element' : ' viewport';
|
|
117
126
|
const DEFAULT_IT_TEXT = 'it';
|
|
@@ -130,8 +139,12 @@ export function itFunction({ clip, clipSelector, folders: { baselineFolder }, fr
|
|
|
130
139
|
}
|
|
131
140
|
// Setup the folder structure
|
|
132
141
|
const { category, component } = extractCategoryAndComponent(id);
|
|
133
|
-
const
|
|
134
|
-
|
|
142
|
+
const storiesBaselinePath = getStoriesBaselinePath(category, component);
|
|
143
|
+
const checkMethodOptions = {
|
|
144
|
+
...compareOptions,
|
|
145
|
+
actualFolder: join(folders.actualFolder, storiesBaselinePath),
|
|
146
|
+
baselineFolder: join(folders.baselineFolder, storiesBaselinePath),
|
|
147
|
+
diffFolder: join(folders.diffFolder, storiesBaselinePath),
|
|
135
148
|
};
|
|
136
149
|
const it = `
|
|
137
150
|
${itText}(\`should take a${screenshotType} screenshot of ${id}\`, async () => {
|
|
@@ -139,10 +152,11 @@ export function itFunction({ clip, clipSelector, folders: { baselineFolder }, fr
|
|
|
139
152
|
clipSelector: '${clipSelector}',
|
|
140
153
|
id: '${id}',
|
|
141
154
|
storybookUrl: '${storybookUrl}',
|
|
155
|
+
additionalSearchParams: new URLSearchParams('${additionalSearchParams.toString()}'),
|
|
142
156
|
});
|
|
143
157
|
${clip
|
|
144
|
-
? `await expect($('${clipSelector}')).toMatchElementSnapshot('${id}-element', ${JSON.stringify(
|
|
145
|
-
: `await expect(browser).toMatchScreenSnapshot('${id}', ${JSON.stringify(
|
|
158
|
+
? `await expect($('${clipSelector}')).toMatchElementSnapshot('${id}-element', ${JSON.stringify(checkMethodOptions)})`
|
|
159
|
+
: `await expect(browser).toMatchScreenSnapshot('${id}', ${JSON.stringify(checkMethodOptions)})`}
|
|
146
160
|
});
|
|
147
161
|
`;
|
|
148
162
|
return it;
|
|
@@ -164,10 +178,10 @@ export function writeTestFile(directoryPath, fileID, testContent) {
|
|
|
164
178
|
/**
|
|
165
179
|
* Create the test content
|
|
166
180
|
*/
|
|
167
|
-
export function createTestContent({ clip, clipSelector, folders, framework, skipStories, stories, storybookUrl },
|
|
181
|
+
export function createTestContent({ additionalSearchParams, clip, clipSelector, compareOptions, folders, framework, getStoriesBaselinePath, skipStories, stories, storybookUrl },
|
|
168
182
|
// For testing purposes only
|
|
169
183
|
itFunc = itFunction) {
|
|
170
|
-
const itFunctionOptions = { clip, clipSelector, folders, framework, skipStories, storybookUrl };
|
|
184
|
+
const itFunctionOptions = { additionalSearchParams, clip, clipSelector, compareOptions, folders, framework, getStoriesBaselinePath, skipStories, storybookUrl };
|
|
171
185
|
return stories.reduce((acc, storyData) => acc + itFunc({ ...itFunctionOptions, storyData }), '');
|
|
172
186
|
}
|
|
173
187
|
/**
|
|
@@ -178,8 +192,16 @@ export async function waitForStorybookComponentToBeLoaded(options,
|
|
|
178
192
|
isStorybookModeFunc = isStorybookMode) {
|
|
179
193
|
const isStorybook = isStorybookModeFunc();
|
|
180
194
|
if (isStorybook) {
|
|
181
|
-
const { clipSelector = process.env.VISUAL_STORYBOOK_CLIP_SELECTOR, id, url = process.env.VISUAL_STORYBOOK_URL, timeout = 11000, } = options;
|
|
182
|
-
|
|
195
|
+
const { additionalSearchParams, clipSelector = process.env.VISUAL_STORYBOOK_CLIP_SELECTOR, id, url = process.env.VISUAL_STORYBOOK_URL, timeout = 11000, } = options;
|
|
196
|
+
const baseUrl = new URL('iframe.html', url);
|
|
197
|
+
const searchParams = new URLSearchParams({ id });
|
|
198
|
+
if (additionalSearchParams) {
|
|
199
|
+
for (const [key, value] of additionalSearchParams) {
|
|
200
|
+
searchParams.append(key, value);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
baseUrl.search = searchParams.toString();
|
|
204
|
+
await browser.url(baseUrl.toString());
|
|
183
205
|
await $(clipSelector).waitForDisplayed();
|
|
184
206
|
await browser.executeAsync(async (timeout, done) => {
|
|
185
207
|
let timedOut = false;
|
|
@@ -253,11 +275,11 @@ function filterStories(storiesJson) {
|
|
|
253
275
|
/**
|
|
254
276
|
* Create the test files
|
|
255
277
|
*/
|
|
256
|
-
export function createTestFiles({ clip, clipSelector, directoryPath, folders, framework, numShards, skipStories, storiesJson, storybookUrl },
|
|
278
|
+
export function createTestFiles({ additionalSearchParams, clip, clipSelector, compareOptions, directoryPath, folders, framework, getStoriesBaselinePath, numShards, skipStories, storiesJson, storybookUrl },
|
|
257
279
|
// For testing purposes only
|
|
258
280
|
createTestCont = createTestContent, createFileD = createFileData, writeTestF = writeTestFile) {
|
|
259
281
|
const fileNamePrefix = 'visual-storybook';
|
|
260
|
-
const createTestContentData = { clip, clipSelector, folders, framework, skipStories, stories: storiesJson, storybookUrl };
|
|
282
|
+
const createTestContentData = { additionalSearchParams, clip, clipSelector, compareOptions, folders, framework, getStoriesBaselinePath, skipStories, stories: storiesJson, storybookUrl };
|
|
261
283
|
if (numShards === 1) {
|
|
262
284
|
const testContent = createTestCont(createTestContentData);
|
|
263
285
|
const fileData = createFileD('All stories', testContent);
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@wdio/visual-service",
|
|
3
3
|
"author": "Wim Selles - wswebcreation",
|
|
4
4
|
"description": "Image comparison / visual regression testing for WebdriverIO",
|
|
5
|
-
"version": "6.
|
|
5
|
+
"version": "6.4.0",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://webdriver.io/docs/visual-testing",
|
|
8
8
|
"repository": {
|
|
@@ -22,10 +22,10 @@
|
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@wdio/globals": "^9.9.1",
|
|
24
24
|
"@wdio/logger": "^9.4.4",
|
|
25
|
-
"@wdio/types": "^9.
|
|
26
|
-
"
|
|
25
|
+
"@wdio/types": "^9.12.2",
|
|
26
|
+
"expect-webdriverio": "^5.1.0",
|
|
27
|
+
"webdriver-image-comparison": "7.4.0"
|
|
27
28
|
},
|
|
28
|
-
"devDependencies": {},
|
|
29
29
|
"scripts": {
|
|
30
30
|
"build": "run-s clean build:*",
|
|
31
31
|
"build:tsc": "tsc --project ./tsconfig.json",
|