@applitools/core 1.0.7 → 1.0.9
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/close-manager.js +2 -1
- package/dist/errors/abort-error.js +6 -0
- package/dist/errors/internal-error.js +11 -0
- package/dist/errors/test-error.js +3 -0
- package/dist/open-eyes.js +17 -17
- package/dist/troubleshoot/check-network.js +0 -0
- package/dist/ufg/abort.js +18 -6
- package/dist/ufg/check.js +12 -13
- package/dist/ufg/close.js +2 -2
- package/package.json +12 -12
- package/types/errors/abort-error.d.ts +3 -0
- package/types/errors/internal-error.d.ts +6 -0
- package/dist/classic/locate.js +0 -22
- package/dist/classic/utils/take-screenshot.js +0 -54
- package/dist/ufg/utils/generate-selectors.js +0 -60
- package/types/classic/locate.d.ts +0 -16
- package/types/classic/utils/take-screenshot.d.ts +0 -15
- package/types/eyes.d.ts +0 -1
- package/types/server/req-eyes.d.ts +0 -22
- package/types/server/req.d.ts +0 -172
- package/types/server/requests.d.ts +0 -73
- package/types/ufg/utils/generate-selectors.d.ts +0 -12
package/dist/close-manager.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeCloseManager = void 0;
|
|
4
4
|
const test_error_1 = require("./errors/test-error");
|
|
5
|
+
const internal_error_1 = require("./errors/internal-error");
|
|
5
6
|
function makeCloseManager({ core, storage, logger: defaultLogger, }) {
|
|
6
7
|
return async function closeManager({ settings, logger = defaultLogger, } = {}) {
|
|
7
8
|
const containers = await Promise.all(storage.map(async ({ eyes, promise }) => {
|
|
@@ -17,7 +18,7 @@ function makeCloseManager({ core, storage, logger: defaultLogger, }) {
|
|
|
17
18
|
});
|
|
18
19
|
}
|
|
19
20
|
catch (error) {
|
|
20
|
-
return [{ error
|
|
21
|
+
return [{ error: new internal_error_1.InternalError(error), ...error.info }];
|
|
21
22
|
}
|
|
22
23
|
}));
|
|
23
24
|
const batches = storage.reduce((batches, { eyes }) => {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InternalError = void 0;
|
|
4
|
+
const core_base_1 = require("@applitools/core-base");
|
|
5
|
+
class InternalError extends core_base_1.CoreError {
|
|
6
|
+
constructor(error) {
|
|
7
|
+
super(error.message, { reason: 'internal', ...error.info });
|
|
8
|
+
this.stack = error.stack;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.InternalError = InternalError;
|
package/dist/open-eyes.js
CHANGED
|
@@ -34,24 +34,24 @@ const close_1 = require("./close");
|
|
|
34
34
|
const utils = __importStar(require("@applitools/utils"));
|
|
35
35
|
function makeOpenEyes({ spec, core, concurrency, logger: defaultLogger, }) {
|
|
36
36
|
return async function openEyes({ type, target, settings, config, logger = defaultLogger, }) {
|
|
37
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
38
|
-
var
|
|
37
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
|
|
38
|
+
var _v, _w, _x, _y, _z;
|
|
39
39
|
settings = { ...config === null || config === void 0 ? void 0 : config.open, ...settings };
|
|
40
|
-
settings.userTestId = `${settings.testName}--${utils.general.guid()}
|
|
41
|
-
(
|
|
42
|
-
(
|
|
43
|
-
(
|
|
44
|
-
(
|
|
45
|
-
(
|
|
46
|
-
(
|
|
47
|
-
(
|
|
48
|
-
(
|
|
49
|
-
(
|
|
50
|
-
(
|
|
51
|
-
(
|
|
52
|
-
(
|
|
53
|
-
(
|
|
54
|
-
(
|
|
40
|
+
(_a = settings.userTestId) !== null && _a !== void 0 ? _a : (settings.userTestId = `${settings.testName}--${utils.general.guid()}`);
|
|
41
|
+
(_b = settings.serverUrl) !== null && _b !== void 0 ? _b : (settings.serverUrl = (_c = utils.general.getEnvValue('SERVER_URL')) !== null && _c !== void 0 ? _c : 'https://eyesapi.applitools.com');
|
|
42
|
+
(_d = settings.apiKey) !== null && _d !== void 0 ? _d : (settings.apiKey = utils.general.getEnvValue('API_KEY'));
|
|
43
|
+
(_e = settings.batch) !== null && _e !== void 0 ? _e : (settings.batch = {});
|
|
44
|
+
(_f = (_v = settings.batch).id) !== null && _f !== void 0 ? _f : (_v.id = (_g = utils.general.getEnvValue('BATCH_ID')) !== null && _g !== void 0 ? _g : utils.general.guid());
|
|
45
|
+
(_h = (_w = settings.batch).name) !== null && _h !== void 0 ? _h : (_w.name = utils.general.getEnvValue('BATCH_NAME'));
|
|
46
|
+
(_j = (_x = settings.batch).sequenceName) !== null && _j !== void 0 ? _j : (_x.sequenceName = utils.general.getEnvValue('BATCH_SEQUENCE'));
|
|
47
|
+
(_k = (_y = settings.batch).notifyOnCompletion) !== null && _k !== void 0 ? _k : (_y.notifyOnCompletion = utils.general.getEnvValue('BATCH_NOTIFY', 'boolean'));
|
|
48
|
+
(_l = settings.keepBatchOpen) !== null && _l !== void 0 ? _l : (settings.keepBatchOpen = utils.general.getEnvValue('DONT_CLOSE_BATCHES', 'boolean'));
|
|
49
|
+
(_m = settings.branchName) !== null && _m !== void 0 ? _m : (settings.branchName = utils.general.getEnvValue('BRANCH'));
|
|
50
|
+
(_o = settings.parentBranchName) !== null && _o !== void 0 ? _o : (settings.parentBranchName = utils.general.getEnvValue('PARENT_BRANCH'));
|
|
51
|
+
(_p = settings.baselineBranchName) !== null && _p !== void 0 ? _p : (settings.baselineBranchName = utils.general.getEnvValue('BASELINE_BRANCH'));
|
|
52
|
+
(_q = settings.ignoreBaseline) !== null && _q !== void 0 ? _q : (settings.ignoreBaseline = false);
|
|
53
|
+
(_r = settings.compareWithParentBranch) !== null && _r !== void 0 ? _r : (settings.compareWithParentBranch = false);
|
|
54
|
+
(_s = (_z = settings).renderConcurrency) !== null && _s !== void 0 ? _s : (_z.renderConcurrency = (_u = (_t = config === null || config === void 0 ? void 0 : config.check) === null || _t === void 0 ? void 0 : _t.renderers) === null || _u === void 0 ? void 0 : _u.length);
|
|
55
55
|
if (!utils.types.has(core, 'type')) {
|
|
56
56
|
core = type === 'ufg' ? (0, core_2.makeCore)({ spec, core, concurrency, logger }) : (0, core_1.makeCore)({ spec, core, logger });
|
|
57
57
|
}
|
|
File without changes
|
package/dist/ufg/abort.js
CHANGED
|
@@ -1,15 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeAbort = void 0;
|
|
4
|
+
const abort_error_1 = require("../errors/abort-error");
|
|
4
5
|
function makeAbort({ storage, controller, logger: defaultLogger }) {
|
|
5
6
|
return async function ({ logger = defaultLogger, } = {}) {
|
|
6
7
|
controller.abort();
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
return Promise.all(storage.map(async (promise) => {
|
|
9
|
+
let eyes, renderer;
|
|
10
|
+
try {
|
|
11
|
+
const value = await promise;
|
|
12
|
+
eyes = value.eyes;
|
|
13
|
+
renderer = value.renderer;
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
eyes = error.info.eyes;
|
|
17
|
+
renderer = error.info.renderer;
|
|
18
|
+
if (!eyes) {
|
|
19
|
+
if (error instanceof abort_error_1.AbortError)
|
|
20
|
+
return error.info;
|
|
21
|
+
else
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
13
25
|
const [result] = await eyes.abort({ logger });
|
|
14
26
|
return { ...result, renderer };
|
|
15
27
|
}));
|
package/dist/ufg/check.js
CHANGED
|
@@ -32,6 +32,7 @@ const take_snapshots_1 = require("./utils/take-snapshots");
|
|
|
32
32
|
const wait_for_lazy_load_1 = require("../utils/wait-for-lazy-load");
|
|
33
33
|
const to_base_check_settings_1 = require("../utils/to-base-check-settings");
|
|
34
34
|
const generate_safe_selectors_1 = require("./utils/generate-safe-selectors");
|
|
35
|
+
const abort_error_1 = require("../errors/abort-error");
|
|
35
36
|
const utils = __importStar(require("@applitools/utils"));
|
|
36
37
|
const chalk_1 = __importDefault(require("chalk"));
|
|
37
38
|
function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget, logger: defaultLogger, }) {
|
|
@@ -40,7 +41,7 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
|
|
|
40
41
|
logger.log('Command "check" is called with settings', settings);
|
|
41
42
|
if (signal.aborted) {
|
|
42
43
|
logger.warn('Command "check" was called after test was already aborted');
|
|
43
|
-
throw new
|
|
44
|
+
throw new abort_error_1.AbortError('Command "check" was called after test was already aborted');
|
|
44
45
|
}
|
|
45
46
|
const { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({ settings });
|
|
46
47
|
let snapshots, snapshotUrl, snapshotTitle, regionToTarget, selectorsToCalculate;
|
|
@@ -112,7 +113,7 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
|
|
|
112
113
|
try {
|
|
113
114
|
if (signal.aborted) {
|
|
114
115
|
logger.warn('Command "check" was aborted before rendering');
|
|
115
|
-
throw new
|
|
116
|
+
throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
|
|
116
117
|
}
|
|
117
118
|
const { cookies, ...snapshot } = snapshots[index];
|
|
118
119
|
const renderTargetPromise = client.createRenderTarget({
|
|
@@ -135,21 +136,21 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
|
|
|
135
136
|
try {
|
|
136
137
|
if (signal.aborted) {
|
|
137
138
|
logger.warn('Command "check" was aborted before rendering');
|
|
138
|
-
throw new
|
|
139
|
+
throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
|
|
139
140
|
}
|
|
140
141
|
else if (eyes.aborted) {
|
|
141
142
|
logger.warn(`Renderer with id ${rendererId} was aborted during one of the previous steps`);
|
|
142
|
-
throw new
|
|
143
|
+
throw new abort_error_1.AbortError(`Renderer with id "${rendererId}" was aborted during one of the previous steps`);
|
|
143
144
|
}
|
|
144
145
|
request.settings.rendererId = rendererId;
|
|
145
146
|
request.target = await renderTargetPromise;
|
|
146
147
|
if (signal.aborted) {
|
|
147
148
|
logger.warn('Command "check" was aborted before rendering');
|
|
148
|
-
throw new
|
|
149
|
+
throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
|
|
149
150
|
}
|
|
150
151
|
else if (eyes.aborted) {
|
|
151
152
|
logger.warn(`Renderer with id ${rendererId} was aborted during one of the previous steps`);
|
|
152
|
-
throw new
|
|
153
|
+
throw new abort_error_1.AbortError(`Renderer with id "${rendererId}" was aborted during one of the previous steps`);
|
|
153
154
|
}
|
|
154
155
|
const { renderId, selectorRegions, ...baseTarget } = await client.render({ request, signal });
|
|
155
156
|
const baseSettings = getBaseCheckSettings({
|
|
@@ -163,34 +164,32 @@ function makeCheck({ spec, getEyes, client, test, signal, target: defaultTarget,
|
|
|
163
164
|
baseTarget.name = snapshotTitle;
|
|
164
165
|
if (signal.aborted) {
|
|
165
166
|
logger.warn('Command "check" was aborted after rendering');
|
|
166
|
-
throw new
|
|
167
|
+
throw new abort_error_1.AbortError('Command "check" was aborted after rendering');
|
|
167
168
|
}
|
|
168
169
|
else if (eyes.aborted) {
|
|
169
170
|
logger.warn(`Renderer with id ${rendererId} was aborted during one of the previous steps`);
|
|
170
|
-
throw new
|
|
171
|
+
throw new abort_error_1.AbortError(`Renderer with id "${rendererId}" was aborted during one of the previous steps`);
|
|
171
172
|
}
|
|
172
173
|
const [result] = await eyes.check({ target: baseTarget, settings: baseSettings, logger });
|
|
173
174
|
if (eyes.aborted) {
|
|
174
175
|
logger.warn(`Renderer with id ${rendererId} was aborted during one of the previous steps`);
|
|
175
|
-
throw new
|
|
176
|
+
throw new abort_error_1.AbortError(`Renderer with id "${rendererId}" was aborted during one of the previous steps`);
|
|
176
177
|
}
|
|
177
178
|
return { ...result, eyes, renderer };
|
|
178
179
|
}
|
|
179
180
|
catch (error) {
|
|
180
|
-
error.eyes = eyes;
|
|
181
181
|
await eyes.abort();
|
|
182
|
+
error.info = { eyes };
|
|
182
183
|
throw error;
|
|
183
184
|
}
|
|
184
185
|
}
|
|
185
186
|
catch (error) {
|
|
186
|
-
error.
|
|
187
|
-
error.renderer = renderer;
|
|
187
|
+
error.info = { ...error.info, userTestId: test.userTestId, renderer };
|
|
188
188
|
throw error;
|
|
189
189
|
}
|
|
190
190
|
});
|
|
191
191
|
return settings.renderers.map((renderer, index) => ({
|
|
192
192
|
asExpected: true,
|
|
193
|
-
windowId: null,
|
|
194
193
|
userTestId: test.userTestId,
|
|
195
194
|
renderer,
|
|
196
195
|
promise: promises[index],
|
package/dist/ufg/close.js
CHANGED
|
@@ -11,13 +11,13 @@ function makeClose({ storage, logger: defaultLogger }) {
|
|
|
11
11
|
value = result.value;
|
|
12
12
|
}
|
|
13
13
|
else {
|
|
14
|
-
value = result.reason;
|
|
14
|
+
value = result.reason.info;
|
|
15
15
|
error !== null && error !== void 0 ? error : (error = result.reason);
|
|
16
16
|
}
|
|
17
17
|
return eyes.set(value.eyes, value.renderer);
|
|
18
18
|
}, new Map());
|
|
19
19
|
if (error) {
|
|
20
|
-
await Promise.all(Array.from(eyes.entries(), async ([eyes]) => eyes.abort({ logger })));
|
|
20
|
+
await Promise.all(Array.from(eyes.entries(), async ([eyes]) => eyes === null || eyes === void 0 ? void 0 : eyes.abort({ logger })));
|
|
21
21
|
throw error;
|
|
22
22
|
}
|
|
23
23
|
else {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applitools/core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"homepage": "https://applitools.com",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"url": "https://github.com/applitools/eyes.sdk.javascript1/issues"
|
|
@@ -57,17 +57,17 @@
|
|
|
57
57
|
}
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@applitools/core-base": "1.0.
|
|
60
|
+
"@applitools/core-base": "1.0.5",
|
|
61
61
|
"@applitools/dom-capture": "11.1.2",
|
|
62
62
|
"@applitools/dom-snapshot": "4.6.2",
|
|
63
|
-
"@applitools/driver": "1.9.
|
|
64
|
-
"@applitools/logger": "1.1.
|
|
65
|
-
"@applitools/nml-client": "1.2.
|
|
66
|
-
"@applitools/req": "1.1.
|
|
67
|
-
"@applitools/screenshoter": "3.5.
|
|
63
|
+
"@applitools/driver": "1.9.34",
|
|
64
|
+
"@applitools/logger": "1.1.23",
|
|
65
|
+
"@applitools/nml-client": "1.2.4",
|
|
66
|
+
"@applitools/req": "1.1.7",
|
|
67
|
+
"@applitools/screenshoter": "3.5.5",
|
|
68
68
|
"@applitools/snippets": "2.4.5",
|
|
69
|
-
"@applitools/types": "1.5.
|
|
70
|
-
"@applitools/ufg-client": "1.0.
|
|
69
|
+
"@applitools/types": "1.5.16",
|
|
70
|
+
"@applitools/ufg-client": "1.0.5",
|
|
71
71
|
"@applitools/utils": "1.3.12",
|
|
72
72
|
"abort-controller": "3.0.0",
|
|
73
73
|
"throat": "6.0.1"
|
|
@@ -75,8 +75,8 @@
|
|
|
75
75
|
"devDependencies": {
|
|
76
76
|
"@applitools/bongo": "^2.2.0",
|
|
77
77
|
"@applitools/sdk-fake-eyes-server": "^2.1.3",
|
|
78
|
-
"@applitools/spec-driver-puppeteer": "^1.1.
|
|
79
|
-
"@applitools/spec-driver-selenium": "^1.3.
|
|
78
|
+
"@applitools/spec-driver-puppeteer": "^1.1.12",
|
|
79
|
+
"@applitools/spec-driver-selenium": "^1.3.24",
|
|
80
80
|
"@applitools/test-server": "^1.1.5",
|
|
81
81
|
"@applitools/test-utils": "^1.5.1",
|
|
82
82
|
"@types/mocha": "^9.1.1",
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"@typescript-eslint/parser": "^5.38.0",
|
|
87
87
|
"eslint": "^8.23.1",
|
|
88
88
|
"eslint-config-prettier": "^8.5.0",
|
|
89
|
-
"eslint-plugin-
|
|
89
|
+
"eslint-plugin-no-only-tests": "^3.0.0",
|
|
90
90
|
"eslint-plugin-node": "^11.1.0",
|
|
91
91
|
"eslint-plugin-prettier": "^4.0.0",
|
|
92
92
|
"husky": "^4.3.7",
|
package/dist/classic/locate.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.makeLocate = void 0;
|
|
4
|
-
const driver_1 = require("@applitools/driver");
|
|
5
|
-
const take_screenshot_1 = require("./utils/take-screenshot");
|
|
6
|
-
function makeLocate({ spec, eyes, target: defaultTarget, logger: defaultLogger, }) {
|
|
7
|
-
return async function locate({ target = defaultTarget, settings, logger = defaultLogger, } = {}) {
|
|
8
|
-
logger.log('Command "check" is called with settings', settings);
|
|
9
|
-
if (!spec.isDriver(target)) {
|
|
10
|
-
return eyes.locate({ target, settings: settings, logger });
|
|
11
|
-
}
|
|
12
|
-
// TODO driver custom config
|
|
13
|
-
const driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
|
|
14
|
-
const screenshot = await (0, take_screenshot_1.takeScreenshot)({ driver, settings, logger });
|
|
15
|
-
const baseTarget = {
|
|
16
|
-
image: await screenshot.image.toPng(),
|
|
17
|
-
};
|
|
18
|
-
const results = await eyes.locate({ target: baseTarget, settings: settings, logger });
|
|
19
|
-
return results;
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
exports.makeLocate = makeLocate;
|
|
@@ -1,54 +0,0 @@
|
|
|
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.takeScreenshot = void 0;
|
|
27
|
-
const screenshoter_1 = require("@applitools/screenshoter");
|
|
28
|
-
const utils = __importStar(require("@applitools/utils"));
|
|
29
|
-
async function takeScreenshot({ driver, settings, logger, }) {
|
|
30
|
-
return (0, screenshoter_1.takeScreenshot)({
|
|
31
|
-
driver,
|
|
32
|
-
frames: settings.frames?.map(frame => {
|
|
33
|
-
return utils.types.has(frame, 'frame')
|
|
34
|
-
? { reference: frame.frame, scrollingElement: frame.scrollRootElement }
|
|
35
|
-
: { reference: frame };
|
|
36
|
-
}),
|
|
37
|
-
region: settings.region,
|
|
38
|
-
fully: settings.fully,
|
|
39
|
-
hideScrollbars: settings.hideScrollbars,
|
|
40
|
-
hideCaret: settings.hideCaret,
|
|
41
|
-
scrollingMode: settings.stitchMode?.toLowerCase(),
|
|
42
|
-
overlap: settings.overlap,
|
|
43
|
-
wait: settings.waitBeforeCapture,
|
|
44
|
-
framed: driver.isNative,
|
|
45
|
-
stabilization: settings.normalization && {
|
|
46
|
-
crop: settings.normalization.cut,
|
|
47
|
-
scale: settings.normalization.scaleRatio,
|
|
48
|
-
rotation: settings.normalization.rotation,
|
|
49
|
-
},
|
|
50
|
-
debug: settings.debugImages,
|
|
51
|
-
logger,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
exports.takeScreenshot = takeScreenshot;
|
|
@@ -1,60 +0,0 @@
|
|
|
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.generateSelectors = void 0;
|
|
27
|
-
const snippets = __importStar(require("@applitools/snippets"));
|
|
28
|
-
const utils = __importStar(require("@applitools/utils"));
|
|
29
|
-
async function generateSelectors({ context, elementReferences, }) {
|
|
30
|
-
const mapping = {
|
|
31
|
-
elements: [],
|
|
32
|
-
ids: [],
|
|
33
|
-
};
|
|
34
|
-
for (const elementReference of elementReferences) {
|
|
35
|
-
const elements = await context.elements(elementReference);
|
|
36
|
-
mapping.elements.push(elements);
|
|
37
|
-
mapping.ids.push(Array(elements.length).fill(utils.general.guid()));
|
|
38
|
-
}
|
|
39
|
-
const generatedSelectors = await context.execute(snippets.addElementIds, [mapping.elements.flat(), mapping.ids.flat()]);
|
|
40
|
-
let offset = 0;
|
|
41
|
-
const selectors = mapping.elements.map(elements => {
|
|
42
|
-
if (elements.length === 0)
|
|
43
|
-
return null;
|
|
44
|
-
const generatedSelector = generatedSelectors[offset].reduce((selector, value) => {
|
|
45
|
-
return selector ? { ...selector, shadow: { type: 'css', selector: value } } : { type: 'css', selector: value };
|
|
46
|
-
}, null);
|
|
47
|
-
offset += elements.length;
|
|
48
|
-
return { generatedSelector, originalSelector: elements[0].commonSelector };
|
|
49
|
-
});
|
|
50
|
-
return {
|
|
51
|
-
selectors,
|
|
52
|
-
cleanupGeneratedSelectors,
|
|
53
|
-
};
|
|
54
|
-
async function cleanupGeneratedSelectors() {
|
|
55
|
-
if (!mapping.elements.length)
|
|
56
|
-
return;
|
|
57
|
-
await context.execute(snippets.cleanupElementIds, [mapping.elements]);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
exports.generateSelectors = generateSelectors;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { SpecDriver, Region } from '@applitools/types';
|
|
2
|
-
import type { Eyes as BaseEyes } from '@applitools/types/base';
|
|
3
|
-
import type { Target, LocateSettings } from '@applitools/types/classic';
|
|
4
|
-
import { type Logger } from '@applitools/logger';
|
|
5
|
-
declare type Options<TDriver, TContext, TElement, TSelector> = {
|
|
6
|
-
spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
|
|
7
|
-
eyes: BaseEyes;
|
|
8
|
-
target: Target<TDriver>;
|
|
9
|
-
logger: Logger;
|
|
10
|
-
};
|
|
11
|
-
export declare function makeLocate<TDriver, TContext, TElement, TSelector>({ spec, eyes, target: defaultTarget, logger: defaultLogger, }: Options<TDriver, TContext, TElement, TSelector>): <TLocator extends string>({ target, settings, logger, }?: {
|
|
12
|
-
target?: Target<TDriver>;
|
|
13
|
-
settings?: LocateSettings<TLocator, TElement, TSelector>;
|
|
14
|
-
logger?: Logger;
|
|
15
|
-
}) => Promise<Record<TLocator, Region[]>>;
|
|
16
|
-
export {};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { Region } from '@applitools/types';
|
|
2
|
-
import { ScreenshotSettings } from '@applitools/types/classic';
|
|
3
|
-
import { type Logger } from '@applitools/logger';
|
|
4
|
-
import { type Driver, type Element } from '@applitools/driver';
|
|
5
|
-
export declare type Screenshot = {
|
|
6
|
-
image: any;
|
|
7
|
-
region: Region;
|
|
8
|
-
scrollingElement: Element<unknown, unknown, unknown, unknown>;
|
|
9
|
-
restoreState(): Promise<void>;
|
|
10
|
-
};
|
|
11
|
-
export declare function takeScreenshot<TDriver, TContext, TElement, TSelector>({ driver, settings, logger, }: {
|
|
12
|
-
driver: Driver<TDriver, TContext, TElement, TSelector>;
|
|
13
|
-
settings: ScreenshotSettings<TElement, TSelector>;
|
|
14
|
-
logger: Logger;
|
|
15
|
-
}): Promise<Screenshot>;
|
package/types/eyes.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { Proxy } from '@applitools/types';
|
|
3
|
-
import { Request } from 'node-fetch';
|
|
4
|
-
import { Req, Options } from './req';
|
|
5
|
-
import { Logger } from '@applitools/logger';
|
|
6
|
-
export declare type ReqEyesConfig = {
|
|
7
|
-
serverUrl: string;
|
|
8
|
-
apiKey: string;
|
|
9
|
-
proxy?: Proxy;
|
|
10
|
-
agentId?: string;
|
|
11
|
-
connectionTimeout?: number;
|
|
12
|
-
removeSession?: boolean;
|
|
13
|
-
};
|
|
14
|
-
export declare type ReqEyesOptions = Options & {
|
|
15
|
-
name: string;
|
|
16
|
-
expected?: number | number[];
|
|
17
|
-
};
|
|
18
|
-
export declare type ReqEyes = Req & ((input: string | URL | Request, options?: ReqEyesOptions) => ReturnType<Req>);
|
|
19
|
-
export declare function makeReqEyes({ config, logger }: {
|
|
20
|
-
config: ReqEyesConfig;
|
|
21
|
-
logger?: Logger;
|
|
22
|
-
}): ReqEyes;
|
package/types/server/req.d.ts
DELETED
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node" />
|
|
3
|
-
import globalFetch, { Request, Response } from 'node-fetch';
|
|
4
|
-
declare const stop: unique symbol;
|
|
5
|
-
export declare type Options = {
|
|
6
|
-
/**
|
|
7
|
-
* Providing this value will allow usage of relative urls for input
|
|
8
|
-
* @example 'http://localhost:2107/api/'
|
|
9
|
-
*/
|
|
10
|
-
baseUrl?: string;
|
|
11
|
-
/**
|
|
12
|
-
* Uppercase method name. This will override method provided in `Request` object
|
|
13
|
-
* @example 'GET'
|
|
14
|
-
*/
|
|
15
|
-
method?: string;
|
|
16
|
-
/**
|
|
17
|
-
* Query parameters to add to the url, all undefined params won't be added.
|
|
18
|
-
* It won't override the whole `search` part of the url, but instead merge with it
|
|
19
|
-
* @example {string: 'value', number: 21, boolean: true, noop: undefined}
|
|
20
|
-
*/
|
|
21
|
-
query?: Record<string, string | boolean | number | undefined>;
|
|
22
|
-
/**
|
|
23
|
-
* Headers to send in the request, all undefined headers won't be sent.
|
|
24
|
-
* This will merge with headers provided in `Request` object
|
|
25
|
-
* @example {'x-my-header': 'value', 'x-noop-header': undefined}
|
|
26
|
-
*/
|
|
27
|
-
headers?: Record<string, string | undefined>;
|
|
28
|
-
/**
|
|
29
|
-
* Body of the request, plain objects will be transformed to JSON strings
|
|
30
|
-
* @example {data: true}
|
|
31
|
-
* @example Buffer.from('S3lyeWxv', 'base64')
|
|
32
|
-
*/
|
|
33
|
-
body?: NodeJS.ReadableStream | ArrayBufferView | string | Record<string, any>;
|
|
34
|
-
/**
|
|
35
|
-
* Proxy settings for the request. Auth credentials specified in the object will override ones specified in url
|
|
36
|
-
* @example {url: 'http://localhost:2107', username: 'kyrylo', password: 'pass'}
|
|
37
|
-
*/
|
|
38
|
-
proxy?: {
|
|
39
|
-
url: string;
|
|
40
|
-
username: string;
|
|
41
|
-
password: string;
|
|
42
|
-
};
|
|
43
|
-
/**
|
|
44
|
-
* Connection timeout in ms
|
|
45
|
-
* @example 7000
|
|
46
|
-
*/
|
|
47
|
-
timeout?: number;
|
|
48
|
-
/**
|
|
49
|
-
* Retry settings for the request. If specified as an array the retries are applied in the order
|
|
50
|
-
* @see Retry
|
|
51
|
-
* @example {limit: 5, statuses: [500, 501], codes: ['ECONRESET'], timeout: 1000}
|
|
52
|
-
*/
|
|
53
|
-
retry?: Retry | Retry[];
|
|
54
|
-
/**
|
|
55
|
-
* Hooks of the request
|
|
56
|
-
* @see Hooks
|
|
57
|
-
*/
|
|
58
|
-
hooks?: Hooks | Hooks[];
|
|
59
|
-
fetch?: typeof globalFetch;
|
|
60
|
-
};
|
|
61
|
-
export declare type Retry = {
|
|
62
|
-
/**
|
|
63
|
-
* Max number of attempts for specified condition
|
|
64
|
-
*/
|
|
65
|
-
limit?: number;
|
|
66
|
-
/**
|
|
67
|
-
* Timeout before retrying the request. If specified as an array each element specifies the timeout for specific attempt,
|
|
68
|
-
* and the last one will be default for all next attempts
|
|
69
|
-
* @example [1000, 1000, 5000, 10_000]
|
|
70
|
-
*/
|
|
71
|
-
timeout?: number | number[];
|
|
72
|
-
/**
|
|
73
|
-
* Status codes of the response to retry on.
|
|
74
|
-
* @example [500]
|
|
75
|
-
*/
|
|
76
|
-
statuses?: number[];
|
|
77
|
-
/**
|
|
78
|
-
* Error codes of the request to retry on.
|
|
79
|
-
* @example ['ECONRESET']
|
|
80
|
-
*/
|
|
81
|
-
codes?: string[];
|
|
82
|
-
/**
|
|
83
|
-
* Number of the current attempt for specified condition
|
|
84
|
-
* @internal
|
|
85
|
-
*/
|
|
86
|
-
attempt?: number;
|
|
87
|
-
};
|
|
88
|
-
export declare type Hooks = {
|
|
89
|
-
/**
|
|
90
|
-
* Hook that will be executed before sending the request, after all, modifications of the `Request` object are already passed
|
|
91
|
-
* @example
|
|
92
|
-
* ```
|
|
93
|
-
* {
|
|
94
|
-
* beforeRequest({request}) {
|
|
95
|
-
* request.headers.set('Expires', 'Tue, 24 Aug 2022 00:00:00 GMT')
|
|
96
|
-
* }
|
|
97
|
-
* }
|
|
98
|
-
* ```
|
|
99
|
-
*/
|
|
100
|
-
beforeRequest?(options: {
|
|
101
|
-
request: Request;
|
|
102
|
-
options: Options;
|
|
103
|
-
}): Request | void | Promise<Request | void>;
|
|
104
|
-
/**
|
|
105
|
-
* Hook that will be executed before retrying the request. If this hook will return {@link req.stop}
|
|
106
|
-
* it will prevent request from retrying and execution of other hooks
|
|
107
|
-
* @example
|
|
108
|
-
* ```
|
|
109
|
-
* {
|
|
110
|
-
* async beforeRetry({request, response, attempt}) {
|
|
111
|
-
* const data = await response?.json()
|
|
112
|
-
* if (data.error) return req.stop
|
|
113
|
-
* request.headers.set('x-attempt', attempt)
|
|
114
|
-
* }
|
|
115
|
-
* }
|
|
116
|
-
* ```
|
|
117
|
-
*/
|
|
118
|
-
beforeRetry?(options: {
|
|
119
|
-
request: Request;
|
|
120
|
-
attempt: number;
|
|
121
|
-
response?: Response;
|
|
122
|
-
error?: Error;
|
|
123
|
-
options: Options;
|
|
124
|
-
}): Request | typeof stop | void | Promise<Request | void | typeof stop>;
|
|
125
|
-
/**
|
|
126
|
-
* Hook that will be executed after getting the final response of the request (after all of the retries)
|
|
127
|
-
* @example
|
|
128
|
-
* ```
|
|
129
|
-
* {
|
|
130
|
-
* async afterResponse({request, response, options}) {
|
|
131
|
-
* if (!response.ok) return req(request, options)
|
|
132
|
-
* }
|
|
133
|
-
* }
|
|
134
|
-
* ```
|
|
135
|
-
*/
|
|
136
|
-
afterResponse?(options: {
|
|
137
|
-
request: Request;
|
|
138
|
-
response: Response;
|
|
139
|
-
options: Options;
|
|
140
|
-
}): Response | void | Promise<Response | void>;
|
|
141
|
-
/**
|
|
142
|
-
* Hook that will be executed after request will throw an error
|
|
143
|
-
* @example
|
|
144
|
-
* ```
|
|
145
|
-
* {
|
|
146
|
-
* async afterError({request, error}) {
|
|
147
|
-
* error.request = request
|
|
148
|
-
* }
|
|
149
|
-
* }
|
|
150
|
-
* ```
|
|
151
|
-
*/
|
|
152
|
-
afterError?(options: {
|
|
153
|
-
request: Request;
|
|
154
|
-
error: Error;
|
|
155
|
-
options: Options;
|
|
156
|
-
}): Error | void | Promise<Error | void>;
|
|
157
|
-
};
|
|
158
|
-
/**
|
|
159
|
-
* Helper function that will properly merge two {@link Options} objects
|
|
160
|
-
*/
|
|
161
|
-
export declare function mergeOptions(baseOption: Options, options: Options): Options;
|
|
162
|
-
/**
|
|
163
|
-
* Helper function that will create {@link req} function with predefined options
|
|
164
|
-
* @example const req = makeReq({baseUrl: 'http://localhost:2107'})
|
|
165
|
-
*/
|
|
166
|
-
export declare function makeReq(baseOption?: Options): typeof req;
|
|
167
|
-
export declare function req(input: string | URL | Request, options?: Options): Promise<Response>;
|
|
168
|
-
export declare namespace req {
|
|
169
|
-
var stop: unique symbol;
|
|
170
|
-
}
|
|
171
|
-
export declare type Req = typeof req;
|
|
172
|
-
export default req;
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import type { Region, TextRegion, Batch } from '@applitools/types';
|
|
2
|
-
import type { Target, Core, Eyes, ServerSettings, CheckSettings, LocateSettings, LocateTextSettings, ExtractTextSettings, CloseSettings, DeleteTestSettings, CloseBatchSettings, CheckResult, TestResult, OpenSettings } from '@applitools/types/types/core-base';
|
|
3
|
-
import { type Logger } from '@applitools/logger';
|
|
4
|
-
import { type ReqEyes } from './req-eyes';
|
|
5
|
-
interface AccountInfo {
|
|
6
|
-
renderUrl: string;
|
|
7
|
-
renderToken: string;
|
|
8
|
-
uploadUrl: string;
|
|
9
|
-
maxImageHeight: number;
|
|
10
|
-
maxImageArea: number;
|
|
11
|
-
}
|
|
12
|
-
interface Test {
|
|
13
|
-
testId: string;
|
|
14
|
-
batchId: string;
|
|
15
|
-
baselineId: string;
|
|
16
|
-
sessionId: string;
|
|
17
|
-
resultsUrl: string;
|
|
18
|
-
isNew: boolean;
|
|
19
|
-
}
|
|
20
|
-
export interface CoreRequests extends Core {
|
|
21
|
-
openEyes(options: {
|
|
22
|
-
settings: OpenSettings;
|
|
23
|
-
}): Promise<EyesRequests>;
|
|
24
|
-
getAccountInfo(options: {
|
|
25
|
-
settings: ServerSettings;
|
|
26
|
-
}): Promise<AccountInfo>;
|
|
27
|
-
getBatch(options: {
|
|
28
|
-
settings: ServerSettings & {
|
|
29
|
-
batchId: string;
|
|
30
|
-
};
|
|
31
|
-
}): Promise<Batch>;
|
|
32
|
-
closeBatch(options: {
|
|
33
|
-
settings: CloseBatchSettings;
|
|
34
|
-
}): Promise<void>;
|
|
35
|
-
deleteTest(options: {
|
|
36
|
-
settings: DeleteTestSettings;
|
|
37
|
-
}): Promise<void>;
|
|
38
|
-
}
|
|
39
|
-
export interface EyesRequests extends Eyes {
|
|
40
|
-
check(options: {
|
|
41
|
-
target: Target;
|
|
42
|
-
settings?: CheckSettings;
|
|
43
|
-
}): Promise<CheckResult[]>;
|
|
44
|
-
checkAndClose(options: {
|
|
45
|
-
target: Target;
|
|
46
|
-
settings?: CheckSettings;
|
|
47
|
-
}): Promise<TestResult[]>;
|
|
48
|
-
locate<TLocator extends string>(options: {
|
|
49
|
-
target: Target;
|
|
50
|
-
settings: LocateSettings<TLocator>;
|
|
51
|
-
}): Promise<Record<TLocator, Region[]>>;
|
|
52
|
-
locateText<TPattern extends string>(options: {
|
|
53
|
-
target: Target;
|
|
54
|
-
settings: LocateTextSettings<TPattern>;
|
|
55
|
-
}): Promise<Record<TPattern, TextRegion[]>>;
|
|
56
|
-
extractText(options: {
|
|
57
|
-
target: Target;
|
|
58
|
-
settings: ExtractTextSettings;
|
|
59
|
-
}): Promise<string[]>;
|
|
60
|
-
close(options: {
|
|
61
|
-
settings: CloseSettings;
|
|
62
|
-
}): Promise<TestResult[]>;
|
|
63
|
-
abort(): Promise<TestResult[]>;
|
|
64
|
-
}
|
|
65
|
-
export declare function makeCoreCommands({ logger }: {
|
|
66
|
-
logger?: Logger;
|
|
67
|
-
}): CoreRequests;
|
|
68
|
-
export declare function makeEyesCommands({ test, req, logger }: {
|
|
69
|
-
test: Test;
|
|
70
|
-
req: ReqEyes;
|
|
71
|
-
logger?: Logger;
|
|
72
|
-
}): EyesRequests;
|
|
73
|
-
export {};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { Selector } from '@applitools/types';
|
|
2
|
-
import { type Context } from '@applitools/driver';
|
|
3
|
-
export declare function generateSelectors<TElement, TSelector>({ context, elementReferences, }: {
|
|
4
|
-
context: Context<unknown, unknown, TElement, TSelector>;
|
|
5
|
-
elementReferences: (TElement | Selector<TSelector>)[];
|
|
6
|
-
}): Promise<{
|
|
7
|
-
selectors: {
|
|
8
|
-
generatedSelector: Selector;
|
|
9
|
-
originalSelector: Selector;
|
|
10
|
-
}[];
|
|
11
|
-
cleanupGeneratedSelectors(): Promise<void>;
|
|
12
|
-
}>;
|