@applitools/core 1.4.6 → 2.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/dist/{classic → automation}/extract-text.js +14 -11
- package/dist/automation/get-viewport-size.js +2 -2
- package/dist/{classic → automation}/locate-text.js +5 -6
- package/dist/automation/locate.js +2 -2
- package/dist/automation/set-viewport-size.js +2 -2
- package/dist/automation/utils/take-screenshot.js +2 -2
- package/dist/{utils → automation/utils}/to-base-check-settings.js +3 -2
- package/dist/{utils → automation/utils}/wait-for-lazy-load.js +2 -2
- package/dist/check-and-close.js +7 -5
- package/dist/check.js +4 -5
- package/dist/classic/abort.js +4 -4
- package/dist/classic/check-and-close.js +9 -5
- package/dist/classic/check.js +12 -8
- package/dist/classic/close.js +3 -3
- package/dist/classic/core.js +9 -5
- package/dist/classic/open-eyes.js +17 -19
- package/dist/classic/utils/take-dom-capture.js +35 -54
- package/dist/close.js +1 -25
- package/dist/core.js +9 -5
- package/dist/errors/abort-error.js +5 -1
- package/dist/extract-text.js +13 -17
- package/dist/get-eyes-results.js +18 -0
- package/dist/{close-manager.js → get-manager-results.js} +11 -12
- package/dist/get-typed-eyes.js +5 -6
- package/dist/index.js +3 -3
- package/dist/locate-text.js +33 -7
- package/dist/locate.js +1 -1
- package/dist/make-ec-client.js +1 -9
- package/dist/make-manager.js +8 -33
- package/dist/open-eyes.js +3 -5
- package/dist/troubleshoot/check-network.js +41 -34
- package/dist/troubleshoot/eyes.js +2 -2
- package/dist/troubleshoot/ufg.js +3 -2
- package/dist/troubleshoot/utils.js +1 -25
- package/dist/types.js +0 -1
- package/dist/ufg/abort.js +11 -24
- package/dist/ufg/check-and-close.js +54 -50
- package/dist/ufg/check.js +33 -24
- package/dist/ufg/close.js +17 -18
- package/dist/ufg/core.js +9 -5
- package/dist/ufg/get-base-eyes.js +2 -0
- package/dist/ufg/get-results.js +27 -0
- package/dist/ufg/open-eyes.js +22 -25
- package/dist/ufg/utils/extract-broker-url.js +52 -0
- package/dist/ufg/utils/generate-safe-selectors.js +10 -5
- package/dist/ufg/utils/take-dom-snapshot.js +37 -36
- package/dist/ufg/utils/take-dom-snapshots.js +13 -17
- package/dist/ufg/utils/take-snapshots.js +3 -3
- package/dist/ufg/utils/take-vhses.js +60 -166
- package/dist/utils/format-results.js +37 -37
- package/package.json +19 -36
- package/types/automation/extract-text.d.ts +16 -0
- package/types/automation/get-viewport-size.d.ts +7 -7
- package/types/automation/locate-text.d.ts +15 -0
- package/types/automation/locate.d.ts +8 -8
- package/types/automation/set-viewport-size.d.ts +7 -7
- package/types/automation/types.d.ts +38 -42
- package/types/automation/utils/take-screenshot.d.ts +9 -9
- package/types/automation/utils/to-base-check-settings.d.ts +17 -0
- package/types/{utils → automation/utils}/wait-for-lazy-load.d.ts +3 -3
- package/types/check-and-close.d.ts +11 -13
- package/types/check.d.ts +12 -12
- package/types/classic/abort.d.ts +10 -10
- package/types/classic/check-and-close.d.ts +15 -11
- package/types/classic/check.d.ts +11 -11
- package/types/classic/close.d.ts +10 -10
- package/types/classic/core.d.ts +4 -4
- package/types/classic/get-base-eyes.d.ts +4 -4
- package/types/classic/open-eyes.d.ts +9 -9
- package/types/classic/types.d.ts +7 -7
- package/types/classic/utils/take-dom-capture.d.ts +4 -4
- package/types/close-batch.d.ts +1 -1
- package/types/close.d.ts +9 -8
- package/types/core.d.ts +4 -4
- package/types/delete-test.d.ts +1 -1
- package/types/errors/abort-error.d.ts +3 -2
- package/types/extract-text.d.ts +11 -9
- package/types/get-eyes-results.d.ts +12 -0
- package/types/get-manager-results.d.ts +14 -0
- package/types/get-typed-eyes.d.ts +9 -8
- package/types/index.d.ts +3 -3
- package/types/locate-text.d.ts +11 -9
- package/types/locate.d.ts +9 -9
- package/types/make-ec-client.d.ts +3 -3
- package/types/make-manager.d.ts +12 -12
- package/types/open-eyes.d.ts +13 -13
- package/types/troubleshoot/check-network.d.ts +3 -3
- package/types/troubleshoot/utils.d.ts +0 -2
- package/types/types.d.ts +65 -85
- package/types/ufg/abort.d.ts +10 -19
- package/types/ufg/check-and-close.d.ts +25 -13
- package/types/ufg/check.d.ts +11 -11
- package/types/ufg/close.d.ts +10 -19
- package/types/ufg/core.d.ts +4 -4
- package/types/ufg/get-base-eyes.d.ts +6 -6
- package/types/ufg/get-results.d.ts +11 -0
- package/types/ufg/open-eyes.d.ts +9 -9
- package/types/ufg/types.d.ts +13 -17
- package/types/ufg/utils/extract-broker-url.d.ts +6 -0
- package/types/ufg/utils/generate-safe-selectors.d.ts +14 -10
- package/types/ufg/utils/take-dom-snapshot.d.ts +34 -9
- package/types/ufg/utils/take-dom-snapshots.d.ts +3 -3
- package/types/ufg/utils/take-snapshots.d.ts +4 -4
- package/types/ufg/utils/take-vhses.d.ts +4 -4
- package/types/utils/format-results.d.ts +1 -1
- package/dist/utils/extract-broker-url.js +0 -24
- package/types/classic/extract-text.d.ts +0 -16
- package/types/classic/locate-text.d.ts +0 -15
- package/types/close-manager.d.ts +0 -18
- package/types/utils/extract-broker-url.d.ts +0 -2
- package/types/utils/to-base-check-settings.d.ts +0 -18
|
@@ -25,16 +25,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.makeExtractText = void 0;
|
|
27
27
|
const driver_1 = require("@applitools/driver");
|
|
28
|
-
const take_screenshot_1 = require("
|
|
29
|
-
const take_dom_capture_1 = require("
|
|
28
|
+
const take_screenshot_1 = require("./utils/take-screenshot");
|
|
29
|
+
const take_dom_capture_1 = require("../classic/utils/take-dom-capture");
|
|
30
30
|
const utils = __importStar(require("@applitools/utils"));
|
|
31
|
-
const
|
|
32
|
-
function makeExtractText({
|
|
33
|
-
return async function extractText({ target
|
|
31
|
+
const { getText } = require('@applitools/snippets');
|
|
32
|
+
function makeExtractText({ core, spec, logger: defaultLogger }) {
|
|
33
|
+
return async function extractText({ target, settings, logger = defaultLogger, }) {
|
|
34
34
|
logger.log('Command "extractText" is called with settings', settings);
|
|
35
|
-
const [baseEyes] = await eyes.getBaseEyes();
|
|
36
35
|
if (!(0, driver_1.isDriver)(target, spec)) {
|
|
37
|
-
return
|
|
36
|
+
return core.extractText({ target, settings: settings, logger });
|
|
38
37
|
}
|
|
39
38
|
settings = utils.types.isArray(settings) ? settings : [settings];
|
|
40
39
|
const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
|
|
@@ -42,11 +41,11 @@ function makeExtractText({ eyes, target: defaultTarget, spec, logger: defaultLog
|
|
|
42
41
|
var _a;
|
|
43
42
|
const steps = await prev;
|
|
44
43
|
const screenshot = await (0, take_screenshot_1.takeScreenshot)({ driver, settings, logger });
|
|
45
|
-
if (!settings.hint &&
|
|
44
|
+
if (!settings.hint && (0, driver_1.isElementReference)(settings.region, spec)) {
|
|
46
45
|
const element = await driver.currentContext.element(settings.region);
|
|
47
46
|
if (!element)
|
|
48
47
|
throw new Error(`Unable to find element using provided selector`);
|
|
49
|
-
settings.hint = await driver.currentContext.execute(
|
|
48
|
+
settings.hint = await driver.currentContext.execute(getText, [element]);
|
|
50
49
|
if (settings.hint)
|
|
51
50
|
settings.hint = settings.hint.replace(/[.\\+]/g, '\\$&');
|
|
52
51
|
}
|
|
@@ -60,11 +59,15 @@ function makeExtractText({ eyes, target: defaultTarget, spec, logger: defaultLog
|
|
|
60
59
|
await screenshot.scrollingElement.setAttribute('data-applitools-scroll', 'true');
|
|
61
60
|
else
|
|
62
61
|
await ((_a = screenshot.element) === null || _a === void 0 ? void 0 : _a.setAttribute('data-applitools-scroll', 'true'));
|
|
63
|
-
baseTarget.dom = await (0, take_dom_capture_1.takeDomCapture)({ driver, logger }).catch(() =>
|
|
62
|
+
baseTarget.dom = await (0, take_dom_capture_1.takeDomCapture)({ driver, logger }).catch(() => undefined);
|
|
64
63
|
}
|
|
65
64
|
delete settings.region;
|
|
66
65
|
delete settings.normalization;
|
|
67
|
-
const results = await
|
|
66
|
+
const results = await core.extractText({
|
|
67
|
+
target: baseTarget,
|
|
68
|
+
settings: settings,
|
|
69
|
+
logger,
|
|
70
|
+
});
|
|
68
71
|
steps.push(results);
|
|
69
72
|
return steps;
|
|
70
73
|
}, Promise.resolve([]));
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeGetViewportSize = void 0;
|
|
4
4
|
const driver_1 = require("@applitools/driver");
|
|
5
|
-
function makeGetViewportSize({ spec, logger: defaultLogger
|
|
5
|
+
function makeGetViewportSize({ spec, logger: defaultLogger }) {
|
|
6
6
|
return async function getViewportSize({ target, logger = defaultLogger, }) {
|
|
7
7
|
logger.log(`Command "getViewportSize" is called`);
|
|
8
|
-
const driver = await (0, driver_1.makeDriver)({
|
|
8
|
+
const driver = await (0, driver_1.makeDriver)({ driver: target, spec, logger });
|
|
9
9
|
return driver.getViewportSize();
|
|
10
10
|
};
|
|
11
11
|
}
|
|
@@ -25,15 +25,14 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.makeLocateText = void 0;
|
|
27
27
|
const driver_1 = require("@applitools/driver");
|
|
28
|
-
const take_screenshot_1 = require("
|
|
28
|
+
const take_screenshot_1 = require("./utils/take-screenshot");
|
|
29
29
|
// import {takeDomCapture} from './utils/take-dom-capture'
|
|
30
30
|
const utils = __importStar(require("@applitools/utils"));
|
|
31
|
-
function makeLocateText({
|
|
32
|
-
return async function locateText({ target
|
|
31
|
+
function makeLocateText({ core, spec, logger: defaultLogger }) {
|
|
32
|
+
return async function locateText({ target, settings, logger = defaultLogger, }) {
|
|
33
33
|
logger.log('Command "locateText" is called with settings', settings);
|
|
34
|
-
const [baseEyes] = await eyes.getBaseEyes();
|
|
35
34
|
if (!(0, driver_1.isDriver)(target, spec)) {
|
|
36
|
-
return
|
|
35
|
+
return core.locateText({ target, settings: settings, logger });
|
|
37
36
|
}
|
|
38
37
|
const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
|
|
39
38
|
const screenshot = await (0, take_screenshot_1.takeScreenshot)({ driver, settings, logger });
|
|
@@ -46,7 +45,7 @@ function makeLocateText({ eyes, target: defaultTarget, spec, logger: defaultLogg
|
|
|
46
45
|
// else await screenshot.element?.setAttribute('data-applitools-scroll', 'true')
|
|
47
46
|
// baseTarget.dom = await takeDomCapture({driver, logger}).catch(() => null)
|
|
48
47
|
}
|
|
49
|
-
const results = await
|
|
48
|
+
const results = await core.locateText({
|
|
50
49
|
target: baseTarget,
|
|
51
50
|
settings: settings,
|
|
52
51
|
logger,
|
|
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.makeLocate = void 0;
|
|
4
4
|
const driver_1 = require("@applitools/driver");
|
|
5
5
|
const take_screenshot_1 = require("./utils/take-screenshot");
|
|
6
|
-
function makeLocate({ spec, core, logger: defaultLogger
|
|
6
|
+
function makeLocate({ spec, core, logger: defaultLogger }) {
|
|
7
7
|
return async function locate({ settings, target, logger = defaultLogger, }) {
|
|
8
8
|
logger.log(`Command "locate" is called with settings`, settings);
|
|
9
9
|
if (!(0, driver_1.isDriver)(target, spec)) {
|
|
10
10
|
return core.locate({ target, settings: settings, logger });
|
|
11
11
|
}
|
|
12
|
-
const driver =
|
|
12
|
+
const driver = await (0, driver_1.makeDriver)({ driver: target, spec, logger });
|
|
13
13
|
const screenshot = await (0, take_screenshot_1.takeScreenshot)({ driver, settings, logger });
|
|
14
14
|
const baseTarget = { image: await screenshot.image.toPng() };
|
|
15
15
|
const results = await core.locate({ target: baseTarget, settings: settings, logger });
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeSetViewportSize = void 0;
|
|
4
4
|
const driver_1 = require("@applitools/driver");
|
|
5
|
-
function makeSetViewportSize({ spec, logger: defaultLogger
|
|
5
|
+
function makeSetViewportSize({ spec, logger: defaultLogger }) {
|
|
6
6
|
return async function setViewportSize({ target, size, logger = defaultLogger, }) {
|
|
7
7
|
logger.log(`Command "setViewportSize" is called with size`, size);
|
|
8
|
-
const driver = await (0, driver_1.makeDriver)({
|
|
8
|
+
const driver = await (0, driver_1.makeDriver)({ driver: target, spec, logger });
|
|
9
9
|
return driver.setViewportSize(size);
|
|
10
10
|
};
|
|
11
11
|
}
|
|
@@ -24,11 +24,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.takeScreenshot = void 0;
|
|
27
|
-
const screenshoter_1 = require("@applitools/screenshoter");
|
|
28
27
|
const utils = __importStar(require("@applitools/utils"));
|
|
28
|
+
const { takeScreenshot: legacyTakeScreenshot } = require('@applitools/screenshoter');
|
|
29
29
|
async function takeScreenshot({ driver, settings, logger, }) {
|
|
30
30
|
var _a, _b;
|
|
31
|
-
return (
|
|
31
|
+
return legacyTakeScreenshot({
|
|
32
32
|
driver,
|
|
33
33
|
frames: (_a = settings.frames) === null || _a === void 0 ? void 0 : _a.map(frame => {
|
|
34
34
|
return utils.types.isPlainObject(frame) && utils.types.has(frame, 'frame')
|
|
@@ -25,7 +25,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.toBaseCheckSettings = void 0;
|
|
27
27
|
const utils = __importStar(require("@applitools/utils"));
|
|
28
|
-
function toBaseCheckSettings({ settings
|
|
28
|
+
function toBaseCheckSettings({ settings }) {
|
|
29
29
|
const regionTypes = ['ignore', 'layout', 'strict', 'content', 'floating', 'accessibility'];
|
|
30
30
|
const elementReferencesToCalculate = regionTypes.flatMap(regionType => {
|
|
31
31
|
var _a;
|
|
@@ -46,9 +46,10 @@ function toBaseCheckSettings({ settings, }) {
|
|
|
46
46
|
delete transformedSettings.region;
|
|
47
47
|
}
|
|
48
48
|
regionTypes.forEach(regionType => {
|
|
49
|
+
var _a;
|
|
49
50
|
if (!transformedSettings[`${regionType}Regions`])
|
|
50
51
|
return;
|
|
51
|
-
transformedSettings[`${regionType}Regions`] = transformedSettings[`${regionType}Regions`].flatMap(reference => {
|
|
52
|
+
transformedSettings[`${regionType}Regions`] = (_a = transformedSettings[`${regionType}Regions`]) === null || _a === void 0 ? void 0 : _a.flatMap(reference => {
|
|
52
53
|
const { region, ...options } = utils.types.has(reference, 'region') ? reference : { region: reference };
|
|
53
54
|
if (isRegion(region))
|
|
54
55
|
return reference;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.waitForLazyLoad = void 0;
|
|
4
|
-
const
|
|
4
|
+
const { lazyLoad } = require('@applitools/snippets');
|
|
5
5
|
async function waitForLazyLoad({ context, settings, logger, }) {
|
|
6
6
|
var _a, _b, _c, _d, _e;
|
|
7
7
|
logger.log('lazy loading the page before capturing a screenshot');
|
|
8
|
-
await context.executePoll(
|
|
8
|
+
await context.executePoll(lazyLoad, {
|
|
9
9
|
main: [
|
|
10
10
|
await context.getScrollingElement(),
|
|
11
11
|
{
|
package/dist/check-and-close.js
CHANGED
|
@@ -2,16 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeCheckAndClose = void 0;
|
|
4
4
|
const driver_1 = require("@applitools/driver");
|
|
5
|
-
function makeCheckAndClose({ type: defaultType, eyes, target: defaultTarget, spec, logger: defaultLogger, }) {
|
|
5
|
+
function makeCheckAndClose({ type: defaultType = 'classic', eyes, target: defaultTarget, spec, logger: defaultLogger, }) {
|
|
6
6
|
return async function checkAndClose({ type = defaultType, target = defaultTarget, settings = {}, config, logger = defaultLogger, } = {}) {
|
|
7
7
|
settings = { ...config === null || config === void 0 ? void 0 : config.screenshot, ...config === null || config === void 0 ? void 0 : config.check, ...config === null || config === void 0 ? void 0 : config.close, ...settings };
|
|
8
8
|
const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
|
|
9
9
|
const typedEyes = await eyes.getTypedEyes({
|
|
10
10
|
type,
|
|
11
|
-
settings: driver
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
settings: driver
|
|
12
|
+
? {
|
|
13
|
+
type: driver.isNative ? 'native' : 'web',
|
|
14
|
+
renderers: settings.renderers,
|
|
15
|
+
}
|
|
16
|
+
: undefined,
|
|
15
17
|
logger,
|
|
16
18
|
});
|
|
17
19
|
const results = await typedEyes.checkAndClose({ target: driver !== null && driver !== void 0 ? driver : target, settings, logger });
|
package/dist/check.js
CHANGED
|
@@ -30,7 +30,7 @@ exports.makeCheck = void 0;
|
|
|
30
30
|
const driver_1 = require("@applitools/driver");
|
|
31
31
|
const utils = __importStar(require("@applitools/utils"));
|
|
32
32
|
const chalk_1 = __importDefault(require("chalk"));
|
|
33
|
-
function makeCheck({ type: defaultType, eyes, target: defaultTarget, spec, logger: defaultLogger, }) {
|
|
33
|
+
function makeCheck({ type: defaultType = 'classic', eyes, target: defaultTarget, spec, logger: defaultLogger, }) {
|
|
34
34
|
let stepIndex = 0;
|
|
35
35
|
return async function check({ type = defaultType, target = defaultTarget, settings, config, logger = defaultLogger, } = {}) {
|
|
36
36
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
@@ -62,10 +62,9 @@ function makeCheck({ type: defaultType, eyes, target: defaultTarget, spec, logge
|
|
|
62
62
|
const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
|
|
63
63
|
const typedEyes = await eyes.getTypedEyes({
|
|
64
64
|
type,
|
|
65
|
-
settings: driver
|
|
66
|
-
type: driver.isNative ? 'native' : 'web',
|
|
67
|
-
|
|
68
|
-
},
|
|
65
|
+
settings: driver
|
|
66
|
+
? { type: driver.isNative ? 'native' : 'web', renderers: settings.renderers }
|
|
67
|
+
: undefined,
|
|
69
68
|
logger,
|
|
70
69
|
});
|
|
71
70
|
const results = await typedEyes.check({ target: driver !== null && driver !== void 0 ? driver : target, settings, logger });
|
package/dist/classic/abort.js
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeAbort = void 0;
|
|
4
4
|
const driver_1 = require("@applitools/driver");
|
|
5
|
-
function makeAbort({ eyes, target, spec, logger: defaultLogger
|
|
6
|
-
return async function ({ settings, logger = defaultLogger, } = {}) {
|
|
5
|
+
function makeAbort({ eyes, target, spec, logger: defaultLogger }) {
|
|
6
|
+
return async function abort({ settings, logger = defaultLogger, } = {}) {
|
|
7
7
|
const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
|
|
8
8
|
const testMetadata = await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata());
|
|
9
|
-
const
|
|
10
|
-
|
|
9
|
+
const baseEyes = await eyes.getBaseEyes();
|
|
10
|
+
await Promise.all(baseEyes.map(baseEyes => baseEyes.abort({ settings: { ...settings, testMetadata }, logger })));
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
13
|
exports.makeAbort = makeAbort;
|
|
@@ -27,13 +27,15 @@ exports.makeCheckAndClose = void 0;
|
|
|
27
27
|
const driver_1 = require("@applitools/driver");
|
|
28
28
|
const take_screenshot_1 = require("../automation/utils/take-screenshot");
|
|
29
29
|
const take_dom_capture_1 = require("./utils/take-dom-capture");
|
|
30
|
-
const to_base_check_settings_1 = require("../utils/to-base-check-settings");
|
|
31
|
-
const wait_for_lazy_load_1 = require("../utils/wait-for-lazy-load");
|
|
30
|
+
const to_base_check_settings_1 = require("../automation/utils/to-base-check-settings");
|
|
31
|
+
const wait_for_lazy_load_1 = require("../automation/utils/wait-for-lazy-load");
|
|
32
32
|
const utils = __importStar(require("@applitools/utils"));
|
|
33
33
|
function makeCheckAndClose({ eyes, target: defaultTarget, spec, logger: defaultLogger, }) {
|
|
34
34
|
return async function checkAndClose({ target = defaultTarget, settings = {}, logger = defaultLogger, } = {}) {
|
|
35
35
|
var _a;
|
|
36
36
|
logger.log('Command "checkAndClose" is called with settings', settings);
|
|
37
|
+
if (!target)
|
|
38
|
+
throw new Error('Method was called with no target');
|
|
37
39
|
const baseEyes = await eyes.getBaseEyes({ logger });
|
|
38
40
|
if (!(0, driver_1.isDriver)(target, spec)) {
|
|
39
41
|
const baseSettings = settings;
|
|
@@ -66,13 +68,15 @@ function makeCheckAndClose({ eyes, target: defaultTarget, spec, logger: defaultL
|
|
|
66
68
|
await screenshot.scrollingElement.setAttribute('data-applitools-scroll', 'true');
|
|
67
69
|
else
|
|
68
70
|
await ((_a = screenshot.element) === null || _a === void 0 ? void 0 : _a.setAttribute('data-applitools-scroll', 'true'));
|
|
69
|
-
baseTarget.dom = await (0, take_dom_capture_1.takeDomCapture)({ driver, logger }).catch(() =>
|
|
71
|
+
baseTarget.dom = await (0, take_dom_capture_1.takeDomCapture)({ driver, logger }).catch(() => undefined);
|
|
70
72
|
}
|
|
71
73
|
if (settings.pageId) {
|
|
72
74
|
const scrollingElement = await driver.mainContext.getScrollingElement();
|
|
73
|
-
const scrollingOffset = driver.isNative ? { x: 0, y: 0 } : await scrollingElement.getScrollOffset();
|
|
75
|
+
const scrollingOffset = !scrollingElement || driver.isNative ? { x: 0, y: 0 } : await scrollingElement.getScrollOffset();
|
|
74
76
|
baseTarget.locationInView = utils.geometry.offset(scrollingOffset, screenshot.region);
|
|
75
|
-
baseTarget.fullViewSize = scrollingElement
|
|
77
|
+
baseTarget.fullViewSize = scrollingElement
|
|
78
|
+
? await scrollingElement.getContentSize()
|
|
79
|
+
: await driver.getViewportSize();
|
|
76
80
|
}
|
|
77
81
|
await screenshot.restoreState();
|
|
78
82
|
return (await Promise.all(baseEyes.map(baseEyes => baseEyes.checkAndClose({ target: baseTarget, settings: baseSettings, logger })))).flat();
|
package/dist/classic/check.js
CHANGED
|
@@ -27,13 +27,15 @@ exports.makeCheck = void 0;
|
|
|
27
27
|
const driver_1 = require("@applitools/driver");
|
|
28
28
|
const take_screenshot_1 = require("../automation/utils/take-screenshot");
|
|
29
29
|
const take_dom_capture_1 = require("./utils/take-dom-capture");
|
|
30
|
-
const to_base_check_settings_1 = require("../utils/to-base-check-settings");
|
|
31
|
-
const wait_for_lazy_load_1 = require("../utils/wait-for-lazy-load");
|
|
30
|
+
const to_base_check_settings_1 = require("../automation/utils/to-base-check-settings");
|
|
31
|
+
const wait_for_lazy_load_1 = require("../automation/utils/wait-for-lazy-load");
|
|
32
32
|
const utils = __importStar(require("@applitools/utils"));
|
|
33
33
|
function makeCheck({ eyes, target: defaultTarget, spec, logger: defaultLogger, }) {
|
|
34
34
|
return async function check({ target = defaultTarget, settings = {}, logger = defaultLogger, } = {}) {
|
|
35
|
-
var _a, _b;
|
|
35
|
+
var _a, _b, _c;
|
|
36
36
|
logger.log('Command "check" is called with settings', settings);
|
|
37
|
+
if (!target)
|
|
38
|
+
throw new Error('Method was called with no target');
|
|
37
39
|
const baseEyes = await eyes.getBaseEyes();
|
|
38
40
|
if (!(0, driver_1.isDriver)(target, spec)) {
|
|
39
41
|
return (await Promise.all(baseEyes.map(baseEyes => baseEyes.check({ target, settings: settings, logger })))).flat();
|
|
@@ -52,7 +54,7 @@ function makeCheck({ eyes, target: defaultTarget, spec, logger: defaultLogger, }
|
|
|
52
54
|
}
|
|
53
55
|
// TODO it actually could be different per eyes
|
|
54
56
|
const shouldRunOnce = true;
|
|
55
|
-
const finishAt = Date.now() + settings.retryTimeout;
|
|
57
|
+
const finishAt = Date.now() + ((_b = settings.retryTimeout) !== null && _b !== void 0 ? _b : 0);
|
|
56
58
|
let baseTarget;
|
|
57
59
|
let baseSettings;
|
|
58
60
|
let results;
|
|
@@ -75,14 +77,16 @@ function makeCheck({ eyes, target: defaultTarget, spec, logger: defaultLogger, }
|
|
|
75
77
|
if (settings.fully)
|
|
76
78
|
await screenshot.scrollingElement.setAttribute('data-applitools-scroll', 'true');
|
|
77
79
|
else
|
|
78
|
-
await ((
|
|
79
|
-
baseTarget.dom = await (0, take_dom_capture_1.takeDomCapture)({ driver, logger }).catch(() =>
|
|
80
|
+
await ((_c = screenshot.element) === null || _c === void 0 ? void 0 : _c.setAttribute('data-applitools-scroll', 'true'));
|
|
81
|
+
baseTarget.dom = await (0, take_dom_capture_1.takeDomCapture)({ driver, logger }).catch(() => undefined);
|
|
80
82
|
}
|
|
81
83
|
if (settings.pageId) {
|
|
82
84
|
const scrollingElement = await driver.mainContext.getScrollingElement();
|
|
83
|
-
const scrollingOffset = driver.isNative ? { x: 0, y: 0 } : await scrollingElement.getScrollOffset();
|
|
85
|
+
const scrollingOffset = !scrollingElement || driver.isNative ? { x: 0, y: 0 } : await scrollingElement.getScrollOffset();
|
|
84
86
|
baseTarget.locationInView = utils.geometry.offset(scrollingOffset, screenshot.region);
|
|
85
|
-
baseTarget.fullViewSize = scrollingElement
|
|
87
|
+
baseTarget.fullViewSize = scrollingElement
|
|
88
|
+
? await scrollingElement.getContentSize()
|
|
89
|
+
: await driver.getViewportSize();
|
|
86
90
|
}
|
|
87
91
|
await screenshot.restoreState();
|
|
88
92
|
baseSettings.ignoreMismatch = !shouldRunOnce;
|
package/dist/classic/close.js
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeClose = void 0;
|
|
4
4
|
const driver_1 = require("@applitools/driver");
|
|
5
|
-
function makeClose({ eyes, target, spec, logger: defaultLogger
|
|
6
|
-
return async function ({ settings, logger = defaultLogger, } = {}) {
|
|
5
|
+
function makeClose({ eyes, target, spec, logger: defaultLogger }) {
|
|
6
|
+
return async function close({ settings, logger = defaultLogger, } = {}) {
|
|
7
7
|
const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
|
|
8
8
|
const testMetadata = await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata());
|
|
9
9
|
const baseEyes = await eyes.getBaseEyes();
|
|
10
|
-
|
|
10
|
+
await Promise.all(baseEyes.map(baseEyes => baseEyes.close({ settings: { ...settings, testMetadata }, logger })));
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
13
|
exports.makeClose = makeClose;
|
package/dist/classic/core.js
CHANGED
|
@@ -29,21 +29,25 @@ const core_base_1 = require("@applitools/core-base");
|
|
|
29
29
|
const get_viewport_size_1 = require("../automation/get-viewport-size");
|
|
30
30
|
const set_viewport_size_1 = require("../automation/set-viewport-size");
|
|
31
31
|
const locate_1 = require("../automation/locate");
|
|
32
|
+
const locate_text_1 = require("../automation/locate-text");
|
|
33
|
+
const extract_text_1 = require("../automation/extract-text");
|
|
32
34
|
const open_eyes_1 = require("./open-eyes");
|
|
33
35
|
const utils = __importStar(require("@applitools/utils"));
|
|
34
|
-
function makeCore({ spec, core, agentId = 'core-classic', cwd = process.cwd(), logger, }) {
|
|
36
|
+
function makeCore({ spec, core, agentId = 'core-classic', cwd = process.cwd(), logger: defaultLogger, }) {
|
|
35
37
|
var _a;
|
|
36
|
-
logger = (_a =
|
|
38
|
+
const logger = (_a = defaultLogger === null || defaultLogger === void 0 ? void 0 : defaultLogger.extend({ label: 'core-classic' })) !== null && _a !== void 0 ? _a : (0, logger_1.makeLogger)({ label: 'core-classic' });
|
|
37
39
|
logger.log(`Core classic is initialized ${core ? 'with' : 'without'} custom base core`);
|
|
38
40
|
core !== null && core !== void 0 ? core : (core = (0, core_base_1.makeCore)({ agentId, cwd, logger }));
|
|
39
41
|
return utils.general.extend(core, {
|
|
40
42
|
type: 'classic',
|
|
41
|
-
isDriver: spec
|
|
42
|
-
isElement: spec
|
|
43
|
-
isSelector: spec
|
|
43
|
+
isDriver: spec && spec.isDriver,
|
|
44
|
+
isElement: spec && spec.isElement,
|
|
45
|
+
isSelector: spec && spec.isSelector,
|
|
44
46
|
getViewportSize: spec && (0, get_viewport_size_1.makeGetViewportSize)({ spec, logger }),
|
|
45
47
|
setViewportSize: spec && (0, set_viewport_size_1.makeSetViewportSize)({ spec, logger }),
|
|
46
48
|
locate: (0, locate_1.makeLocate)({ spec, core, logger }),
|
|
49
|
+
locateText: (0, locate_text_1.makeLocateText)({ spec, core, logger }),
|
|
50
|
+
extractText: (0, extract_text_1.makeExtractText)({ spec, core, logger }),
|
|
47
51
|
openEyes: (0, open_eyes_1.makeOpenEyes)({ spec, core, logger }),
|
|
48
52
|
});
|
|
49
53
|
}
|
|
@@ -28,12 +28,10 @@ const driver_1 = require("@applitools/driver");
|
|
|
28
28
|
const get_base_eyes_1 = require("./get-base-eyes");
|
|
29
29
|
const check_1 = require("./check");
|
|
30
30
|
const check_and_close_1 = require("./check-and-close");
|
|
31
|
-
const locate_text_1 = require("./locate-text");
|
|
32
|
-
const extract_text_1 = require("./extract-text");
|
|
33
31
|
const close_1 = require("./close");
|
|
34
32
|
const abort_1 = require("./abort");
|
|
35
33
|
const utils = __importStar(require("@applitools/utils"));
|
|
36
|
-
function makeOpenEyes({ core, spec, logger: defaultLogger
|
|
34
|
+
function makeOpenEyes({ core, spec, logger: defaultLogger }) {
|
|
37
35
|
return async function openEyes({ target, settings, eyes, logger = defaultLogger, }) {
|
|
38
36
|
var _a, _b, _c, _d, _e;
|
|
39
37
|
var _f;
|
|
@@ -47,27 +45,29 @@ function makeOpenEyes({ core, spec, logger: defaultLogger, }) {
|
|
|
47
45
|
}
|
|
48
46
|
if (driver.isWeb) {
|
|
49
47
|
(_b = (_f = settings.environment).userAgent) !== null && _b !== void 0 ? _b : (_f.userAgent = driver.userAgent);
|
|
50
|
-
if (driver.isChromium &&
|
|
51
|
-
((driver.isWindows && Number.parseInt(driver.browserVersion) >= 107) ||
|
|
52
|
-
(driver.isMac && Number.parseInt(driver.browserVersion) >= 90))) {
|
|
53
|
-
settings.environment.os = `${driver.platformName} ${(_c = driver.platformVersion) !== null && _c !== void 0 ? _c : ''}`.trim();
|
|
54
|
-
}
|
|
55
48
|
}
|
|
56
49
|
if (!settings.environment.deviceName && driver.deviceName) {
|
|
57
50
|
settings.environment.deviceName = driver.deviceName;
|
|
58
51
|
}
|
|
59
|
-
if (!settings.environment.os
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (
|
|
63
|
-
|
|
52
|
+
if (!settings.environment.os) {
|
|
53
|
+
if (driver.isNative && driver.platformName) {
|
|
54
|
+
settings.environment.os = driver.platformName;
|
|
55
|
+
if (!settings.keepPlatformNameAsIs) {
|
|
56
|
+
if ((_c = settings.environment.os) === null || _c === void 0 ? void 0 : _c.startsWith('android')) {
|
|
57
|
+
settings.environment.os = `Android${settings.environment.os.slice(7)}`;
|
|
58
|
+
}
|
|
59
|
+
if ((_d = settings.environment.os) === null || _d === void 0 ? void 0 : _d.startsWith('ios')) {
|
|
60
|
+
settings.environment.os = `iOS${settings.environment.os.slice(3)}`;
|
|
61
|
+
}
|
|
64
62
|
}
|
|
65
|
-
if (
|
|
66
|
-
settings.environment.os
|
|
63
|
+
if (driver.platformVersion) {
|
|
64
|
+
settings.environment.os += ` ${driver.platformVersion}`;
|
|
67
65
|
}
|
|
68
66
|
}
|
|
69
|
-
if (driver.
|
|
70
|
-
|
|
67
|
+
else if (driver.isChromium &&
|
|
68
|
+
((driver.isWindows && Number.parseInt(driver.browserVersion) >= 107) ||
|
|
69
|
+
(driver.isMac && Number.parseInt(driver.browserVersion) >= 90))) {
|
|
70
|
+
settings.environment.os = `${driver.platformName} ${(_e = driver.platformVersion) !== null && _e !== void 0 ? _e : ''}`.trim();
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
if (!settings.environment.viewportSize || driver.isMobile) {
|
|
@@ -86,8 +86,6 @@ function makeOpenEyes({ core, spec, logger: defaultLogger, }) {
|
|
|
86
86
|
getBaseEyes,
|
|
87
87
|
check: (0, check_1.makeCheck)({ eyes, target: driver, spec, logger }),
|
|
88
88
|
checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, target: driver, spec, logger }),
|
|
89
|
-
locateText: (0, locate_text_1.makeLocateText)({ eyes, target: driver, spec, logger }),
|
|
90
|
-
extractText: (0, extract_text_1.makeExtractText)({ eyes, target: driver, spec, logger }),
|
|
91
89
|
close: (0, close_1.makeClose)({ eyes, target: driver, spec, logger }),
|
|
92
90
|
abort: (0, abort_1.makeAbort)({ eyes, target: driver, spec, logger }),
|
|
93
91
|
}));
|
|
@@ -1,25 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.takeDomCapture = void 0;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
4
|
+
const req_1 = require("@applitools/req");
|
|
5
|
+
const { getCaptureDomPoll, getPollResult, getCaptureDomPollForIE, getPollResultForIE, } = require('@applitools/dom-capture');
|
|
9
6
|
async function takeDomCapture({ driver, settings, logger, }) {
|
|
10
|
-
var _a;
|
|
7
|
+
var _a, _b, _c;
|
|
11
8
|
const isLegacyBrowser = driver.isIE || driver.isEdgeLegacy;
|
|
12
|
-
const { canExecuteOnlyFunctionScripts } = driver.features;
|
|
13
9
|
const arg = {
|
|
14
10
|
chunkByteLength: (_a = settings === null || settings === void 0 ? void 0 : settings.chunkByteLength) !== null && _a !== void 0 ? _a : (Number(process.env.APPLITOOLS_SCRIPT_RESULT_MAX_BYTE_LENGTH) || (driver.isIOS ? 100000 : 250 * 1024 * 1024)),
|
|
15
11
|
};
|
|
16
12
|
const scripts = {
|
|
17
|
-
main: canExecuteOnlyFunctionScripts
|
|
13
|
+
main: ((_b = driver.features) === null || _b === void 0 ? void 0 : _b.canExecuteOnlyFunctionScripts)
|
|
18
14
|
? require('@applitools/dom-capture').captureDomPoll
|
|
19
|
-
: `return (${isLegacyBrowser ? await
|
|
20
|
-
poll: canExecuteOnlyFunctionScripts
|
|
15
|
+
: `return (${isLegacyBrowser ? await getCaptureDomPollForIE() : await getCaptureDomPoll()}).apply(null, arguments);`,
|
|
16
|
+
poll: ((_c = driver.features) === null || _c === void 0 ? void 0 : _c.canExecuteOnlyFunctionScripts)
|
|
21
17
|
? require('@applitools/dom-capture').pollResult
|
|
22
|
-
: `return (${isLegacyBrowser ? await
|
|
18
|
+
: `return (${isLegacyBrowser ? await getPollResultForIE() : await getPollResult()}).apply(null, arguments);`,
|
|
23
19
|
};
|
|
24
20
|
const url = await driver.getUrl();
|
|
25
21
|
const dom = await captureContextDom(driver.mainContext);
|
|
@@ -34,17 +30,17 @@ async function takeDomCapture({ driver, settings, logger, }) {
|
|
|
34
30
|
pollTimeout: (_b = settings === null || settings === void 0 ? void 0 : settings.pollTimeout) !== null && _b !== void 0 ? _b : 200,
|
|
35
31
|
});
|
|
36
32
|
if (!capture)
|
|
37
|
-
return
|
|
33
|
+
return '';
|
|
38
34
|
const raws = capture.split('\n');
|
|
39
35
|
const tokens = JSON.parse(raws[0]);
|
|
40
36
|
const cssEndIndex = raws.indexOf(tokens.separator);
|
|
41
37
|
const frameEndIndex = raws.indexOf(tokens.separator, cssEndIndex + 1);
|
|
42
38
|
let dom = raws[frameEndIndex + 1];
|
|
43
39
|
const cssResources = await Promise.all(raws.slice(1, cssEndIndex).reduce((cssResources, href) => {
|
|
44
|
-
return href ? cssResources.concat(
|
|
40
|
+
return href ? cssResources.concat(fetchCssResource(new URL(href, url).href)) : cssResources;
|
|
45
41
|
}, []));
|
|
46
|
-
for (const {
|
|
47
|
-
dom = dom.replace(`${tokens.cssStartToken}${
|
|
42
|
+
for (const { url, css } of cssResources) {
|
|
43
|
+
dom = dom.replace(`${tokens.cssStartToken}${url}${tokens.cssEndToken}`, css);
|
|
48
44
|
}
|
|
49
45
|
const framePaths = raws.slice(cssEndIndex + 1, frameEndIndex);
|
|
50
46
|
for (const xpaths of framePaths) {
|
|
@@ -60,74 +56,59 @@ async function takeDomCapture({ driver, settings, logger, }) {
|
|
|
60
56
|
}
|
|
61
57
|
catch (ignored) {
|
|
62
58
|
logger.log('Switching to frame failed');
|
|
63
|
-
contextDom =
|
|
59
|
+
contextDom = '';
|
|
64
60
|
}
|
|
65
61
|
dom = dom.replace(`${tokens.iframeStartToken}${xpaths}${tokens.iframeEndToken}`, contextDom);
|
|
66
62
|
}
|
|
67
63
|
return dom;
|
|
68
64
|
}
|
|
69
|
-
async function
|
|
65
|
+
async function fetchCssResource(url) {
|
|
66
|
+
logger.log(`Request to download css will be sent to the address "[GET]${url}"`);
|
|
70
67
|
try {
|
|
71
|
-
|
|
72
|
-
const response = await (0, req_1.default)(href, {
|
|
68
|
+
const response = await (0, req_1.req)(url, {
|
|
73
69
|
retry: {
|
|
74
70
|
limit: 1,
|
|
75
|
-
validate: ({ response, error }) => Boolean(error) || response.
|
|
71
|
+
validate: ({ response, error }) => Boolean(error) || !response.ok,
|
|
76
72
|
},
|
|
77
|
-
fetch: settings.fetch,
|
|
73
|
+
fetch: settings === null || settings === void 0 ? void 0 : settings.fetch,
|
|
78
74
|
});
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
logger.log(`downloading CSS in length of ${css.length} chars took`);
|
|
82
|
-
return { href, css: cleanStringForJSON(css) };
|
|
83
|
-
}
|
|
75
|
+
logger.log(`Request to download css that was sent to the address "[GET]${url}" respond with ${response.statusText}(${response.status})`, response.ok ? `and css of length ${(await response.clone().text()).length} chars` : '');
|
|
76
|
+
return { url, css: response.ok ? encodeJSON(await response.text()) : '' };
|
|
84
77
|
}
|
|
85
|
-
catch (
|
|
86
|
-
|
|
78
|
+
catch (error) {
|
|
79
|
+
logger.error(`Request to download css that was sent to the address "[GET]${url}" failed with error`, error);
|
|
80
|
+
return { url, css: '' };
|
|
87
81
|
}
|
|
88
82
|
}
|
|
89
|
-
function
|
|
90
|
-
if (str
|
|
83
|
+
function encodeJSON(str) {
|
|
84
|
+
if (!str)
|
|
91
85
|
return '';
|
|
92
|
-
|
|
93
|
-
let sb = '';
|
|
94
|
-
let char = '\0';
|
|
95
|
-
let tmp;
|
|
96
|
-
for (let i = 0, l = str.length; i < l; i += 1) {
|
|
97
|
-
char = str[i];
|
|
86
|
+
return Array.from(str).reduce((result, char) => {
|
|
98
87
|
switch (char) {
|
|
99
88
|
case '\\':
|
|
100
89
|
case '"':
|
|
101
90
|
case '/':
|
|
102
|
-
|
|
103
|
-
break;
|
|
91
|
+
return result + '\\' + char;
|
|
104
92
|
case '\b':
|
|
105
|
-
|
|
106
|
-
break;
|
|
93
|
+
return result + '\\b';
|
|
107
94
|
case '\t':
|
|
108
|
-
|
|
109
|
-
break;
|
|
95
|
+
return result + '\\t';
|
|
110
96
|
case '\n':
|
|
111
|
-
|
|
112
|
-
break;
|
|
97
|
+
return result + '\\n';
|
|
113
98
|
case '\f':
|
|
114
|
-
|
|
115
|
-
break;
|
|
99
|
+
return result + '\\f';
|
|
116
100
|
case '\r':
|
|
117
|
-
|
|
118
|
-
break;
|
|
101
|
+
return result + '\\r';
|
|
119
102
|
default:
|
|
120
103
|
if (char < ' ') {
|
|
121
|
-
tmp = '000' + char.charCodeAt(0).toString(16);
|
|
122
|
-
|
|
104
|
+
const tmp = '000' + char.charCodeAt(0).toString(16);
|
|
105
|
+
return result + '\\u' + tmp.substring(tmp.length - 4);
|
|
123
106
|
}
|
|
124
107
|
else {
|
|
125
|
-
|
|
108
|
+
return result + char;
|
|
126
109
|
}
|
|
127
|
-
break;
|
|
128
110
|
}
|
|
129
|
-
}
|
|
130
|
-
return sb;
|
|
111
|
+
}, '');
|
|
131
112
|
}
|
|
132
113
|
}
|
|
133
114
|
exports.takeDomCapture = takeDomCapture;
|