@wdio/visual-service 6.2.4 → 6.3.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 +23 -0
- package/dist/types.d.ts +4 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +4 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +33 -3
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# @wdio/visual-service
|
|
2
2
|
|
|
3
|
+
## 6.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 2d033e8: Add LambdaTest support
|
|
8
|
+
- #691 Add option to ignore blinking cursors / carets by providing the option `disableBlinkingCursor`
|
|
9
|
+
- #692 Add support for `appium:options`
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [2d033e8]
|
|
14
|
+
- webdriver-image-comparison@7.3.0
|
|
15
|
+
|
|
16
|
+
## 6.2.5
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- 4a4adf1: Fix resize dimensions for mobile
|
|
21
|
+
- 4a4adf1: update deps
|
|
22
|
+
- Updated dependencies [4a4adf1]
|
|
23
|
+
- Updated dependencies [4a4adf1]
|
|
24
|
+
- webdriver-image-comparison@7.2.2
|
|
25
|
+
|
|
3
26
|
## 6.2.4
|
|
4
27
|
|
|
5
28
|
### Patch Changes
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ScreenshotOutput, ImageCompareResult, CheckScreenMethodOptions, SaveScreenMethodOptions, CheckElementMethodOptions, SaveElementMethodOptions, CheckFullPageMethodOptions, SaveFullPageMethodOptions, ClassOptions } from 'webdriver-image-comparison';
|
|
2
|
+
import type { ChainablePromiseElement } from 'webdriverio';
|
|
2
3
|
type MultiOutput = {
|
|
3
4
|
[browserName: string]: ScreenshotOutput;
|
|
4
5
|
};
|
|
@@ -21,11 +22,11 @@ export type MultiremoteCommandResult = {
|
|
|
21
22
|
type: string;
|
|
22
23
|
};
|
|
23
24
|
export interface WdioIcsCommonOptions {
|
|
24
|
-
hideElements?: WebdriverIO.Element[];
|
|
25
|
-
removeElements?: WebdriverIO.Element[];
|
|
25
|
+
hideElements?: (WebdriverIO.Element | ChainablePromiseElement)[];
|
|
26
|
+
removeElements?: (WebdriverIO.Element | ChainablePromiseElement)[];
|
|
26
27
|
}
|
|
27
28
|
export interface WdioIcsScrollOptions extends WdioIcsCommonOptions {
|
|
28
|
-
hideAfterFirstScroll?: WebdriverIO.Element[];
|
|
29
|
+
hideAfterFirstScroll?: (WebdriverIO.Element | ChainablePromiseElement)[];
|
|
29
30
|
}
|
|
30
31
|
export interface WdioCheckFullPageMethodOptions extends Omit<CheckFullPageMethodOptions, keyof WdioIcsScrollOptions>, WdioIcsScrollOptions {
|
|
31
32
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,EACf,MAAM,4BAA4B,CAAA;
|
|
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,EACf,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAE1D,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,iBAAiB,GAAG,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AACjE,MAAM,MAAM,wBAAwB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACpB,CAAA;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;AAED,MAAM,WAAW,8BACb,SAAQ,IAAI,CAAC,0BAA0B,EAAE,MAAM,oBAAoB,CAAC,EAChE,oBAAoB;CAAG;AAC/B,MAAM,WAAW,6BACb,SAAQ,IAAI,CAAC,yBAAyB,EAAE,MAAM,oBAAoB,CAAC,EAC/D,oBAAoB;CAAG;AAC/B,MAAM,WAAW,4BACb,SAAQ,IAAI,CAAC,wBAAwB,EAAE,MAAM,oBAAoB,CAAC,EAC9D,oBAAoB;CAAG;AAC/B,MAAM,WAAW,2BACb,SAAQ,IAAI,CAAC,uBAAuB,EAAE,MAAM,oBAAoB,CAAC,EAC7D,oBAAoB;CAAG;AAC/B,MAAM,WAAW,6BACb,SAAQ,IAAI,CAAC,yBAAyB,EAAE,MAAM,oBAAoB,CAAC,EAC/D,oBAAoB;CAAG;AAC/B,MAAM,WAAW,4BACb,SAAQ,IAAI,CAAC,wBAAwB,EAAE,MAAM,oBAAoB,CAAC,EAC9D,oBAAoB;CAAG;AAE/B,MAAM,WAAW,oBAAqB,SAAQ,YAAY;CAAG"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -22,6 +22,10 @@ export declare function getDevicePixelRatio(screenshot: string, deviceScreenSize
|
|
|
22
22
|
height: number;
|
|
23
23
|
width: number;
|
|
24
24
|
}): number;
|
|
25
|
+
/**
|
|
26
|
+
* Get the LambdaTest options, these can be case insensitive
|
|
27
|
+
*/
|
|
28
|
+
export declare function getLtOptions(capabilities: WebdriverIO.Capabilities): any | undefined;
|
|
25
29
|
/**
|
|
26
30
|
* Get the instance data
|
|
27
31
|
*/
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,OAAO,EACP,YAAY,EACZ,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,WAAW,EACd,MAAM,4BAA4B,CAAA;AAEnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAOnD;;;;;GAKG;AACH,KAAK,sBAAsB,GACrB,yBAAyB,GACzB,0BAA0B,GAC1B,wBAAwB,GACxB,wBAAwB,GACxB,yBAAyB,GACzB,uBAAuB,CAAC;AAE9B,wBAAgB,UAAU,CACtB,aAAa,EAAE,sBAAsB,EACrC,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,MAAM,GACxB,OAAO,CAMT;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,iBAAiB,SAAI,GAAG;IAC1E,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;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,OAAO,EACP,YAAY,EACZ,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,WAAW,EACd,MAAM,4BAA4B,CAAA;AAEnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAOnD;;;;;GAKG;AACH,KAAK,sBAAsB,GACrB,yBAAyB,GACzB,0BAA0B,GAC1B,wBAAwB,GACxB,wBAAwB,GACxB,yBAAyB,GACzB,uBAAuB,CAAC;AAE9B,wBAAgB,UAAU,CACtB,aAAa,EAAE,sBAAsB,EACrC,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,MAAM,GACxB,OAAO,CAMT;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,iBAAiB,SAAI,GAAG;IAC1E,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;AAkFD;;GAEG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,WAAW,CAAC,YAAY,GAAG,GAAG,GAAG,SAAS,CAMpF;AAmCD;;GAEG;AACH,wBAAsB,eAAe,CAAC,cAAc,EAAE,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CA+DhG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAGtG;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAClC,MAAM,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,kBAAkB,GAC7D,iBAAiB,CAoDnB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC5B,OAAO,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,kBAAkB,EAC7D,cAAc,EAAE,WAAW,CAAC,OAAO,EACnC,aAAa,EAAE,iBAAiB,GACjC,OAAO,CAQT;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,EACD;IACI,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,WAAW,CAAC;IAChC,YAAY,EAAE,YAAY,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;CACf,GACF,WAAW,CAuBb"}
|
package/dist/utils.js
CHANGED
|
@@ -87,6 +87,13 @@ async function getMobileInstanceData({ currentBrowser, isAndroid, isMobile }) {
|
|
|
87
87
|
deviceScreenSize,
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Get the LambdaTest options, these can be case insensitive
|
|
92
|
+
*/
|
|
93
|
+
export function getLtOptions(capabilities) {
|
|
94
|
+
const key = Object.keys(capabilities).find((k) => k.toLowerCase() === 'lt:options');
|
|
95
|
+
return key ? capabilities[key] : undefined;
|
|
96
|
+
}
|
|
90
97
|
/**
|
|
91
98
|
* Get the device name
|
|
92
99
|
*/
|
|
@@ -106,6 +113,12 @@ function getDeviceName(currentBrowser) {
|
|
|
106
113
|
if (isBrowserStack && bsOptions && capName in bsOptions) {
|
|
107
114
|
deviceName = bsOptions[capName];
|
|
108
115
|
}
|
|
116
|
+
// Same for LabdaTest
|
|
117
|
+
const isLambdaTest = 'lt:options' in requestedCapabilities;
|
|
118
|
+
const ltOptions = getLtOptions(requestedCapabilities);
|
|
119
|
+
if (isLambdaTest && ltOptions && capName in ltOptions) {
|
|
120
|
+
deviceName = ltOptions[capName];
|
|
121
|
+
}
|
|
109
122
|
const { 'appium:deviceName': requestedDeviceName } = requestedCapabilities;
|
|
110
123
|
return (deviceName !== NOT_KNOWN ? deviceName : requestedDeviceName || returnedDeviceName || NOT_KNOWN).toLowerCase();
|
|
111
124
|
}
|
|
@@ -140,7 +153,10 @@ export async function getInstanceData(currentBrowser) {
|
|
|
140
153
|
? rawApp.replace(/\\/g, '/').split('/').pop().replace(/[^a-zA-Z0-9.]/g, '_')
|
|
141
154
|
: NOT_KNOWN;
|
|
142
155
|
const deviceName = getDeviceName(currentBrowser);
|
|
143
|
-
const
|
|
156
|
+
const ltOptions = getLtOptions(requestedCapabilities);
|
|
157
|
+
// @TODO: Figure this one out in the future when we know more about the Appium capabilities from LT
|
|
158
|
+
// 20241216: LT doesn't have the option to take a ChromeDriver screenshot, so if it's Android it's always native
|
|
159
|
+
const nativeWebScreenshot = isAndroid && ltOptions || !!(requestedCapabilities['appium:nativeWebScreenshot']);
|
|
144
160
|
const platformVersion = (rawPlatformVersion === undefined || rawPlatformVersion === '') ? NOT_KNOWN : rawPlatformVersion.toLowerCase();
|
|
145
161
|
const { devicePixelRatio: mobileDevicePixelRatio, devicePlatformRect, deviceScreenSize, } = await getMobileInstanceData({ currentBrowser, isAndroid, isMobile });
|
|
146
162
|
devicePixelRatio = isMobile ? mobileDevicePixelRatio : devicePixelRatio;
|
|
@@ -193,12 +209,26 @@ export function determineNativeContext(driver) {
|
|
|
193
209
|
'appium:appActivity',
|
|
194
210
|
'appium:appWaitActivity',
|
|
195
211
|
'appium:appWaitPackage',
|
|
212
|
+
'appium:autoWebview',
|
|
196
213
|
];
|
|
197
|
-
|
|
214
|
+
const optionsKeys = appiumKeys.map(key => key.replace('appium:', ''));
|
|
215
|
+
const isInRoot = appiumKeys.some(key => capabilities[key] !== undefined);
|
|
216
|
+
// @ts-expect-error
|
|
217
|
+
const isInAppiumOptions = capabilities['appium:options'] &&
|
|
218
|
+
// @ts-expect-error
|
|
219
|
+
optionsKeys.some(key => capabilities['appium:options']?.[key] !== undefined);
|
|
220
|
+
// @ts-expect-error
|
|
221
|
+
const isInLtOptions = capabilities['lt:options'] &&
|
|
222
|
+
// @ts-expect-error
|
|
223
|
+
optionsKeys.some(key => capabilities['lt:options']?.[key] !== undefined);
|
|
224
|
+
return !!(isInRoot || isInAppiumOptions || isInLtOptions);
|
|
198
225
|
};
|
|
199
226
|
const capabilities = driver.requestedCapabilities;
|
|
200
227
|
const isBrowserNameFalse = !!capabilities.browserName === false;
|
|
201
|
-
const isAutoWebviewFalse = capabilities['appium:autoWebview']
|
|
228
|
+
const isAutoWebviewFalse = !(capabilities['appium:autoWebview'] === true ||
|
|
229
|
+
capabilities['appium:options']?.autoWebview === true ||
|
|
230
|
+
// @ts-expect-error
|
|
231
|
+
capabilities['lt:options']?.autoWebview === true);
|
|
202
232
|
return isBrowserNameFalse && isAppiumAppCapPresent(capabilities) && isAutoWebviewFalse;
|
|
203
233
|
}
|
|
204
234
|
// If not, it's webcontext
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@wdio/visual-service",
|
|
3
3
|
"author": "Wim Selles - wswebcreation",
|
|
4
4
|
"description": "Image comparison / visual regression testing for WebdriverIO",
|
|
5
|
-
"version": "6.
|
|
5
|
+
"version": "6.3.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.4.
|
|
24
|
-
"@wdio/logger": "^9.
|
|
25
|
-
"@wdio/types": "^9.
|
|
23
|
+
"@wdio/globals": "^9.4.5",
|
|
24
|
+
"@wdio/logger": "^9.4.4",
|
|
25
|
+
"@wdio/types": "^9.4.4",
|
|
26
26
|
"node-fetch": "^3.3.2",
|
|
27
|
-
"webdriver-image-comparison": "^7.
|
|
27
|
+
"webdriver-image-comparison": "^7.3.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {},
|
|
30
30
|
"scripts": {
|