@wdio/visual-service 6.2.1 → 6.2.3
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 +13 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/matcher.d.ts +3 -3
- package/dist/matcher.d.ts.map +1 -1
- package/dist/matcher.js +34 -20
- package/dist/service.js +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +15 -5
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import type { Output, Result, WdioCheckFullPageMethodOptions, WdioSaveFullPageMe
|
|
|
5
5
|
import type { WaitForStorybookComponentToBeLoaded } from './storybook/Types.js';
|
|
6
6
|
declare global {
|
|
7
7
|
namespace WebdriverIO {
|
|
8
|
-
interface
|
|
8
|
+
interface BaseBrowser {
|
|
9
9
|
/**
|
|
10
10
|
* Saves an image of an element
|
|
11
11
|
*/
|
|
@@ -43,6 +43,10 @@ declare global {
|
|
|
43
43
|
*/
|
|
44
44
|
waitForStorybookComponentToBeLoaded(options: WaitForStorybookComponentToBeLoaded): Promise<void>;
|
|
45
45
|
}
|
|
46
|
+
interface Browser extends BaseBrowser {
|
|
47
|
+
}
|
|
48
|
+
interface MultiRemoteBrowser extends BaseBrowser {
|
|
49
|
+
}
|
|
46
50
|
interface Element {
|
|
47
51
|
}
|
|
48
52
|
interface Capabilities {
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,0BAA0B,MAAM,cAAc,CAAA;AACrD,OAAO,cAAc,MAAM,yBAAyB,CAAA;AACpD,OAAO,KAAK,EACR,MAAM,EACN,MAAM,EACN,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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/matcher.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { WdioCheckFullPageMethodOptions, WdioCheckElementMethodOptions, WdioCheckScreenMethodOptions } from './types.js';
|
|
2
|
-
export declare function toMatchScreenSnapshot(browser: WebdriverIO.Browser, tag: string, expectedResultOrOptions?: number | ExpectWebdriverIO.PartialMatcher, optionsOrUndefined?: WdioCheckScreenMethodOptions): Promise<{
|
|
2
|
+
export declare function toMatchScreenSnapshot(browser: WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser, tag: string, expectedResultOrOptions?: number | ExpectWebdriverIO.PartialMatcher, optionsOrUndefined?: WdioCheckScreenMethodOptions): Promise<{
|
|
3
3
|
pass: boolean;
|
|
4
4
|
message: () => string;
|
|
5
5
|
}>;
|
|
6
|
-
export declare function toMatchFullPageSnapshot(browser: WebdriverIO.Browser, tag: string, expectedResultOrOptions?: number | ExpectWebdriverIO.PartialMatcher, optionsOrUndefined?: WdioCheckFullPageMethodOptions): Promise<{
|
|
6
|
+
export declare function toMatchFullPageSnapshot(browser: WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser, tag: string, expectedResultOrOptions?: number | ExpectWebdriverIO.PartialMatcher, optionsOrUndefined?: WdioCheckFullPageMethodOptions): Promise<{
|
|
7
7
|
pass: boolean;
|
|
8
8
|
message: () => string;
|
|
9
9
|
}>;
|
|
@@ -11,7 +11,7 @@ export declare function toMatchElementSnapshot(element: WebdriverIO.Element, tag
|
|
|
11
11
|
pass: boolean;
|
|
12
12
|
message: () => string;
|
|
13
13
|
}>;
|
|
14
|
-
export declare function toMatchTabbablePageSnapshot(browser: WebdriverIO.Browser, tag: string, expectedResultOrOptions?: number | ExpectWebdriverIO.PartialMatcher, optionsOrUndefined?: WdioCheckFullPageMethodOptions): Promise<{
|
|
14
|
+
export declare function toMatchTabbablePageSnapshot(browser: WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser, tag: string, expectedResultOrOptions?: number | ExpectWebdriverIO.PartialMatcher, optionsOrUndefined?: WdioCheckFullPageMethodOptions): Promise<{
|
|
15
15
|
pass: boolean;
|
|
16
16
|
message: () => string;
|
|
17
17
|
}>;
|
package/dist/matcher.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../src/matcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,8BAA8B,EAC9B,6BAA6B,EAC7B,4BAA4B,EAC/B,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../src/matcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,8BAA8B,EAC9B,6BAA6B,EAC7B,4BAA4B,EAC/B,MAAM,YAAY,CAAA;AAqHnB,wBAAsB,qBAAqB,CACvC,OAAO,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,kBAAkB,EAC7D,GAAG,EAAE,MAAM,EACX,uBAAuB,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,cAAc,EACnE,kBAAkB,CAAC,EAAE,4BAA4B;;;GAKpD;AAED,wBAAsB,uBAAuB,CACzC,OAAO,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,kBAAkB,EAC7D,GAAG,EAAE,MAAM,EACX,uBAAuB,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,cAAc,EACnE,kBAAkB,CAAC,EAAE,8BAA8B;;;GAKtD;AAED,wBAAsB,sBAAsB,CACxC,OAAO,EAAE,WAAW,CAAC,OAAO,EAC5B,GAAG,EAAE,MAAM,EACX,uBAAuB,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,cAAc,EACnE,kBAAkB,CAAC,EAAE,6BAA6B;;;GAMrD;AAED,wBAAsB,2BAA2B,CAC7C,OAAO,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,kBAAkB,EAC7D,GAAG,EAAE,MAAM,EACX,uBAAuB,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,cAAc,EACnE,kBAAkB,CAAC,EAAE,8BAA8B;;;GAKtD"}
|
package/dist/matcher.js
CHANGED
|
@@ -6,40 +6,54 @@ const asymmetricMatcher = typeof Symbol === 'function' && Symbol.for
|
|
|
6
6
|
function isAsymmetricMatcher(expected) {
|
|
7
7
|
return Boolean(expected && typeof expected === 'object' && '$$typeof' in expected && expected.$$typeof === asymmetricMatcher && 'asymmetricMatch' in expected);
|
|
8
8
|
}
|
|
9
|
-
function
|
|
10
|
-
/**
|
|
11
|
-
* expected value is an asymmetric matcher, e.g.
|
|
12
|
-
*
|
|
13
|
-
* ```ts
|
|
14
|
-
* expect(browser).toMatchScreenSnapshot('foo', expect.closeTo(0, 2))
|
|
15
|
-
* ```
|
|
16
|
-
*/
|
|
9
|
+
function evaluateResult(result, expected, instanceName) {
|
|
17
10
|
if (isAsymmetricMatcher(expected)) {
|
|
18
11
|
const pass = expected.asymmetricMatch(result.misMatchPercentage);
|
|
12
|
+
const message = `${instanceName !== 'default' ? `Instance "${instanceName}": ` : ''}Expected image to match with the given asymmetric matcher but did not pass!`;
|
|
19
13
|
return {
|
|
20
14
|
pass,
|
|
21
|
-
message: () =>
|
|
15
|
+
message: () => message,
|
|
22
16
|
};
|
|
23
17
|
}
|
|
24
|
-
/**
|
|
25
|
-
* expected value is a number
|
|
26
|
-
*
|
|
27
|
-
* ```ts
|
|
28
|
-
* expect(browser).toMatchScreenSnapshot('foo', 0)
|
|
29
|
-
* ```
|
|
30
|
-
*/
|
|
31
18
|
if (typeof expected === 'number') {
|
|
19
|
+
const pass = result.misMatchPercentage <= expected;
|
|
32
20
|
return {
|
|
33
|
-
pass
|
|
34
|
-
message: () =>
|
|
21
|
+
pass,
|
|
22
|
+
message: () => instanceName !== 'default' ? `Instance "${instanceName}":\n` : '' +
|
|
23
|
+
`Expected image mismatch percentage to be at most ${expected}%, but was ${result.misMatchPercentage}%.\n` +
|
|
35
24
|
'If this is acceptable, you may need to adjust the threshold or update the baseline image if the changes are intentional.\n' +
|
|
36
25
|
`\nBaseline: ${result.folders.baseline}\n` +
|
|
37
26
|
`Actual Screenshot: ${result.folders.actual}\n` +
|
|
38
27
|
`Difference: ${result.folders.diff}\n` +
|
|
39
|
-
'\nFor guidance on handling visual discrepancies, refer to: https://webdriver.io/docs/api/visual-regression.html'
|
|
28
|
+
'\nFor guidance on handling visual discrepancies, refer to: https://webdriver.io/docs/api/visual-regression.html'
|
|
40
29
|
};
|
|
41
30
|
}
|
|
42
|
-
throw new Error(`Invalid matcher, expect either a number or an asymmetric matcher, but found ${expected}`);
|
|
31
|
+
throw new Error(`Invalid matcher for instance "${instanceName}", expect either a number or an asymmetric matcher, but found ${expected}`);
|
|
32
|
+
}
|
|
33
|
+
function isMultiremoteResult(result) {
|
|
34
|
+
return typeof result === 'object' && Object.values(result)[0]?.misMatchPercentage !== undefined;
|
|
35
|
+
}
|
|
36
|
+
function compareResult(result, expected) {
|
|
37
|
+
const isMultiremote = isMultiremoteResult(result);
|
|
38
|
+
const results = isMultiremote
|
|
39
|
+
? Object.entries(result).map(([instanceName, instanceResult]) => ({
|
|
40
|
+
instanceName,
|
|
41
|
+
result: instanceResult,
|
|
42
|
+
}))
|
|
43
|
+
: [{ instanceName: 'default', result }];
|
|
44
|
+
const failureMessages = [];
|
|
45
|
+
let overallPass = true;
|
|
46
|
+
for (const { instanceName, result: instanceResult } of results) {
|
|
47
|
+
const { pass, message } = evaluateResult(instanceResult, expected, instanceName);
|
|
48
|
+
if (!pass) {
|
|
49
|
+
overallPass = false;
|
|
50
|
+
failureMessages.push(message());
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
pass: overallPass,
|
|
55
|
+
message: () => failureMessages.join('\n\n') || 'All instances passed the visual comparison test.',
|
|
56
|
+
};
|
|
43
57
|
}
|
|
44
58
|
function parseMatcherParams(tag, expectedResult, options) {
|
|
45
59
|
/**
|
package/dist/service.js
CHANGED
|
@@ -215,7 +215,7 @@ export default class WdioImageComparisonService extends BaseClass {
|
|
|
215
215
|
#addMultiremoteElementCommand(browser, browserNames, commandName, command) {
|
|
216
216
|
log.info(`Adding element command "${commandName}" to Multi browser object`);
|
|
217
217
|
const self = this;
|
|
218
|
-
browser.addCommand(commandName, async function (
|
|
218
|
+
browser.addCommand(commandName, async function (element, tag, pageOptions = {}) {
|
|
219
219
|
const returnData = {};
|
|
220
220
|
const elementOptionsKey = commandName === 'saveElement' ? 'saveElementOptions' : 'checkElementOptions';
|
|
221
221
|
for (const browserName of browserNames) {
|
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;AA4GD;;GAEG;AACH,wBAAsB,eAAe,CAAC,cAAc,EAAE,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CA4DhG;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,
|
|
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;AA4GD;;GAEG;AACH,wBAAsB,eAAe,CAAC,cAAc,EAAE,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CA4DhG;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,CAmCnB;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
|
@@ -185,11 +185,21 @@ export function determineNativeContext(driver) {
|
|
|
185
185
|
}
|
|
186
186
|
// If not check if it's a mobile
|
|
187
187
|
if (driver.isMobile) {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
188
|
+
const isAppiumAppCapPresent = (capabilities) => {
|
|
189
|
+
const appiumKeys = [
|
|
190
|
+
'appium:app',
|
|
191
|
+
'appium:bundleId',
|
|
192
|
+
'appium:appPackage',
|
|
193
|
+
'appium:appActivity',
|
|
194
|
+
'appium:appWaitActivity',
|
|
195
|
+
'appium:appWaitPackage',
|
|
196
|
+
];
|
|
197
|
+
return appiumKeys.some(key => capabilities[key] !== undefined);
|
|
198
|
+
};
|
|
199
|
+
const capabilities = driver.requestedCapabilities;
|
|
200
|
+
const isBrowserNameFalse = !!capabilities.browserName === false;
|
|
201
|
+
const isAutoWebviewFalse = capabilities['appium:autoWebview'] !== true;
|
|
202
|
+
return isBrowserNameFalse && isAppiumAppCapPresent(capabilities) && isAutoWebviewFalse;
|
|
193
203
|
}
|
|
194
204
|
// If not, it's webcontext
|
|
195
205
|
return false;
|
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.2.
|
|
5
|
+
"version": "6.2.3",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://webdriver.io/docs/visual-testing",
|
|
8
8
|
"repository": {
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
"type": "module",
|
|
21
21
|
"types": "./dist/index.d.ts",
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@wdio/globals": "^9.
|
|
23
|
+
"@wdio/globals": "^9.3.1",
|
|
24
24
|
"@wdio/logger": "^9.1.3",
|
|
25
|
-
"@wdio/types": "^9.
|
|
25
|
+
"@wdio/types": "^9.2.2",
|
|
26
26
|
"node-fetch": "^3.3.2",
|
|
27
27
|
"webdriver-image-comparison": "^7.2.1"
|
|
28
28
|
},
|