@wdio/visual-service 6.0.0 → 6.1.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 CHANGED
@@ -1,425 +1,481 @@
1
1
  # @wdio/visual-service
2
2
 
3
+ ## 6.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ #### ea08748 Fix [495](https://github.com/webdriverio/visual-testing/issues/495): module system issue when using with vite and storybook
8
+
9
+ This fix only allows `runner` to be the `local` one, if not, it will throw this error
10
+
11
+ ```logs
12
+ pnpm test.local.desktop.storybook ─╯
13
+ > @wdio/visual-testing-monorepo@ test.local.desktop.storybook /Users/wswebcreation/Git/wdio/visual-testing
14
+ > wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --numShards=10 --url=https://govuk-react.github.io/govuk-react/ --skipStories="/.*(loading-box|spinner).*/"
15
+ Execution of 0 workers started at 2024-09-22T05:50:20.875Z
16
+ SevereServiceError in "onPrepare"
17
+ SevereServiceError:
18
+ A service failed in the 'onPrepare' hook
19
+ SevereServiceError:
20
+ Running `@wdio/visual-service` is only supported in `local` mode.
21
+ at VisualLauncher.onPrepare (file:///Users/wswebcreation/Git/wdio/visual-testing/packages/visual-service/dist/storybook/launcher.js:22:19)
22
+ at file:///Users/wswebcreation/Git/wdio/visual-testing/node_modules/.pnpm/@wdio+cli@9.0.7/node_modules/@wdio/cli/build/index.js:1209:32
23
+ at Array.map (<anonymous>)
24
+ at runServiceHook (file:///Users/wswebcreation/Git/wdio/visual-testing/node_modules/.pnpm/@wdio+cli@9.0.7/node_modules/@wdio/cli/build/index.js:1206:31)
25
+ at Launcher.run (file:///Users/wswebcreation/Git/wdio/visual-testing/node_modules/.pnpm/@wdio+cli@9.0.7/node_modules/@wdio/cli/build/index.js:2193:13)
26
+ at async Module.run (file:///Users/wswebcreation/Git/wdio/visual-testing/node_modules/.pnpm/@wdio+cli@9.0.7/node_modules/@wdio/cli/build/index.js:3218:16)
27
+ Stopping runner...
28
+ at file:///Users/wswebcreation/Git/wdio/visual-testing/node_modules/.pnpm/@wdio+cli@9.0.7/node_modules/@wdio/cli/build/index.js:1227:29
29
+ at async Launcher.run (file:///Users/wswebcreation/Git/wdio/visual-testing/node_modules/.pnpm/@wdio+cli@9.0.7/node_modules/@wdio/cli/build/index.js:2193:7)
30
+ at async Module.run (file:///Users/wswebcreation/Git/wdio/visual-testing/node_modules/.pnpm/@wdio+cli@9.0.7/node_modules/@wdio/cli/build/index.js:3218:16)
31
+ HookError [SevereServiceError]:
32
+ A service failed in the 'onPrepare' hook
33
+ SevereServiceError:
34
+ Running `@wdio/visual-service` is only supported in `local` mode.
35
+ at VisualLauncher.onPrepare (file:///Users/wswebcreation/Git/wdio/visual-testing/packages/visual-service/dist/storybook/launcher.js:22:19)
36
+ at file:///Users/wswebcreation/Git/wdio/visual-testing/node_modules/.pnpm/@wdio+cli@9.0.7/node_modules/@wdio/cli/build/index.js:1209:32
37
+ at Array.map (<anonymous>)
38
+ at runServiceHook (file:///Users/wswebcreation/Git/wdio/visual-testing/node_modules/.pnpm/@wdio+cli@9.0.7/node_modules/@wdio/cli/build/index.js:1206:31)
39
+ at Launcher.run (file:///Users/wswebcreation/Git/wdio/visual-testing/node_modules/.pnpm/@wdio+cli@9.0.7/node_modules/@wdio/cli/build/index.js:2193:13)
40
+ at async Module.run (file:///Users/wswebcreation/Git/wdio/visual-testing/node_modules/.pnpm/@wdio+cli@9.0.7/node_modules/@wdio/cli/build/index.js:3218:16)
41
+ Stopping runner...
42
+ at file:///Users/wswebcreation/Git/wdio/visual-testing/node_modules/.pnpm/@wdio+cli@9.0.7/node_modules/@wdio/cli/build/index.js:1227:29
43
+ at async Launcher.run (file:///Users/wswebcreation/Git/wdio/visual-testing/node_modules/.pnpm/@wdio+cli@9.0.7/node_modules/@wdio/cli/build/index.js:2193:7)
44
+ at async Module.run (file:///Users/wswebcreation/Git/wdio/visual-testing/node_modules/.pnpm/@wdio+cli@9.0.7/node_modules/@wdio/cli/build/index.js:3218:16) {
45
+ origin: 'onPrepare'
46
+ }
47
+  ELIFECYCLE  Command failed with exit code 1.
48
+ ```
49
+
50
+ #### 💅 Update dependencies
51
+
52
+ We've update all dependencies.
53
+
54
+ ### Patch Changes
55
+
56
+ - Updated dependencies [ea08748]
57
+ - webdriver-image-comparison@7.1.0
58
+
3
59
  ## 6.0.0
4
60
 
5
61
  ### Major Changes
6
62
 
7
- - 9fdb2d2: feat: work with V9
63
+ - 9fdb2d2: feat: work with V9
8
64
 
9
65
  ### Patch Changes
10
66
 
11
- - Updated dependencies [9fdb2d2]
12
- - webdriver-image-comparison@7.0.0
67
+ - Updated dependencies [9fdb2d2]
68
+ - webdriver-image-comparison@7.0.0
13
69
 
14
70
  ## 5.2.1
15
71
 
16
72
  ### Patch Changes
17
73
 
18
- - cae36ad: Update deps
74
+ - cae36ad: Update deps
19
75
 
20
76
  ## 5.2.0
21
77
 
22
78
  ### Minor Changes
23
79
 
