@applitools/driver 1.4.16 → 1.4.17-beta.2
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 +225 -223
- package/LICENSE +25 -25
- package/README.md +449 -449
- package/dist/capabilities.js +58 -58
- package/dist/context.js +493 -458
- package/dist/debug/check-spec-driver.js +167 -167
- package/dist/debug/index.js +13 -13
- package/dist/driver.js +519 -518
- package/dist/element.js +483 -484
- package/dist/fake/index.js +25 -25
- package/dist/fake/mock-driver.js +344 -344
- package/dist/fake/spec-driver.js +108 -108
- package/dist/helper-android.js +68 -68
- package/dist/helper-ios.js +39 -39
- package/dist/index.js +15 -15
- package/dist/spec-utils.js +77 -0
- package/dist/user-agent.js +113 -113
- package/dist/utils.js +82 -82
- package/package.json +100 -100
- package/types/capabilities.d.ts +4 -4
- package/types/context.d.ts +76 -71
- package/types/debug/check-spec-driver.d.ts +20 -20
- package/types/debug/index.d.ts +1 -1
- package/types/driver.d.ts +67 -68
- package/types/element.d.ts +56 -57
- package/types/fake/index.d.ts +3 -3
- package/types/fake/mock-driver.d.ts +35 -35
- package/types/fake/spec-driver.d.ts +30 -30
- package/types/helper-android.d.ts +23 -23
- package/types/helper-ios.d.ts +21 -21
- package/types/index.d.ts +3 -3
- package/types/spec-utils.d.ts +13 -0
- package/types/user-agent.d.ts +12 -12
- package/types/utils.d.ts +11 -11
package/dist/user-agent.js
CHANGED
|
@@ -1,113 +1,113 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.parseBrowser = exports.parsePlatform = exports.parseUserAgent = void 0;
|
|
23
|
-
const utils = __importStar(require("@applitools/utils"));
|
|
24
|
-
const MAJOR_MINOR = '(\\d+)(?:[_.](\\d+))?';
|
|
25
|
-
const PLATFORM_REGEXES = [
|
|
26
|
-
new RegExp(`(?:(Windows NT) ${MAJOR_MINOR})`),
|
|
27
|
-
new RegExp('(?:(Windows XP))'),
|
|
28
|
-
new RegExp('(?:(Windows 2000))'),
|
|
29
|
-
new RegExp('(?:(Windows NT))'),
|
|
30
|
-
new RegExp('(?:(Windows))'),
|
|
31
|
-
new RegExp(`(?:(Mac OS X) ${MAJOR_MINOR})`),
|
|
32
|
-
new RegExp(`(?:(Android) ${MAJOR_MINOR})`),
|
|
33
|
-
new RegExp(`(?:(CPU(?: i[a-zA-Z]+)? OS) ${MAJOR_MINOR})`),
|
|
34
|
-
new RegExp('(?:(Mac OS X))'),
|
|
35
|
-
new RegExp('(?:(Mac_PowerPC))'),
|
|
36
|
-
new RegExp('(?:(Linux))'),
|
|
37
|
-
new RegExp('(?:(CrOS))'),
|
|
38
|
-
new RegExp('(?:(SymbOS))'),
|
|
39
|
-
];
|
|
40
|
-
const BROWSER_REGEXPES = [
|
|
41
|
-
new RegExp(`(?:(Opera)/${MAJOR_MINOR})`),
|
|
42
|
-
new RegExp(`(?:(Edg)/${MAJOR_MINOR})`),
|
|
43
|
-
new RegExp(`(?:(Edge)/${MAJOR_MINOR})`),
|
|
44
|
-
new RegExp(`(?:(Chrome)/${MAJOR_MINOR})`),
|
|
45
|
-
new RegExp(`(?:(Safari)/${MAJOR_MINOR})`),
|
|
46
|
-
new RegExp(`(?:(Firefox)/${MAJOR_MINOR})`),
|
|
47
|
-
new RegExp(`(?:MS(IE) ${MAJOR_MINOR})`),
|
|
48
|
-
];
|
|
49
|
-
const HIDDEN_IE_REGEX = new RegExp(`(?:rv:${MAJOR_MINOR}\\) like Gecko)`);
|
|
50
|
-
const BROWSER_VERSION_REGEX = new RegExp(`(?:Version/${MAJOR_MINOR})`);
|
|
51
|
-
function parseUserAgent(userAgent) {
|
|
52
|
-
utils.guard.notNull(userAgent, { name: 'userAgent' });
|
|
53
|
-
userAgent = userAgent.trim();
|
|
54
|
-
return Object.assign(Object.assign({}, parsePlatform(userAgent)), parseBrowser(userAgent));
|
|
55
|
-
}
|
|
56
|
-
exports.parseUserAgent = parseUserAgent;
|
|
57
|
-
function parsePlatform(userAgent) {
|
|
58
|
-
const platformRegExp = PLATFORM_REGEXES.find(regexp => regexp.test(userAgent));
|
|
59
|
-
if (!platformRegExp)
|
|
60
|
-
return { platformName: 'Unknown' };
|
|
61
|
-
const [_, platformName, platformMajorVersion, platformMinorVersion] = platformRegExp.exec(userAgent);
|
|
62
|
-
if (platformName.startsWith('CPU')) {
|
|
63
|
-
return { platformName: 'iOS', platformVersion: platformMajorVersion };
|
|
64
|
-
}
|
|
65
|
-
else if (platformName === 'Windows 2000' || platformName === 'Windows XP') {
|
|
66
|
-
return { platformName: 'Windows', platformVersion: '5' };
|
|
67
|
-
}
|
|
68
|
-
else if (platformName === 'Windows NT') {
|
|
69
|
-
const result = { platformName: 'Windows', platformVersion: platformMajorVersion };
|
|
70
|
-
if (!platformMajorVersion) {
|
|
71
|
-
result.platformVersion = '4';
|
|
72
|
-
}
|
|
73
|
-
else if (platformMajorVersion === '6' && platformMinorVersion === '1') {
|
|
74
|
-
result.platformVersion = '7';
|
|
75
|
-
}
|
|
76
|
-
else if (platformMajorVersion === '6' && (platformMinorVersion === '2' || platformMinorVersion === '3')) {
|
|
77
|
-
result.platformVersion = '8';
|
|
78
|
-
}
|
|
79
|
-
return result;
|
|
80
|
-
}
|
|
81
|
-
else if (platformName === 'Mac_PowerPC') {
|
|
82
|
-
return { platformName: 'Macintosh', platformVersion: platformMajorVersion };
|
|
83
|
-
}
|
|
84
|
-
else if (platformName === 'CrOS') {
|
|
85
|
-
return { platformName: 'Chrome OS', platformVersion: platformMajorVersion };
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
return { platformName, platformVersion: platformMajorVersion };
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
exports.parsePlatform = parsePlatform;
|
|
92
|
-
function parseBrowser(userAgent) {
|
|
93
|
-
const browserRegExp = BROWSER_REGEXPES.find(regexp => regexp.test(userAgent));
|
|
94
|
-
if (!browserRegExp) {
|
|
95
|
-
if (HIDDEN_IE_REGEX.test(userAgent)) {
|
|
96
|
-
const [_, browserVersion] = HIDDEN_IE_REGEX.exec(userAgent);
|
|
97
|
-
return { browserName: 'IE', browserVersion };
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
return { browserName: 'Unknown' };
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
const [_, browserName, browserVersion] = browserRegExp.exec(userAgent);
|
|
104
|
-
const result = { browserName, browserVersion };
|
|
105
|
-
if (result.browserName === 'Edg')
|
|
106
|
-
result.browserName = 'Edge';
|
|
107
|
-
if (BROWSER_VERSION_REGEX.test(userAgent)) {
|
|
108
|
-
const [_, browserVersion] = BROWSER_VERSION_REGEX.exec(userAgent);
|
|
109
|
-
result.browserVersion = browserVersion;
|
|
110
|
-
}
|
|
111
|
-
return result;
|
|
112
|
-
}
|
|
113
|
-
exports.parseBrowser = parseBrowser;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.parseBrowser = exports.parsePlatform = exports.parseUserAgent = void 0;
|
|
23
|
+
const utils = __importStar(require("@applitools/utils"));
|
|
24
|
+
const MAJOR_MINOR = '(\\d+)(?:[_.](\\d+))?';
|
|
25
|
+
const PLATFORM_REGEXES = [
|
|
26
|
+
new RegExp(`(?:(Windows NT) ${MAJOR_MINOR})`),
|
|
27
|
+
new RegExp('(?:(Windows XP))'),
|
|
28
|
+
new RegExp('(?:(Windows 2000))'),
|
|
29
|
+
new RegExp('(?:(Windows NT))'),
|
|
30
|
+
new RegExp('(?:(Windows))'),
|
|
31
|
+
new RegExp(`(?:(Mac OS X) ${MAJOR_MINOR})`),
|
|
32
|
+
new RegExp(`(?:(Android) ${MAJOR_MINOR})`),
|
|
33
|
+
new RegExp(`(?:(CPU(?: i[a-zA-Z]+)? OS) ${MAJOR_MINOR})`),
|
|
34
|
+
new RegExp('(?:(Mac OS X))'),
|
|
35
|
+
new RegExp('(?:(Mac_PowerPC))'),
|
|
36
|
+
new RegExp('(?:(Linux))'),
|
|
37
|
+
new RegExp('(?:(CrOS))'),
|
|
38
|
+
new RegExp('(?:(SymbOS))'),
|
|
39
|
+
];
|
|
40
|
+
const BROWSER_REGEXPES = [
|
|
41
|
+
new RegExp(`(?:(Opera)/${MAJOR_MINOR})`),
|
|
42
|
+
new RegExp(`(?:(Edg)/${MAJOR_MINOR})`),
|
|
43
|
+
new RegExp(`(?:(Edge)/${MAJOR_MINOR})`),
|
|
44
|
+
new RegExp(`(?:(Chrome)/${MAJOR_MINOR})`),
|
|
45
|
+
new RegExp(`(?:(Safari)/${MAJOR_MINOR})`),
|
|
46
|
+
new RegExp(`(?:(Firefox)/${MAJOR_MINOR})`),
|
|
47
|
+
new RegExp(`(?:MS(IE) ${MAJOR_MINOR})`),
|
|
48
|
+
];
|
|
49
|
+
const HIDDEN_IE_REGEX = new RegExp(`(?:rv:${MAJOR_MINOR}\\) like Gecko)`);
|
|
50
|
+
const BROWSER_VERSION_REGEX = new RegExp(`(?:Version/${MAJOR_MINOR})`);
|
|
51
|
+
function parseUserAgent(userAgent) {
|
|
52
|
+
utils.guard.notNull(userAgent, { name: 'userAgent' });
|
|
53
|
+
userAgent = userAgent.trim();
|
|
54
|
+
return Object.assign(Object.assign({}, parsePlatform(userAgent)), parseBrowser(userAgent));
|
|
55
|
+
}
|
|
56
|
+
exports.parseUserAgent = parseUserAgent;
|
|
57
|
+
function parsePlatform(userAgent) {
|
|
58
|
+
const platformRegExp = PLATFORM_REGEXES.find(regexp => regexp.test(userAgent));
|
|
59
|
+
if (!platformRegExp)
|
|
60
|
+
return { platformName: 'Unknown' };
|
|
61
|
+
const [_, platformName, platformMajorVersion, platformMinorVersion] = platformRegExp.exec(userAgent);
|
|
62
|
+
if (platformName.startsWith('CPU')) {
|
|
63
|
+
return { platformName: 'iOS', platformVersion: platformMajorVersion };
|
|
64
|
+
}
|
|
65
|
+
else if (platformName === 'Windows 2000' || platformName === 'Windows XP') {
|
|
66
|
+
return { platformName: 'Windows', platformVersion: '5' };
|
|
67
|
+
}
|
|
68
|
+
else if (platformName === 'Windows NT') {
|
|
69
|
+
const result = { platformName: 'Windows', platformVersion: platformMajorVersion };
|
|
70
|
+
if (!platformMajorVersion) {
|
|
71
|
+
result.platformVersion = '4';
|
|
72
|
+
}
|
|
73
|
+
else if (platformMajorVersion === '6' && platformMinorVersion === '1') {
|
|
74
|
+
result.platformVersion = '7';
|
|
75
|
+
}
|
|
76
|
+
else if (platformMajorVersion === '6' && (platformMinorVersion === '2' || platformMinorVersion === '3')) {
|
|
77
|
+
result.platformVersion = '8';
|
|
78
|
+
}
|
|
79
|
+
return result;
|
|
80
|
+
}
|
|
81
|
+
else if (platformName === 'Mac_PowerPC') {
|
|
82
|
+
return { platformName: 'Macintosh', platformVersion: platformMajorVersion };
|
|
83
|
+
}
|
|
84
|
+
else if (platformName === 'CrOS') {
|
|
85
|
+
return { platformName: 'Chrome OS', platformVersion: platformMajorVersion };
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
return { platformName, platformVersion: platformMajorVersion };
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.parsePlatform = parsePlatform;
|
|
92
|
+
function parseBrowser(userAgent) {
|
|
93
|
+
const browserRegExp = BROWSER_REGEXPES.find(regexp => regexp.test(userAgent));
|
|
94
|
+
if (!browserRegExp) {
|
|
95
|
+
if (HIDDEN_IE_REGEX.test(userAgent)) {
|
|
96
|
+
const [_, browserVersion] = HIDDEN_IE_REGEX.exec(userAgent);
|
|
97
|
+
return { browserName: 'IE', browserVersion };
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
return { browserName: 'Unknown' };
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const [_, browserName, browserVersion] = browserRegExp.exec(userAgent);
|
|
104
|
+
const result = { browserName, browserVersion };
|
|
105
|
+
if (result.browserName === 'Edg')
|
|
106
|
+
result.browserName = 'Edge';
|
|
107
|
+
if (BROWSER_VERSION_REGEX.test(userAgent)) {
|
|
108
|
+
const [_, browserVersion] = BROWSER_VERSION_REGEX.exec(userAgent);
|
|
109
|
+
result.browserVersion = browserVersion;
|
|
110
|
+
}
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
exports.parseBrowser = parseBrowser;
|
package/dist/utils.js
CHANGED
|
@@ -1,82 +1,82 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.makeSpecUtils = void 0;
|
|
23
|
-
const utils = __importStar(require("@applitools/utils"));
|
|
24
|
-
const snippets = require('@applitools/snippets');
|
|
25
|
-
function makeSpecUtils(spec) {
|
|
26
|
-
return { isSelector, transformSelector, splitSelector, findRootElement };
|
|
27
|
-
function isSelector(selector) {
|
|
28
|
-
return (spec.isSelector(selector) ||
|
|
29
|
-
utils.types.isString(selector) ||
|
|
30
|
-
(utils.types.isPlainObject(selector) &&
|
|
31
|
-
utils.types.has(selector, 'selector') &&
|
|
32
|
-
(utils.types.isString(selector.selector) || spec.isSelector(selector.selector))));
|
|
33
|
-
}
|
|
34
|
-
function transformSelector(selector) {
|
|
35
|
-
var _a, _b;
|
|
36
|
-
return (_b = (_a = spec.transformSelector) === null || _a === void 0 ? void 0 : _a.call(spec, selector)) !== null && _b !== void 0 ? _b : selector;
|
|
37
|
-
}
|
|
38
|
-
function splitSelector(selector) {
|
|
39
|
-
let current = selector;
|
|
40
|
-
let active = {};
|
|
41
|
-
const path = [active];
|
|
42
|
-
while (utils.types.has(current, 'selector') &&
|
|
43
|
-
(utils.types.has(current, 'frame') || utils.types.has(current, 'shadow'))) {
|
|
44
|
-
active.selector = current.selector;
|
|
45
|
-
if (current.type)
|
|
46
|
-
active.type = current.type;
|
|
47
|
-
if (current.frame) {
|
|
48
|
-
active = {};
|
|
49
|
-
path.push(active);
|
|
50
|
-
current = current.frame;
|
|
51
|
-
}
|
|
52
|
-
else if (current.shadow) {
|
|
53
|
-
active = active.shadow = {};
|
|
54
|
-
current = current.shadow;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
if (spec.isSelector(current) || utils.types.isString(current)) {
|
|
58
|
-
active.selector = current;
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
active.selector = current.selector;
|
|
62
|
-
if (current.type)
|
|
63
|
-
active.type = current.type;
|
|
64
|
-
}
|
|
65
|
-
return path;
|
|
66
|
-
}
|
|
67
|
-
async function findRootElement(context, selector) {
|
|
68
|
-
let root = null;
|
|
69
|
-
let currentSelector = selector;
|
|
70
|
-
while (utils.types.has(currentSelector, ['selector', 'shadow']) && isSelector(currentSelector.shadow)) {
|
|
71
|
-
const element = await spec.findElement(context, transformSelector(currentSelector), root);
|
|
72
|
-
if (!element)
|
|
73
|
-
break;
|
|
74
|
-
root = await spec.executeScript(context, snippets.getShadowRoot, [element]);
|
|
75
|
-
if (!root)
|
|
76
|
-
break;
|
|
77
|
-
currentSelector = currentSelector.shadow;
|
|
78
|
-
}
|
|
79
|
-
return { root, selector: currentSelector };
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
exports.makeSpecUtils = makeSpecUtils;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.makeSpecUtils = void 0;
|
|
23
|
+
const utils = __importStar(require("@applitools/utils"));
|
|
24
|
+
const snippets = require('@applitools/snippets');
|
|
25
|
+
function makeSpecUtils(spec) {
|
|
26
|
+
return { isSelector, transformSelector, splitSelector, findRootElement };
|
|
27
|
+
function isSelector(selector) {
|
|
28
|
+
return (spec.isSelector(selector) ||
|
|
29
|
+
utils.types.isString(selector) ||
|
|
30
|
+
(utils.types.isPlainObject(selector) &&
|
|
31
|
+
utils.types.has(selector, 'selector') &&
|
|
32
|
+
(utils.types.isString(selector.selector) || spec.isSelector(selector.selector))));
|
|
33
|
+
}
|
|
34
|
+
function transformSelector(selector) {
|
|
35
|
+
var _a, _b;
|
|
36
|
+
return (_b = (_a = spec.transformSelector) === null || _a === void 0 ? void 0 : _a.call(spec, selector)) !== null && _b !== void 0 ? _b : selector;
|
|
37
|
+
}
|
|
38
|
+
function splitSelector(selector) {
|
|
39
|
+
let current = selector;
|
|
40
|
+
let active = {};
|
|
41
|
+
const path = [active];
|
|
42
|
+
while (utils.types.has(current, 'selector') &&
|
|
43
|
+
(utils.types.has(current, 'frame') || utils.types.has(current, 'shadow'))) {
|
|
44
|
+
active.selector = current.selector;
|
|
45
|
+
if (current.type)
|
|
46
|
+
active.type = current.type;
|
|
47
|
+
if (current.frame) {
|
|
48
|
+
active = {};
|
|
49
|
+
path.push(active);
|
|
50
|
+
current = current.frame;
|
|
51
|
+
}
|
|
52
|
+
else if (current.shadow) {
|
|
53
|
+
active = active.shadow = {};
|
|
54
|
+
current = current.shadow;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (spec.isSelector(current) || utils.types.isString(current)) {
|
|
58
|
+
active.selector = current;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
active.selector = current.selector;
|
|
62
|
+
if (current.type)
|
|
63
|
+
active.type = current.type;
|
|
64
|
+
}
|
|
65
|
+
return path;
|
|
66
|
+
}
|
|
67
|
+
async function findRootElement(context, selector) {
|
|
68
|
+
let root = null;
|
|
69
|
+
let currentSelector = selector;
|
|
70
|
+
while (utils.types.has(currentSelector, ['selector', 'shadow']) && isSelector(currentSelector.shadow)) {
|
|
71
|
+
const element = await spec.findElement(context, transformSelector(currentSelector), root);
|
|
72
|
+
if (!element)
|
|
73
|
+
break;
|
|
74
|
+
root = await spec.executeScript(context, snippets.getShadowRoot, [element]);
|
|
75
|
+
if (!root)
|
|
76
|
+
break;
|
|
77
|
+
currentSelector = currentSelector.shadow;
|
|
78
|
+
}
|
|
79
|
+
return { root, selector: currentSelector };
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.makeSpecUtils = makeSpecUtils;
|
package/package.json
CHANGED
|
@@ -1,100 +1,100 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@applitools/driver",
|
|
3
|
-
"version": "1.4.
|
|
4
|
-
"description": "Applitools universal framework wrapper",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"applitools",
|
|
7
|
-
"test automation",
|
|
8
|
-
"visual regression",
|
|
9
|
-
"automation",
|
|
10
|
-
"testing",
|
|
11
|
-
"tests"
|
|
12
|
-
],
|
|
13
|
-
"homepage": "https://applitools.com",
|
|
14
|
-
"bugs": {
|
|
15
|
-
"url": "https://github.com/applitools/eyes.sdk.javascript1/issues"
|
|
16
|
-
},
|
|
17
|
-
"repository": {
|
|
18
|
-
"type": "git",
|
|
19
|
-
"url": "git://github.com/applitools/eyes.sdk.javascript1.git",
|
|
20
|
-
"directory": "packages/driver"
|
|
21
|
-
},
|
|
22
|
-
"license": "SEE LICENSE IN LICENSE",
|
|
23
|
-
"author": {
|
|
24
|
-
"name": "Applitools Team",
|
|
25
|
-
"email": "team@applitools.com"
|
|
26
|
-
},
|
|
27
|
-
"main": "./dist/index.js",
|
|
28
|
-
"types": "./types/index.d.ts",
|
|
29
|
-
"exports": {
|
|
30
|
-
".": {
|
|
31
|
-
"default": "./dist/index.js",
|
|
32
|
-
"types": "./types/index.d.ts"
|
|
33
|
-
},
|
|
34
|
-
"./fake": {
|
|
35
|
-
"default": "./dist/fake/index.js",
|
|
36
|
-
"types": "./types/fake/index.d.ts"
|
|
37
|
-
},
|
|
38
|
-
"./debug": {
|
|
39
|
-
"default": "./dist/debug/index.js",
|
|
40
|
-
"types": "./types/debug/index.d.ts"
|
|
41
|
-
},
|
|
42
|
-
"./dist/*": "./dist/*.js",
|
|
43
|
-
"./dist/fake": "./dist/fake/index.js",
|
|
44
|
-
"./dist/debug": "./dist/debug/index.js",
|
|
45
|
-
"./package.json": "./package.json"
|
|
46
|
-
},
|
|
47
|
-
"typesVersions": {
|
|
48
|
-
"*": {
|
|
49
|
-
"fake": [
|
|
50
|
-
"./types/fake/index.d.ts"
|
|
51
|
-
],
|
|
52
|
-
"debug": [
|
|
53
|
-
"./types/debug/index.d.ts"
|
|
54
|
-
]
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
"files": [
|
|
58
|
-
"dist",
|
|
59
|
-
"types"
|
|
60
|
-
],
|
|
61
|
-
"scripts": {
|
|
62
|
-
"lint": "eslint '**/*.ts'",
|
|
63
|
-
"build": "tsc",
|
|
64
|
-
"test": "mocha --no-timeouts -r ts-node/register ./test/**/*.spec.ts",
|
|
65
|
-
"deps": "bongo deps",
|
|
66
|
-
"preversion": "bongo preversion",
|
|
67
|
-
"version": "bongo version",
|
|
68
|
-
"postversion": "bongo postversion --skip-release-notification"
|
|
69
|
-
},
|
|
70
|
-
"husky": {
|
|
71
|
-
"hooks": {
|
|
72
|
-
"pre-push": "yarn bongo lint"
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
"dependencies": {
|
|
76
|
-
"@applitools/snippets": "2.1.
|
|
77
|
-
"@applitools/types": "1.0
|
|
78
|
-
"@applitools/utils": "1.2.13"
|
|
79
|
-
},
|
|
80
|
-
"devDependencies": {
|
|
81
|
-
"@applitools/sdk-release-kit": "0.13.11",
|
|
82
|
-
"@types/mocha": "^9.0.0",
|
|
83
|
-
"@types/node": "^16.3.3",
|
|
84
|
-
"@typescript-eslint/eslint-plugin": "^4.28.3",
|
|
85
|
-
"@typescript-eslint/parser": "^4.28.3",
|
|
86
|
-
"eslint": "^7.9.0",
|
|
87
|
-
"eslint-config-prettier": "^8.3.0",
|
|
88
|
-
"eslint-plugin-mocha-no-only": "^1.1.1",
|
|
89
|
-
"eslint-plugin-node": "^11.1.0",
|
|
90
|
-
"eslint-plugin-prettier": "^3.1.4",
|
|
91
|
-
"husky": "^4.3.7",
|
|
92
|
-
"mocha": "^9.0.3",
|
|
93
|
-
"prettier": "^2.3.2",
|
|
94
|
-
"ts-node": "^10.1.0",
|
|
95
|
-
"typescript": "^4.3.5"
|
|
96
|
-
},
|
|
97
|
-
"engines": {
|
|
98
|
-
"node": ">= 8.9.0"
|
|
99
|
-
}
|
|
100
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@applitools/driver",
|
|
3
|
+
"version": "1.4.17-beta.2",
|
|
4
|
+
"description": "Applitools universal framework wrapper",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"applitools",
|
|
7
|
+
"test automation",
|
|
8
|
+
"visual regression",
|
|
9
|
+
"automation",
|
|
10
|
+
"testing",
|
|
11
|
+
"tests"
|
|
12
|
+
],
|
|
13
|
+
"homepage": "https://applitools.com",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/applitools/eyes.sdk.javascript1/issues"
|
|
16
|
+
},
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git://github.com/applitools/eyes.sdk.javascript1.git",
|
|
20
|
+
"directory": "packages/driver"
|
|
21
|
+
},
|
|
22
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
23
|
+
"author": {
|
|
24
|
+
"name": "Applitools Team",
|
|
25
|
+
"email": "team@applitools.com"
|
|
26
|
+
},
|
|
27
|
+
"main": "./dist/index.js",
|
|
28
|
+
"types": "./types/index.d.ts",
|
|
29
|
+
"exports": {
|
|
30
|
+
".": {
|
|
31
|
+
"default": "./dist/index.js",
|
|
32
|
+
"types": "./types/index.d.ts"
|
|
33
|
+
},
|
|
34
|
+
"./fake": {
|
|
35
|
+
"default": "./dist/fake/index.js",
|
|
36
|
+
"types": "./types/fake/index.d.ts"
|
|
37
|
+
},
|
|
38
|
+
"./debug": {
|
|
39
|
+
"default": "./dist/debug/index.js",
|
|
40
|
+
"types": "./types/debug/index.d.ts"
|
|
41
|
+
},
|
|
42
|
+
"./dist/*": "./dist/*.js",
|
|
43
|
+
"./dist/fake": "./dist/fake/index.js",
|
|
44
|
+
"./dist/debug": "./dist/debug/index.js",
|
|
45
|
+
"./package.json": "./package.json"
|
|
46
|
+
},
|
|
47
|
+
"typesVersions": {
|
|
48
|
+
"*": {
|
|
49
|
+
"fake": [
|
|
50
|
+
"./types/fake/index.d.ts"
|
|
51
|
+
],
|
|
52
|
+
"debug": [
|
|
53
|
+
"./types/debug/index.d.ts"
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"files": [
|
|
58
|
+
"dist",
|
|
59
|
+
"types"
|
|
60
|
+
],
|
|
61
|
+
"scripts": {
|
|
62
|
+
"lint": "eslint '**/*.ts'",
|
|
63
|
+
"build": "tsc",
|
|
64
|
+
"test": "mocha --no-timeouts -r ts-node/register ./test/**/*.spec.ts",
|
|
65
|
+
"deps": "bongo deps",
|
|
66
|
+
"preversion": "bongo preversion",
|
|
67
|
+
"version": "bongo version",
|
|
68
|
+
"postversion": "bongo postversion --skip-release-notification"
|
|
69
|
+
},
|
|
70
|
+
"husky": {
|
|
71
|
+
"hooks": {
|
|
72
|
+
"pre-push": "yarn bongo lint"
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"dependencies": {
|
|
76
|
+
"@applitools/snippets": "2.1.16-beta.0",
|
|
77
|
+
"@applitools/types": "1.1.0",
|
|
78
|
+
"@applitools/utils": "1.2.13"
|
|
79
|
+
},
|
|
80
|
+
"devDependencies": {
|
|
81
|
+
"@applitools/sdk-release-kit": "0.13.11",
|
|
82
|
+
"@types/mocha": "^9.0.0",
|
|
83
|
+
"@types/node": "^16.3.3",
|
|
84
|
+
"@typescript-eslint/eslint-plugin": "^4.28.3",
|
|
85
|
+
"@typescript-eslint/parser": "^4.28.3",
|
|
86
|
+
"eslint": "^7.9.0",
|
|
87
|
+
"eslint-config-prettier": "^8.3.0",
|
|
88
|
+
"eslint-plugin-mocha-no-only": "^1.1.1",
|
|
89
|
+
"eslint-plugin-node": "^11.1.0",
|
|
90
|
+
"eslint-plugin-prettier": "^3.1.4",
|
|
91
|
+
"husky": "^4.3.7",
|
|
92
|
+
"mocha": "^9.0.3",
|
|
93
|
+
"prettier": "^2.3.2",
|
|
94
|
+
"ts-node": "^10.1.0",
|
|
95
|
+
"typescript": "^4.3.5"
|
|
96
|
+
},
|
|
97
|
+
"engines": {
|
|
98
|
+
"node": ">= 8.9.0"
|
|
99
|
+
}
|
|
100
|
+
}
|
package/types/capabilities.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type * as types from '@applitools/types';
|
|
2
|
-
declare type Capabilities = Record<string, any>;
|
|
3
|
-
export declare function parseCapabilities(capabilities: Capabilities): types.DriverInfo;
|
|
4
|
-
export {};
|
|
1
|
+
import type * as types from '@applitools/types';
|
|
2
|
+
declare type Capabilities = Record<string, any>;
|
|
3
|
+
export declare function parseCapabilities(capabilities: Capabilities): types.DriverInfo;
|
|
4
|
+
export {};
|