@applitools/driver 1.4.17-beta.2 → 1.5.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 +238 -225
- package/LICENSE +25 -25
- package/README.md +449 -449
- package/dist/capabilities.js +58 -58
- package/dist/context.js +499 -493
- package/dist/debug/check-spec-driver.js +167 -167
- package/dist/debug/index.js +13 -13
- package/dist/driver.js +519 -519
- package/dist/element.js +483 -483
- package/dist/fake/index.js +25 -25
- package/dist/fake/mock-driver.js +347 -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 -77
- package/dist/user-agent.js +113 -113
- package/package.json +100 -100
- package/types/capabilities.d.ts +4 -4
- package/types/context.d.ts +76 -76
- package/types/debug/check-spec-driver.d.ts +20 -20
- package/types/debug/index.d.ts +1 -1
- package/types/driver.d.ts +67 -67
- package/types/element.d.ts +56 -56
- 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 -13
- package/types/user-agent.d.ts +12 -12
- package/dist/utils.js +0 -82
- package/types/utils.d.ts +0 -11
|
@@ -1,167 +1,167 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.checkSpecDriver = void 0;
|
|
4
|
-
const assert_1 = require("assert");
|
|
5
|
-
const snippets = require('@applitools/snippets');
|
|
6
|
-
async function checkSpecDriver(options) {
|
|
7
|
-
const { spec, driver } = options;
|
|
8
|
-
const context = extractContext(driver);
|
|
9
|
-
const tests = {
|
|
10
|
-
'execute script with echo snippet': async () => {
|
|
11
|
-
const arg = [1, '23', false, { a: 4, b: [5] }, null];
|
|
12
|
-
const result = await spec.executeScript(context, 'return arguments[0]', arg);
|
|
13
|
-
assert_1.strict.deepEqual(result, arg, 'script returns an array of json data');
|
|
14
|
-
},
|
|
15
|
-
'execute script with functional script': async () => {
|
|
16
|
-
const arg = { a: 2, b: 1, c: 7 };
|
|
17
|
-
function script(arg) {
|
|
18
|
-
return arg;
|
|
19
|
-
}
|
|
20
|
-
const result = await spec.executeScript(context, script, arg);
|
|
21
|
-
assert_1.strict.deepEqual(result, arg, 'script returns an array of json data from functional script');
|
|
22
|
-
},
|
|
23
|
-
'execute script with return value of dom element': async () => {
|
|
24
|
-
const element = await spec.executeScript(context, 'return document.documentElement');
|
|
25
|
-
const isHtmlElement = await spec.executeScript(context, 'return arguments[0] === document.documentElement', element);
|
|
26
|
-
assert_1.strict.ok(isHtmlElement, 'script returns an element and could be executed with an element');
|
|
27
|
-
},
|
|
28
|
-
'execute script with nested element references': async () => {
|
|
29
|
-
const elements = await spec.executeScript(context, 'return [{html: document.documentElement, body: document.body}]');
|
|
30
|
-
const isElements = await spec.executeScript(context, 'return arguments[0][0].html === document.documentElement && arguments[0][0].html === document.documentElement', elements);
|
|
31
|
-
assert_1.strict.ok(isElements, 'script returns elements inside nested structure and could be executed with a nested structure of elements');
|
|
32
|
-
},
|
|
33
|
-
'find element with string selector': async () => {
|
|
34
|
-
const selector = transformSelector('html>body>h1');
|
|
35
|
-
const element = await spec.findElement(context, selector);
|
|
36
|
-
const isWantedElement = await spec.executeScript(context, `return arguments[0] === document.querySelector("${selector}")`, element);
|
|
37
|
-
assert_1.strict.ok(isWantedElement, `returns element by string selector - "${selector}"`);
|
|
38
|
-
},
|
|
39
|
-
'find element with spec selector': async () => {
|
|
40
|
-
const cssSelector = transformSelector({ type: 'css', selector: 'html>body>h1' });
|
|
41
|
-
const xpathSelector = transformSelector({ type: 'xpath', selector: '//html/body/h1' });
|
|
42
|
-
const verificationScript = `return arguments[0] === document.querySelector('html>body>h1')`;
|
|
43
|
-
const cssElement = await spec.findElement(context, cssSelector);
|
|
44
|
-
const isCssElement = await spec.executeScript(context, verificationScript, cssElement);
|
|
45
|
-
assert_1.strict.ok(isCssElement, `returns element by spec selector - ${JSON.stringify(cssSelector)}`);
|
|
46
|
-
const xpathElement = await spec.findElement(context, xpathSelector);
|
|
47
|
-
const isXpathElement = await spec.executeScript(context, verificationScript, xpathElement);
|
|
48
|
-
assert_1.strict.ok(isXpathElement, `returns element by spec selector - ${JSON.stringify(xpathSelector)}`);
|
|
49
|
-
},
|
|
50
|
-
'find element with unresolvable selector': async () => {
|
|
51
|
-
const selector = transformSelector('unresolvable_selector');
|
|
52
|
-
const element = await spec.findElement(context, selector);
|
|
53
|
-
assert_1.strict.equal(element, null, `returns null by unresolvable selector - "${selector}"`);
|
|
54
|
-
},
|
|
55
|
-
'find elements with string selector': async () => {
|
|
56
|
-
const selector = transformSelector('html p');
|
|
57
|
-
const elements = await spec.findElements(context, selector);
|
|
58
|
-
const isExpectedElements = await spec.executeScript(context, `var expected = arguments[0]; return Array.prototype.every.call(document.querySelectorAll("${selector}"), function(element, index) { return element === expected[index] })`, elements);
|
|
59
|
-
assert_1.strict.ok(isExpectedElements, `returns elements by string selector - "${selector}"`);
|
|
60
|
-
},
|
|
61
|
-
'find elements with spec selector': async () => {
|
|
62
|
-
const cssSelector = transformSelector({ type: 'css', selector: 'html p' });
|
|
63
|
-
const xpathSelector = transformSelector({ type: 'xpath', selector: '//html//p' });
|
|
64
|
-
const verificationScript = `var expected = arguments[0]; return Array.prototype.every.call(document.querySelectorAll('html p'), function(element, index) { return element === expected[index] })`;
|
|
65
|
-
const cssElements = await spec.findElements(context, cssSelector);
|
|
66
|
-
const isCssElements = await spec.executeScript(context, verificationScript, cssElements);
|
|
67
|
-
assert_1.strict.ok(isCssElements, `returns elements by spec selector - ${JSON.stringify(cssSelector)}`);
|
|
68
|
-
const xpathElements = await spec.findElements(context, xpathSelector);
|
|
69
|
-
const isXpathElements = await spec.executeScript(context, verificationScript, xpathElements);
|
|
70
|
-
assert_1.strict.ok(isXpathElements, `returns element by spec selector - ${JSON.stringify(xpathSelector)}`);
|
|
71
|
-
},
|
|
72
|
-
'find elements with unresolvable selector': async () => {
|
|
73
|
-
const selector = transformSelector('unresolvable_selector');
|
|
74
|
-
const element = await spec.findElements(context, selector);
|
|
75
|
-
assert_1.strict.deepEqual(element, [], `returns empty array by unresolvable selector - "${selector}"`);
|
|
76
|
-
},
|
|
77
|
-
'child context': async () => {
|
|
78
|
-
const element = await spec.findElement(context, transformSelector('[name="frame1"]'));
|
|
79
|
-
const childContext = await spec.childContext(context, element);
|
|
80
|
-
const inFrame = await spec.executeScript(childContext, 'return window.frameElement.name === "frame1"');
|
|
81
|
-
assert_1.strict.ok(inFrame, 'returns or switches to a child context');
|
|
82
|
-
assert_1.strict.ok(typeof spec.mainContext === 'function', 'spec.mainContext also needs to be implemented in order to test spec.childContext');
|
|
83
|
-
await spec.mainContext(context);
|
|
84
|
-
},
|
|
85
|
-
'is equal elements': async () => {
|
|
86
|
-
if (!spec.isEqualElements)
|
|
87
|
-
return { skipped: true };
|
|
88
|
-
const htmlEl = await spec.findElement(context, transformSelector('html'));
|
|
89
|
-
const htmlEl2 = await spec.executeScript(context, 'return document.documentElement');
|
|
90
|
-
assert_1.strict.ok(await spec.isEqualElements(context, htmlEl, htmlEl2), 'elements should be equal');
|
|
91
|
-
const bodyEl = await spec.executeScript(context, 'return document.body');
|
|
92
|
-
assert_1.strict.ok(!(await spec.isEqualElements(context, htmlEl, bodyEl)), 'elements should not be equal');
|
|
93
|
-
assert_1.strict.ok(!(await spec.isEqualElements(context, htmlEl, undefined)), 'isEqualElements should return false if one of the arguments is falsy');
|
|
94
|
-
assert_1.strict.ok(!(await spec.isEqualElements(context, undefined, htmlEl)), 'isEqualElements should return false if one of the arguments is falsy');
|
|
95
|
-
},
|
|
96
|
-
'main context': async () => {
|
|
97
|
-
const mainDocument1 = await spec.findElement(context, transformSelector('html'));
|
|
98
|
-
const childContext1 = await spec.childContext(context, await spec.findElement(context, transformSelector('[name="frame1"]')));
|
|
99
|
-
const childContext2 = await spec.childContext(childContext1, await spec.findElement(childContext1, transformSelector('[name="frame1-1"]')));
|
|
100
|
-
const frameDocument = await spec.findElement(childContext2, transformSelector('html'));
|
|
101
|
-
assert_1.strict.ok(!(await isEqualElements(childContext2, mainDocument1, frameDocument)));
|
|
102
|
-
const mainContext = await spec.mainContext(childContext2);
|
|
103
|
-
const mainDocument2 = await spec.findElement(mainContext, transformSelector('html'));
|
|
104
|
-
assert_1.strict.ok(await isEqualElements(mainContext, mainDocument2, mainDocument1));
|
|
105
|
-
},
|
|
106
|
-
'parent context': async () => {
|
|
107
|
-
const parentContext1 = await spec.childContext(context, await spec.findElement(context, transformSelector('[name="frame1"]')));
|
|
108
|
-
const parentDocument1 = await spec.findElement(parentContext1, transformSelector('html'));
|
|
109
|
-
const frameContext = await spec.childContext(parentContext1, await spec.findElement(parentContext1, transformSelector('[name="frame1-1"]')));
|
|
110
|
-
const frameDocument = await spec.findElement(frameContext, transformSelector('html'));
|
|
111
|
-
assert_1.strict.ok(!(await isEqualElements(frameContext, parentDocument1, frameDocument)));
|
|
112
|
-
const parentContext2 = await spec.parentContext(frameContext);
|
|
113
|
-
const parentDocument2 = await spec.findElement(parentContext2, transformSelector('html'));
|
|
114
|
-
assert_1.strict.ok(await isEqualElements(parentContext2, parentDocument2, parentDocument1));
|
|
115
|
-
await spec.mainContext(context);
|
|
116
|
-
},
|
|
117
|
-
'get title': async () => {
|
|
118
|
-
const title = await spec.getTitle(driver);
|
|
119
|
-
assert_1.strict.equal(title, 'Cross SDK test', 'returns title of the current page');
|
|
120
|
-
},
|
|
121
|
-
'get url': async () => {
|
|
122
|
-
const url = await spec.getUrl(driver);
|
|
123
|
-
assert_1.strict.equal(url, 'https://applitools.github.io/demo/TestPages/FramesTestPage/', 'returns url of the current page');
|
|
124
|
-
},
|
|
125
|
-
'is driver': async () => {
|
|
126
|
-
assert_1.strict.ok(await spec.isDriver(driver), 'driver should be considered a driver :)');
|
|
127
|
-
assert_1.strict.ok(!(await spec.isDriver(undefined)), 'undefined should not be considered a driver');
|
|
128
|
-
assert_1.strict.ok(!(await spec.isDriver(3)), 'number should not be considered a driver');
|
|
129
|
-
assert_1.strict.ok(!(await spec.isDriver('str')), 'string should not be considered a driver');
|
|
130
|
-
},
|
|
131
|
-
'is element': async () => {
|
|
132
|
-
const el = await spec.findElement(context, transformSelector('html'));
|
|
133
|
-
assert_1.strict.ok(await spec.isElement(el), 'element should be considered an element :)');
|
|
134
|
-
assert_1.strict.ok(!(await spec.isElement(undefined)), 'undefined should not be considered an element');
|
|
135
|
-
assert_1.strict.ok(!(await spec.isElement(3)), 'number should not be considered an element');
|
|
136
|
-
assert_1.strict.ok(!(await spec.isElement('str')), 'str should not be considered an element');
|
|
137
|
-
},
|
|
138
|
-
// 'is selector': async () => {}, // hard to test this
|
|
139
|
-
// 'set window size': async () => {}, // hard to test this
|
|
140
|
-
// 'get window size': async () => {}, // hard to test this
|
|
141
|
-
};
|
|
142
|
-
const report = [];
|
|
143
|
-
await spec.visit(driver, 'https://applitools.github.io/demo/TestPages/FramesTestPage/');
|
|
144
|
-
for (const [test, check] of Object.entries(tests)) {
|
|
145
|
-
try {
|
|
146
|
-
const result = (await check()) || { success: true };
|
|
147
|
-
report.push(Object.assign({ test }, result));
|
|
148
|
-
}
|
|
149
|
-
catch (error) {
|
|
150
|
-
report.push({ test, error: { message: error.message, expected: error.expected, actual: error.actual } });
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
return report;
|
|
154
|
-
function isEqualElements(context, element1, element2) {
|
|
155
|
-
var _a, _b;
|
|
156
|
-
return ((_b = (_a = spec.isEqualElements) === null || _a === void 0 ? void 0 : _a.call(spec, context, element1, element2)) !== null && _b !== void 0 ? _b : spec.executeScript(context, snippets.isEqualElements, [element1, element2]).catch(() => false));
|
|
157
|
-
}
|
|
158
|
-
function extractContext(driver) {
|
|
159
|
-
var _a, _b;
|
|
160
|
-
return (_b = (_a = spec.extractContext) === null || _a === void 0 ? void 0 : _a.call(spec, driver)) !== null && _b !== void 0 ? _b : driver;
|
|
161
|
-
}
|
|
162
|
-
function transformSelector(selector) {
|
|
163
|
-
var _a, _b;
|
|
164
|
-
return (_b = (_a = spec.transformSelector) === null || _a === void 0 ? void 0 : _a.call(spec, selector)) !== null && _b !== void 0 ? _b : selector;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
exports.checkSpecDriver = checkSpecDriver;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkSpecDriver = void 0;
|
|
4
|
+
const assert_1 = require("assert");
|
|
5
|
+
const snippets = require('@applitools/snippets');
|
|
6
|
+
async function checkSpecDriver(options) {
|
|
7
|
+
const { spec, driver } = options;
|
|
8
|
+
const context = extractContext(driver);
|
|
9
|
+
const tests = {
|
|
10
|
+
'execute script with echo snippet': async () => {
|
|
11
|
+
const arg = [1, '23', false, { a: 4, b: [5] }, null];
|
|
12
|
+
const result = await spec.executeScript(context, 'return arguments[0]', arg);
|
|
13
|
+
assert_1.strict.deepEqual(result, arg, 'script returns an array of json data');
|
|
14
|
+
},
|
|
15
|
+
'execute script with functional script': async () => {
|
|
16
|
+
const arg = { a: 2, b: 1, c: 7 };
|
|
17
|
+
function script(arg) {
|
|
18
|
+
return arg;
|
|
19
|
+
}
|
|
20
|
+
const result = await spec.executeScript(context, script, arg);
|
|
21
|
+
assert_1.strict.deepEqual(result, arg, 'script returns an array of json data from functional script');
|
|
22
|
+
},
|
|
23
|
+
'execute script with return value of dom element': async () => {
|
|
24
|
+
const element = await spec.executeScript(context, 'return document.documentElement');
|
|
25
|
+
const isHtmlElement = await spec.executeScript(context, 'return arguments[0] === document.documentElement', element);
|
|
26
|
+
assert_1.strict.ok(isHtmlElement, 'script returns an element and could be executed with an element');
|
|
27
|
+
},
|
|
28
|
+
'execute script with nested element references': async () => {
|
|
29
|
+
const elements = await spec.executeScript(context, 'return [{html: document.documentElement, body: document.body}]');
|
|
30
|
+
const isElements = await spec.executeScript(context, 'return arguments[0][0].html === document.documentElement && arguments[0][0].html === document.documentElement', elements);
|
|
31
|
+
assert_1.strict.ok(isElements, 'script returns elements inside nested structure and could be executed with a nested structure of elements');
|
|
32
|
+
},
|
|
33
|
+
'find element with string selector': async () => {
|
|
34
|
+
const selector = transformSelector('html>body>h1');
|
|
35
|
+
const element = await spec.findElement(context, selector);
|
|
36
|
+
const isWantedElement = await spec.executeScript(context, `return arguments[0] === document.querySelector("${selector}")`, element);
|
|
37
|
+
assert_1.strict.ok(isWantedElement, `returns element by string selector - "${selector}"`);
|
|
38
|
+
},
|
|
39
|
+
'find element with spec selector': async () => {
|
|
40
|
+
const cssSelector = transformSelector({ type: 'css', selector: 'html>body>h1' });
|
|
41
|
+
const xpathSelector = transformSelector({ type: 'xpath', selector: '//html/body/h1' });
|
|
42
|
+
const verificationScript = `return arguments[0] === document.querySelector('html>body>h1')`;
|
|
43
|
+
const cssElement = await spec.findElement(context, cssSelector);
|
|
44
|
+
const isCssElement = await spec.executeScript(context, verificationScript, cssElement);
|
|
45
|
+
assert_1.strict.ok(isCssElement, `returns element by spec selector - ${JSON.stringify(cssSelector)}`);
|
|
46
|
+
const xpathElement = await spec.findElement(context, xpathSelector);
|
|
47
|
+
const isXpathElement = await spec.executeScript(context, verificationScript, xpathElement);
|
|
48
|
+
assert_1.strict.ok(isXpathElement, `returns element by spec selector - ${JSON.stringify(xpathSelector)}`);
|
|
49
|
+
},
|
|
50
|
+
'find element with unresolvable selector': async () => {
|
|
51
|
+
const selector = transformSelector('unresolvable_selector');
|
|
52
|
+
const element = await spec.findElement(context, selector);
|
|
53
|
+
assert_1.strict.equal(element, null, `returns null by unresolvable selector - "${selector}"`);
|
|
54
|
+
},
|
|
55
|
+
'find elements with string selector': async () => {
|
|
56
|
+
const selector = transformSelector('html p');
|
|
57
|
+
const elements = await spec.findElements(context, selector);
|
|
58
|
+
const isExpectedElements = await spec.executeScript(context, `var expected = arguments[0]; return Array.prototype.every.call(document.querySelectorAll("${selector}"), function(element, index) { return element === expected[index] })`, elements);
|
|
59
|
+
assert_1.strict.ok(isExpectedElements, `returns elements by string selector - "${selector}"`);
|
|
60
|
+
},
|
|
61
|
+
'find elements with spec selector': async () => {
|
|
62
|
+
const cssSelector = transformSelector({ type: 'css', selector: 'html p' });
|
|
63
|
+
const xpathSelector = transformSelector({ type: 'xpath', selector: '//html//p' });
|
|
64
|
+
const verificationScript = `var expected = arguments[0]; return Array.prototype.every.call(document.querySelectorAll('html p'), function(element, index) { return element === expected[index] })`;
|
|
65
|
+
const cssElements = await spec.findElements(context, cssSelector);
|
|
66
|
+
const isCssElements = await spec.executeScript(context, verificationScript, cssElements);
|
|
67
|
+
assert_1.strict.ok(isCssElements, `returns elements by spec selector - ${JSON.stringify(cssSelector)}`);
|
|
68
|
+
const xpathElements = await spec.findElements(context, xpathSelector);
|
|
69
|
+
const isXpathElements = await spec.executeScript(context, verificationScript, xpathElements);
|
|
70
|
+
assert_1.strict.ok(isXpathElements, `returns element by spec selector - ${JSON.stringify(xpathSelector)}`);
|
|
71
|
+
},
|
|
72
|
+
'find elements with unresolvable selector': async () => {
|
|
73
|
+
const selector = transformSelector('unresolvable_selector');
|
|
74
|
+
const element = await spec.findElements(context, selector);
|
|
75
|
+
assert_1.strict.deepEqual(element, [], `returns empty array by unresolvable selector - "${selector}"`);
|
|
76
|
+
},
|
|
77
|
+
'child context': async () => {
|
|
78
|
+
const element = await spec.findElement(context, transformSelector('[name="frame1"]'));
|
|
79
|
+
const childContext = await spec.childContext(context, element);
|
|
80
|
+
const inFrame = await spec.executeScript(childContext, 'return window.frameElement.name === "frame1"');
|
|
81
|
+
assert_1.strict.ok(inFrame, 'returns or switches to a child context');
|
|
82
|
+
assert_1.strict.ok(typeof spec.mainContext === 'function', 'spec.mainContext also needs to be implemented in order to test spec.childContext');
|
|
83
|
+
await spec.mainContext(context);
|
|
84
|
+
},
|
|
85
|
+
'is equal elements': async () => {
|
|
86
|
+
if (!spec.isEqualElements)
|
|
87
|
+
return { skipped: true };
|
|
88
|
+
const htmlEl = await spec.findElement(context, transformSelector('html'));
|
|
89
|
+
const htmlEl2 = await spec.executeScript(context, 'return document.documentElement');
|
|
90
|
+
assert_1.strict.ok(await spec.isEqualElements(context, htmlEl, htmlEl2), 'elements should be equal');
|
|
91
|
+
const bodyEl = await spec.executeScript(context, 'return document.body');
|
|
92
|
+
assert_1.strict.ok(!(await spec.isEqualElements(context, htmlEl, bodyEl)), 'elements should not be equal');
|
|
93
|
+
assert_1.strict.ok(!(await spec.isEqualElements(context, htmlEl, undefined)), 'isEqualElements should return false if one of the arguments is falsy');
|
|
94
|
+
assert_1.strict.ok(!(await spec.isEqualElements(context, undefined, htmlEl)), 'isEqualElements should return false if one of the arguments is falsy');
|
|
95
|
+
},
|
|
96
|
+
'main context': async () => {
|
|
97
|
+
const mainDocument1 = await spec.findElement(context, transformSelector('html'));
|
|
98
|
+
const childContext1 = await spec.childContext(context, await spec.findElement(context, transformSelector('[name="frame1"]')));
|
|
99
|
+
const childContext2 = await spec.childContext(childContext1, await spec.findElement(childContext1, transformSelector('[name="frame1-1"]')));
|
|
100
|
+
const frameDocument = await spec.findElement(childContext2, transformSelector('html'));
|
|
101
|
+
assert_1.strict.ok(!(await isEqualElements(childContext2, mainDocument1, frameDocument)));
|
|
102
|
+
const mainContext = await spec.mainContext(childContext2);
|
|
103
|
+
const mainDocument2 = await spec.findElement(mainContext, transformSelector('html'));
|
|
104
|
+
assert_1.strict.ok(await isEqualElements(mainContext, mainDocument2, mainDocument1));
|
|
105
|
+
},
|
|
106
|
+
'parent context': async () => {
|
|
107
|
+
const parentContext1 = await spec.childContext(context, await spec.findElement(context, transformSelector('[name="frame1"]')));
|
|
108
|
+
const parentDocument1 = await spec.findElement(parentContext1, transformSelector('html'));
|
|
109
|
+
const frameContext = await spec.childContext(parentContext1, await spec.findElement(parentContext1, transformSelector('[name="frame1-1"]')));
|
|
110
|
+
const frameDocument = await spec.findElement(frameContext, transformSelector('html'));
|
|
111
|
+
assert_1.strict.ok(!(await isEqualElements(frameContext, parentDocument1, frameDocument)));
|
|
112
|
+
const parentContext2 = await spec.parentContext(frameContext);
|
|
113
|
+
const parentDocument2 = await spec.findElement(parentContext2, transformSelector('html'));
|
|
114
|
+
assert_1.strict.ok(await isEqualElements(parentContext2, parentDocument2, parentDocument1));
|
|
115
|
+
await spec.mainContext(context);
|
|
116
|
+
},
|
|
117
|
+
'get title': async () => {
|
|
118
|
+
const title = await spec.getTitle(driver);
|
|
119
|
+
assert_1.strict.equal(title, 'Cross SDK test', 'returns title of the current page');
|
|
120
|
+
},
|
|
121
|
+
'get url': async () => {
|
|
122
|
+
const url = await spec.getUrl(driver);
|
|
123
|
+
assert_1.strict.equal(url, 'https://applitools.github.io/demo/TestPages/FramesTestPage/', 'returns url of the current page');
|
|
124
|
+
},
|
|
125
|
+
'is driver': async () => {
|
|
126
|
+
assert_1.strict.ok(await spec.isDriver(driver), 'driver should be considered a driver :)');
|
|
127
|
+
assert_1.strict.ok(!(await spec.isDriver(undefined)), 'undefined should not be considered a driver');
|
|
128
|
+
assert_1.strict.ok(!(await spec.isDriver(3)), 'number should not be considered a driver');
|
|
129
|
+
assert_1.strict.ok(!(await spec.isDriver('str')), 'string should not be considered a driver');
|
|
130
|
+
},
|
|
131
|
+
'is element': async () => {
|
|
132
|
+
const el = await spec.findElement(context, transformSelector('html'));
|
|
133
|
+
assert_1.strict.ok(await spec.isElement(el), 'element should be considered an element :)');
|
|
134
|
+
assert_1.strict.ok(!(await spec.isElement(undefined)), 'undefined should not be considered an element');
|
|
135
|
+
assert_1.strict.ok(!(await spec.isElement(3)), 'number should not be considered an element');
|
|
136
|
+
assert_1.strict.ok(!(await spec.isElement('str')), 'str should not be considered an element');
|
|
137
|
+
},
|
|
138
|
+
// 'is selector': async () => {}, // hard to test this
|
|
139
|
+
// 'set window size': async () => {}, // hard to test this
|
|
140
|
+
// 'get window size': async () => {}, // hard to test this
|
|
141
|
+
};
|
|
142
|
+
const report = [];
|
|
143
|
+
await spec.visit(driver, 'https://applitools.github.io/demo/TestPages/FramesTestPage/');
|
|
144
|
+
for (const [test, check] of Object.entries(tests)) {
|
|
145
|
+
try {
|
|
146
|
+
const result = (await check()) || { success: true };
|
|
147
|
+
report.push(Object.assign({ test }, result));
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
report.push({ test, error: { message: error.message, expected: error.expected, actual: error.actual } });
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return report;
|
|
154
|
+
function isEqualElements(context, element1, element2) {
|
|
155
|
+
var _a, _b;
|
|
156
|
+
return ((_b = (_a = spec.isEqualElements) === null || _a === void 0 ? void 0 : _a.call(spec, context, element1, element2)) !== null && _b !== void 0 ? _b : spec.executeScript(context, snippets.isEqualElements, [element1, element2]).catch(() => false));
|
|
157
|
+
}
|
|
158
|
+
function extractContext(driver) {
|
|
159
|
+
var _a, _b;
|
|
160
|
+
return (_b = (_a = spec.extractContext) === null || _a === void 0 ? void 0 : _a.call(spec, driver)) !== null && _b !== void 0 ? _b : driver;
|
|
161
|
+
}
|
|
162
|
+
function transformSelector(selector) {
|
|
163
|
+
var _a, _b;
|
|
164
|
+
return (_b = (_a = spec.transformSelector) === null || _a === void 0 ? void 0 : _a.call(spec, selector)) !== null && _b !== void 0 ? _b : selector;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.checkSpecDriver = checkSpecDriver;
|
package/dist/debug/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./check-spec-driver"), exports);
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./check-spec-driver"), exports);
|