24
- - 0b01b64: ### @wdio/visual-service
25
-
26
- #### 🚀 New Features
27
-
28
- **Added Reporting output**
29
- You now have the option to export the compare results into a JSON report file. By enabling the module option `createJsonReportFiles: true`, each image that is compared will create a report stored in the `actual` folder, next to each `actual` image result.
30
-
31
- The output will look like this:
32
-
33
- ```json
34
- {
35
- "parent": "check methods",
36
- "test": "should fail comparing with a baseline",
37
- "tag": "examplePageFail",
38
- "instanceData": {
39
- "browser": {
40
- "name": "chrome-headless-shell",
41
- "version": "126.0.6478.183"
42
- },
43
- "platform": {
44
- "name": "mac",
45
- "version": "not-known"
46
- }
47
- },
48
- "commandName": "checkScreen",
49
- "boundingBoxes": {
50
- "diffBoundingBoxes": [
51
- {
52
- "left": 1088,
53
- "top": 717,
54
- "right": 1186,
55
- "bottom": 730
56
- }
57
- //....
58
- ],
59
- "ignoredBoxes": [
60
- {
61
- "left": 159,
62
- "top": 652,
63
- "right": 356,
64
- "bottom": 703
65
- }
66
- //...
67
- ]
68
- },
69
- "fileData": {
70
- "actualFilePath": "/Users/wswebcreation/Git/wdio/visual-testing/.tmp/actual/desktop_chrome-headless-shellexamplePageFail-local-chrome-latest-1366x768.png",
71
- "baselineFilePath": "/Users/wswebcreation/Git/wdio/visual-testing/localBaseline/desktop_chrome-headless-shellexamplePageFail-local-chrome-latest-1366x768.png",
72
- "diffFilePath": "/Users/wswebcreation/Git/wdio/visual-testing/.tmp/diff/desktop_chrome-headless-shell/examplePageFail-local-chrome-latest-1366x768png",
73
- "fileName": "examplePageFail-local-chrome-latest-1366x768.png",
74
- "size": {
75
- "actual": {
76
- "height": 768,
77
- "width": 1366
80
+ - 0b01b64: ### @wdio/visual-service
81
+
82
+ #### 🚀 New Features
83
+
84
+ **Added Reporting output**
85
+ You now have the option to export the compare results into a JSON report file. By enabling the module option `createJsonReportFiles: true`, each image that is compared will create a report stored in the `actual` folder, next to each `actual` image result.
86
+
87
+ The output will look like this:
88
+
89
+ ```json
90
+ {
91
+ "parent": "check methods",
92
+ "test": "should fail comparing with a baseline",
93
+ "tag": "examplePageFail",
94
+ "instanceData": {
95
+ "browser": {
96
+ "name": "chrome-headless-shell",
97
+ "version": "126.0.6478.183"
98
+ },
99
+ "platform": {
100
+ "name": "mac",
101
+ "version": "not-known"
102
+ }
78
103
  },
79
- "baseline": {
80
- "height": 768,
81
- "width": 1366
104
+ "commandName": "checkScreen",
105
+ "boundingBoxes": {
106
+ "diffBoundingBoxes": [
107
+ {
108
+ "left": 1088,
109
+ "top": 717,
110
+ "right": 1186,
111
+ "bottom": 730
112
+ }
113
+ //....
114
+ ],
115
+ "ignoredBoxes": [
116
+ {
117
+ "left": 159,
118
+ "top": 652,
119
+ "right": 356,
120
+ "bottom": 703
121
+ }
122
+ //...
123
+ ]
82
124
  },
83
- "diff": {
84
- "height": 768,
85
- "width": 1366
86
- }
87
- }
88
- },
89
- "misMatchPercentage": "12.90",
90
- "rawMisMatchPercentage": 12.900729014153246
91
- }
92
- ```
125
+ "fileData": {
126
+ "actualFilePath": "/Users/wswebcreation/Git/wdio/visual-testing/.tmp/actual/desktop_chrome-headless-shellexamplePageFail-local-chrome-latest-1366x768.png",
127
+ "baselineFilePath": "/Users/wswebcreation/Git/wdio/visual-testing/localBaseline/desktop_chrome-headless-shellexamplePageFail-local-chrome-latest-1366x768.png",
128
+ "diffFilePath": "/Users/wswebcreation/Git/wdio/visual-testing/.tmp/diff/desktop_chrome-headless-shell/examplePageFail-local-chrome-latest-1366x768png",
129
+ "fileName": "examplePageFail-local-chrome-latest-1366x768.png",
130
+ "size": {
131
+ "actual": {
132
+ "height": 768,
133
+ "width": 1366
134
+ },
135
+ "baseline": {
136
+ "height": 768,
137
+ "width": 1366
138
+ },
139
+ "diff": {
140
+ "height": 768,
141
+ "width": 1366
142
+ }
143
+ }
144
+ },
145
+ "misMatchPercentage": "12.90",
146
+ "rawMisMatchPercentage": 12.900729014153246
147
+ }
148
+ ```
93
149
 
94
- When all tests are executed, a new JSON file with the collection of the comparisons will be generated and can be found in the root of your actual folder. The data is grouped by:
150
+ When all tests are executed, a new JSON file with the collection of the comparisons will be generated and can be found in the root of your actual folder. The data is grouped by:
95
151
 
96
- - `describe` for Jasmine/Mocha or `Feature` for CucumberJS
97
- - `it` for Jasmine/Mocha or `Scenario` for CucumberJS
152
+ - `describe` for Jasmine/Mocha or `Feature` for CucumberJS
153
+ - `it` for Jasmine/Mocha or `Scenario` for CucumberJS
98
154
 
99
- and then sorted by:
155
+ and then sorted by:
100
156
 
101
- - `commandName`, which are the compare method names used to compare the images
102
- - `instanceData`, browser first, then device, then platform
157
+ - `commandName`, which are the compare method names used to compare the images
158
+ - `instanceData`, browser first, then device, then platform
103
159
 
104
- it will look like this
160
+ it will look like this
105
161
 
106
- ```json
107
- [
108
- {
109
- "description": "check methods",
110
- "data": [
162
+ ```json
163
+ [
111
164
  {
112
- "test": "should fail comparing with a baseline",
113
- "data": [
114
- {
115
- "tag": "examplePageFail",
116
- "instanceData": {},
117
- "commandName": "checkScreen",
118
- "framework": "mocha",
119
- "boundingBoxes": {
120
- "diffBoundingBoxes": [],
121
- "ignoredBoxes": []
122
- },
123
- "fileData": {},
124
- "misMatchPercentage": "14.34",
125
- "rawMisMatchPercentage": 14.335403703025868
126
- },
127
- {
128
- "tag": "exampleElementFail",
129
- "instanceData": {},
130
- "commandName": "checkElement",
131
- "framework": "mocha",
132
- "boundingBoxes": {
133
- "diffBoundingBoxes": [],
134
- "ignoredBoxes": []
135
- },
136
- "fileData": {},
137
- "misMatchPercentage": "1.34",
138
- "rawMisMatchPercentage": 1.335403703025868
139
- }
140
- ]
165
+ "description": "check methods",
166
+ "data": [
167
+ {
168
+ "test": "should fail comparing with a baseline",
169
+ "data": [
170
+ {
171
+ "tag": "examplePageFail",
172
+ "instanceData": {},
173
+ "commandName": "checkScreen",
174
+ "framework": "mocha",
175
+ "boundingBoxes": {
176
+ "diffBoundingBoxes": [],
177
+ "ignoredBoxes": []
178
+ },
179
+ "fileData": {},
180
+ "misMatchPercentage": "14.34",
181
+ "rawMisMatchPercentage": 14.335403703025868
182
+ },
183
+ {
184
+ "tag": "exampleElementFail",
185
+ "instanceData": {},
186
+ "commandName": "checkElement",
187
+ "framework": "mocha",
188
+ "boundingBoxes": {
189
+ "diffBoundingBoxes": [],
190
+ "ignoredBoxes": []
191
+ },
192
+ "fileData": {},
193
+ "misMatchPercentage": "1.34",
194
+ "rawMisMatchPercentage": 1.335403703025868
195
+ }
196
+ ]
197
+ }
198
+ ]
141
199
  }
142
- ]
143
- }
144
- ]
145
- ```
200
+ ]
201
+ ```
146
202
 
147
- The report data will give you the opportunity to build your own visual report without doing all the magic and data collection yourself.
203
+ The report data will give you the opportunity to build your own visual report without doing all the magic and data collection yourself.
148
204
 
149
- ### webdriver-image-comparison
205
+ ### webdriver-image-comparison
150
206
 
151
- #### 🚀 New Features
207
+ #### 🚀 New Features
152
208
 
153
- - Add support to generate single JSON report files
209
+ - Add support to generate single JSON report files
154
210
 
155
- ### @wdio/ocr-service
211
+ ### @wdio/ocr-service
156
212
 
157
- #### 💅 Polish
213
+ #### 💅 Polish
158
214
 
