@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
|
@@ -29,22 +29,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
exports.makeCheckAndClose = void 0;
|
|
30
30
|
const driver_1 = require("@applitools/driver");
|
|
31
31
|
const take_snapshots_1 = require("./utils/take-snapshots");
|
|
32
|
-
const wait_for_lazy_load_1 = require("../utils/wait-for-lazy-load");
|
|
33
|
-
const to_base_check_settings_1 = require("../utils/to-base-check-settings");
|
|
32
|
+
const wait_for_lazy_load_1 = require("../automation/utils/wait-for-lazy-load");
|
|
33
|
+
const to_base_check_settings_1 = require("../automation/utils/to-base-check-settings");
|
|
34
34
|
const generate_safe_selectors_1 = require("./utils/generate-safe-selectors");
|
|
35
35
|
const uniquify_renderers_1 = require("./utils/uniquify-renderers");
|
|
36
36
|
const abort_error_1 = require("../errors/abort-error");
|
|
37
37
|
const utils = __importStar(require("@applitools/utils"));
|
|
38
38
|
const chalk_1 = __importDefault(require("chalk"));
|
|
39
39
|
function makeCheckAndClose({ spec, eyes, client, signal, target: defaultTarget, logger: defaultLogger, }) {
|
|
40
|
-
return async function checkAndClose({ target = defaultTarget, settings = {}, logger = defaultLogger,
|
|
40
|
+
return async function checkAndClose({ target = defaultTarget, settings = {}, logger = defaultLogger, }) {
|
|
41
41
|
var _a, _b, _c;
|
|
42
42
|
logger.log('Command "checkAndClose" is called with settings', settings);
|
|
43
|
-
if (signal.aborted) {
|
|
43
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
44
44
|
logger.warn('Command "checkAndClose" was called after test was already aborted');
|
|
45
45
|
throw new abort_error_1.AbortError('Command "checkAndClose" was called after test was already aborted');
|
|
46
46
|
}
|
|
47
|
-
const { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({
|
|
47
|
+
const { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({
|
|
48
|
+
settings,
|
|
49
|
+
});
|
|
50
|
+
let snapshots;
|
|
48
51
|
let snapshotUrl;
|
|
49
52
|
let snapshotTitle;
|
|
50
53
|
let userAgent;
|
|
@@ -67,13 +70,16 @@ function makeCheckAndClose({ spec, eyes, client, signal, target: defaultTarget,
|
|
|
67
70
|
userAgent = driver.userAgent;
|
|
68
71
|
const generated = await (0, generate_safe_selectors_1.generateSafeSelectors)({
|
|
69
72
|
context: driver.currentContext,
|
|
70
|
-
elementReferences: [
|
|
73
|
+
elementReferences: [
|
|
74
|
+
...(elementReferenceToTarget ? [elementReferenceToTarget] : []),
|
|
75
|
+
...elementReferencesToCalculate,
|
|
76
|
+
],
|
|
71
77
|
});
|
|
72
78
|
cleanupGeneratedSelectors = generated.cleanupGeneratedSelectors;
|
|
73
79
|
if (elementReferenceToTarget) {
|
|
74
|
-
|
|
75
|
-
if (!regionToTarget)
|
|
80
|
+
if (!((_b = generated.selectors[0]) === null || _b === void 0 ? void 0 : _b.safeSelector))
|
|
76
81
|
throw new Error('Target element not found');
|
|
82
|
+
regionToTarget = generated.selectors[0].safeSelector;
|
|
77
83
|
selectorsToCalculate = generated.selectors.slice(1);
|
|
78
84
|
}
|
|
79
85
|
else {
|
|
@@ -81,42 +87,40 @@ function makeCheckAndClose({ spec, eyes, client, signal, target: defaultTarget,
|
|
|
81
87
|
}
|
|
82
88
|
}
|
|
83
89
|
const currentContext = driver.currentContext;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
},
|
|
106
|
-
provides: {
|
|
107
|
-
getChromeEmulationDevices: client.getChromeEmulationDevices,
|
|
108
|
-
getIOSDevices: client.getIOSDevices,
|
|
90
|
+
snapshots = await (0, take_snapshots_1.takeSnapshots)({
|
|
91
|
+
driver,
|
|
92
|
+
settings: {
|
|
93
|
+
...eyes.test.server,
|
|
94
|
+
waitBeforeCapture: settings.waitBeforeCapture,
|
|
95
|
+
disableBrowserFetching: settings.disableBrowserFetching,
|
|
96
|
+
layoutBreakpoints: settings.layoutBreakpoints,
|
|
97
|
+
renderers: uniqueRenderers,
|
|
98
|
+
skipResources: client.getCachedResourceUrls(),
|
|
99
|
+
},
|
|
100
|
+
hooks: {
|
|
101
|
+
async beforeSnapshots() {
|
|
102
|
+
if (settings.lazyLoad && driver.isWeb) {
|
|
103
|
+
await (0, wait_for_lazy_load_1.waitForLazyLoad)({
|
|
104
|
+
context: driver.currentContext,
|
|
105
|
+
settings: settings.lazyLoad !== true ? settings.lazyLoad : {},
|
|
106
|
+
logger,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
109
|
},
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
110
|
+
},
|
|
111
|
+
provides: {
|
|
112
|
+
getChromeEmulationDevices: client.getChromeEmulationDevices,
|
|
113
|
+
getIOSDevices: client.getIOSDevices,
|
|
114
|
+
},
|
|
115
|
+
logger,
|
|
116
|
+
});
|
|
113
117
|
await currentContext.focus();
|
|
114
118
|
snapshotUrl = await driver.getUrl();
|
|
115
119
|
snapshotTitle = await driver.getTitle();
|
|
116
120
|
await (cleanupGeneratedSelectors === null || cleanupGeneratedSelectors === void 0 ? void 0 : cleanupGeneratedSelectors());
|
|
117
121
|
}
|
|
118
122
|
else {
|
|
119
|
-
snapshots = !utils.types.isArray(target) ? Array(
|
|
123
|
+
snapshots = !utils.types.isArray(target) ? Array(uniqueRenderers.length).fill(target) : target;
|
|
120
124
|
snapshotUrl = utils.types.has(snapshots[0], 'url') ? snapshots[0].url : undefined;
|
|
121
125
|
}
|
|
122
126
|
regionToTarget !== null && regionToTarget !== void 0 ? regionToTarget : (regionToTarget = (_c = elementReferenceToTarget) !== null && _c !== void 0 ? _c : settings.region);
|
|
@@ -124,13 +128,13 @@ function makeCheckAndClose({ spec, eyes, client, signal, target: defaultTarget,
|
|
|
124
128
|
originalSelector: selector,
|
|
125
129
|
safeSelector: selector,
|
|
126
130
|
})));
|
|
127
|
-
const promises =
|
|
131
|
+
const promises = uniqueRenderers.map(async (renderer, index) => {
|
|
128
132
|
if (utils.types.has(renderer, 'name') && renderer.name === 'edge') {
|
|
129
133
|
const message = chalk_1.default.yellow(`The 'edge' option that is being used in your browsers' configuration will soon be deprecated. Please change it to either 'edgelegacy' for the legacy version or to 'edgechromium' for the new Chromium-based version. Please note, when using the built-in BrowserType enum, then the values are BrowserType.EDGE_LEGACY and BrowserType.EDGE_CHROMIUM, respectively.`);
|
|
130
134
|
logger.console.log(message);
|
|
131
135
|
}
|
|
132
136
|
try {
|
|
133
|
-
if (signal.aborted) {
|
|
137
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
134
138
|
logger.warn('Command "check" was aborted before rendering');
|
|
135
139
|
throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
|
|
136
140
|
}
|
|
@@ -149,20 +153,20 @@ function makeCheckAndClose({ spec, eyes, client, signal, target: defaultTarget,
|
|
|
149
153
|
});
|
|
150
154
|
const [baseEyes] = await eyes.getBaseEyes({ settings: { renderer, type: snapshotType }, logger });
|
|
151
155
|
try {
|
|
152
|
-
if (signal.aborted) {
|
|
156
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
153
157
|
logger.warn('Command "check" was aborted before rendering');
|
|
154
158
|
throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
|
|
155
159
|
}
|
|
156
|
-
else if (baseEyes.
|
|
160
|
+
else if (!baseEyes.running) {
|
|
157
161
|
logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
|
|
158
162
|
throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
|
|
159
163
|
}
|
|
160
164
|
const renderTarget = await renderTargetPromise;
|
|
161
|
-
if (signal.aborted) {
|
|
165
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
162
166
|
logger.warn('Command "check" was aborted before rendering');
|
|
163
167
|
throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
|
|
164
168
|
}
|
|
165
|
-
else if (baseEyes.
|
|
169
|
+
else if (!baseEyes.running) {
|
|
166
170
|
logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
|
|
167
171
|
throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
|
|
168
172
|
}
|
|
@@ -170,30 +174,30 @@ function makeCheckAndClose({ spec, eyes, client, signal, target: defaultTarget,
|
|
|
170
174
|
target: renderTarget,
|
|
171
175
|
settings: {
|
|
172
176
|
...settings,
|
|
173
|
-
rendererId: baseEyes.test.rendererId,
|
|
174
177
|
region: regionToTarget,
|
|
175
|
-
type: utils.types.has(snapshot, 'cdt') ? 'web' : 'native',
|
|
176
|
-
renderer,
|
|
177
178
|
selectorsToCalculate: selectorsToCalculate.flatMap(({ safeSelector }) => safeSelector !== null && safeSelector !== void 0 ? safeSelector : []),
|
|
178
179
|
includeFullPageSize: Boolean(settings.pageId),
|
|
180
|
+
type: snapshotType,
|
|
181
|
+
renderer,
|
|
182
|
+
rendererId: baseEyes.test.rendererId,
|
|
179
183
|
},
|
|
180
184
|
signal,
|
|
181
185
|
});
|
|
182
186
|
let offset = 0;
|
|
183
187
|
const baseSettings = getBaseCheckSettings({
|
|
184
188
|
calculatedRegions: selectorsToCalculate.map(({ originalSelector, safeSelector }) => ({
|
|
185
|
-
selector: originalSelector,
|
|
189
|
+
selector: originalSelector !== null && originalSelector !== void 0 ? originalSelector : undefined,
|
|
186
190
|
regions: safeSelector ? selectorRegions[offset++] : [],
|
|
187
191
|
})),
|
|
188
192
|
});
|
|
189
193
|
baseSettings.renderId = renderId;
|
|
190
194
|
baseTarget.source = snapshotUrl;
|
|
191
195
|
baseTarget.name = snapshotTitle;
|
|
192
|
-
if (signal.aborted) {
|
|
196
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
193
197
|
logger.warn('Command "check" was aborted after rendering');
|
|
194
198
|
throw new abort_error_1.AbortError('Command "check" was aborted after rendering');
|
|
195
199
|
}
|
|
196
|
-
else if (baseEyes.
|
|
200
|
+
else if (!baseEyes.running) {
|
|
197
201
|
logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
|
|
198
202
|
throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
|
|
199
203
|
}
|
|
@@ -202,7 +206,7 @@ function makeCheckAndClose({ spec, eyes, client, signal, target: defaultTarget,
|
|
|
202
206
|
settings: baseSettings,
|
|
203
207
|
logger,
|
|
204
208
|
});
|
|
205
|
-
if (baseEyes.
|
|
209
|
+
if (!baseEyes.running) {
|
|
206
210
|
logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
|
|
207
211
|
throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
|
|
208
212
|
}
|
package/dist/ufg/check.js
CHANGED
|
@@ -29,8 +29,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
exports.makeCheck = void 0;
|
|
30
30
|
const driver_1 = require("@applitools/driver");
|
|
31
31
|
const take_snapshots_1 = require("./utils/take-snapshots");
|
|
32
|
-
const wait_for_lazy_load_1 = require("../utils/wait-for-lazy-load");
|
|
33
|
-
const to_base_check_settings_1 = require("../utils/to-base-check-settings");
|
|
32
|
+
const wait_for_lazy_load_1 = require("../automation/utils/wait-for-lazy-load");
|
|
33
|
+
const to_base_check_settings_1 = require("../automation/utils/to-base-check-settings");
|
|
34
34
|
const generate_safe_selectors_1 = require("./utils/generate-safe-selectors");
|
|
35
35
|
const uniquify_renderers_1 = require("./utils/uniquify-renderers");
|
|
36
36
|
const abort_error_1 = require("../errors/abort-error");
|
|
@@ -38,13 +38,15 @@ const utils = __importStar(require("@applitools/utils"));
|
|
|
38
38
|
const chalk_1 = __importDefault(require("chalk"));
|
|
39
39
|
function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger: defaultLogger, }) {
|
|
40
40
|
return async function check({ target = defaultTarget, settings = {}, logger = defaultLogger, }) {
|
|
41
|
-
var _a, _b, _c, _d;
|
|
41
|
+
var _a, _b, _c, _d, _e;
|
|
42
42
|
logger.log('Command "check" is called with settings', settings);
|
|
43
|
-
if (signal.aborted) {
|
|
43
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
44
44
|
logger.warn('Command "check" was called after test was already aborted');
|
|
45
45
|
throw new abort_error_1.AbortError('Command "check" was called after test was already aborted');
|
|
46
46
|
}
|
|
47
|
-
const { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({
|
|
47
|
+
const { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({
|
|
48
|
+
settings,
|
|
49
|
+
});
|
|
48
50
|
let snapshots;
|
|
49
51
|
let snapshotUrl;
|
|
50
52
|
let snapshotTitle;
|
|
@@ -52,8 +54,8 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
|
|
|
52
54
|
let regionToTarget;
|
|
53
55
|
let selectorsToCalculate;
|
|
54
56
|
const uniqueRenderers = (0, uniquify_renderers_1.uniquifyRenderers)((_a = settings.renderers) !== null && _a !== void 0 ? _a : []);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
+
const driver = spec && (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
|
|
58
|
+
if (driver) {
|
|
57
59
|
await driver.currentContext.setScrollingElement((_b = settings.scrollRootElement) !== null && _b !== void 0 ? _b : null);
|
|
58
60
|
if (uniqueRenderers.length === 0) {
|
|
59
61
|
if (driver.isWeb) {
|
|
@@ -69,13 +71,16 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
|
|
|
69
71
|
userAgent = driver.userAgent;
|
|
70
72
|
const generated = await (0, generate_safe_selectors_1.generateSafeSelectors)({
|
|
71
73
|
context: driver.currentContext,
|
|
72
|
-
elementReferences: [
|
|
74
|
+
elementReferences: [
|
|
75
|
+
...(elementReferenceToTarget ? [elementReferenceToTarget] : []),
|
|
76
|
+
...elementReferencesToCalculate,
|
|
77
|
+
],
|
|
73
78
|
});
|
|
74
79
|
cleanupGeneratedSelectors = generated.cleanupGeneratedSelectors;
|
|
75
80
|
if (elementReferenceToTarget) {
|
|
76
|
-
|
|
77
|
-
if (!regionToTarget)
|
|
81
|
+
if (!((_c = generated.selectors[0]) === null || _c === void 0 ? void 0 : _c.safeSelector))
|
|
78
82
|
throw new Error('Target element not found');
|
|
83
|
+
regionToTarget = (_d = generated.selectors[0]) === null || _d === void 0 ? void 0 : _d.safeSelector;
|
|
79
84
|
selectorsToCalculate = generated.selectors.slice(1);
|
|
80
85
|
}
|
|
81
86
|
else {
|
|
@@ -119,7 +124,7 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
|
|
|
119
124
|
snapshots = !utils.types.isArray(target) ? Array(uniqueRenderers.length).fill(target) : target;
|
|
120
125
|
snapshotUrl = utils.types.has(snapshots[0], 'url') ? snapshots[0].url : undefined;
|
|
121
126
|
}
|
|
122
|
-
regionToTarget !== null && regionToTarget !== void 0 ? regionToTarget : (regionToTarget = (
|
|
127
|
+
regionToTarget !== null && regionToTarget !== void 0 ? regionToTarget : (regionToTarget = (_e = elementReferenceToTarget) !== null && _e !== void 0 ? _e : settings.region);
|
|
123
128
|
selectorsToCalculate !== null && selectorsToCalculate !== void 0 ? selectorsToCalculate : (selectorsToCalculate = elementReferencesToCalculate.map(selector => ({
|
|
124
129
|
originalSelector: selector,
|
|
125
130
|
safeSelector: selector,
|
|
@@ -130,7 +135,7 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
|
|
|
130
135
|
logger.console.log(message);
|
|
131
136
|
}
|
|
132
137
|
try {
|
|
133
|
-
if (signal.aborted) {
|
|
138
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
134
139
|
logger.warn('Command "check" was aborted before rendering');
|
|
135
140
|
throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
|
|
136
141
|
}
|
|
@@ -149,20 +154,20 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
|
|
|
149
154
|
});
|
|
150
155
|
const [baseEyes] = await eyes.getBaseEyes({ settings: { renderer, type: snapshotType }, logger });
|
|
151
156
|
try {
|
|
152
|
-
if (signal.aborted) {
|
|
157
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
153
158
|
logger.warn('Command "check" was aborted before rendering');
|
|
154
159
|
throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
|
|
155
160
|
}
|
|
156
|
-
else if (baseEyes.
|
|
161
|
+
else if (!baseEyes.running) {
|
|
157
162
|
logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
|
|
158
163
|
throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
|
|
159
164
|
}
|
|
160
165
|
const renderTarget = await renderTargetPromise;
|
|
161
|
-
if (signal.aborted) {
|
|
166
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
162
167
|
logger.warn('Command "check" was aborted before rendering');
|
|
163
168
|
throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
|
|
164
169
|
}
|
|
165
|
-
else if (baseEyes.
|
|
170
|
+
else if (!baseEyes.running) {
|
|
166
171
|
logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
|
|
167
172
|
throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
|
|
168
173
|
}
|
|
@@ -182,32 +187,36 @@ function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger:
|
|
|
182
187
|
let offset = 0;
|
|
183
188
|
const baseSettings = getBaseCheckSettings({
|
|
184
189
|
calculatedRegions: selectorsToCalculate.map(({ originalSelector, safeSelector }) => ({
|
|
185
|
-
selector: originalSelector,
|
|
190
|
+
selector: originalSelector !== null && originalSelector !== void 0 ? originalSelector : undefined,
|
|
186
191
|
regions: safeSelector ? selectorRegions[offset++] : [],
|
|
187
192
|
})),
|
|
188
193
|
});
|
|
189
194
|
baseSettings.renderId = renderId;
|
|
190
195
|
baseTarget.source = snapshotUrl;
|
|
191
196
|
baseTarget.name = snapshotTitle;
|
|
192
|
-
if (signal.aborted) {
|
|
197
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
193
198
|
logger.warn('Command "check" was aborted after rendering');
|
|
194
199
|
throw new abort_error_1.AbortError('Command "check" was aborted after rendering');
|
|
195
200
|
}
|
|
196
|
-
else if (baseEyes.
|
|
201
|
+
else if (!baseEyes.running) {
|
|
197
202
|
logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
|
|
198
203
|
throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
|
|
199
204
|
}
|
|
200
|
-
const [result] = await baseEyes.check({
|
|
201
|
-
|
|
205
|
+
const [result] = await baseEyes.check({
|
|
206
|
+
target: { ...baseTarget, isTransformed: true },
|
|
207
|
+
settings: baseSettings,
|
|
208
|
+
logger,
|
|
209
|
+
});
|
|
210
|
+
if (!baseEyes.running) {
|
|
202
211
|
logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
|
|
203
212
|
throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
|
|
204
213
|
}
|
|
205
214
|
return { ...result, eyes: baseEyes, renderer };
|
|
206
215
|
}
|
|
207
216
|
catch (error) {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
217
|
+
if (baseEyes.running && !(signal === null || signal === void 0 ? void 0 : signal.aborted)) {
|
|
218
|
+
await baseEyes.abort({ settings: { testMetadata: await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata()) } });
|
|
219
|
+
}
|
|
211
220
|
error.info = { eyes: baseEyes };
|
|
212
221
|
throw error;
|
|
213
222
|
}
|
package/dist/ufg/close.js
CHANGED
|
@@ -2,29 +2,28 @@
|
|
|
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({ storage, target, spec, logger: defaultLogger
|
|
6
|
-
return async function ({ settings, logger = defaultLogger, } = {}) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
promises.push(promise);
|
|
12
|
-
return tests.set(key, promises);
|
|
13
|
-
}, new Map());
|
|
14
|
-
return Promise.all(Array.from(tests.values(), async (promises) => {
|
|
5
|
+
function makeClose({ storage, target, spec, logger: defaultLogger }) {
|
|
6
|
+
return async function close({ settings, logger = defaultLogger, } = {}) {
|
|
7
|
+
logger.log('Command "close" is called with settings', settings);
|
|
8
|
+
const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
|
|
9
|
+
const testMetadata = await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata());
|
|
10
|
+
storage.forEach(async (promises) => {
|
|
15
11
|
var _a, _b;
|
|
16
12
|
try {
|
|
17
|
-
const [{ eyes
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
13
|
+
const [{ eyes }] = await Promise.all(promises);
|
|
14
|
+
try {
|
|
15
|
+
await eyes.close({ settings: { ...settings, testMetadata }, logger });
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
logger.warn('Command "close" received an error during performing, trying to perform abort instead', error);
|
|
19
|
+
await eyes.abort({ settings: { ...settings, testMetadata }, logger });
|
|
20
|
+
}
|
|
22
21
|
}
|
|
23
22
|
catch (error) {
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
logger.warn('Command "close" received an error during waiting for eyes instances in background', error);
|
|
24
|
+
await ((_b = (_a = error.info) === null || _a === void 0 ? void 0 : _a.eyes) === null || _b === void 0 ? void 0 : _b.abort({ settings: { ...settings, testMetadata }, logger }));
|
|
26
25
|
}
|
|
27
|
-
})
|
|
26
|
+
});
|
|
28
27
|
};
|
|
29
28
|
}
|
|
30
29
|
exports.makeClose = makeClose;
|
package/dist/ufg/core.js
CHANGED
|
@@ -32,6 +32,8 @@ const core_base_1 = require("@applitools/core-base");
|
|
|
32
32
|
const get_viewport_size_1 = require("../automation/get-viewport-size");
|
|
33
33
|
const set_viewport_size_1 = require("../automation/set-viewport-size");
|
|
34
34
|
const locate_1 = require("../automation/locate");
|
|
35
|
+
const locate_text_1 = require("../automation/locate-text");
|
|
36
|
+
const extract_text_1 = require("../automation/extract-text");
|
|
35
37
|
const open_eyes_1 = require("./open-eyes");
|
|
36
38
|
const utils = __importStar(require("@applitools/utils"));
|
|
37
39
|
const throat_1 = __importDefault(require("throat"));
|
|
@@ -68,12 +70,14 @@ function makeCore({ concurrency, spec, client, core, agentId = 'core-ufg', cwd =
|
|
|
68
70
|
});
|
|
69
71
|
return utils.general.extend(core, {
|
|
70
72
|
type: 'ufg',
|
|
71
|
-
isDriver: spec
|
|
72
|
-
isElement: spec
|
|
73
|
-
isSelector: spec
|
|
74
|
-
getViewportSize: (0, get_viewport_size_1.makeGetViewportSize)({ spec, logger }),
|
|
75
|
-
setViewportSize: (0, set_viewport_size_1.makeSetViewportSize)({ spec, logger }),
|
|
73
|
+
isDriver: spec && spec.isDriver,
|
|
74
|
+
isElement: spec && spec.isElement,
|
|
75
|
+
isSelector: spec && spec.isSelector,
|
|
76
|
+
getViewportSize: spec && (0, get_viewport_size_1.makeGetViewportSize)({ spec, logger }),
|
|
77
|
+
setViewportSize: spec && (0, set_viewport_size_1.makeSetViewportSize)({ spec, logger }),
|
|
76
78
|
locate: (0, locate_1.makeLocate)({ spec, core, logger }),
|
|
79
|
+
locateText: (0, locate_text_1.makeLocateText)({ spec, core, logger }),
|
|
80
|
+
extractText: (0, extract_text_1.makeExtractText)({ spec, core, logger }),
|
|
77
81
|
openEyes: (0, open_eyes_1.makeOpenEyes)({ spec, client, core, logger }),
|
|
78
82
|
});
|
|
79
83
|
}
|
|
@@ -32,6 +32,8 @@ function makeGetBaseEyes({ settings: defaultSettings, core, client, eyes, logger
|
|
|
32
32
|
return getBaseEyesWithCache;
|
|
33
33
|
async function getBaseEyes({ settings, logger = defaultLogger, } = {}) {
|
|
34
34
|
logger.log(`Command "getBaseEyes" is called with settings`, settings);
|
|
35
|
+
if (!settings)
|
|
36
|
+
throw new Error('');
|
|
35
37
|
const environment = await client.bookRenderer({ settings });
|
|
36
38
|
const eyes = await core.openEyes({
|
|
37
39
|
settings: { ...defaultSettings, environment: { ...defaultSettings.environment, ...environment } },
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeGetResults = void 0;
|
|
4
|
+
const abort_error_1 = require("../errors/abort-error");
|
|
5
|
+
function makeGetResults({ storage, logger: defaultLogger }) {
|
|
6
|
+
return async function getResults({ settings, logger = defaultLogger, } = {}) {
|
|
7
|
+
logger.log('Command "getResults" is called with settings', settings);
|
|
8
|
+
return Promise.all(Array.from(storage.values(), async (promises) => {
|
|
9
|
+
var _a;
|
|
10
|
+
try {
|
|
11
|
+
const [{ eyes, renderer }] = await Promise.all(promises);
|
|
12
|
+
const [result] = await eyes.getResults({ settings, logger });
|
|
13
|
+
return { ...result, renderer };
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
if (error instanceof abort_error_1.AbortError && ((_a = error.info) === null || _a === void 0 ? void 0 : _a.eyes)) {
|
|
17
|
+
logger.warn('Command "getResults" received an abort error during performing', settings);
|
|
18
|
+
const [result] = await error.info.eyes.getResults({ settings, logger });
|
|
19
|
+
return { ...result, renderer: error.info.renderer };
|
|
20
|
+
}
|
|
21
|
+
logger.fatal('Command "getResults" received an error during performing', settings);
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
}));
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
exports.makeGetResults = makeGetResults;
|
package/dist/ufg/open-eyes.js
CHANGED
|
@@ -31,9 +31,10 @@ const check_1 = require("./check");
|
|
|
31
31
|
const check_and_close_1 = require("./check-and-close");
|
|
32
32
|
const close_1 = require("./close");
|
|
33
33
|
const abort_1 = require("./abort");
|
|
34
|
+
const get_results_1 = require("./get-results");
|
|
34
35
|
const abort_controller_1 = require("abort-controller");
|
|
35
36
|
const utils = __importStar(require("@applitools/utils"));
|
|
36
|
-
function makeOpenEyes({ core, client, spec, logger: defaultLogger
|
|
37
|
+
function makeOpenEyes({ core, client, spec, logger: defaultLogger }) {
|
|
37
38
|
return async function openEyes({ target, settings, eyes, logger = defaultLogger, }) {
|
|
38
39
|
var _a, _b;
|
|
39
40
|
logger.log(`Command "openEyes" is called with ${target ? 'default driver and' : ''}`, ...(settings ? ['settings', settings] : []), eyes ? 'predefined eyes' : '');
|
|
@@ -59,9 +60,8 @@ function makeOpenEyes({ core, client, spec, logger: defaultLogger, }) {
|
|
|
59
60
|
const getBaseEyes = (0, get_base_eyes_1.makeGetBaseEyes)({ settings, eyes, core, client, logger });
|
|
60
61
|
return utils.general.extend({}, eyes => {
|
|
61
62
|
var _a;
|
|
62
|
-
const storage =
|
|
63
|
-
let
|
|
64
|
-
let aborted = false;
|
|
63
|
+
const storage = new Map();
|
|
64
|
+
let running = true;
|
|
65
65
|
return {
|
|
66
66
|
type: 'ufg',
|
|
67
67
|
test: {
|
|
@@ -72,39 +72,36 @@ function makeOpenEyes({ core, client, spec, logger: defaultLogger, }) {
|
|
|
72
72
|
account,
|
|
73
73
|
},
|
|
74
74
|
get running() {
|
|
75
|
-
return
|
|
76
|
-
},
|
|
77
|
-
get closed() {
|
|
78
|
-
return closed;
|
|
79
|
-
},
|
|
80
|
-
get aborted() {
|
|
81
|
-
return aborted;
|
|
75
|
+
return running;
|
|
82
76
|
},
|
|
83
77
|
getBaseEyes,
|
|
84
78
|
// check with indexing and storage
|
|
85
|
-
check: utils.general.wrap((0, check_1.makeCheck)({ eyes, client, target: driver, spec, signal: controller.signal, logger }), async (check, options = {}) => {
|
|
79
|
+
check: utils.general.wrap((0, check_1.makeCheck)({ eyes, client: client, target: driver, spec, signal: controller.signal, logger }), async (check, options = {}) => {
|
|
86
80
|
const results = await check(options);
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
81
|
+
results.forEach(result => {
|
|
82
|
+
var _a;
|
|
83
|
+
const key = JSON.stringify(result.renderer);
|
|
84
|
+
storage.set(key, [...((_a = storage.get(key)) !== null && _a !== void 0 ? _a : []), result.promise]);
|
|
85
|
+
});
|
|
91
86
|
return results;
|
|
92
87
|
}),
|
|
93
|
-
checkAndClose: (0, check_and_close_1.makeCheckAndClose)({
|
|
94
|
-
|
|
88
|
+
checkAndClose: (0, check_and_close_1.makeCheckAndClose)({
|
|
89
|
+
eyes,
|
|
90
|
+
client: client,
|
|
91
|
+
target: driver,
|
|
92
|
+
spec,
|
|
93
|
+
signal: controller.signal,
|
|
94
|
+
logger,
|
|
95
|
+
}),
|
|
95
96
|
close: utils.general.wrap((0, close_1.makeClose)({ storage, target: driver, logger }), async (close, options) => {
|
|
96
|
-
|
|
97
|
-
return [];
|
|
98
|
-
closed = true;
|
|
97
|
+
running = false;
|
|
99
98
|
return close(options);
|
|
100
99
|
}),
|
|
101
|
-
// abort only once
|
|
102
100
|
abort: utils.general.wrap((0, abort_1.makeAbort)({ storage, target: driver, spec, controller, logger }), async (abort, options) => {
|
|
103
|
-
|
|
104
|
-
return [];
|
|
105
|
-
aborted = true;
|
|
101
|
+
running = false;
|
|
106
102
|
return abort(options);
|
|
107
103
|
}),
|
|
104
|
+
getResults: (0, get_results_1.makeGetResults)({ storage, logger }),
|
|
108
105
|
};
|
|
109
106
|
});
|
|
110
107
|
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.extractBrokerUrl = void 0;
|
|
27
|
+
const utils = __importStar(require("@applitools/utils"));
|
|
28
|
+
async function extractBrokerUrl({ driver, logger, }) {
|
|
29
|
+
if (!driver.isNative)
|
|
30
|
+
return null;
|
|
31
|
+
logger.log('Broker url extraction is started');
|
|
32
|
+
const element = await driver.element({ type: 'accessibility id', selector: 'Applitools_View' });
|
|
33
|
+
if (!element)
|
|
34
|
+
return null;
|
|
35
|
+
try {
|
|
36
|
+
let result;
|
|
37
|
+
do {
|
|
38
|
+
result = JSON.parse(await element.getText());
|
|
39
|
+
if (result.nextPath) {
|
|
40
|
+
logger.log('Broker url was extraction finished successfully with value', result.nextPath);
|
|
41
|
+
return result.nextPath;
|
|
42
|
+
}
|
|
43
|
+
await utils.general.sleep(1000);
|
|
44
|
+
} while (!result.error);
|
|
45
|
+
logger.error('Broker url extraction has failed with error', result.error);
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.extractBrokerUrl = extractBrokerUrl;
|