@wdio/visual-service 8.0.4 โ†’ 9.0.1

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,134 @@
1
1
  # @wdio/visual-service
2
2
 
3
+ ## 9.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 79d2b1d: # ๐Ÿ› Bugfixes
8
+
9
+ ## #1073 Normalize Safari desktop screenshots by trimming macOS window corner radius and top window shadow
10
+
11
+ Safari desktop screenshots included the macOS window mask at the bottom and a shadow at the top. These artifacts caused incorrect detection of the viewable area for full page screenshots, which resulted in misaligned stitching. The viewable region is now calculated correctly by trimming these areas.
12
+
13
+ # Committers: 1
14
+
15
+ - Wim Selles ([@wswebcreation](https://github.com/wswebcreation))
16
+
17
+ - 782b98a: # ๐Ÿ› Bugfixes
18
+
19
+ ## #1000 fix incorrect cropping and stitching of last image for fullpage screenshots on mobile
20
+
21
+ The determination of the position of the last image in mobile fullpage webscreenshots was incorrect. This was mostly seen with iOS, but also had some impact on Android. This is now fixed
22
+
23
+ # Committers: 1
24
+
25
+ - Wim Selles ([@wswebcreation](https://github.com/wswebcreation))
26
+
27
+ - 2c109b3: # ๐Ÿ› Bugfixes
28
+
29
+ ## #1038 fix incorrect determination of ignore area
30
+
31
+ Ignore regions with `left: 0` and `right:0` lead to an incorrect width which lead to an incorrect ignore area. This is now fixed
32
+
33
+ # Committers: 1
34
+
35
+ - Wim Selles ([@wswebcreation](https://github.com/wswebcreation))
36
+
37
+ - Updated dependencies [79d2b1d]
38
+ - Updated dependencies [782b98a]
39
+ - Updated dependencies [2c109b3]
40
+ - @wdio/image-comparison-core@1.0.1
41
+
42
+ ## 9.0.0
43
+
44
+ ### Major Changes
45
+
46
+ - 1326e99: ## ๐Ÿ’ฅ Major Release: New @wdio/image-comparison-core Package
47
+
48
+ ### ๐Ÿ—๏ธ Architectural Refactor
49
+
50
+ This release introduces a **completely new core architecture** with the dedicated `@wdio/image-comparison-core` package, replacing the generic `webdriver-image-comparison` module with a WDIO-specific solution.
51
+
52
+ #### What was the problem?
53
+
54
+ - The old `webdriver-image-comparison` package was designed for generic webdriver usage
55
+ - Complex integration between generic and WDIO-specific code
56
+ - Limited test coverage (~58%) making maintenance difficult
57
+ - Mixed responsibilities between core logic and service integration
58
+
59
+ #### What changed?
60
+
61
+ โœ… **New dedicated core package**: `@wdio/image-comparison-core` - purpose-built for WebdriverIO
62
+ โœ… **Cleaner architecture**: Modular design with clear separation of concerns
63
+ โœ… **Enhanced test coverage**: Improved from ~58% to ~90% across all metrics
64
+ โœ… **Better maintainability**: Organized codebase with comprehensive TypeScript interfaces
65
+ โœ… **WDIO-specific dependencies**: Only depends on `@wdio/logger`, `@wdio/types`, etc.
66
+
67
+ ### ๐Ÿงช Testing Improvements
68
+
69
+ - **100% branch coverage** on critical decision points
70
+ - **Comprehensive unit tests** for all major functions
71
+ - **Optimized mocks** for complex scenarios
72
+ - **Better test isolation** and reliability
73
+
74
+ | Before/After | % Stmts | % Branch | % Funcs | % Lines |
75
+ | ------------------ | ------- | -------- | ------- | ------- |
76
+ | **Previous** | 58.59 | 91.4 | 80.71 | 58.59 |
77
+ | **After refactor** | 90.55 | 96.38 | 93.99 | 90.55 |
78
+
79
+ ### ๐Ÿ”ง Service Integration
80
+
81
+ The `@wdio/visual-service` now imports from the new `@wdio/image-comparison-core` package while maintaining the same public API and functionality for users.
82
+
83
+ ### ๐Ÿ“ˆ Performance & Quality
84
+
85
+ - **Modular architecture**: Easier to maintain and extend
86
+ - **Type safety**: Comprehensive TypeScript coverage
87
+ - **Clean exports**: Well-defined public API
88
+ - **Internal interfaces**: Proper separation of concerns
89
+
90
+ ### ๐Ÿ”„ Backward Compatibility
91
+
92
+ โœ… **No breaking changes** for end users
93
+ โœ… **Same public API** maintained
94
+ โœ… **Existing configurations** continue to work
95
+ โœ… **All existing functionality** preserved
96
+
97
+ ### ๐ŸŽฏ Future Benefits
98
+
99
+ This refactor sets the foundation for:
100
+
101
+ - Easier addition of new features
102
+ - Better bug fixing capabilities
103
+ - Enhanced mobile and native app support
104
+ - More reliable MultiRemote functionality
105
+
106
+ ### ๐Ÿ“ฆ Dependency Updates
107
+
108
+ - Updated most dependencies to their latest versions
109
+ - Improved security with latest package versions
110
+ - Better compatibility with current WebdriverIO ecosystem
111
+ - Enhanced performance through updated dependencies
112
+
113
+ ***
114
+
115
+ **Note**: This is an architectural improvement that modernizes the codebase while maintaining full backward compatibility. All existing functionality remains unchanged for users.
116
+
117
+ ***
118
+
119
+ ### Patch Changes
120
+
121
+ - be4272c: fix: [983](#983) in multiremote, commands are now executed on the requested instances
122
+ - Updated dependencies [74df53b]
123
+ - Updated dependencies [1326e99]
124
+
125
+ - @wdio/image-comparison-core@1.0.0
126
+
127
+ ## Committers: 2
128
+
129
+ - P-Courteille ([@P-Courteille](https://github.com/P-Courteille))
130
+ - Wim Selles ([@wswebcreation](https://github.com/wswebcreation))
131
+
3
132
  ## 8.0.4
4
133
 
5
134
  ### Patch Changes
@@ -1,4 +1,4 @@
1
- import type { DeviceRectangles } from 'webdriver-image-comparison';
1
+ import type { DeviceRectangles } from '@wdio/image-comparison-core';
2
2
  export declare class ContextManager {
3
3
  #private;
4
4
  private cachedViewport;
@@ -1 +1 @@
1
- {"version":3,"file":"contextManager.d.ts","sourceRoot":"","sources":["../src/contextManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAMlE,qBAAa,cAAc;;IAKvB,OAAO,CAAC,cAAc,CAAsC;gBAEhD,OAAO,EAAE,WAAW,CAAC,OAAO;IAOxC,kBAAkB,IAAI,gBAAgB;IAItC,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAKpD,IAAI,OAAO,IAAI,WAAW,CAAC,OAAO,CAEjC;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,aAAa,IAAI,IAAI;IAIrB,iBAAiB,CAAC,OAAO,EAAE,MAAM;IAO3B,iBAAiB;IAIvB,IAAI,eAAe,YAElB;CA0BJ"}
1
+ {"version":3,"file":"contextManager.d.ts","sourceRoot":"","sources":["../src/contextManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAMnE,qBAAa,cAAc;;IAKvB,OAAO,CAAC,cAAc,CAAsC;gBAEhD,OAAO,EAAE,WAAW,CAAC,OAAO;IAOxC,kBAAkB,IAAI,gBAAgB;IAItC,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAKpD,IAAI,OAAO,IAAI,WAAW,CAAC,OAAO,CAEjC;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,aAAa,IAAI,IAAI;IAIrB,iBAAiB,CAAC,OAAO,EAAE,MAAM;IAO3B,iBAAiB;IAIvB,IAAI,eAAe,YAElB;CA0BJ"}
@@ -1,5 +1,5 @@
1
1
  import logger from '@wdio/logger';
2
- import { DEVICE_RECTANGLES } from 'webdriver-image-comparison';
2
+ import { DEVICE_RECTANGLES } from '@wdio/image-comparison-core';
3
3
  import { getNativeContext } from './utils.js';
4
4
  const log = logger('@wdio/visual-service:ContextManager');
5
5
  export class ContextManager {
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { WicElement } from 'webdriver-image-comparison';
1
+ import type { WicElement } from '@wdio/image-comparison-core';
2
2
  import WdioImageComparisonService from './service.js';
3
3
  import VisualLauncher from './storybook/launcher.js';
4
4
  import type { Output, Result, VisualServiceOptions, WdioCheckFullPageMethodOptions, WdioSaveFullPageMethodOptions, WdioSaveElementMethodOptions, WdioSaveScreenMethodOptions, WdioCheckElementMethodOptions, WdioCheckScreenMethodOptions } from './types.js';
@@ -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,6BAA6B,CAAA;AAC7D,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/reporter.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import fs from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import logger from '@wdio/logger';
4
- const log = logger('@wdio/visual-service:webdriver-image-comparison-reporter');
4
+ const log = logger('@wdio/visual-service:reporter');
5
5
  class VisualReportGenerator {
6
6
  directoryPath;
7
7
  constructor({ directoryPath }) {
package/dist/service.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { Frameworks } from '@wdio/types';
2
- import { BaseClass } from 'webdriver-image-comparison';
2
+ import { BaseClass } from '@wdio/image-comparison-core';
3
3
  import type { VisualServiceOptions } from './types.js';
4
4
  import { ContextManager } from './contextManager.js';
5
5
  export default class WdioImageComparisonService extends BaseClass {
@@ -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;IAgC3D,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI;IAOtC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK;IAqctC,IAAI,cAAc,IAAI,cAAc,CAKnC;CAyCJ"}
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,6BAA6B,CAAA;AAiBpC,OAAO,KAAK,EAAc,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAElE,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;IAgC3D,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI;IAOtC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK;IA4ZtC,IAAI,cAAc,IAAI,cAAc,CAKnC;CAyCJ"}
package/dist/service.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import logger from '@wdio/logger';
2
2
  import { expect } from '@wdio/globals';
3
3
  import { dirname, normalize, resolve } from 'node:path';
4
- import { BaseClass, checkElement, checkFullPageScreen, checkScreen, saveElement, saveFullPageScreen, saveScreen, saveTabbablePage, checkTabbablePage, FOLDERS, DEFAULT_TEST_CONTEXT, } from 'webdriver-image-comparison';
4
+ import { BaseClass, checkElement, checkFullPageScreen, checkScreen, saveElement, saveFullPageScreen, saveScreen, saveTabbablePage, checkTabbablePage, FOLDERS, DEFAULT_TEST_CONTEXT, } from '@wdio/image-comparison-core';
5
5
  import { SevereServiceError } from 'webdriverio';
6
- import { enrichTestContext, getFolders, getInstanceData, getNativeContext, isBiDiScreenshotSupported, } from './utils.js';
6
+ import { enrichTestContext, getFolders, getInstanceData, getNativeContext, } from './utils.js';
7
7
  import { toMatchScreenSnapshot, toMatchFullPageSnapshot, toMatchElementSnapshot, toMatchTabbablePageSnapshot } from './matcher.js';
8
8
  import { waitForStorybookComponentToBeLoaded } from './storybook/utils.js';
9
9
  import { PAGE_OPTIONS_MAP } from './constants.js';
@@ -98,6 +98,14 @@ export default class WdioImageComparisonService extends BaseClass {
98
98
  async #extendMultiremoteBrowser(capabilities) {
99
99
  const browser = this.#browser;
100
100
  const browserNames = Object.keys(capabilities);
101
+ /**
102
+ * Add all the commands to the global browser object that will execute
103
+ * on each browser in the Multi Remote
104
+ * Start with the page commands
105
+ */
106
+ for (const [commandName, command] of Object.entries(pageCommands)) {
107
+ this.#addMultiremoteCommand(browser, browserNames, commandName, command);
108
+ }
101
109
  /**
102
110
  * Add all the commands to each browser in the Multi Remote
103
111
  */
@@ -108,14 +116,6 @@ export default class WdioImageComparisonService extends BaseClass {
108
116
  this._contextManagers?.set(browserName, contextManager);
109
117
  await this.#addCommandsToBrowser(browserInstance);
110
118
  }
111
- /**
112
- * Add all the commands to the global browser object that will execute
113
- * on each browser in the Multi Remote
114
- * Start with the page commands
115
- */
116
- for (const [commandName, command] of Object.entries(pageCommands)) {
117
- this.#addMultiremoteCommand(browser, browserNames, commandName, command);
118
- }
119
119
  /**
120
120
  * Add all the element commands to the global browser object that will execute
121
121
  * on each browser in the Multi Remote
@@ -127,33 +127,33 @@ export default class WdioImageComparisonService extends BaseClass {
127
127
  /**
128
128
  * Add commands to the "normal" browser object
129
129
  */
130
- async #addCommandsToBrowser(currentBrowser) {
131
- this._contextManager = new ContextManager(currentBrowser);
132
- currentBrowser.visualService = this;
130
+ async #addCommandsToBrowser(browserInstance) {
131
+ this._contextManager = new ContextManager(browserInstance);
132
+ browserInstance.visualService = this;
133
133
  const instanceData = await getInstanceData({
134
- currentBrowser,
134
+ browserInstance,
135
135
  initialDeviceRectangles: this._contextManager.getViewportContext(),
136
136
  isNativeContext: this._contextManager.isNativeContext,
137
137
  });
138
138
  // Update the context manager with the current viewport
139
139
  this._contextManager.setViewPortContext(instanceData.deviceRectangles);
140
140
  for (const [commandName, command] of Object.entries(elementCommands)) {
141
- this.#addElementCommand(currentBrowser, commandName, command, instanceData);
141
+ this.#addElementCommand(browserInstance, commandName, command, instanceData);
142
142
  }
143
143
  for (const [commandName, command] of Object.entries(pageCommands)) {
144
- this.#addPageCommand(currentBrowser, commandName, command, instanceData);
144
+ this.#addPageCommand(browserInstance, commandName, command, instanceData);
145
145
  }
146
146
  }
147
147
  /**
148
148
  * Add new element commands to the browser object
149
149
  */
150
- #addElementCommand(browser, commandName, command, initialInstanceData) {
150
+ #addElementCommand(browserInstance, commandName, command, initialInstanceData) {
151
151
  log.info(`Adding element command "${commandName}" to browser object`);
152
152
  const elementOptionsKey = commandName === 'saveElement' ? 'saveElementOptions' : 'checkElementOptions';
153
153
  const self = this;
154
- browser.addCommand(commandName, function (element, tag, elementOptions = {}) {
154
+ browserInstance.addCommand(commandName, function (element, tag, elementOptions = {}) {
155
155
  const wrapped = wrapWithContext({
156
- browser,
156
+ browserInstance,
157
157
  command,
158
158
  contextManager: self.contextManager,
159
159
  getArgs: () => {
@@ -163,25 +163,16 @@ export default class WdioImageComparisonService extends BaseClass {
163
163
  };
164
164
  const isCurrentContextNative = self.contextManager.isNativeContext;
165
165
  return [{
166
- methods: {
167
- bidiScreenshot: isBiDiScreenshotSupported(browser) ? this.browsingContextCaptureScreenshot.bind(browser) : undefined,
168
- executor: (fn, ...args) => {
169
- return this.execute(fn, ...args);
170
- },
171
- getElementRect: this.getElementRect.bind(this),
172
- getWindowHandle: this.getWindowHandle.bind(browser),
173
- screenShot: this.takeScreenshot.bind(this),
174
- takeElementScreenshot: this.takeElementScreenshot.bind(this),
175
- },
176
- instanceData: updatedInstanceData,
177
- folders: getFolders(elementOptions, self.folders, self.#getBaselineFolder()),
166
+ browserInstance,
178
167
  element,
168
+ folders: getFolders(elementOptions, self.folders, self.#getBaselineFolder()),
169
+ instanceData: updatedInstanceData,
170
+ isNativeContext: isCurrentContextNative,
179
171
  tag,
180
172
  [elementOptionsKey]: {
181
173
  wic: self.defaultOptions,
182
174
  method: elementOptions,
183
175
  },
184
- isNativeContext: isCurrentContextNative,
185
176
  testContext: enrichTestContext({
186
177
  commandName,
187
178
  currentTestContext: self.#testContext,
@@ -197,17 +188,17 @@ export default class WdioImageComparisonService extends BaseClass {
197
188
  /**
198
189
  * Add new page commands to the browser object
199
190
  */
200
- #addPageCommand(browser, commandName, command, initialInstanceData) {
191
+ #addPageCommand(browserInstance, commandName, command, initialInstanceData) {
201
192
  log.info(`Adding browser command "${commandName}" to browser object`);
202
193
  const self = this;
203
194
  const pageOptionsKey = PAGE_OPTIONS_MAP[commandName];
204
195
  if (commandName === 'waitForStorybookComponentToBeLoaded') {
205
- browser.addCommand(commandName, (options) => waitForStorybookComponentToBeLoaded(options));
196
+ browserInstance.addCommand(commandName, (options) => waitForStorybookComponentToBeLoaded(options));
206
197
  return;
207
198
  }
208
- browser.addCommand(commandName, function (tag, pageOptions = {}) {
199
+ browserInstance.addCommand(commandName, function (tag, pageOptions = {}) {
209
200
  const wrapped = wrapWithContext({
210
- browser,
201
+ browserInstance,
211
202
  command,
212
203
  contextManager: self.contextManager,
213
204
  getArgs: () => {
@@ -217,23 +208,15 @@ export default class WdioImageComparisonService extends BaseClass {
217
208
  };
218
209
  const isCurrentContextNative = self.contextManager.isNativeContext;
219
210
  return [{
220
- methods: {
221
- bidiScreenshot: isBiDiScreenshotSupported(browser) ? this.browsingContextCaptureScreenshot.bind(browser) : undefined,
222
- executor: (fn, ...args) => {
223
- return this.execute(fn, ...args);
224
- },
225
- getElementRect: this.getElementRect.bind(browser),
226
- getWindowHandle: this.getWindowHandle.bind(browser),
227
- screenShot: this.takeScreenshot.bind(browser),
228
- },
229
- instanceData: updatedInstanceData,
211
+ browserInstance,
230
212
  folders: getFolders(pageOptions, self.folders, self.#getBaselineFolder()),
213
+ instanceData: updatedInstanceData,
214
+ isNativeContext: isCurrentContextNative,
231
215
  tag,
232
216
  [pageOptionsKey]: {
233
217
  wic: self.defaultOptions,
234
218
  method: pageOptions,
235
219
  },
236
- isNativeContext: isCurrentContextNative,
237
220
  testContext: enrichTestContext({
238
221
  commandName,
239
222
  currentTestContext: self.#testContext,
@@ -260,12 +243,12 @@ export default class WdioImageComparisonService extends BaseClass {
260
243
  }
261
244
  const isNativeContext = contextManager.isNativeContext;
262
245
  const initialInstanceData = await getInstanceData({
263
- currentBrowser: browserInstance,
246
+ browserInstance: browserInstance,
264
247
  initialDeviceRectangles: contextManager.getViewportContext(),
265
248
  isNativeContext
266
249
  });
267
250
  const wrapped = wrapWithContext({
268
- browser: browserInstance,
251
+ browserInstance,
269
252
  command,
270
253
  contextManager,
271
254
  getArgs: () => {
@@ -274,16 +257,7 @@ export default class WdioImageComparisonService extends BaseClass {
274
257
  deviceRectangles: contextManager.getViewportContext(),
275
258
  };
276
259
  return [{
277
- methods: {
278
- bidiScreenshot: isBiDiScreenshotSupported(browserInstance) ? browserInstance.browsingContextCaptureScreenshot.bind(browserInstance) : undefined,
279
- executor: (fn, ...args) => {
280
- return browserInstance.execute(fn, ...args);
281
- },
282
- getElementRect: browserInstance.getElementRect.bind(browserInstance),
283
- getWindowHandle: browserInstance.getWindowHandle.bind(browserInstance),
284
- screenShot: browserInstance.takeScreenshot.bind(browserInstance),
285
- takeElementScreenshot: browserInstance.takeElementScreenshot.bind(browserInstance),
286
- },
260
+ browserInstance,
287
261
  instanceData: updatedInstanceData,
288
262
  folders: getFolders(elementOptions, self.folders, self.#getBaselineFolder()),
289
263
  tag,
@@ -328,12 +302,12 @@ export default class WdioImageComparisonService extends BaseClass {
328
302
  isMobile: browserInstance.isMobile,
329
303
  });
330
304
  const initialInstanceData = await getInstanceData({
331
- currentBrowser: browserInstance,
305
+ browserInstance: browserInstance,
332
306
  initialDeviceRectangles: contextManager.getViewportContext(),
333
307
  isNativeContext
334
308
  });
335
309
  const wrapped = wrapWithContext({
336
- browser: browserInstance,
310
+ browserInstance,
337
311
  command,
338
312
  contextManager,
339
313
  getArgs: () => {
@@ -343,23 +317,15 @@ export default class WdioImageComparisonService extends BaseClass {
343
317
  };
344
318
  const isCurrentContextNative = contextManager.isNativeContext;
345
319
  return [{
346
- methods: {
347
- bidiScreenshot: isBiDiScreenshotSupported(browserInstance) ? browserInstance.browsingContextCaptureScreenshot.bind(browserInstance) : undefined,
348
- executor: (fn, ...args) => {
349
- return browserInstance.execute(fn, ...args);
350
- },
351
- getElementRect: browserInstance.getElementRect.bind(browserInstance),
352
- getWindowHandle: browserInstance.getWindowHandle.bind(browserInstance),
353
- screenShot: browserInstance.takeScreenshot.bind(browserInstance),
354
- },
355
- instanceData: updatedInstanceData,
320
+ browserInstance,
356
321
  folders: getFolders(pageOptions, self.folders, self.#getBaselineFolder()),
322
+ instanceData: updatedInstanceData,
323
+ isNativeContext: isCurrentContextNative,
357
324
  tag,
358
325
  [pageOptionsKey]: {
359
326
  wic: self.defaultOptions,
360
327
  method: pageOptions,
361
328
  },
362
- isNativeContext: isCurrentContextNative,
363
329
  testContext: enrichTestContext({
364
330
  commandName,
365
331
  currentTestContext: self.#testContext,
@@ -1,4 +1,4 @@
1
- import type { CheckElementMethodOptions, ClassOptions, Folders } from 'webdriver-image-comparison';
1
+ import type { CheckElementMethodOptions, ClassOptions, Folders } from '@wdio/image-comparison-core';
2
2
  export interface StorybookData {
3
3
  id: string;
4
4
  title: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["../../src/storybook/Types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["../../src/storybook/Types.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { Capabilities } from '@wdio/types';
2
- import type { ClassOptions } from 'webdriver-image-comparison';
3
- import { BaseClass } from 'webdriver-image-comparison';
2
+ import type { ClassOptions } from '@wdio/image-comparison-core';
3
+ import { BaseClass } from '@wdio/image-comparison-core';
4
4
  export default class VisualLauncher extends BaseClass {
5
5
  #private;
6
6
  constructor(options: ClassOptions);
@@ -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,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"}
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,6BAA6B,CAAA;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAevD,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"}
@@ -1,7 +1,7 @@
1
1
  import { rmdirSync } from 'node:fs';
2
2
  import logger from '@wdio/logger';
3
3
  import { SevereServiceError } from 'webdriverio';
4
- import { BaseClass } from 'webdriver-image-comparison';
4
+ import { BaseClass } from '@wdio/image-comparison-core';
5
5
  import { createStorybookCapabilities, createTestFiles, getArgvValue, isCucumberFramework, isStorybookMode, parseSkipStories, scanStorybook, } from './utils.js';
6
6
  import { CLIP_SELECTOR, NUM_SHARDS, V6_CLIP_SELECTOR } from '../constants.js';
7
7
  import generateVisualReport from '../reporter.js';
@@ -1,5 +1,5 @@
1
1
  import type { Options } from '@wdio/types';
2
- import type { ClassOptions } from 'webdriver-image-comparison';
2
+ import type { ClassOptions } from '@wdio/image-comparison-core';
3
3
  import type { CategoryComponent, CreateItContent, CreateTestContent, CreateTestFileOptions, ScanStorybookReturnData, Stories, EmulatedDeviceType, CapabilityMap, WaitForStorybookComponentToBeLoaded } from './Types.js';
4
4
  /**
5
5
  * Check if we run for Storybook
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/storybook/utils.ts"],"names":[],"mappings":"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"}
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,6BAA6B,CAAA;AAE/D,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,CA0BlE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,mBAAmB,EAC5C,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,mBAAmB,mCAepD;AAUD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EAAE,sBAAsB,EAAE,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,sBAAiD,EAAG,EAAE,eAAe,UA0CvN;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QASvF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC7B,EAAE,sBAAsB,EAAE,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,iBAAiB,EAEjK,MAAM,oBAAa,GACpB,MAAM,CAIR;AAED;;GAEG;AACH,wBAAsB,mCAAmC,CACrD,OAAO,EAAE,mCAAmC,EAE5C,mBAAmB,yBAAkB,iBAkExC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAMjF;AAWD;;GAEG;AACH,wBAAgB,eAAe,CAC3B,EAAE,sBAAsB,EAAE,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,qBAAqB,EAEnM,cAAc,2BAAoB,EAClC,WAAW,wBAAiB,EAC5B,UAAU,uBAAgB,QAyB7B;AAED,wBAAgB,mCAAmC,CAC/C,EAAE,MAAM,EAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,kBAAkB,EACtE,UAAU,EAAE,OAAO,GACpB,WAAW,CAAC,YAAY,CAqB1B;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACpC,QAAQ,EAAE,MAAM,EAAE,EAClB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,MAAM,EAAE,EACjB,iBAAiB,EAAE,kBAAkB,EAAE,EACvC,iBAAiB,EAAE,OAAO,QAiB7B;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACvC,YAAY,EAAE,WAAW,CAAC,YAAY,EAAE,EAExC,uCAAuC,6CAAsC,EAC7E,4BAA4B,kCAA2B,QAsF1D;AAED;;GAEG;AACH,wBAAsB,aAAa,CAC/B,MAAM,EAAE,WAAW,CAAC,MAAM,EAC1B,OAAO,EAAE,YAAY,EAErB,UAAU,sBAAe,EACzB,mBAAmB,iCAA0B,EAC7C,eAAe,qBAAc,EAC7B,kBAAkB,wBAAiB,GACpC,OAAO,CAAC,uBAAuB,CAAC,CA8BlC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,EAAE,CAmBlF"}
@@ -36,7 +36,7 @@ export async function checkStorybookIsRunning(url) {
36
36
  try {
37
37
  const res = await fetch(url, { method: 'GET', headers: {} });
38
38
  if (res.status !== 200) {
39
- throw new Error(`Unxpected status: ${res.status}`);
39
+ throw new Error(`Unexpected status: ${res.status}`);
40
40
  }
41
41
  }
42
42
  catch (_e) {
package/dist/types.d.ts CHANGED
@@ -1,6 +1,7 @@
1
- import type { ScreenshotOutput, ImageCompareResult, CheckScreenMethodOptions, SaveScreenMethodOptions, CheckElementMethodOptions, SaveElementMethodOptions, CheckFullPageMethodOptions, SaveFullPageMethodOptions, ClassOptions, DeviceRectangles, TestContext, InstanceData } from 'webdriver-image-comparison';
1
+ import type { ScreenshotOutput, ImageCompareResult, CheckScreenMethodOptions, SaveScreenMethodOptions, CheckElementMethodOptions, SaveElementMethodOptions, CheckFullPageMethodOptions, SaveFullPageMethodOptions, ClassOptions, DeviceRectangles, TestContext, InstanceData, InternalSaveScreenMethodOptions, InternalCheckTabbablePageMethodOptions, InternalSaveElementMethodOptions, InternalSaveFullPageMethodOptions, InternalSaveTabbablePageMethodOptions, InternalCheckScreenMethodOptions, InternalCheckElementMethodOptions, InternalCheckFullPageMethodOptions } from '@wdio/image-comparison-core';
2
2
  import type { ChainablePromiseElement } from 'webdriverio';
3
3
  import type { ContextManager } from './contextManager.js';
4
+ import type { WaitForStorybookComponentToBeLoaded } from './storybook/Types.js';
4
5
  type MultiOutput = {
5
6
  [browserName: string]: ScreenshotOutput;
6
7
  };
@@ -15,7 +16,7 @@ export type MobileInstanceData = {
15
16
  };
16
17
  export type getFolderMethodOptions = CheckElementMethodOptions | CheckFullPageMethodOptions | CheckScreenMethodOptions | SaveElementMethodOptions | SaveFullPageMethodOptions | SaveScreenMethodOptions;
17
18
  export type GetInstanceDataOptions = {
18
- currentBrowser: WebdriverIO.Browser;
19
+ browserInstance: WebdriverIO.Browser;
19
20
  initialDeviceRectangles: DeviceRectangles;
20
21
  isNativeContext: boolean;
21
22
  };
@@ -26,13 +27,13 @@ export type EnrichTestContextOptions = {
26
27
  tag: string;
27
28
  };
28
29
  export type GetMobileInstanceDataOptions = {
29
- currentBrowser: WebdriverIO.Browser;
30
+ browserInstance: WebdriverIO.Browser;
30
31
  initialDeviceRectangles: DeviceRectangles;
31
32
  isNativeContext: boolean;
32
33
  nativeWebScreenshot: boolean;
33
34
  };
34
35
  export interface WrapWithContextOptions<T extends (...args: any[]) => any> {
35
- browser: WebdriverIO.Browser;
36
+ browserInstance: WebdriverIO.Browser;
36
37
  command: T;
37
38
  contextManager: ContextManager;
38
39
  getArgs: () => Parameters<T>;
@@ -48,19 +49,30 @@ export interface WdioIcsCommonOptions {
48
49
  export interface WdioIcsScrollOptions extends WdioIcsCommonOptions {
49
50
  hideAfterFirstScroll?: (WebdriverIO.Element | ChainablePromiseElement)[];
50
51
  }
51
- export interface WdioCheckFullPageMethodOptions extends Omit<CheckFullPageMethodOptions, keyof WdioIcsScrollOptions>, WdioIcsScrollOptions {
52
- }
53
- export interface WdioSaveFullPageMethodOptions extends Omit<SaveFullPageMethodOptions, keyof WdioIcsScrollOptions>, WdioIcsScrollOptions {
52
+ export interface WdioSaveScreenMethodOptions extends Omit<SaveScreenMethodOptions, keyof WdioIcsCommonOptions>, WdioIcsCommonOptions {
54
53
  }
55
54
  export interface WdioSaveElementMethodOptions extends Omit<SaveElementMethodOptions, keyof WdioIcsCommonOptions>, WdioIcsCommonOptions {
56
55
  }
57
- export interface WdioSaveScreenMethodOptions extends Omit<SaveScreenMethodOptions, keyof WdioIcsCommonOptions>, WdioIcsCommonOptions {
56
+ export interface WdioSaveFullPageMethodOptions extends Omit<SaveFullPageMethodOptions, keyof WdioIcsScrollOptions>, WdioIcsScrollOptions {
57
+ }
58
+ export interface WdioCheckScreenMethodOptions extends Omit<CheckScreenMethodOptions, keyof WdioIcsCommonOptions>, WdioIcsCommonOptions {
58
59
  }
59
60
  export interface WdioCheckElementMethodOptions extends Omit<CheckElementMethodOptions, keyof WdioIcsCommonOptions>, WdioIcsCommonOptions {
60
61
  }
61
- export interface WdioCheckScreenMethodOptions extends Omit<CheckScreenMethodOptions, keyof WdioIcsCommonOptions>, WdioIcsCommonOptions {
62
+ export interface WdioCheckFullPageMethodOptions extends Omit<CheckFullPageMethodOptions, keyof WdioIcsScrollOptions>, WdioIcsScrollOptions {
62
63
  }
63
64
  export interface VisualServiceOptions extends ClassOptions {
64
65
  }
66
+ export interface CommandMap {
67
+ saveScreen: (options: InternalSaveScreenMethodOptions) => Promise<Output>;
68
+ saveElement: (options: InternalSaveElementMethodOptions) => Promise<Output>;
69
+ saveFullPageScreen: (options: InternalSaveFullPageMethodOptions) => Promise<Output>;
70
+ saveTabbablePage: (options: InternalSaveTabbablePageMethodOptions) => Promise<Output>;
71
+ checkScreen: (options: InternalCheckScreenMethodOptions) => Promise<Result>;
72
+ checkElement: (options: InternalCheckElementMethodOptions) => Promise<Result>;
73
+ checkFullPageScreen: (options: InternalCheckFullPageMethodOptions) => Promise<Result>;
74
+ checkTabbablePage: (options: InternalCheckTabbablePageMethodOptions) => Promise<Result>;
75
+ waitForStorybookComponentToBeLoaded: (options: WaitForStorybookComponentToBeLoaded) => Promise<void>;
76
+ }
65
77
  export {};
66
78
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Folders, InstanceData, TestContext } from 'webdriver-image-comparison';
1
+ import type { Folders, InstanceData, TestContext } from '@wdio/image-comparison-core';
2
2
  import type { EnrichTestContextOptions, getFolderMethodOptions, GetInstanceDataOptions } from './types.js';
3
3
  /**
4
4
  * Get the folders data
@@ -28,7 +28,7 @@ export declare function getLtOptions(capabilities: WebdriverIO.Capabilities): an
28
28
  /**
29
29
  * Get the instance data
30
30
  */
31
- export declare function getInstanceData({ currentBrowser, initialDeviceRectangles, isNativeContext }: GetInstanceDataOptions): Promise<InstanceData>;
31
+ export declare function getInstanceData({ browserInstance, initialDeviceRectangles, isNativeContext }: GetInstanceDataOptions): Promise<InstanceData>;
32
32
  /**
33
33
  * Traverse up the scope chain until browser element was reached
34
34
  */
@@ -41,8 +41,4 @@ export declare function getNativeContext({ capabilities, isMobile }: {
41
41
  * Make sure we have all the data for the test context
42
42
  */
43
43
  export declare function enrichTestContext({ commandName, currentTestContext: { framework, parent, title, }, instanceData: { appName, browserName, browserVersion, deviceName, isAndroid, isIOS, isMobile, platformName, platformVersion, }, tag, }: EnrichTestContextOptions): TestContext;
44
- /**
45
- * Check if the current browser supports isBidi screenshots
46
- */
47
- export declare function isBiDiScreenshotSupported(driver: WebdriverIO.Browser): boolean;
48
44
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACpF,OAAO,KAAK,EACR,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EAIzB,MAAM,YAAY,CAAA;AAEnB;;;;;GAKG;AAEH,wBAAgB,UAAU,CACtB,aAAa,EAAE,sBAAsB,EACrC,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,MAAM,GACxB,OAAO,CAMT;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,iBAAiB,SAAI,GAAG;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB,CAKA;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE;IAAC,MAAM,EAAC,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GAAG,MAAM,CAOhH;AAiGD;;GAEG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,WAAW,CAAC,YAAY,GAAG,GAAG,GAAG,SAAS,CAMpF;AAmCD;;GAEG;AACH,wBAAsB,eAAe,CAAC,EAClC,cAAc,EACd,uBAAuB,EACvB,eAAe,EAClB,EAAE,sBAAsB,GAAG,OAAO,CAAC,YAAY,CAAC,CAoEhD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAGtG;AAOD,wBAAgB,gBAAgB,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,EACvD;IAAE,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GAC9D,OAAO,CAuBT;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC7B,EACI,WAAW,EACX,kBAAkB,EAAE,EAChB,SAAS,EACT,MAAM,EACN,KAAK,GACR,EACD,YAAY,EAAE,EACV,OAAO,EACP,WAAW,EACX,cAAc,EACd,UAAU,EACV,SAAS,EACT,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,eAAe,GAClB,EACD,GAAG,GACN,EAAE,wBAAwB,GAAG,WAAW,CAuB5C;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,GAAG,OAAO,CAK9E"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,KAAK,EACR,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EAIzB,MAAM,YAAY,CAAA;AAEnB;;;;;GAKG;AAEH,wBAAgB,UAAU,CACtB,aAAa,EAAE,sBAAsB,EACrC,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,MAAM,GACxB,OAAO,CAMT;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,iBAAiB,SAAI,GAAG;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB,CAKA;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE;IAAC,MAAM,EAAC,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GAAG,MAAM,CAOhH;AAuFD;;GAEG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,WAAW,CAAC,YAAY,GAAG,GAAG,GAAG,SAAS,CAMpF;AAmCD;;GAEG;AACH,wBAAsB,eAAe,CAAC,EAClC,eAAe,EACf,uBAAuB,EACvB,eAAe,EAClB,EAAE,sBAAsB,GAAG,OAAO,CAAC,YAAY,CAAC,CAoEhD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAGtG;AAOD,wBAAgB,gBAAgB,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,EACvD;IAAE,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GAC9D,OAAO,CAuBT;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC7B,EACI,WAAW,EACX,kBAAkB,EAAE,EAChB,SAAS,EACT,MAAM,EACN,KAAK,GACR,EACD,YAAY,EAAE,EACV,OAAO,EACP,WAAW,EACX,cAAc,EACd,UAAU,EACV,SAAS,EACT,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,eAAe,GAClB,EACD,GAAG,GACN,EAAE,wBAAwB,GAAG,WAAW,CAuB5C"}
package/dist/utils.js CHANGED
@@ -1,4 +1,4 @@
1
- import { getMobileScreenSize, getMobileViewPortPosition, IOS_OFFSETS, NOT_KNOWN } from 'webdriver-image-comparison';
1
+ import { getMobileScreenSize, getMobileViewPortPosition, IOS_OFFSETS, NOT_KNOWN } from '@wdio/image-comparison-core';
2
2
  /**
3
3
  * Get the folders data
4
4
  *
@@ -34,18 +34,14 @@ export function getDevicePixelRatio(screenshot, deviceScreenSize) {
34
34
  /**
35
35
  * Get the mobile instance data
36
36
  */
37
- async function getMobileInstanceData({ currentBrowser, initialDeviceRectangles, isNativeContext, nativeWebScreenshot, }) {
38
- const { isAndroid, isIOS, isMobile } = currentBrowser;
37
+ async function getMobileInstanceData({ browserInstance, initialDeviceRectangles, isNativeContext, nativeWebScreenshot, }) {
38
+ const { isAndroid, isIOS, isMobile } = browserInstance;
39
39
  let devicePixelRatio = 1;
40
40
  let deviceRectangles = initialDeviceRectangles;
41
41
  if (isMobile) {
42
- const executor = (fn, ...args) => currentBrowser.execute(fn, ...args);
43
- const getUrl = () => currentBrowser.getUrl();
44
- const url = (arg) => currentBrowser.url(arg);
45
- const currentDriverCapabilities = currentBrowser.capabilities;
42
+ const currentDriverCapabilities = browserInstance.capabilities;
46
43
  const { height: screenHeight, width: screenWidth } = await getMobileScreenSize({
47
- currentBrowser,
48
- executor,
44
+ browserInstance,
49
45
  isIOS,
50
46
  isNativeContext,
51
47
  });
@@ -56,15 +52,11 @@ async function getMobileInstanceData({ currentBrowser, initialDeviceRectangles,
56
52
  deviceRectangles.statusBarAndAddressBar.width = screenWidth;
57
53
  deviceRectangles.statusBar.width = screenWidth;
58
54
  deviceRectangles = await getMobileViewPortPosition({
55
+ browserInstance,
59
56
  initialDeviceRectangles,
60
57
  isAndroid,
61
58
  isIOS,
62
59
  isNativeContext,
63
- methods: {
64
- executor,
65
- getUrl,
66
- url,
67
- },
68
60
  nativeWebScreenshot,
69
61
  screenHeight,
70
62
  screenWidth,
@@ -88,7 +80,7 @@ async function getMobileInstanceData({ currentBrowser, initialDeviceRectangles,
88
80
  }
89
81
  else {
90
82
  // This is to already determine the device pixel ratio if it's not set in the capabilities
91
- const base64Image = await currentBrowser.takeScreenshot();
83
+ const base64Image = await browserInstance.takeScreenshot();
92
84
  devicePixelRatio = getDevicePixelRatio(base64Image, deviceRectangles.screenSize);
93
85
  const isIphone = deviceRectangles.screenSize.width < 1024 && deviceRectangles.screenSize.height < 1024;
94
86
  const deviceType = isIphone ? 'IPHONE' : 'IPAD';
@@ -99,7 +91,7 @@ async function getMobileInstanceData({ currentBrowser, initialDeviceRectangles,
99
91
  const offsetPortraitHeight = Object.keys(IOS_OFFSETS[deviceType]).indexOf(portraitHeight.toString()) > -1 ?
100
92
  portraitHeight :
101
93
  defaultPortraitHeight;
102
- const currentOffsets = IOS_OFFSETS[deviceType][offsetPortraitHeight].PORTRAIT;
94
+ const currentOffsets = IOS_OFFSETS[deviceType][offsetPortraitHeight][screenWidth > screenHeight ? 'LANDSCAPE' : 'PORTRAIT'];
103
95
  // NOTE: The values for iOS are based on CSS pixels, so we need to multiply them with the devicePixelRatio,
104
96
  // This will NOT be done here but in a central place
105
97
  deviceRectangles.statusBar = {
@@ -126,12 +118,12 @@ export function getLtOptions(capabilities) {
126
118
  /**
127
119
  * Get the device name
128
120
  */
129
- function getDeviceName(currentBrowser) {
121
+ function getDeviceName(browserInstance) {
130
122
  const { capabilities: {
131
123
  // We use a few `@ts-ignore` here because this is returned by the driver
132
124
  // and not recognized by the types because they are not requested
133
125
  // @ts-ignore
134
- deviceName: returnedDeviceName = NOT_KNOWN, }, requestedCapabilities } = currentBrowser;
126
+ deviceName: returnedDeviceName = NOT_KNOWN, }, requestedCapabilities } = browserInstance;
135
127
  let deviceName = NOT_KNOWN;
136
128
  // First check if it's a BrowserStack session, they don't:
137
129
  // - return the "requested" deviceName in the session capabilities
@@ -154,8 +146,8 @@ function getDeviceName(currentBrowser) {
154
146
  /**
155
147
  * Get the instance data
156
148
  */
157
- export async function getInstanceData({ currentBrowser, initialDeviceRectangles, isNativeContext }) {
158
- const { capabilities: currentCapabilities, requestedCapabilities } = currentBrowser;
149
+ export async function getInstanceData({ browserInstance, initialDeviceRectangles, isNativeContext }) {
150
+ const { capabilities: currentCapabilities, requestedCapabilities } = browserInstance;
159
151
  const { browserName: rawBrowserName = NOT_KNOWN, browserVersion: rawBrowserVersion = NOT_KNOWN, platformName: rawPlatformName = NOT_KNOWN, } = currentCapabilities;
160
152
  // Generic data
161
153
  const browserName = rawBrowserName === '' ? NOT_KNOWN : rawBrowserName.toLowerCase();
@@ -163,7 +155,7 @@ export async function getInstanceData({ currentBrowser, initialDeviceRectangles,
163
155
  // For #967: When a screenshot of an emulated device is taken, but the browser was initially
164
156
  // started as a "desktop" session, so not with emulated caps, we need to store the initial
165
157
  // devicePixelRatio when we take a screenshot and enableLegacyScreenshotMethod is enabled
166
- let devicePixelRatio = !currentBrowser.isMobile ? (await currentBrowser.execute('return window.devicePixelRatio')) : 1;
158
+ let devicePixelRatio = !browserInstance.isMobile ? (await browserInstance.execute('return window.devicePixelRatio')) : 1;
167
159
  const platformName = rawPlatformName === '' ? NOT_KNOWN : rawPlatformName.toLowerCase();
168
160
  const logName = 'wdio-ics:options' in requestedCapabilities
169
161
  ? requestedCapabilities['wdio-ics:options']?.logName ?? ''
@@ -172,7 +164,7 @@ export async function getInstanceData({ currentBrowser, initialDeviceRectangles,
172
164
  ? requestedCapabilities['wdio-ics:options']?.name ?? ''
173
165
  : '';
174
166
  // Mobile data
175
- const { isAndroid, isIOS, isMobile } = currentBrowser;
167
+ const { isAndroid, isIOS, isMobile } = browserInstance;
176
168
  const {
177
169
  // We use a few `@ts-ignore` here because this is returned by the driver
178
170
  // and not recognized by the types because they are not requested
@@ -183,13 +175,13 @@ export async function getInstanceData({ currentBrowser, initialDeviceRectangles,
183
175
  const appName = rawApp !== NOT_KNOWN
184
176
  ? rawApp.replace(/\\/g, '/').split('/').pop().replace(/[^a-zA-Z0-9.]/g, '_')
185
177
  : NOT_KNOWN;
186
- const deviceName = getDeviceName(currentBrowser);
178
+ const deviceName = getDeviceName(browserInstance);
187
179
  const ltOptions = getLtOptions(requestedCapabilities);
188
180
  // @TODO: Figure this one out in the future when we know more about the Appium capabilities from LT
189
181
  // 20241216: LT doesn't have the option to take a ChromeDriver screenshot, so if it's Android it's always native
190
182
  const nativeWebScreenshot = isAndroid && ltOptions || !!(requestedCapabilities['appium:nativeWebScreenshot']);
191
183
  const platformVersion = (rawPlatformVersion === undefined || rawPlatformVersion === '') ? NOT_KNOWN : rawPlatformVersion.toLowerCase();
192
- const { devicePixelRatio: mobileDevicePixelRatio, deviceRectangles, } = await getMobileInstanceData({ currentBrowser, initialDeviceRectangles, isNativeContext, nativeWebScreenshot });
184
+ const { devicePixelRatio: mobileDevicePixelRatio, deviceRectangles, } = await getMobileInstanceData({ browserInstance, initialDeviceRectangles, isNativeContext, nativeWebScreenshot });
193
185
  devicePixelRatio = isMobile ? mobileDevicePixelRatio : devicePixelRatio;
194
186
  return {
195
187
  appName,
@@ -266,11 +258,3 @@ export function enrichTestContext({ commandName, currentTestContext: { framework
266
258
  title,
267
259
  };
268
260
  }
269
- /**
270
- * Check if the current browser supports isBidi screenshots
271
- */
272
- export function isBiDiScreenshotSupported(driver) {
273
- const { isBidi } = driver;
274
- const isBiDiSupported = typeof driver.browsingContextCaptureScreenshot === 'function';
275
- return isBidi && isBiDiSupported;
276
- }
@@ -1 +1 @@
1
- {"version":3,"file":"wrapWithContext.d.ts","sourceRoot":"","sources":["../src/wrapWithContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAGxD;;;;GAIG;AAEH,wBAAgB,eAAe,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAkBhI"}
1
+ {"version":3,"file":"wrapWithContext.d.ts","sourceRoot":"","sources":["../src/wrapWithContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAGxD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAkBhI"}
@@ -5,11 +5,11 @@ import { getInstanceData } from './utils.js';
5
5
  * and that the command is executed in the correct context
6
6
  */
7
7
  export function wrapWithContext(opts) {
8
- const { browser, command, contextManager, getArgs } = opts;
8
+ const { browserInstance, command, contextManager, getArgs } = opts;
9
9
  return async function () {
10
10
  if (contextManager.needsUpdate) {
11
11
  const instanceData = await getInstanceData({
12
- currentBrowser: browser,
12
+ browserInstance,
13
13
  initialDeviceRectangles: contextManager.getViewportContext(),
14
14
  isNativeContext: contextManager.isNativeContext,
15
15
  });
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": "8.0.4",
5
+ "version": "9.0.1",
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.13.0",
24
- "@wdio/logger": "^9.4.4",
25
- "@wdio/types": "^9.14.0",
26
- "expect-webdriverio": "^5.1.0",
27
- "webdriver-image-comparison": "9.0.4"
23
+ "@wdio/globals": "^9.17.0",
24
+ "@wdio/logger": "^9.18.0",
25
+ "@wdio/types": "^9.20.0",
26
+ "expect-webdriverio": "^5.5.0",
27
+ "@wdio/image-comparison-core": "1.0.1"
28
28
  },
29
29
  "scripts": {
30
30
  "build": "run-s clean build:*",