@applitools/core 1.2.16 → 1.3.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/automation/get-viewport-size.js +2 -2
- package/dist/automation/locate.js +7 -10
- package/dist/automation/set-viewport-size.js +2 -2
- package/dist/check-and-close.js +11 -5
- package/dist/check.js +26 -16
- package/dist/classic/check-and-close.js +13 -12
- package/dist/classic/check.js +21 -11
- package/dist/classic/extract-text.js +6 -6
- package/dist/classic/get-base-eyes.js +39 -0
- package/dist/classic/locate-text.js +10 -6
- package/dist/classic/open-eyes.js +16 -15
- package/dist/close.js +2 -1
- package/dist/extract-text.js +2 -1
- package/dist/get-typed-eyes.js +27 -0
- package/dist/locate-text.js +2 -1
- package/dist/make-manager.js +8 -5
- package/dist/open-eyes.js +24 -11
- package/dist/types.js +1 -0
- package/dist/ufg/check.js +50 -40
- package/dist/ufg/get-base-eyes.js +40 -0
- package/dist/ufg/open-eyes.js +57 -107
- package/dist/utils/wait-for-lazy-load.js +10 -8
- package/package.json +19 -17
- package/types/automation/get-viewport-size.d.ts +4 -3
- package/types/automation/locate.d.ts +7 -8
- package/types/automation/set-viewport-size.d.ts +4 -3
- package/types/automation/types.d.ts +24 -20
- package/types/automation/utils/take-screenshot.d.ts +1 -1
- package/types/check-and-close.d.ts +14 -9
- package/types/check.d.ts +10 -7
- package/types/classic/check-and-close.d.ts +7 -8
- package/types/classic/check.d.ts +7 -8
- package/types/classic/core.d.ts +3 -3
- package/types/classic/extract-text.d.ts +8 -9
- package/types/classic/get-base-eyes.d.ts +17 -0
- package/types/classic/locate-text.d.ts +8 -9
- package/types/classic/open-eyes.d.ts +8 -7
- package/types/classic/types.d.ts +11 -8
- package/types/classic/utils/take-dom-capture.d.ts +1 -1
- package/types/close-batch.d.ts +1 -1
- package/types/close-manager.d.ts +3 -3
- package/types/close.d.ts +4 -6
- package/types/core.d.ts +2 -2
- package/types/delete-test.d.ts +1 -1
- package/types/extract-text.d.ts +7 -9
- package/types/get-typed-eyes.d.ts +21 -0
- package/types/locate-text.d.ts +7 -9
- package/types/locate.d.ts +3 -4
- package/types/make-manager.d.ts +3 -2
- package/types/open-eyes.d.ts +12 -10
- package/types/types.d.ts +60 -41
- package/types/ufg/abort.d.ts +1 -1
- package/types/ufg/check-and-close.d.ts +6 -8
- package/types/ufg/check.d.ts +7 -15
- package/types/ufg/close.d.ts +1 -1
- package/types/ufg/core.d.ts +2 -2
- package/types/ufg/get-base-eyes.d.ts +23 -0
- package/types/ufg/open-eyes.d.ts +7 -7
- package/types/ufg/types.d.ts +24 -9
- package/types/ufg/utils/take-dom-snapshot.d.ts +1 -1
- package/types/ufg/utils/take-dom-snapshots.d.ts +1 -1
- package/types/ufg/utils/take-vhses.d.ts +1 -1
- package/types/utils/wait-for-lazy-load.d.ts +4 -4
package/dist/ufg/check.js
CHANGED
|
@@ -35,9 +35,9 @@ const generate_safe_selectors_1 = require("./utils/generate-safe-selectors");
|
|
|
35
35
|
const abort_error_1 = require("../errors/abort-error");
|
|
36
36
|
const utils = __importStar(require("@applitools/utils"));
|
|
37
37
|
const chalk_1 = __importDefault(require("chalk"));
|
|
38
|
-
function makeCheck({
|
|
38
|
+
function makeCheck({ eyes, client, target: defaultTarget, spec, signal, logger: defaultLogger, }) {
|
|
39
39
|
return async function check({ target = defaultTarget, settings = {}, logger = defaultLogger, }) {
|
|
40
|
-
var _a, _b;
|
|
40
|
+
var _a, _b, _c;
|
|
41
41
|
logger.log('Command "check" is called with settings', settings);
|
|
42
42
|
if (signal.aborted) {
|
|
43
43
|
logger.warn('Command "check" was called after test was already aborted');
|
|
@@ -45,9 +45,9 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
|
|
|
45
45
|
}
|
|
46
46
|
const { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings });
|
|
47
47
|
let snapshots, snapshotUrl, snapshotTitle, userAgent, regionToTarget, selectorsToCalculate;
|
|
48
|
-
if (
|
|
49
|
-
// TODO driver custom config
|
|
48
|
+
if ((0, driver_1.isDriver)(target, spec)) {
|
|
50
49
|
const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
|
|
50
|
+
await driver.currentContext.setScrollingElement((_a = settings.scrollRootElement) !== null && _a !== void 0 ? _a : null);
|
|
51
51
|
if (driver.isWeb && (!settings.renderers || settings.renderers.length === 0)) {
|
|
52
52
|
const viewportSize = await driver.getViewportSize();
|
|
53
53
|
settings.renderers = [{ name: 'chrome', ...viewportSize }];
|
|
@@ -61,7 +61,7 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
|
|
|
61
61
|
});
|
|
62
62
|
cleanupGeneratedSelectors = generated.cleanupGeneratedSelectors;
|
|
63
63
|
if (elementReferenceToTarget) {
|
|
64
|
-
regionToTarget = (
|
|
64
|
+
regionToTarget = (_b = generated.selectors[0]) === null || _b === void 0 ? void 0 : _b.safeSelector;
|
|
65
65
|
if (!regionToTarget)
|
|
66
66
|
throw new Error('Target element not found');
|
|
67
67
|
selectorsToCalculate = generated.selectors.slice(1);
|
|
@@ -74,7 +74,7 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
|
|
|
74
74
|
snapshots = await (0, take_snapshots_1.takeSnapshots)({
|
|
75
75
|
driver,
|
|
76
76
|
settings: {
|
|
77
|
-
...test.server,
|
|
77
|
+
...eyes.test.server,
|
|
78
78
|
waitBeforeCapture: settings.waitBeforeCapture,
|
|
79
79
|
disableBrowserFetching: settings.disableBrowserFetching,
|
|
80
80
|
layoutBreakpoints: settings.layoutBreakpoints,
|
|
@@ -83,8 +83,12 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
|
|
|
83
83
|
},
|
|
84
84
|
hooks: {
|
|
85
85
|
async beforeSnapshots() {
|
|
86
|
-
if (
|
|
87
|
-
await (0, wait_for_lazy_load_1.waitForLazyLoad)({
|
|
86
|
+
if (settings.lazyLoad && driver.isWeb) {
|
|
87
|
+
await (0, wait_for_lazy_load_1.waitForLazyLoad)({
|
|
88
|
+
context: driver.currentContext,
|
|
89
|
+
settings: settings.lazyLoad !== true ? settings.lazyLoad : {},
|
|
90
|
+
logger,
|
|
91
|
+
});
|
|
88
92
|
}
|
|
89
93
|
},
|
|
90
94
|
},
|
|
@@ -103,7 +107,7 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
|
|
|
103
107
|
snapshots = !utils.types.isArray(target) ? Array(settings.renderers.length).fill(target) : target;
|
|
104
108
|
snapshotUrl = utils.types.has(snapshots[0], 'url') ? snapshots[0].url : undefined;
|
|
105
109
|
}
|
|
106
|
-
regionToTarget !== null && regionToTarget !== void 0 ? regionToTarget : (regionToTarget = (
|
|
110
|
+
regionToTarget !== null && regionToTarget !== void 0 ? regionToTarget : (regionToTarget = (_c = elementReferenceToTarget) !== null && _c !== void 0 ? _c : settings.region);
|
|
107
111
|
selectorsToCalculate !== null && selectorsToCalculate !== void 0 ? selectorsToCalculate : (selectorsToCalculate = elementReferencesToCalculate.map(selector => ({
|
|
108
112
|
originalSelector: selector,
|
|
109
113
|
safeSelector: selector,
|
|
@@ -119,42 +123,48 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
|
|
|
119
123
|
throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
|
|
120
124
|
}
|
|
121
125
|
const { cookies, ...snapshot } = snapshots[index];
|
|
126
|
+
const snapshotType = utils.types.has(snapshot, 'cdt') ? 'web' : 'native';
|
|
122
127
|
const renderTargetPromise = client.createRenderTarget({
|
|
123
128
|
snapshot,
|
|
124
|
-
settings: {
|
|
129
|
+
settings: {
|
|
130
|
+
renderer,
|
|
131
|
+
referer: snapshotUrl,
|
|
132
|
+
cookies,
|
|
133
|
+
proxy: eyes.test.server.proxy,
|
|
134
|
+
autProxy: settings.autProxy,
|
|
135
|
+
userAgent,
|
|
136
|
+
},
|
|
125
137
|
});
|
|
126
|
-
const
|
|
127
|
-
...settings,
|
|
128
|
-
region: regionToTarget,
|
|
129
|
-
type: utils.types.has(snapshot, 'cdt') ? 'web' : 'native',
|
|
130
|
-
renderer,
|
|
131
|
-
selectorsToCalculate: selectorsToCalculate.flatMap(({ safeSelector }) => safeSelector !== null && safeSelector !== void 0 ? safeSelector : []),
|
|
132
|
-
includeFullPageSize: Boolean(settings.pageId),
|
|
133
|
-
};
|
|
134
|
-
const { rendererId, rawEnvironment } = await client.bookRenderer({ settings: renderSettings });
|
|
135
|
-
const eyes = await getEyes({ rawEnvironment });
|
|
138
|
+
const [baseEyes] = await eyes.getBaseEyes({ settings: { renderer, type: snapshotType }, logger });
|
|
136
139
|
try {
|
|
137
140
|
if (signal.aborted) {
|
|
138
141
|
logger.warn('Command "check" was aborted before rendering');
|
|
139
142
|
throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
|
|
140
143
|
}
|
|
141
|
-
else if (
|
|
142
|
-
logger.warn(`Renderer with id ${rendererId} was aborted during one of the previous steps`);
|
|
143
|
-
throw new abort_error_1.AbortError(`Renderer with id "${rendererId}" was aborted during one of the previous steps`);
|
|
144
|
+
else if (baseEyes.aborted) {
|
|
145
|
+
logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
|
|
146
|
+
throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
|
|
144
147
|
}
|
|
145
|
-
renderSettings.rendererId = rendererId;
|
|
146
148
|
const renderTarget = await renderTargetPromise;
|
|
147
149
|
if (signal.aborted) {
|
|
148
150
|
logger.warn('Command "check" was aborted before rendering');
|
|
149
151
|
throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
|
|
150
152
|
}
|
|
151
|
-
else if (
|
|
152
|
-
logger.warn(`Renderer with id ${rendererId} was aborted during one of the previous steps`);
|
|
153
|
-
throw new abort_error_1.AbortError(`Renderer with id "${rendererId}" was aborted during one of the previous steps`);
|
|
153
|
+
else if (baseEyes.aborted) {
|
|
154
|
+
logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
|
|
155
|
+
throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
|
|
154
156
|
}
|
|
155
157
|
const { renderId, selectorRegions, ...baseTarget } = await client.render({
|
|
156
158
|
target: renderTarget,
|
|
157
|
-
settings:
|
|
159
|
+
settings: {
|
|
160
|
+
...settings,
|
|
161
|
+
region: regionToTarget,
|
|
162
|
+
selectorsToCalculate: selectorsToCalculate.flatMap(({ safeSelector }) => safeSelector !== null && safeSelector !== void 0 ? safeSelector : []),
|
|
163
|
+
includeFullPageSize: Boolean(settings.pageId),
|
|
164
|
+
type: snapshotType,
|
|
165
|
+
renderer,
|
|
166
|
+
rendererId: baseEyes.test.rendererId,
|
|
167
|
+
},
|
|
158
168
|
signal,
|
|
159
169
|
});
|
|
160
170
|
let offset = 0;
|
|
@@ -171,31 +181,31 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
|
|
|
171
181
|
logger.warn('Command "check" was aborted after rendering');
|
|
172
182
|
throw new abort_error_1.AbortError('Command "check" was aborted after rendering');
|
|
173
183
|
}
|
|
174
|
-
else if (
|
|
175
|
-
logger.warn(`Renderer with id ${rendererId} was aborted during one of the previous steps`);
|
|
176
|
-
throw new abort_error_1.AbortError(`Renderer with id "${rendererId}" was aborted during one of the previous steps`);
|
|
184
|
+
else if (baseEyes.aborted) {
|
|
185
|
+
logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
|
|
186
|
+
throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
|
|
177
187
|
}
|
|
178
|
-
const [result] = await
|
|
179
|
-
if (
|
|
180
|
-
logger.warn(`Renderer with id ${rendererId} was aborted during one of the previous steps`);
|
|
181
|
-
throw new abort_error_1.AbortError(`Renderer with id "${rendererId}" was aborted during one of the previous steps`);
|
|
188
|
+
const [result] = await baseEyes.check({ target: { ...baseTarget, isTransformed: true }, settings: baseSettings, logger });
|
|
189
|
+
if (baseEyes.aborted) {
|
|
190
|
+
logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
|
|
191
|
+
throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
|
|
182
192
|
}
|
|
183
|
-
return { ...result, eyes, renderer };
|
|
193
|
+
return { ...result, eyes: baseEyes, renderer };
|
|
184
194
|
}
|
|
185
195
|
catch (error) {
|
|
186
|
-
await
|
|
187
|
-
error.info = { eyes };
|
|
196
|
+
await baseEyes.abort();
|
|
197
|
+
error.info = { eyes: baseEyes };
|
|
188
198
|
throw error;
|
|
189
199
|
}
|
|
190
200
|
}
|
|
191
201
|
catch (error) {
|
|
192
|
-
error.info = { ...error.info, userTestId: test.userTestId, renderer };
|
|
202
|
+
error.info = { ...error.info, userTestId: eyes.test.userTestId, renderer };
|
|
193
203
|
throw error;
|
|
194
204
|
}
|
|
195
205
|
});
|
|
196
206
|
return settings.renderers.map((renderer, index) => ({
|
|
197
207
|
asExpected: true,
|
|
198
|
-
userTestId: test.userTestId,
|
|
208
|
+
userTestId: eyes.test.userTestId,
|
|
199
209
|
renderer,
|
|
200
210
|
promise: promises[index],
|
|
201
211
|
}));
|
|
@@ -0,0 +1,40 @@
|
|
|
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.makeGetBaseEyes = void 0;
|
|
27
|
+
const utils = __importStar(require("@applitools/utils"));
|
|
28
|
+
function makeGetBaseEyes({ settings: defaultSettings, core, client, eyes, logger: defaultLogger }) {
|
|
29
|
+
const getBaseEyesWithCache = utils.general.cachify(getBaseEyes, ([options]) => options === null || options === void 0 ? void 0 : options.settings);
|
|
30
|
+
if (eyes)
|
|
31
|
+
eyes.forEach(eyes => getBaseEyesWithCache.setCachedValue(eyes.test.rendererInfo, Promise.resolve([eyes])));
|
|
32
|
+
return getBaseEyesWithCache;
|
|
33
|
+
async function getBaseEyes({ settings, logger = defaultLogger, } = {}) {
|
|
34
|
+
logger.log(`Command "getBaseEyes" is called with settings`, settings);
|
|
35
|
+
const environment = await client.bookRenderer({ settings });
|
|
36
|
+
const eyes = await core.openEyes({ settings: { ...defaultSettings, environment }, logger });
|
|
37
|
+
return [eyes];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.makeGetBaseEyes = makeGetBaseEyes;
|
package/dist/ufg/open-eyes.js
CHANGED
|
@@ -24,133 +24,83 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.makeOpenEyes = void 0;
|
|
27
|
-
const abort_controller_1 = require("abort-controller");
|
|
28
27
|
const driver_1 = require("@applitools/driver");
|
|
29
28
|
const ufg_client_1 = require("@applitools/ufg-client");
|
|
29
|
+
const get_base_eyes_1 = require("./get-base-eyes");
|
|
30
30
|
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 abort_controller_1 = require("abort-controller");
|
|
34
35
|
const utils = __importStar(require("@applitools/utils"));
|
|
35
|
-
function makeOpenEyes({
|
|
36
|
-
return async function openEyes({ target, settings, logger = defaultLogger, }) {
|
|
37
|
-
var _a, _b
|
|
38
|
-
logger.log(`Command "openEyes" is called with ${
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
function makeOpenEyes({ core, client, spec, logger: defaultLogger, }) {
|
|
37
|
+
return async function openEyes({ target, settings, eyes, logger = defaultLogger, }) {
|
|
38
|
+
var _a, _b;
|
|
39
|
+
logger.log(`Command "openEyes" is called with ${target ? 'default driver and' : ''}`, ...(settings ? ['settings', settings] : []), eyes ? 'predefined eyes' : '');
|
|
40
|
+
const driver = target && (await (0, driver_1.makeDriver)({ spec, driver: target, logger, customConfig: { disableHelper: true } }));
|
|
41
|
+
if (driver && !eyes) {
|
|
41
42
|
const currentContext = driver.currentContext;
|
|
42
43
|
if ((_a = settings.environment) === null || _a === void 0 ? void 0 : _a.viewportSize) {
|
|
43
44
|
await driver.setViewportSize(settings.environment.viewportSize);
|
|
44
45
|
}
|
|
45
46
|
await currentContext.focus();
|
|
46
47
|
}
|
|
48
|
+
const controller = new abort_controller_1.AbortController();
|
|
47
49
|
const account = await core.getAccountInfo({ settings, logger });
|
|
48
|
-
const test = {
|
|
49
|
-
userTestId: settings.userTestId,
|
|
50
|
-
batchId: (_b = settings.batch) === null || _b === void 0 ? void 0 : _b.id,
|
|
51
|
-
keepBatchOpen: settings.keepBatchOpen,
|
|
52
|
-
server: { serverUrl: settings.serverUrl, apiKey: settings.apiKey, proxy: settings.proxy },
|
|
53
|
-
account,
|
|
54
|
-
};
|
|
55
50
|
client !== null && client !== void 0 ? client : (client = (0, ufg_client_1.makeUFGClient)({
|
|
56
51
|
config: { ...account.ufg, ...account, proxy: settings.proxy },
|
|
57
|
-
concurrency: (
|
|
52
|
+
concurrency: (_b = settings.renderConcurrency) !== null && _b !== void 0 ? _b : 5,
|
|
58
53
|
logger,
|
|
59
54
|
}));
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
const getEyes = utils.general.cachify(async ({ rawEnvironment }) => {
|
|
63
|
-
const eyes = await core.openEyes({ settings: { ...settings, environment: { rawEnvironment } }, logger });
|
|
64
|
-
const aborted = makeHolderPromise();
|
|
65
|
-
const queue = [];
|
|
66
|
-
eyes.check = utils.general.wrap(eyes.check, async (check, options) => {
|
|
67
|
-
var _a, _b;
|
|
68
|
-
var _c;
|
|
69
|
-
const index = options.settings.index;
|
|
70
|
-
(_a = queue[index]) !== null && _a !== void 0 ? _a : (queue[index] = makeHolderPromise());
|
|
71
|
-
if (index > 0)
|
|
72
|
-
await Promise.race([((_b = queue[_c = index - 1]) !== null && _b !== void 0 ? _b : (queue[_c] = makeHolderPromise())), aborted]);
|
|
73
|
-
return check(options).finally(queue[index].resolve);
|
|
74
|
-
});
|
|
75
|
-
eyes.abort = utils.general.wrap(eyes.abort, async (abort, options) => {
|
|
76
|
-
aborted.reject(new Error('Command "check" was aborted due to possible error in previous step'));
|
|
77
|
-
return abort(options);
|
|
78
|
-
});
|
|
79
|
-
return eyes;
|
|
80
|
-
});
|
|
81
|
-
const storage = [];
|
|
82
|
-
let index = 0;
|
|
83
|
-
// check with indexing and storage
|
|
84
|
-
const check = utils.general.wrap((0, check_1.makeCheck)({ spec, getEyes, client, signal: controller.signal, test, target, logger }), async (check, options = {}) => {
|
|
55
|
+
const getBaseEyes = (0, get_base_eyes_1.makeGetBaseEyes)({ settings, eyes, core, client, logger });
|
|
56
|
+
return utils.general.extend({}, eyes => {
|
|
85
57
|
var _a;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
return
|
|
58
|
+
const storage = [];
|
|
59
|
+
let stepIndex = 0;
|
|
60
|
+
let closed = false;
|
|
61
|
+
let aborted = false;
|
|
62
|
+
return {
|
|
63
|
+
type: 'ufg',
|
|
64
|
+
test: {
|
|
65
|
+
userTestId: settings.userTestId,
|
|
66
|
+
batchId: (_a = settings.batch) === null || _a === void 0 ? void 0 : _a.id,
|
|
67
|
+
keepBatchOpen: settings.keepBatchOpen,
|
|
68
|
+
server: { serverUrl: settings.serverUrl, apiKey: settings.apiKey, proxy: settings.proxy },
|
|
69
|
+
account,
|
|
70
|
+
},
|
|
71
|
+
get running() {
|
|
72
|
+
return !closed && !aborted;
|
|
73
|
+
},
|
|
74
|
+
get closed() {
|
|
75
|
+
return closed;
|
|
76
|
+
},
|
|
77
|
+
get aborted() {
|
|
78
|
+
return aborted;
|
|
79
|
+
},
|
|
80
|
+
getBaseEyes,
|
|
81
|
+
// check with indexing and storage
|
|
82
|
+
check: utils.general.wrap((0, check_1.makeCheck)({ eyes, client, target: driver, spec, signal: controller.signal, logger }), async (check, options = {}) => {
|
|
83
|
+
const results = await check({ ...options, settings: { ...options.settings, stepIndex: stepIndex++ } });
|
|
84
|
+
storage.push(...results.map(result => ({ promise: result.promise, renderer: result.renderer })));
|
|
85
|
+
return results;
|
|
86
|
+
}),
|
|
87
|
+
checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ eyes, client, target: driver, spec, signal: controller.signal, logger }),
|
|
88
|
+
// close only once
|
|
89
|
+
close: utils.general.wrap((0, close_1.makeClose)({ storage, logger }), async (close, options) => {
|
|
90
|
+
if (closed || aborted)
|
|
91
|
+
return [];
|
|
92
|
+
closed = true;
|
|
93
|
+
return close(options);
|
|
94
|
+
}),
|
|
95
|
+
// abort only once
|
|
96
|
+
abort: utils.general.wrap((0, abort_1.makeAbort)({ storage, controller, logger }), async (abort, options) => {
|
|
97
|
+
if (aborted || closed)
|
|
98
|
+
return [];
|
|
99
|
+
aborted = true;
|
|
100
|
+
return abort(options);
|
|
101
|
+
}),
|
|
102
|
+
};
|
|
91
103
|
});
|
|
92
|
-
let closed = false;
|
|
93
|
-
// close only once
|
|
94
|
-
const close = utils.general.wrap((0, close_1.makeClose)({ storage, logger }), async (close, options) => {
|
|
95
|
-
if (closed || aborted)
|
|
96
|
-
return [];
|
|
97
|
-
closed = true;
|
|
98
|
-
return close(options);
|
|
99
|
-
});
|
|
100
|
-
let aborted = false;
|
|
101
|
-
// abort only once
|
|
102
|
-
const abort = utils.general.wrap((0, abort_1.makeAbort)({ storage, controller, logger }), async (abort, options) => {
|
|
103
|
-
if (aborted || closed)
|
|
104
|
-
return [];
|
|
105
|
-
aborted = true;
|
|
106
|
-
return abort(options);
|
|
107
|
-
});
|
|
108
|
-
return {
|
|
109
|
-
test,
|
|
110
|
-
get running() {
|
|
111
|
-
return !closed && !aborted;
|
|
112
|
-
},
|
|
113
|
-
get closed() {
|
|
114
|
-
return closed;
|
|
115
|
-
},
|
|
116
|
-
get aborted() {
|
|
117
|
-
return aborted;
|
|
118
|
-
},
|
|
119
|
-
check,
|
|
120
|
-
checkAndClose: (0, check_and_close_1.makeCheckAndClose)({ spec, getEyes, client, test, target, logger }),
|
|
121
|
-
close,
|
|
122
|
-
abort,
|
|
123
|
-
};
|
|
124
104
|
};
|
|
125
105
|
}
|
|
126
106
|
exports.makeOpenEyes = makeOpenEyes;
|
|
127
|
-
function makeHolderPromise() {
|
|
128
|
-
let promise;
|
|
129
|
-
let resolve;
|
|
130
|
-
let reject;
|
|
131
|
-
let result;
|
|
132
|
-
return {
|
|
133
|
-
then(onFulfilled, onRejected) {
|
|
134
|
-
if (!promise) {
|
|
135
|
-
promise = new Promise((...args) => ([resolve, reject] = args));
|
|
136
|
-
if ((result === null || result === void 0 ? void 0 : result.status) === 'fulfilled')
|
|
137
|
-
resolve();
|
|
138
|
-
else if ((result === null || result === void 0 ? void 0 : result.status) === 'rejected')
|
|
139
|
-
reject(result.reason);
|
|
140
|
-
}
|
|
141
|
-
return promise.then(onFulfilled, onRejected);
|
|
142
|
-
},
|
|
143
|
-
resolve() {
|
|
144
|
-
if (resolve)
|
|
145
|
-
resolve();
|
|
146
|
-
else
|
|
147
|
-
result !== null && result !== void 0 ? result : (result = { status: 'fulfilled' });
|
|
148
|
-
},
|
|
149
|
-
reject(reason) {
|
|
150
|
-
if (reject)
|
|
151
|
-
reject(reason);
|
|
152
|
-
else
|
|
153
|
-
result !== null && result !== void 0 ? result : (result = { status: 'rejected', reason });
|
|
154
|
-
},
|
|
155
|
-
};
|
|
156
|
-
}
|
|
@@ -2,16 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.waitForLazyLoad = void 0;
|
|
4
4
|
const snippets_1 = require("@applitools/snippets");
|
|
5
|
-
async function waitForLazyLoad({
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
await context.executePoll(snippets_1.lazyLoad, {
|
|
9
|
+
main: [
|
|
10
|
+
await context.getScrollingElement(),
|
|
11
|
+
{
|
|
12
|
+
scrollLength: (_a = settings.scrollLength) !== null && _a !== void 0 ? _a : 300,
|
|
13
|
+
waitingTime: (_b = settings.waitingTime) !== null && _b !== void 0 ? _b : 2000,
|
|
14
|
+
maxAmountToScroll: (_c = settings.maxAmountToScroll) !== null && _c !== void 0 ? _c : 15000,
|
|
15
|
+
},
|
|
16
|
+
],
|
|
15
17
|
poll: [],
|
|
16
18
|
executionTimeout: 5 * 60 * 1000,
|
|
17
19
|
pollTimeout: (_e = (_d = settings.pollTimeout) !== null && _d !== void 0 ? _d : settings.waitingTime) !== null && _e !== void 0 ? _e : 2000,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applitools/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"homepage": "https://applitools.com",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"url": "https://github.com/applitools/eyes.sdk.javascript1/issues"
|
|
@@ -61,28 +61,30 @@
|
|
|
61
61
|
}
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@applitools/core-base": "1.1.
|
|
64
|
+
"@applitools/core-base": "1.1.17",
|
|
65
65
|
"@applitools/dom-capture": "11.2.0",
|
|
66
|
-
"@applitools/dom-snapshot": "4.7.
|
|
67
|
-
"@applitools/driver": "1.11.
|
|
68
|
-
"@applitools/logger": "1.1.
|
|
69
|
-
"@applitools/nml-client": "1.3.
|
|
70
|
-
"@applitools/req": "1.1.
|
|
71
|
-
"@applitools/screenshoter": "3.7.
|
|
72
|
-
"@applitools/snippets": "2.4.
|
|
73
|
-
"@applitools/ufg-client": "1.1.
|
|
74
|
-
"@applitools/utils": "1.3.
|
|
66
|
+
"@applitools/dom-snapshot": "4.7.2",
|
|
67
|
+
"@applitools/driver": "1.11.14",
|
|
68
|
+
"@applitools/logger": "1.1.32",
|
|
69
|
+
"@applitools/nml-client": "1.3.14",
|
|
70
|
+
"@applitools/req": "1.1.19",
|
|
71
|
+
"@applitools/screenshoter": "3.7.13",
|
|
72
|
+
"@applitools/snippets": "2.4.10",
|
|
73
|
+
"@applitools/ufg-client": "1.1.8",
|
|
74
|
+
"@applitools/utils": "1.3.18",
|
|
75
75
|
"abort-controller": "3.0.0",
|
|
76
|
+
"chalk": "4.1.2",
|
|
77
|
+
"node-fetch": "2.6.7",
|
|
76
78
|
"throat": "6.0.1"
|
|
77
79
|
},
|
|
78
80
|
"devDependencies": {
|
|
79
81
|
"@applitools/bongo": "^2.2.0",
|
|
80
82
|
"@applitools/sdk-fake-eyes-server": "^2.1.3",
|
|
81
|
-
"@applitools/spec-driver-puppeteer": "^1.1.
|
|
82
|
-
"@applitools/spec-driver-selenium": "^1.5.
|
|
83
|
-
"@applitools/spec-driver-webdriverio": "^1.4.
|
|
84
|
-
"@applitools/test-server": "^1.1.
|
|
85
|
-
"@applitools/test-utils": "^1.5.
|
|
83
|
+
"@applitools/spec-driver-puppeteer": "^1.1.26",
|
|
84
|
+
"@applitools/spec-driver-selenium": "^1.5.12",
|
|
85
|
+
"@applitools/spec-driver-webdriverio": "^1.4.9",
|
|
86
|
+
"@applitools/test-server": "^1.1.13",
|
|
87
|
+
"@applitools/test-utils": "^1.5.3",
|
|
86
88
|
"@types/mocha": "^9.1.1",
|
|
87
89
|
"@types/node": "12",
|
|
88
90
|
"@types/selenium-webdriver": "^4.1.2",
|
|
@@ -102,7 +104,7 @@
|
|
|
102
104
|
"puppeteer": "^16.2.0",
|
|
103
105
|
"selenium-webdriver": "4.4",
|
|
104
106
|
"ts-node": "^10.7.0",
|
|
105
|
-
"typescript": "^4.
|
|
107
|
+
"typescript": "^4.9.4",
|
|
106
108
|
"webdriverio": "^7.25.0"
|
|
107
109
|
},
|
|
108
110
|
"engines": {
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
import type { DriverTarget } from './types';
|
|
1
2
|
import { type Logger } from '@applitools/logger';
|
|
2
3
|
import { type SpecDriver } from '@applitools/driver';
|
|
3
|
-
|
|
4
|
+
type Options<TDriver, TContext, TElement, TSelector> = {
|
|
4
5
|
spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
|
|
5
6
|
logger?: Logger;
|
|
6
7
|
};
|
|
7
|
-
export declare function makeGetViewportSize<TDriver, TContext, TElement, TSelector>({ spec, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): ({ target, logger }: {
|
|
8
|
-
target: TDriver
|
|
8
|
+
export declare function makeGetViewportSize<TDriver, TContext, TElement, TSelector>({ spec, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): ({ target, logger, }: {
|
|
9
|
+
target: DriverTarget<TDriver, TContext, TElement, TSelector>;
|
|
9
10
|
logger?: Logger;
|
|
10
11
|
}) => Promise<import("@applitools/utils").Size>;
|
|
11
12
|
export {};
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { Core as BaseCore
|
|
1
|
+
import type { DriverTarget, ImageTarget, LocateSettings, LocateResult } from './types';
|
|
2
|
+
import type { Core as BaseCore } from '@applitools/core-base';
|
|
3
3
|
import { type Logger } from '@applitools/logger';
|
|
4
4
|
import { type SpecDriver } from '@applitools/driver';
|
|
5
|
-
|
|
6
|
-
spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
|
|
5
|
+
type Options<TDriver, TContext, TElement, TSelector> = {
|
|
7
6
|
core: BaseCore;
|
|
8
|
-
|
|
7
|
+
spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
|
|
9
8
|
logger?: Logger;
|
|
10
9
|
};
|
|
11
|
-
export declare function makeLocate<TDriver, TContext, TElement, TSelector>({ spec, core,
|
|
12
|
-
target
|
|
13
|
-
settings
|
|
10
|
+
export declare function makeLocate<TDriver, TContext, TElement, TSelector>({ spec, core, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): <TLocator extends string>({ settings, target, logger, }: {
|
|
11
|
+
target: DriverTarget<TDriver, TContext, TElement, TSelector> | ImageTarget;
|
|
12
|
+
settings: LocateSettings<TLocator, TElement, TSelector>;
|
|
14
13
|
logger?: Logger;
|
|
15
14
|
}) => Promise<LocateResult<TLocator>>;
|
|
16
15
|
export {};
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { Size } from '@applitools/utils';
|
|
2
|
+
import type { DriverTarget } from './types';
|
|
2
3
|
import { type Logger } from '@applitools/logger';
|
|
3
4
|
import { type SpecDriver } from '@applitools/driver';
|
|
4
|
-
|
|
5
|
+
type Options<TDriver, TContext, TElement, TSelector> = {
|
|
5
6
|
spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
|
|
6
7
|
logger?: Logger;
|
|
7
8
|
};
|
|
8
|
-
export declare function makeSetViewportSize<TDriver, TContext, TElement, TSelector>({ spec, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): ({ target, size, logger }: {
|
|
9
|
-
target: TDriver
|
|
9
|
+
export declare function makeSetViewportSize<TDriver, TContext, TElement, TSelector>({ spec, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): ({ target, size, logger, }: {
|
|
10
|
+
target: DriverTarget<TDriver, TContext, TElement, TSelector>;
|
|
10
11
|
size: Size;
|
|
11
12
|
logger?: Logger;
|
|
12
13
|
}) => Promise<void>;
|