@wdio/visual-service 7.0.0 β†’ 8.0.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,5 +1,91 @@
1
1
  # @wdio/visual-service
2
2
 
3
+ ## 8.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - bfe6aca: ## πŸ’₯ BREAKING CHANGES
8
+
9
+ ### πŸ§ͺ Web Screenshot Strategy Now Uses BiDi by Default
10
+
11
+ #### What was the problem?
12
+
13
+ Screenshots taken via WebDriver's traditional protocol often lacked precision:
14
+
15
+ - Emulated devices didn't reflect true resolutions
16
+ - Device Pixel Ratio (DPR) was often lost
17
+ - Images were cropped or downscaled
18
+
19
+ #### What changed?
20
+
21
+ All screenshot-related methods now use the **WebDriver BiDi protocol** by default (if supported by the browser), enabling:
22
+
23
+ βœ… Native support for emulated and high-DPR devices
24
+ βœ… Better fidelity in screenshot size and clarity
25
+ βœ… Faster, browser-native screenshots via [`browsingContext.captureScreenshot`](https://w3c.github.io/webdriver-bidi/#command-browsingContext-captureScreenshot)
26
+
27
+ The following methods now use BiDi:
28
+
29
+ - `saveScreen` / `checkScreen`
30
+ - `saveElement` / `checkElement`
31
+ - `saveFullPageScreen` / `checkFullPageScreen`
32
+
33
+ #### What’s the impact?
34
+
35
+ ⚠️ **Existing baselines may no longer match.**
36
+ Because BiDi screenshots are **sharper** and **match device settings more accurately**, even a small difference in resolution or DPR can cause mismatches.
37
+
38
+ > If you rely on existing baseline images, you'll need to regenerate them to avoid false positives.
39
+
40
+ #### Want to keep using the legacy method?
41
+
42
+ You can disable BiDi screenshots globally or per test using the `enableLegacyScreenshotMethod` flag:
43
+
44
+ **Globally in `wdio.conf.ts`:**
45
+
46
+ ```ts
47
+ import { join } from "node:path";
48
+
49
+ export const config = {
50
+ services: [
51
+ [
52
+ "visual",
53
+ {
54
+ baselineFolder: join(process.cwd(), "./localBaseline/"),
55
+ debug: true,
56
+ formatImageName: "{tag}-{logName}-{width}x{height}",
57
+ screenshotPath: join(process.cwd(), ".tmp/"),
58
+ enableLegacyScreenshotMethod: true, // πŸ‘ˆ fallback to W3C-based screenshots
59
+ },
60
+ ],
61
+ ],
62
+ };
63
+ ```
64
+
65
+ **Or per test:**
66
+
67
+ ```ts
68
+ it("should compare an element successfully using legacy screenshots", async function () {
69
+ await expect($(".hero__title-logo")).toMatchElementSnapshot(
70
+ "legacyScreenshotLogo",
71
+ { enableLegacyScreenshotMethod: true } // πŸ‘ˆ fallback to W3C-based screenshots
72
+ );
73
+ });
74
+ ```
75
+
76
+ ## πŸ› Bug Fixes
77
+
78
+ - βœ… [#916](https://github.com/webdriverio/visual-testing/issues/916): Visual Testing Screenshot Behavior Changed in Emulated Devices
79
+
80
+ ## Committers: 1
81
+
82
+ - Wim Selles ([@wswebcreation](https://github.com/wswebcreation))
83
+
84
+ ### Patch Changes
85
+
86
+ - Updated dependencies [bfe6aca]
87
+ - webdriver-image-comparison@9.0.0
88
+
3
89
  ## 7.0.0
4
90
 
5
91
  ### Major Changes
@@ -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;AAkBnC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAepD,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,SAAS;;IAM7D,OAAO,CAAC,eAAe,CAAC,CAAgB;IACxC,OAAO,CAAC,gBAAgB,CAAC,CAAyC;gBAEtD,OAAO,EAAE,oBAAoB,EAAE,CAAC,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM;IAMlG;;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;IA2B3D,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI;IAOtC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK;IAictC,IAAI,cAAc,IAAI,cAAc,CAKnC;CACJ"}
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;AAkBnC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAepD,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,SAAS;;IAM7D,OAAO,CAAC,eAAe,CAAC,CAAgB;IACxC,OAAO,CAAC,gBAAgB,CAAC,CAAyC;gBAEtD,OAAO,EAAE,oBAAoB,EAAE,CAAC,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM;IAMlG;;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;IA2B3D,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI;IAOtC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK;IAqctC,IAAI,cAAc,IAAI,cAAc,CAKnC;CACJ"}
package/dist/service.js CHANGED
@@ -159,10 +159,12 @@ export default class WdioImageComparisonService extends BaseClass {
159
159
  const isCurrentContextNative = self.contextManager.isNativeContext;
160
160
  return [{
161
161
  methods: {
162
+ bidiScreenshot: isBiDiScreenshotSupported(browser) ? this.browsingContextCaptureScreenshot.bind(browser) : undefined,
162
163
  executor: (fn, ...args) => {
163
164
  return this.execute(fn, ...args);
164
165
  },
165
166
  getElementRect: this.getElementRect.bind(this),
167
+ getWindowHandle: this.getWindowHandle.bind(browser),
166
168
  screenShot: this.takeScreenshot.bind(this),
167
169
  takeElementScreenshot: this.takeElementScreenshot.bind(this),
168
170
  },
@@ -337,10 +339,12 @@ export default class WdioImageComparisonService extends BaseClass {
337
339
  const isCurrentContextNative = contextManager.isNativeContext;
338
340
  return [{
339
341
  methods: {
342
+ bidiScreenshot: isBiDiScreenshotSupported(browserInstance) ? browserInstance.browsingContextCaptureScreenshot.bind(browserInstance) : undefined,
340
343
  executor: (fn, ...args) => {
341
344
  return browserInstance.execute(fn, ...args);
342
345
  },
343
346
  getElementRect: browserInstance.getElementRect.bind(browserInstance),
347
+ getWindowHandle: browserInstance.getWindowHandle.bind(browserInstance),
344
348
  screenShot: browserInstance.takeScreenshot.bind(browserInstance),
345
349
  },
346
350
  instanceData: updatedInstanceData,
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": "7.0.0",
5
+ "version": "8.0.0",
6
6
  "license": "MIT",
7
7
  "homepage": "https://webdriver.io/docs/visual-testing",
8
8
  "repository": {
@@ -20,11 +20,11 @@
20
20
  "type": "module",
21
21
  "types": "./dist/index.d.ts",
22
22
  "dependencies": {
23
- "@wdio/globals": "^9.12.6",
23
+ "@wdio/globals": "^9.12.7",
24
24
  "@wdio/logger": "^9.4.4",
25
25
  "@wdio/types": "^9.12.6",
26
26
  "expect-webdriverio": "^5.1.0",
27
- "webdriver-image-comparison": "8.0.0"
27
+ "webdriver-image-comparison": "9.0.0"
28
28
  },
29
29
  "scripts": {
30
30
  "build": "run-s clean build:*",