@wdio/visual-service 8.0.4 โ†’ 9.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,94 @@
1
1
  # @wdio/visual-service
2
2
 
3
+ ## 9.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - 1326e99: ## ๐Ÿ’ฅ Major Release: New @wdio/image-comparison-core Package
8
+
9
+ ### ๐Ÿ—๏ธ Architectural Refactor
10
+
11
+ 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.
12
+
13
+ #### What was the problem?
14
+
15
+ - The old `webdriver-image-comparison` package was designed for generic webdriver usage
16
+ - Complex integration between generic and WDIO-specific code
17
+ - Limited test coverage (~58%) making maintenance difficult
18
+ - Mixed responsibilities between core logic and service integration
19
+
20
+ #### What changed?
21
+
22
+ โœ… **New dedicated core package**: `@wdio/image-comparison-core` - purpose-built for WebdriverIO
23
+ โœ… **Cleaner architecture**: Modular design with clear separation of concerns
24
+ โœ… **Enhanced test coverage**: Improved from ~58% to ~90% across all metrics
25
+ โœ… **Better maintainability**: Organized codebase with comprehensive TypeScript interfaces
26
+ โœ… **WDIO-specific dependencies**: Only depends on `@wdio/logger`, `@wdio/types`, etc.
27
+
28
+ ### ๐Ÿงช Testing Improvements
29
+
30
+ - **100% branch coverage** on critical decision points
31
+ - **Comprehensive unit tests** for all major functions
32
+ - **Optimized mocks** for complex scenarios
33
+ - **Better test isolation** and reliability
34
+
35
+ | Before/After | % Stmts | % Branch | % Funcs | % Lines |
36
+ | ------------------ | ------- | -------- | ------- | ------- |
37
+ | **Previous** | 58.59 | 91.4 | 80.71 | 58.59 |
38
+ | **After refactor** | 90.55 | 96.38 | 93.99 | 90.55 |
39
+
40
+ ### ๐Ÿ”ง Service Integration
41
+
42
+ The `@wdio/visual-service` now imports from the new `@wdio/image-comparison-core` package while maintaining the same public API and functionality for users.
43
+
44
+ ### ๐Ÿ“ˆ Performance & Quality
45
+
46
+ - **Modular architecture**: Easier to maintain and extend
47
+ - **Type safety**: Comprehensive TypeScript coverage
48
+ - **Clean exports**: Well-defined public API
49
+ - **Internal interfaces**: Proper separation of concerns
50
+
51
+ ### ๐Ÿ”„ Backward Compatibility
52
+
53
+ โœ… **No breaking changes** for end users
54
+ โœ… **Same public API** maintained
55
+ โœ… **Existing configurations** continue to work
56
+ โœ… **All existing functionality** preserved
57
+
58
+ ### ๐ŸŽฏ Future Benefits
59
+
60
+ This refactor sets the foundation for:
61
+
62
+ - Easier addition of new features
63
+ - Better bug fixing capabilities
64
+ - Enhanced mobile and native app support
65
+ - More reliable MultiRemote functionality
66
+
67
+ ### ๐Ÿ“ฆ Dependency Updates
68
+
69
+ - Updated most dependencies to their latest versions
70
+ - Improved security with latest package versions
71
+ - Better compatibility with current WebdriverIO ecosystem
72
+ - Enhanced performance through updated dependencies
73
+
74
+ ***
75
+
76
+ **Note**: This is an architectural improvement that modernizes the codebase while maintaining full backward compatibility. All existing functionality remains unchanged for users.
77
+
78
+ ***
79
+
80
+ ### Patch Changes
81
+
82
+ - be4272c: fix: [983](#983) in multiremote, commands are now executed on the requested instances
83
+ - Updated dependencies [74df53b]
84
+ - Updated dependencies [1326e99]
85
+ - @wdio/image-comparison-core@1.0.0
86
+
87
+ ## Committers: 2
88
+
89
+ - P-Courteille ([@P-Courteille](https://github.com/P-Courteille))
90
+ - Wim Selles ([@wswebcreation](https://github.com/wswebcreation))
91
+
3
92
  ## 8.0.4
4
93
 
5
94
  ### 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":"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"}
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":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,OAAO,KAAK,EACR,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EAErB,uBAAuB,EACvB,OAAO,EAGP,kBAAkB,EAClB,aAAa,EACb,mCAAmC,EACtC,MAAM,YAAY,CAAA;AAKnB;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,GAAG,OAAO,CAEjG;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,GAAG,OAAO,CAEhG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,GAAG,OAAO,CAE9F;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,MAAM,iBAUxD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAY/C;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,CAMzE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/storybook/utils.ts"],"names":[],"mappings":"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"}
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":"AAAA,OAAO,KAAK,EACR,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,EAC1B,yBAAyB,EACzB,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,+BAA+B,EAC/B,sCAAsC,EACtC,gCAAgC,EAChC,iCAAiC,EACjC,qCAAqC,EACrC,gCAAgC,EAChC,iCAAiC,EACjC,kCAAkC,EACrC,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,sBAAsB,CAAA;AAE/E,KAAK,WAAW,GAAG;IACf,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAAC;CAC3C,CAAC;AACF,MAAM,MAAM,MAAM,GAAG,WAAW,GAAG,gBAAgB,CAAC;AACpD,KAAK,WAAW,GAAG;IACf,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,GAAG,MAAM,CAAC;CACtD,CAAC;AACF,MAAM,MAAM,MAAM,GAAG,WAAW,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAC,CAAC;AACjE,MAAM,MAAM,kBAAkB,GAAG;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,gBAAgB,CAAC;CACtC,CAAA;AACD,MAAM,MAAM,sBAAsB,GAC5B,yBAAyB,GACzB,0BAA0B,GAC1B,wBAAwB,GACxB,wBAAwB,GACxB,yBAAyB,GACzB,uBAAuB,CAAC;AAC9B,MAAM,MAAM,sBAAsB,GAAG;IACjC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC;IACrC,uBAAuB,EAAE,gBAAgB,CAAC;IAC1C,eAAe,EAAE,OAAO,CAAA;CAC3B,CAAA;AACD,MAAM,MAAM,wBAAwB,GAAG;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,WAAW,CAAC;IAChC,YAAY,EAAE,YAAY,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;CACf,CAAA;AACD,MAAM,MAAM,4BAA4B,GAAG;IACvC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC;IACrC,uBAAuB,EAAE,gBAAgB,CAAC;IAC1C,eAAe,EAAC,OAAO,CAAC;IACxB,mBAAmB,EAAC,OAAO,CAAC;CAC/B,CAAA;AAED,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG;IACrE,eAAe,EAAE,WAAW,CAAC,OAAO,CAAA;IACpC,OAAO,EAAE,CAAC,CAAA;IACV,cAAc,EAAE,cAAc,CAAA;IAC9B,OAAO,EAAE,MAAM,UAAU,CAAC,CAAC,CAAC,CAAA;CAC/B;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACjC,YAAY,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,GAAG,uBAAuB,CAAC,EAAE,CAAC;IACjE,cAAc,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,GAAG,uBAAuB,CAAC,EAAE,CAAC;CACtE;AAED,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAC9D,oBAAoB,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,GAAG,uBAAuB,CAAC,EAAE,CAAC;CAC5E;AAGD,MAAM,WAAW,2BAA4B,SAAQ,IAAI,CAAC,uBAAuB,EAAE,MAAM,oBAAoB,CAAC,EAAE,oBAAoB;CAAG;AACvI,MAAM,WAAW,4BAA6B,SAAQ,IAAI,CAAC,wBAAwB,EAAE,MAAM,oBAAoB,CAAC,EAAE,oBAAoB;CAAG;AACzI,MAAM,WAAW,6BAA8B,SAAQ,IAAI,CAAC,yBAAyB,EAAE,MAAM,oBAAoB,CAAC,EAAE,oBAAoB;CAAI;AAG5I,MAAM,WAAW,4BAA6B,SAAQ,IAAI,CAAC,wBAAwB,EAAE,MAAM,oBAAoB,CAAC,EAAE,oBAAoB;CAAG;AACzI,MAAM,WAAW,6BAA8B,SAAQ,IAAI,CAAC,yBAAyB,EAAE,MAAM,oBAAoB,CAAC,EAAE,oBAAoB;CAAG;AAC3I,MAAM,WAAW,8BAA+B,SAAQ,IAAI,CAAC,0BAA0B,EAAE,MAAM,oBAAoB,CAAC,EAAE,oBAAoB;CAAG;AAE7I,MAAM,WAAW,oBAAqB,SAAQ,YAAY;CAAI;AAE9D,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,CAAC,OAAO,EAAE,+BAA+B,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACzE,WAAW,EAAE,CAAC,OAAO,EAAE,gCAAgC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3E,kBAAkB,EAAE,CAAC,OAAO,EAAE,iCAAiC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACnF,gBAAgB,EAAE,CAAC,OAAO,EAAE,qCAAqC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACrF,WAAW,EAAE,CAAC,OAAO,EAAE,gCAAgC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3E,YAAY,EAAE,CAAC,OAAO,EAAE,iCAAiC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7E,mBAAmB,EAAE,CAAC,OAAO,EAAE,kCAAkC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACrF,iBAAiB,EAAE,CAAC,OAAO,EAAE,sCAAsC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAEvF,mCAAmC,EAAE,CAAC,OAAO,EAAE,mCAAmC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACvG"}
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.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.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.16.2",
26
+ "expect-webdriverio": "^5.4.0",
27
+ "@wdio/image-comparison-core": "1.0.0"
28
28
  },
29
29
  "scripts": {
30
30
  "build": "run-s clean build:*",