159
- - Refactored the CLI to use `@inquirer/prompts` instead of `inquirer`
215
+ - Refactored the CLI to use `@inquirer/prompts` instead of `inquirer`
160
216
 
161
- ### Committers: 1
217
+ ### Committers: 1
162
218
 
163
- - Wim Selles ([@wswebcreation](https://github.com/wswebcreation))
219
+ - Wim Selles ([@wswebcreation](https://github.com/wswebcreation))
164
220
 
165
- ```
221
+ ```
166
222
 
167
- ```
223
+ ```
168
224
 
169
225
  ### Patch Changes
170
226
 
171
- - Updated dependencies [0b01b64]
172
- - webdriver-image-comparison@6.1.0
227
+ - Updated dependencies [0b01b64]
228
+ - webdriver-image-comparison@6.1.0
173
229
 
174
230
  ## 5.1.1
175
231
 
176
232
  ### Patch Changes
177
233
 
178
- - 26c1a17: This release contains better support for Multiremote tests on the instances and global level, including better Native App support. This is related to issue https://github.com/webdriverio/visual-testing/issues/418 which is fixed by this release
234
+ - 26c1a17: This release contains better support for Multiremote tests on the instances and global level, including better Native App support. This is related to issue https://github.com/webdriverio/visual-testing/issues/418 which is fixed by this release
179
235
 
180
- # 💅 Polish
236
+ # 💅 Polish
181
237
 
182
- - cab1219: Update dependencies
183
- - 2583542 / 8b1f837: add new tests
184
- - eec29e1 / e2b2d38: update images
238
+ - cab1219: Update dependencies
239
+ - 2583542 / 8b1f837: add new tests
240
+ - eec29e1 / e2b2d38: update images
185
241
 
186
- # 🐛 Bug Fixes
242
+ # 🐛 Bug Fixes
187
243
 
188
- - 29f6f82 / 1ba9817: fix issue https://github.com/webdriverio/visual-testing/issues/418
244
+ - 29f6f82 / 1ba9817: fix issue https://github.com/webdriverio/visual-testing/issues/418
189
245
 
190
- # Committers: 1
246
+ # Committers: 1
191
247
 
192
- - Wim Selles ([@wswebcreation](https://github.com/wswebcreation))
248
+ - Wim Selles ([@wswebcreation](https://github.com/wswebcreation))
193
249
 
194
- - Updated dependencies [26c1a17]
195
- - webdriver-image-comparison@6.0.2
250
+ - Updated dependencies [26c1a17]
251
+ - webdriver-image-comparison@6.0.2
196
252
 
197
253
  ## 5.1.0
198
254
 
199
255
  ### Minor Changes
200
256
 
201
- - a0e29f2: Adding storybook interaction testing
202
-
203
- ### Storybook Interaction Testing
204
-
205
- Storybook Interaction Testing allows you to interact with your component by creating custom scripts with WDIO commands to set a component into a certain state. For example, see the code snippet below:
206
-
207
- ```ts
208
- import { browser, expect } from "@wdio/globals";
209
-
210
- describe("Storybook Interaction", () => {
211
- it("should create screenshots for the logged in state when it logs out", async () => {
212
- const componentId = "example-page--logged-in";
213
- await browser.waitForStorybookComponentToBeLoaded({
214
- id: componentId,
215
- });
216
-
217
- await expect($("header")).toMatchElementSnapshot(
218
- `${componentId}-logged-in-state`
219
- );
220
- await $("button=Log out").click();
221
- await expect($("header")).toMatchElementSnapshot(
222
- `${componentId}-logged-out-state`
223
- );
257
+ - a0e29f2: Adding storybook interaction testing
258
+
259
+ ### Storybook Interaction Testing
260
+
261
+ Storybook Interaction Testing allows you to interact with your component by creating custom scripts with WDIO commands to set a component into a certain state. For example, see the code snippet below:
262
+
263
+ ```ts
264
+ import { browser, expect } from "@wdio/globals";
265
+
266
+ describe("Storybook Interaction", () => {
267
+ it("should create screenshots for the logged in state when it logs out", async () => {
268
+ const componentId = "example-page--logged-in";
269
+ await browser.waitForStorybookComponentToBeLoaded({
270
+ id: componentId,
271
+ });
272
+
273
+ await expect($("header")).toMatchElementSnapshot(
274
+ `${componentId}-logged-in-state`
275
+ );
276
+ await $("button=Log out").click();
277
+ await expect($("header")).toMatchElementSnapshot(
278
+ `${componentId}-logged-out-state`
279
+ );
280
+ });
281
+
282
+ it("should create screenshots for the logged out state when it logs in", async () => {
283
+ const componentId = "example-page--logged-out";
284
+ await browser.waitForStorybookComponentToBeLoaded({
285
+ id: componentId,
286
+ });
287
+
288
+ await expect($("header")).toMatchElementSnapshot(
289
+ `${componentId}-logged-out-state`
290
+ );
291
+ await $("button=Log in").click();
292
+ await expect($("header")).toMatchElementSnapshot(
293
+ `${componentId}-logged-in-state`
294
+ );
295
+ });
224
296
  });
225
-
226
- it("should create screenshots for the logged out state when it logs in", async () => {
227
- const componentId = "example-page--logged-out";
228
- await browser.waitForStorybookComponentToBeLoaded({
229
- id: componentId,
230
- });
231
-
232
- await expect($("header")).toMatchElementSnapshot(
233
- `${componentId}-logged-out-state`
234
- );
235
- await $("button=Log in").click();
236
- await expect($("header")).toMatchElementSnapshot(
237
- `${componentId}-logged-in-state`
238
- );
297
+ ```
298
+
299
+ Two tests on two different components are executed. Each test first sets a state and then takes a screenshot. You will also notice that a new custom command has been introduced, which can be found [here](#new-custom-command).
300
+
301
+ The above spec file can be saved in a folder and added to the command line with the following command:
302
+
303
+ ```sh
304
+ npm run test.local.desktop.storybook.localhost -- --spec='tests/specs/storybook-interaction/*.ts'
305
+ ```
306
+
307
+ The Storybook runner will first automatically scan your Storybook instance and then add your tests to the stories that need to be compared. If you don't want the components that you use for interaction testing to be compared twice, you can add a filter to remove the "default" stories from the scan by providing the [`--skipStories`](#--skipstories) filter. This would look like this:
308
+
309
+ ```sh
310
+ npm run test.local.desktop.storybook.localhost -- --skipStories="/example-page.*/gm" --spec='tests/specs/storybook-interaction/*.ts'
311
+ ```
312
+
313
+ ### New Custom Command
314
+
315
+ A new custom command called `browser.waitForStorybookComponentToBeLoaded({ id: 'componentId' })` will be added to the `browser/driver`-object that will automatically load the component and wait for it to be done, so you don't need to use the `browser.url('url.com')` method. It can be used like this
316
+
317
+ ```ts
318
+ import { browser, expect } from "@wdio/globals";
319
+
320
+ describe("Storybook Interaction", () => {
321
+ it("should create screenshots for the logged in state when it logs out", async () => {
322
+ const componentId = "example-page--logged-in";
323
+ await browser.waitForStorybookComponentToBeLoaded({
324
+ id: componentId,
325
+ });
326
+
327
+ await expect($("header")).toMatchElementSnapshot(
328
+ `${componentId}-logged-in-state`
329
+ );
330
+ await $("button=Log out").click();
331
+ await expect($("header")).toMatchElementSnapshot(
332
+ `${componentId}-logged-out-state`
333
+ );
334
+ });
335
+
336
+ it("should create screenshots for the logged out state when it logs in", async () => {
337
+ const componentId = "example-page--logged-out";
338
+ await browser.waitForStorybookComponentToBeLoaded({
339
+ id: componentId,
340
+ });
341
+
342
+ await expect($("header")).toMatchElementSnapshot(
343
+ `${componentId}-logged-out-state`
344
+ );
345
+ await $("button=Log in").click();
346
+ await expect($("header")).toMatchElementSnapshot(
347
+ `${componentId}-logged-in-state`
348
+ );
349
+ });
239
350
  });
240
- });
241
- ```
242
-
243
- Two tests on two different components are executed. Each test first sets a state and then takes a screenshot. You will also notice that a new custom command has been introduced, which can be found [here](#new-custom-command).
244
-
245
- The above spec file can be saved in a folder and added to the command line with the following command:
246
-
247
- ```sh
248
- npm run test.local.desktop.storybook.localhost -- --spec='tests/specs/storybook-interaction/*.ts'
249
- ```
250
-
251
- The Storybook runner will first automatically scan your Storybook instance and then add your tests to the stories that need to be compared. If you don't want the components that you use for interaction testing to be compared twice, you can add a filter to remove the "default" stories from the scan by providing the [`--skipStories`](#--skipstories) filter. This would look like this:
252
-
253
- ```sh
254
- npm run test.local.desktop.storybook.localhost -- --skipStories="/example-page.*/gm" --spec='tests/specs/storybook-interaction/*.ts'
255
- ```
256
-
257
- ### New Custom Command
351
+ ```
258
352
 
259
- A new custom command called `browser.waitForStorybookComponentToBeLoaded({ id: 'componentId' })` will be added to the `browser/driver`-object that will automatically load the component and wait for it to be done, so you don't need to use the `browser.url('url.com')` method. It can be used like this
353
+ The options are:
260
354
 
261
- ```ts
262
- import { browser, expect } from "@wdio/globals";
355
+ #### `clipSelector`
263
356
 
264
- describe("Storybook Interaction", () => {
265
- it("should create screenshots for the logged in state when it logs out", async () => {
266
- const componentId = "example-page--logged-in";
267
- await browser.waitForStorybookComponentToBeLoaded({
268
- id: componentId,
269
- });
357
+ - **Type:** `string`
358
+ - **Mandatory:** No
359
+ - **Default:** `#storybook-root > :first-child` for Storybook V7 and `#root > :first-child:not(script):not(style)` for Storybook V6
360
+ - **Example:**
270
361
 
271
- await expect($("header")).toMatchElementSnapshot(
272
- `${componentId}-logged-in-state`
273
- );
274
- await $("button=Log out").click();
275
- await expect($("header")).toMatchElementSnapshot(
276
- `${componentId}-logged-out-state`
277
- );
362
+ ```ts
363
+ await browser.waitForStorybookComponentToBeLoaded({
364
+ clipSelector: "#your-selector",
365
+ id: "componentId",
278
366
  });
367
+ ```
279
368
 
280
- it("should create screenshots for the logged out state when it logs in", async () => {
281
- const componentId = "example-page--logged-out";
282
- await browser.waitForStorybookComponentToBeLoaded({
283
- id: componentId,
284
- });
285
-
286
- await expect($("header")).toMatchElementSnapshot(
287
- `${componentId}-logged-out-state`
288
- );
289
- await $("button=Log in").click();
290
- await expect($("header")).toMatchElementSnapshot(
291
- `${componentId}-logged-in-state`
292
- );
293
- });
294
- });
295
- ```
296
-
297
- The options are:
298
-
299
- #### `clipSelector`
300
-
301
- - **Type:** `string`
302
- - **Mandatory:** No
303
- - **Default:** `#storybook-root > :first-child` for Storybook V7 and `#root > :first-child:not(script):not(style)` for Storybook V6
304
- - **Example:**
369
+ This is the selector that will be used:
305
370
 
306
- ```ts
307
- await browser.waitForStorybookComponentToBeLoaded({
308
- clipSelector: "#your-selector",
309
- id: "componentId",
310
- });
311
- ```
371
+ - to select the element to take the screenshot of
372
+ - for the element to wait to be visible before a screenshot is taken
312
373
 
313
- This is the selector that will be used:
374
+ #### `id`
314
375
 
315
- - to select the element to take the screenshot of
316
- - for the element to wait to be visible before a screenshot is taken
376
+ - **Type:** `string`
377
+ - **Mandatory:** yes
378
+ - **Example:**
317
379
 
318
- #### `id`
380
+ ```ts
381
+ await browser.waitForStorybookComponentToBeLoaded({ '#your-selector', id: 'componentId' })
382
+ ```
319
383
 
320
- - **Type:** `string`
321
- - **Mandatory:** yes
322
- - **Example:**
384
+ Use the `id` of the story that can be found in the URL of the story. For example, the `id` in this URL `http://localhost:6006/?path=/story/example-page--logged-out` is `example-page--logged-out`
323
385
 
324
- ```ts
325
- await browser.waitForStorybookComponentToBeLoaded({ '#your-selector', id: 'componentId' })
326
- ```
386
+ #### `timeout`
327
387
 
328
- Use the `id` of the story that can be found in the URL of the story. For example, the `id` in this URL `http://localhost:6006/?path=/story/example-page--logged-out` is `example-page--logged-out`
388
+ - **Type:** `number`
389
+ - **Mandatory:** No
390
+ - **Default:** 1100 milliseconds
391
+ - **Example:**
329
392
 
330
- #### `timeout`
331
-
332
- - **Type:** `number`
333
- - **Mandatory:** No
334
- - **Default:** 1100 milliseconds
335
- - **Example:**
336
-
337
- ```ts
338
- await browser.waitForStorybookComponentToBeLoaded({
339
- id: "componentId",
340
- timeout: 20000,
341
- });
342
- ```
393
+ ```ts
394
+ await browser.waitForStorybookComponentToBeLoaded({
395
+ id: "componentId",
396
+ timeout: 20000,
397
+ });
398
+ ```
343
399
 
344
- The max timeout we want to wait for a component to be visible after loading on the page
400
+ The max timeout we want to wait for a component to be visible after loading on the page
345
401
 
346
- #### `url`
402
+ #### `url`
347
403
 
348
- - **Type:** `string`
349
- - **Mandatory:** No
350
- - **Default:** `http://127.0.0.1:6006`
351
- - **Example:**
404
+ - **Type:** `string`
405
+ - **Mandatory:** No
406
+ - **Default:** `http://127.0.0.1:6006`
407
+ - **Example:**
352
408
 
353
- ```ts
354
- await browser.waitForStorybookComponentToBeLoaded({
355
- id: "componentId",
356
- url: "https://your.url",
357
- });
358
- ```
409
+ ```ts
410
+ await browser.waitForStorybookComponentToBeLoaded({
411
+ id: "componentId",
412
+ url: "https://your.url",
413
+ });
414
+ ```
359
415
 
360
- The URL where your Storybook instance is hosted.
416
+ The URL where your Storybook instance is hosted.
361
417
 
362
418
  ## 5.0.1
363
419
 
364
420
  ### Patch Changes
365
421
 
366
- - 169b7c5: fix(webdriver-image-comparison): export WicElement
367
- - Updated dependencies [169b7c5]
368
- - webdriver-image-comparison@6.0.1
422
+ - 169b7c5: fix(webdriver-image-comparison): export WicElement
423
+ - Updated dependencies [169b7c5]
424
+ - webdriver-image-comparison@6.0.1
369
425
 
370
426
  ## 5.0.0
371
427
 
372
428
  ### Major Changes
373
429
 
374
- - 66b9f11: # 💥 Breaking
430
+ - 66b9f11: # 💥 Breaking
375
431
 
376
- This PR replaces Canvas as a dependency with Jimp. This removes the need to use system dependencies and will reduce the number of system dependency errors/issues (node-gyp/canvas and so on). This will, in the end, make the life of our end users way easier due to:
432
+ This PR replaces Canvas as a dependency with Jimp. This removes the need to use system dependencies and will reduce the number of system dependency errors/issues (node-gyp/canvas and so on). This will, in the end, make the life of our end users way easier due to:
377
433
 
378
- - less errors
379
- - less complex test environments
434
+ - less errors
435
+ - less complex test environments
380
436
 
381
- > [!note]
382
- > Extensive research has been done and we have chosen to "fork" ResembleJS, adjust it by making use of Jimp instead of Canvas and break the browser API because the fork will only be used in a nodejs environment
383
- > Investigation showed that creating a wrapper would even make it slower, so we went for the breaking change in the API by just replacing Canvas with Jimp
437
+ > [!note]
438
+ > Extensive research has been done and we have chosen to "fork" ResembleJS, adjust it by making use of Jimp instead of Canvas and break the browser API because the fork will only be used in a nodejs environment
439
+ > Investigation showed that creating a wrapper would even make it slower, so we went for the breaking change in the API by just replacing Canvas with Jimp
384
440
 
385
- > [!important]
386
- > There is a performance impact where Canvas is around 70% faster than Jimp. This has been measured without using WebdriverIO and only comparing images. When the "old" implementation with WebdriverIO combined with Canvas or Jimp is compared, we hardly see a performance impact.
441
+ > [!important]
442
+ > There is a performance impact where Canvas is around 70% faster than Jimp. This has been measured without using WebdriverIO and only comparing images. When the "old" implementation with WebdriverIO combined with Canvas or Jimp is compared, we hardly see a performance impact.
387
443
 
388
- # 🚀 New Features
444
+ # 🚀 New Features
389
445
 
390
- Update the baseline images through the command line by adding the argument `--update-visual-baseline`. This will
446
+ Update the baseline images through the command line by adding the argument `--update-visual-baseline`. This will
391
447
 
392
- - automatically copy the actual take screenshot and put it in the baseline folder
393
- - if there are differences it will let the test pass because the baseline has been updated
448
+ - automatically copy the actual take screenshot and put it in the baseline folder
449
+ - if there are differences it will let the test pass because the baseline has been updated
394
450
 
395
- **Usage:**
451
+ **Usage:**
396
452
 
397
- ```sh
398
- npm run test.local.desktop --update-visual-baseline
399
- ```
453
+ ```sh
454
+ npm run test.local.desktop --update-visual-baseline
455
+ ```
400
456
 
401
- When running logs info/debug mode you will see the following logs added
457
+ When running logs info/debug mode you will see the following logs added
402
458
 
403
- ```logs
404
- [0-0] ..............
405
- [0-0] #####################################################################################
406
- [0-0] INFO:
407
- [0-0] Updated the actual image to
408
- [0-0] /Users/wswebcreation/Git/wdio/visual-testing/localBaseline/chromel/demo-chrome-1366x768.png
409
- [0-0] #####################################################################################
410
- [0-0] ..........
411
- ```
459
+ ```logs
460
+ [0-0] ..............
461
+ [0-0] #####################################################################################
462
+ [0-0] INFO:
463
+ [0-0] Updated the actual image to
464
+ [0-0] /Users/wswebcreation/Git/wdio/visual-testing/localBaseline/chromel/demo-chrome-1366x768.png
465
+ [0-0] #####################################################################################
466
+ [0-0] ..........
467
+ ```
412
468
 
413
- # 💅 Polish
469
+ # 💅 Polish
414
470
 
415
- - remove Vitest fix
416
- - add app images
417
- - update the build
471
+ - remove Vitest fix
472
+ - add app images
473
+ - update the build
418
474
 
419
475
  ### Patch Changes
420
476
 
421
- - Updated dependencies [66b9f11]
422
- - webdriver-image-comparison@6.0.0
477
+ - Updated dependencies [66b9f11]
478
+ - webdriver-image-comparison@6.0.0
423
479
 
424
480
  ## 4.1.3
425
481
 
@@ -427,301 +483,301 @@
427
483
 
428
484
  # 🐛 Bug Fixes
429
485
 
430
- - Fixes https://github.com/webdriverio/visual-testing/issues/286
431
- - Fixes https://github.com/webdriverio/visual-testing/issues/333
486
+ - Fixes https://github.com/webdriverio/visual-testing/issues/286
487
+ - Fixes https://github.com/webdriverio/visual-testing/issues/333
432
488
 
433
489
  ## 4.1.2
434
490
 
435
491
  ### Patch Changes
436
492
 
437
- - 7713c13: Fix beforeTest incl types
493
+ - 7713c13: Fix beforeTest incl types
438
494
 
439
495
  ## 4.1.1
440
496
 
441
497
  ### Patch Changes
442
498
 
443
- - 4dcfeea: add missing dependency and update deps
499
+ - 4dcfeea: add missing dependency and update deps
444
500
 
445
501
  ## 4.1.0
446
502
 
447
503
  ### Minor Changes
448
504
 
449
- - c9fab82: change console.log to wdio logger
505
+ - c9fab82: change console.log to wdio logger
450
506
 
451
507
  ### Patch Changes
452
508
 
453
- - Updated dependencies [c9fab82]
454
- - webdriver-image-comparison@5.1.0
509
+ - Updated dependencies [c9fab82]
510
+ - webdriver-image-comparison@5.1.0
455
511
 
456
512
  ## 4.0.2
457
513
 
458
514
  ### Patch Changes
459
515
 
460
- - f878cab: # 🚀 Feature
516
+ - f878cab: # 🚀 Feature
461
517
 
462
- - Add device support for Storybook, it can be used like this
518
+ - Add device support for Storybook, it can be used like this
463
519
 
464
- ```sh
465
- npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --devices="iPhone 14 Pro Max","Pixel 3 XL"
466
- ```
520
+ ```sh
521
+ npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --devices="iPhone 14 Pro Max","Pixel 3 XL"
522
+ ```
467
523
 
468
- #### Committers: 1
524
+ #### Committers: 1
469
525
 
470
- - Wim Selles ([@wswebcreation](https://github.com/wswebcreation))
526
+ - Wim Selles ([@wswebcreation](https://github.com/wswebcreation))
471
527
 
472
- - Updated dependencies [f878cab]
473
- - webdriver-image-comparison@5.0.1
528
+ - Updated dependencies [f878cab]
529
+ - webdriver-image-comparison@5.0.1
474
530
 
475
531
  ## 4.0.1
476
532
 
477
533
  ### Patch Changes
478
534
 
479
- - bb4ece7: Fix storybook filtering
535
+ - bb4ece7: Fix storybook filtering
480
536
 
481
537
  ## 4.0.0
482
538
 
483
539
  ### Major Changes
484
540
 
485
- - b717d9a: # 💥 Breaking changes
486
-
487
- - the new element screenshot is producing "smaller" screenshots on certain Android OS versions (not all), but it's more "accurate" so we accept this
488
-
489
- # 🚀 New Features
490
-
491
- ## Add StoryBook📖 support
492
-
493
- Automatically scan local/remote storybook instances to create element screenshots of each component by adding
494
-
495
- ```ts
496
- export const config: WebdriverIO.Config = {
497
- // ...
498
- services: ["visual"],
499
- // ....
500
- };
501
- ```
502
-
503
- to your `services` and running `npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook` through the command line.
504
- It will automatically use Chrome. The following options can be provided through the command line
505
-
506
- - `--headless`, defaults to `true`
507
- - `--numShards {number}`, this will be the amount of parallel instances that will be used to run the stories. This will be limited by the `maxInstances` in your `wdio.conf`-file. When running in `headless`-mode then do not increase the number to more than 20 to prevent flakiness
508
- - `--clip {boolean}`, try to take an element instead of a viewport screenshot, defaults to `true`
509
- - `--clipSelector {string}`, this is the selector that will be used to:
510
-
511
- - select the element to take the screenshot of
512
- - the element to wait for to be visible before a screenshot is taken
513
-
514
- defaults to `#storybook-root > :first-child` for V7 and `#root > :first-child:not(script):not(style)` for V6
515
-
516
- - `--version`, the version of storybook, defaults to 7. This is needed to know if the V6 `clipSelector` needs to be used.
517
- - `--browsers {edge,chrome,safari,firefox}`, defaults to Chrome
518
- - `--skipStories`, this can be:
519
- - a string (`example-button--secondary,example-button--small`)
520
- - or a regex (`"/.*button.*/gm"`) to skip certain stories
521
-
522
- You can also provide service options
523
-
524
- ```ts
525
- export const config: WebdriverIO.Config = {
526
- // ...
527
- services: [
528
- [
529
- 'visual',
530
- {
531
- // Some default options
532
- baselineFolder: join(process.cwd(), './__snapshots__/'),
533
- debug: true,
534
- // The storybook options
535
- storybook: {
536
- clip: false,
537
- clipSelector: ''#some-id,
538
- numShards: 4,
539
- skipStories: ['example-button--secondary', 'example-button--small'],
540
- url: 'https://www.bbc.co.uk/iplayer/storybook/',
541
- version: 6,
542
- },
543
- },
541
+ - b717d9a: # 💥 Breaking changes
542
+
543
+ - the new element screenshot is producing "smaller" screenshots on certain Android OS versions (not all), but it's more "accurate" so we accept this
544
+
545
+ # 🚀 New Features
546
+
547
+ ## Add StoryBook📖 support
548
+
549
+ Automatically scan local/remote storybook instances to create element screenshots of each component by adding
550
+
551
+ ```ts
552
+ export const config: WebdriverIO.Config = {
553
+ // ...
554
+ services: ["visual"],
555
+ // ....
556
+ };
557
+ ```
558
+
559
+ to your `services` and running `npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook` through the command line.
560
+ It will automatically use Chrome. The following options can be provided through the command line
561
+
562
+ - `--headless`, defaults to `true`
563
+ - `--numShards {number}`, this will be the amount of parallel instances that will be used to run the stories. This will be limited by the `maxInstances` in your `wdio.conf`-file. When running in `headless`-mode then do not increase the number to more than 20 to prevent flakiness
564
+ - `--clip {boolean}`, try to take an element instead of a viewport screenshot, defaults to `true`
565
+ - `--clipSelector {string}`, this is the selector that will be used to:
566
+
567
+ - select the element to take the screenshot of
568
+ - the element to wait for to be visible before a screenshot is taken
569
+
570
+ defaults to `#storybook-root > :first-child` for V7 and `#root > :first-child:not(script):not(style)` for V6
571
+
572
+ - `--version`, the version of storybook, defaults to 7. This is needed to know if the V6 `clipSelector` needs to be used.
573
+ - `--browsers {edge,chrome,safari,firefox}`, defaults to Chrome
574
+ - `--skipStories`, this can be:
575
+ - a string (`example-button--secondary,example-button--small`)
576
+ - or a regex (`"/.*button.*/gm"`) to skip certain stories
577
+
578
+ You can also provide service options
579
+
580
+ ```ts
581
+ export const config: WebdriverIO.Config = {
582
+ // ...
583
+ services: [
584
+ [
585
+ 'visual',
586
+ {
587
+ // Some default options
588
+ baselineFolder: join(process.cwd(), './__snapshots__/'),
589
+ debug: true,
590
+ // The storybook options
591
+ storybook: {
592
+ clip: false,
593
+ clipSelector: ''#some-id,
594
+ numShards: 4,
595
+ skipStories: ['example-button--secondary', 'example-button--small'],
596
+ url: 'https://www.bbc.co.uk/iplayer/storybook/',
597
+ version: 6,
598
+ },
599
+ },
600
+ ],
544
601
  ],
545
- ],
546
- // ....
547
- }
548
- ```
602
+ // ....
603
+ }
604
+ ```
549
605
 
550
- The baseline images will be stored in the following structure:
606
+ The baseline images will be stored in the following structure:
551
607
 
552
- ```log
553
- {projectRoot}
554
- |_`__snapshots__`
555
- |_`{category}`
556
- |_`{componentName}`
557
- |_{browserName}
558
- |_`{{component-id}-element-{browser}-{resolution}-dpr-{dprValue}}.png`
559
- ```
608
+ ```log
609
+ {projectRoot}
610
+ |_`__snapshots__`
611
+ |_`{category}`
612
+ |_`{componentName}`
613
+ |_{browserName}
614
+ |_`{{component-id}-element-{browser}-{resolution}-dpr-{dprValue}}.png`
615
+ ```
560
616
 
561
- which will look like this
617
+ which will look like this
562
618
 
563
- ![image](https://github.com/webdriverio/visual-testing/assets/11979740/7c41a8b4-2498-4e85-be11-cb1ec601b760)
619
+ ![image](https://github.com/webdriverio/visual-testing/assets/11979740/7c41a8b4-2498-4e85-be11-cb1ec601b760)
564
620
 
565
- > [!NOTE]
566
- > Storybook 6.5 or higher is supported
621
+ > [!NOTE]
622
+ > Storybook 6.5 or higher is supported
567
623
 
568
- # 💅 Polish
624
+ # 💅 Polish
569
625
 
570
- - `hideScrollBars` is disabled by default when using the Storybook runner
571
- - By default, all element screenshots in the browser, except for iOS, will use the native method to take element screenshots. This will make taking an element screenshot more than 5% faster. If it fails it will fall back to the "viewport" screenshot and create a cropped element screenshot.
572
- - Taking an element screenshot becomes 70% faster due to removing the fixed scroll delay of 500ms and changing the default scrolling behaviour to an instant scroll
573
- - refactor web element screenshots and update the screenshots
574
- - added more UTs to increase the coverage
626
+ - `hideScrollBars` is disabled by default when using the Storybook runner
627
+ - By default, all element screenshots in the browser, except for iOS, will use the native method to take element screenshots. This will make taking an element screenshot more than 5% faster. If it fails it will fall back to the "viewport" screenshot and create a cropped element screenshot.
628
+ - Taking an element screenshot becomes 70% faster due to removing the fixed scroll delay of 500ms and changing the default scrolling behaviour to an instant scroll
629
+ - refactor web element screenshots and update the screenshots
630
+ - added more UTs to increase the coverage
575
631
 
576
- # 🐛 Bug Fixes
632
+ # 🐛 Bug Fixes
577
633
 
578
- - When the element has no height or width, we default to the viewport screen size to prevent not cropping any screenshot. An error like below will be logged in red
634
+ - When the element has no height or width, we default to the viewport screen size to prevent not cropping any screenshot. An error like below will be logged in red
579
635
 
580
- ```logs
636
+ ```logs
581
637
 
582
- The element has no width or height. We defaulted to the viewport screen size of width: ${width} and height: ${height}.
638
+ The element has no width or height. We defaulted to the viewport screen size of width: ${width} and height: ${height}.
583
639
 
584
- ```
640
+ ```
585
641
 
586
- - There were cases where element screenshots were automatically rotated which was not intended
642
+ - There were cases where element screenshots were automatically rotated which was not intended
587
643
 
588
644
  ### Patch Changes
589
645
 
590
- - Updated dependencies [b717d9a]
591
- - webdriver-image-comparison@5.0.0
646
+ - Updated dependencies [b717d9a]
647
+ - webdriver-image-comparison@5.0.0
592
648
 
593
649
  ## 3.1.0
594
650
 
595
651
  ### Minor Changes
596
652
 
597
- - 43ed502: Add font loading features:
598
- - add `waitForFontsLoaded` so the module automatically waits for all fonts to be loaded, enabled by default
599
- - add `enableLayoutTesting` so all text will become transparent so
600
- - font rendering issues won't cause flakiness
601
- - image comparison can be done on layout
653
+ - 43ed502: Add font loading features:
654
+ - add `waitForFontsLoaded` so the module automatically waits for all fonts to be loaded, enabled by default
655
+ - add `enableLayoutTesting` so all text will become transparent so
656
+ - font rendering issues won't cause flakiness
657
+ - image comparison can be done on layout
602
658
 
603
659
  ### Patch Changes
604
660
 
605
- - Updated dependencies [43ed502]
606
- - webdriver-image-comparison@4.1.0
661
+ - Updated dependencies [43ed502]
662
+ - webdriver-image-comparison@4.1.0
607
663
 
608
664
  ## 3.0.2
609
665
 
610
666
  ### Patch Changes
611
667
 
612
- - 14b6ae6: Support BS real device names
613
- Fix hide/remove elements
668
+ - 14b6ae6: Support BS real device names
669
+ Fix hide/remove elements
614
670
 
615
671
  ## 3.0.1
616
672
 
617
673
  ### Patch Changes
618
674
 
619
- - c8fdcd3: Fix to override visibility/display value
620
- - Updated dependencies [c8fdcd3]
621
- - webdriver-image-comparison@4.0.2
675
+ - c8fdcd3: Fix to override visibility/display value
676
+ - Updated dependencies [c8fdcd3]
677
+ - webdriver-image-comparison@4.0.2
622
678
 
623
679
  ## 3.0.0
624
680
 
625
681
  ### Major Changes
626
682
 
627
- - fd74a35: (feat): set default baseline folder next to test file
683
+ - fd74a35: (feat): set default baseline folder next to test file
628
684
 
629
685
  ### Patch Changes
630
686
 
631
- - e93a878: fix default snapshot path to be overwritten through method/service options
632
- - Updated dependencies [fd74a35]
633
- - webdriver-image-comparison@4.0.1
687
+ - e93a878: fix default snapshot path to be overwritten through method/service options
688
+ - Updated dependencies [fd74a35]
689
+ - webdriver-image-comparison@4.0.1
634
690
 
635
691
  ## 2.0.0
636
692
 
637
693
  ### Major Changes
638
694
 
639
- - ef386b6: # 💥 Breaking changes:
695
+ - ef386b6: # 💥 Breaking changes:
640
696
 
641
- - `resizeDimensions` on the element can now only be an object, it has been deprecated for a while
697
+ - `resizeDimensions` on the element can now only be an object, it has been deprecated for a while
642
698
 
643
- # 💅 New Features
699
+ # 💅 New Features
644
700
 
645
- - Next to supporting Web snapshot testing this module now also supports 💥 **Native App** 💥 snapshot testing. The methods `saveElement|checkElement | saveScreen | checkScreen` and the matchers `toMatchElementSnapshot | toMatchScreenSnapshot` are available for **Native Apps**
701
+ - Next to supporting Web snapshot testing this module now also supports 💥 **Native App** 💥 snapshot testing. The methods `saveElement|checkElement | saveScreen | checkScreen` and the matchers `toMatchElementSnapshot | toMatchScreenSnapshot` are available for **Native Apps**
646
702
 
647
- > [!NOTE]
648
- > This module will automatically detect the context (web | webview | native_app) and will handle all complex logic for you
703
+ > [!NOTE]
704
+ > This module will automatically detect the context (web | webview | native_app) and will handle all complex logic for you
649
705
 
650
- The methods `saveFullPageScreen | checkFullPageScreen | saveTabbablePage|checkTabbablePage` will throw an error when they are used in the native context for native mobile apps and will look like this
706
+ The methods `saveFullPageScreen | checkFullPageScreen | saveTabbablePage|checkTabbablePage` will throw an error when they are used in the native context for native mobile apps and will look like this
651
707
 
652
- ```logs
653
- $ wdio tests/configs/wdio.local.android.emus.app.conf.ts
708
+ ```logs
709
+ $ wdio tests/configs/wdio.local.android.emus.app.conf.ts
654
710
 
655
- Execution of 1 workers started at 2024-01-30T06:18:24.865Z
711
+ Execution of 1 workers started at 2024-01-30T06:18:24.865Z
656
712
 
657
- [0-0] RUNNING in Android - file:///tests/specs/mobile.app.spec.ts
658
- [0-0] Error in "@wdio/visual-service mobile app.should compare a screen successful for 'Pixel_7_Pro_Android_14_API_34' in PORTRAIT-mode"
659
- Error: The method saveFullPageScreen is not supported in native context for native mobile apps!
660
- at /wdio/visual-testing/packages/webdriver-image-comparison/src/commands/saveFullPageScreen.ts:26:15
661
- at step (/wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:33:23)
662
- at Object.next (/wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:14:53)
663
- at /wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:8:71
664
- at new Promise (<anonymous>)
665
- at __awaiter (/wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:4:12)
666
- at saveFullPageScreen (/wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:47:12)
667
- at Browser.<anonymous> (file:///wdio/visual-testing/packages/service/dist/service.js:101:24)
668
- [0-0] FAILED in Android - file:///tests/specs/mobile.app.spec.ts
713
+ [0-0] RUNNING in Android - file:///tests/specs/mobile.app.spec.ts
714
+ [0-0] Error in "@wdio/visual-service mobile app.should compare a screen successful for 'Pixel_7_Pro_Android_14_API_34' in PORTRAIT-mode"
715
+ Error: The method saveFullPageScreen is not supported in native context for native mobile apps!
716
+ at /wdio/visual-testing/packages/webdriver-image-comparison/src/commands/saveFullPageScreen.ts:26:15
717
+ at step (/wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:33:23)
718
+ at Object.next (/wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:14:53)
719
+ at /wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:8:71
720
+ at new Promise (<anonymous>)
721
+ at __awaiter (/wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:4:12)
722
+ at saveFullPageScreen (/wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:47:12)
723
+ at Browser.<anonymous> (file:///wdio/visual-testing/packages/service/dist/service.js:101:24)
724
+ [0-0] FAILED in Android - file:///tests/specs/mobile.app.spec.ts
669
725
 
670
- "spec" Reporter:
671
- ------------------------------------------------------------------
672
- [/wdio/visual-testing/apps/app.apk Android #0-0] Running: /wdio/visual-testing/apps/app.apk on Android
673
- [/wdio/visual-testing/apps/app.apk Android #0-0] Session ID: c1101184-e3d5-42b5-a31f-8ebaa211f1a1
674
- [/wdio/visual-testing/apps/app.apk Android #0-0]
675
- [/wdio/visual-testing/apps/app.apk Android #0-0] » /tests/specs/mobile.app.spec.ts
676
- [/wdio/visual-testing/apps/app.apk Android #0-0] @wdio/visual-service mobile app
677
- [/wdio/visual-testing/apps/app.apk Android #0-0] ✖ should compare a screen successful for 'Pixel_7_Pro_Android_14_API_34' in PORTRAIT-mode
678
- [/wdio/visual-testing/apps/app.apk Android #0-0]
679
- [/wdio/visual-testing/apps/app.apk Android #0-0] 1 failing (1.5s)
680
- [/wdio/visual-testing/apps/app.apk Android #0-0]
681
- [/wdio/visual-testing/apps/app.apk Android #0-0] 1) @wdio/visual-service mobile app should compare a screen successful for 'Pixel_7_Pro_Android_14_API_34' in PORTRAIT-mode
682
- [/wdio/visual-testing/apps/app.apk Android #0-0] The method saveFullPageScreen is not supported in native context for native mobile apps!
683
- [/wdio/visual-testing/apps/app.apk Android #0-0] Error: The method saveFullPageScreen is not supported in native context for native mobile apps!
684
- [/wdio/visual-testing/apps/app.apk Android #0-0] at /wdio/visual-testing/packages/webdriver-image-comparison/src/commands/saveFullPageScreen.ts:26:15
685
- [/wdio/visual-testing/apps/app.apk Android #0-0] at step (/wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:33:23)
686
- [/wdio/visual-testing/apps/app.apk Android #0-0] at Object.next (/wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:14:53)
687
- [/wdio/visual-testing/apps/app.apk Android #0-0] at /wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:8:71
688
- [/wdio/visual-testing/apps/app.apk Android #0-0] at new Promise (<anonymous>)
689
- [/wdio/visual-testing/apps/app.apk Android #0-0] at __awaiter (/wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:4:12)
690
- [/wdio/visual-testing/apps/app.apk Android #0-0] at saveFullPageScreen (/wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:47:12)
691
- [/wdio/visual-testing/apps/app.apk Android #0-0] at Browser.<anonymous> (file:///wdio/visual-testing/packages/service/dist/service.js:101:24)
726
+ "spec" Reporter:
727
+ ------------------------------------------------------------------
728
+ [/wdio/visual-testing/apps/app.apk Android #0-0] Running: /wdio/visual-testing/apps/app.apk on Android
729
+ [/wdio/visual-testing/apps/app.apk Android #0-0] Session ID: c1101184-e3d5-42b5-a31f-8ebaa211f1a1
730
+ [/wdio/visual-testing/apps/app.apk Android #0-0]
731
+ [/wdio/visual-testing/apps/app.apk Android #0-0] » /tests/specs/mobile.app.spec.ts
732
+ [/wdio/visual-testing/apps/app.apk Android #0-0] @wdio/visual-service mobile app
733
+ [/wdio/visual-testing/apps/app.apk Android #0-0] ✖ should compare a screen successful for 'Pixel_7_Pro_Android_14_API_34' in PORTRAIT-mode
734
+ [/wdio/visual-testing/apps/app.apk Android #0-0]
735
+ [/wdio/visual-testing/apps/app.apk Android #0-0] 1 failing (1.5s)
736
+ [/wdio/visual-testing/apps/app.apk Android #0-0]
737
+ [/wdio/visual-testing/apps/app.apk Android #0-0] 1) @wdio/visual-service mobile app should compare a screen successful for 'Pixel_7_Pro_Android_14_API_34' in PORTRAIT-mode
738
+ [/wdio/visual-testing/apps/app.apk Android #0-0] The method saveFullPageScreen is not supported in native context for native mobile apps!
739
+ [/wdio/visual-testing/apps/app.apk Android #0-0] Error: The method saveFullPageScreen is not supported in native context for native mobile apps!
740
+ [/wdio/visual-testing/apps/app.apk Android #0-0] at /wdio/visual-testing/packages/webdriver-image-comparison/src/commands/saveFullPageScreen.ts:26:15
741
+ [/wdio/visual-testing/apps/app.apk Android #0-0] at step (/wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:33:23)
742
+ [/wdio/visual-testing/apps/app.apk Android #0-0] at Object.next (/wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:14:53)
743
+ [/wdio/visual-testing/apps/app.apk Android #0-0] at /wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:8:71
744
+ [/wdio/visual-testing/apps/app.apk Android #0-0] at new Promise (<anonymous>)
745
+ [/wdio/visual-testing/apps/app.apk Android #0-0] at __awaiter (/wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:4:12)
746
+ [/wdio/visual-testing/apps/app.apk Android #0-0] at saveFullPageScreen (/wdio/visual-testing/packages/webdriver-image-comparison/dist/commands/saveFullPageScreen.js:47:12)
747
+ [/wdio/visual-testing/apps/app.apk Android #0-0] at Browser.<anonymous> (file:///wdio/visual-testing/packages/service/dist/service.js:101:24)
692
748
 
693
749
 
694
- Spec Files: 0 passed, 1 failed, 1 total (100% completed) in 00:00:11
750
+ Spec Files: 0 passed, 1 failed, 1 total (100% completed) in 00:00:11
695
751
 
696
- error Command failed with exit code 1.
697
- ```
752
+ error Command failed with exit code 1.
753
+ ```
698
754
 
699
- - `autoSaveBaseline` is true by default, so if no baseline images are present it will automatically create a new baseline
700
- - Mobile screenshots of the complete screen now automatically exclude all native OS elements like the notification bar, home bar, address bar, and so on, the settings `blockOutSideBar | blockOutStatusBar |blockOutToolBar` are now all defaulted to `true`
701
- -
755
+ - `autoSaveBaseline` is true by default, so if no baseline images are present it will automatically create a new baseline
756
+ - Mobile screenshots of the complete screen now automatically exclude all native OS elements like the notification bar, home bar, address bar, and so on, the settings `blockOutSideBar | blockOutStatusBar |blockOutToolBar` are now all defaulted to `true`
757
+ -
702
758
 
703
- # 🐛 Fixed bugs:
759
+ # 🐛 Fixed bugs:
704
760
 
705
- - element screenshots could also get resized dimensions, which would cut out a bigger portion around the element. This was failing when the dimensions got out of the boundaries of the official screenshot. This has now been fixed with:
706
- - not going outside of the screenshot
707
- - log extra warnings
761
+ - element screenshots could also get resized dimensions, which would cut out a bigger portion around the element. This was failing when the dimensions got out of the boundaries of the official screenshot. This has now been fixed with:
762
+ - not going outside of the screenshot
763
+ - log extra warnings
708
764
 
709
765
  ### Patch Changes
710
766
 
711
- - Updated dependencies [ef386b6]
712
- - webdriver-image-comparison@4.0.0
767
+ - Updated dependencies [ef386b6]
768
+ - webdriver-image-comparison@4.0.0
713
769
 
714
770
  ## 1.0.0
715
771
 
716
772
  ### Major Changes
717
773
 
718
- - 36d3868: Support for WebdriverIO v8
774
+ - 36d3868: Support for WebdriverIO v8
719
775
 
720
776
  ### Minor Changes
721
777
 
722
- - 36d3868: (feat): add visual matcher
778
+ - 36d3868: (feat): add visual matcher
723
779
 
724
780
  ### Patch Changes
725
781
 
726
- - Updated dependencies [36d3868]
727
- - webdriver-image-comparison@3.0.0
782
+ - Updated dependencies [36d3868]
783
+ - webdriver-image-comparison@3.0.0