@applitools/core 2.5.2 → 2.5.3-legacy
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/abort.js +40 -0
- package/dist/automation/abort.js +47 -0
- package/dist/automation/close.js +52 -0
- package/dist/automation/extract-text.js +3 -2
- package/dist/automation/get-nml-client.js +36 -0
- package/dist/automation/get-results.js +21 -0
- package/dist/automation/get-viewport-size.js +3 -2
- package/dist/automation/locate-text.js +3 -2
- package/dist/automation/locate.js +3 -2
- package/dist/automation/set-viewport-size.js +3 -2
- package/dist/automation/types.js +0 -15
- package/dist/automation/utils/report-kobiton.js +21 -0
- package/dist/automation/utils/take-screenshot.js +4 -2
- package/dist/automation/utils/to-base-check-settings.js +69 -7
- package/dist/automation/utils/to-environment-key.js +31 -0
- package/dist/automation/utils/uniquify-environments.js +27 -0
- package/dist/automation/utils/wait-for-lazy-load.js +9 -8
- package/dist/autonomous/core.js +25 -0
- package/dist/autonomous/create-render-results.js +49 -0
- package/dist/autonomous/create-render-target.js +19 -0
- package/dist/autonomous/get-render-results.js +55 -0
- package/dist/autonomous/open-eyes.js +13 -0
- package/dist/autonomous/start-renders.js +67 -0
- package/dist/autonomous/take-snapshots.js +16 -0
- package/dist/autonomous/types.js +17 -0
- package/dist/check-and-close.js +32 -15
- package/dist/check.js +33 -30
- package/dist/classic/check-and-close.js +189 -46
- package/dist/classic/check.js +319 -60
- package/dist/classic/core.js +6 -5
- package/dist/classic/get-base-eyes.js +27 -7
- package/dist/classic/open-eyes.js +47 -57
- package/dist/classic/utils/extract-default-environments.js +73 -0
- package/dist/classic/utils/take-dom-capture.js +2 -1
- package/dist/classic/utils/take-screenshots.js +63 -0
- package/dist/cli/cli.js +99 -3
- package/dist/close-batch.js +8 -7
- package/dist/close.js +32 -4
- package/dist/core.js +43 -9
- package/dist/delete-test.js +9 -7
- package/dist/extract-text.js +9 -5
- package/dist/get-account-info.js +36 -0
- package/dist/get-ec-client.js +3 -2
- package/dist/get-eyes-results.js +29 -3
- package/dist/get-manager-results.js +52 -18
- package/dist/get-typed-eyes.js +5 -6
- package/dist/index.js +3 -3
- package/dist/lang.js +31 -0
- package/dist/locate-text.js +7 -5
- package/dist/locate.js +7 -5
- package/dist/make-manager.js +34 -11
- package/dist/offline/merge-configs.js +42 -0
- package/dist/offline/run-offline-snapshots.js +341 -0
- package/dist/open-eyes.js +192 -48
- package/dist/run-offline-snapshots.js +336 -0
- package/dist/troubleshoot/check-network.js +5 -1
- package/dist/troubleshoot/eyes.js +3 -3
- package/dist/troubleshoot/logs.js +76 -0
- package/dist/troubleshoot/ufg.js +23 -16
- package/dist/ufg/check-and-close.js +109 -174
- package/dist/ufg/check.js +111 -178
- package/dist/ufg/core.js +10 -8
- package/dist/ufg/create-render-target-from-snapshot.js +21 -0
- package/dist/ufg/get-base-eyes.js +40 -12
- package/dist/ufg/get-ufg-client.js +13 -4
- package/dist/ufg/open-eyes.js +33 -57
- package/dist/ufg/take-snapshots.js +92 -0
- package/dist/ufg/utils/extract-default-environment.js +22 -0
- package/dist/ufg/utils/generate-safe-selectors.js +9 -32
- package/dist/ufg/utils/take-dom-snapshot.js +61 -26
- package/dist/ufg/utils/take-dom-snapshots.js +99 -68
- package/dist/ufg/utils/to-generated-selectors.js +67 -0
- package/dist/ufg/utils/to-safe-check-settings.js +69 -0
- package/dist/universal/core-server.js +53 -22
- package/dist/universal/core.js +23 -6
- package/dist/universal/history.js +9 -0
- package/dist/universal/spec-driver.js +46 -50
- package/dist/{ufg/get-nml-client.js → utils/ensure-offline-folder.js} +14 -13
- package/dist/utils/extract-branching-timestamp.js +56 -0
- package/dist/utils/extract-current-commit.js +72 -0
- package/dist/utils/extract-git-info.js +168 -0
- package/dist/utils/extract-start-info.js +100 -0
- package/dist/utils/extract-test-environment.js +70 -0
- package/dist/utils/memory-usage-logging.js +46 -0
- package/dist/utils/populate-eyes-server-settings.js +41 -0
- package/dist/utils/validate-sdk-version.js +89 -0
- package/package.json +3 -3
- package/types/abort.d.ts +13 -0
- package/types/automation/abort.d.ts +16 -0
- package/types/automation/close.d.ts +14 -0
- package/types/automation/extract-text.d.ts +1 -1
- package/types/automation/get-nml-client.d.ts +16 -0
- package/types/automation/get-results.d.ts +11 -0
- package/types/automation/get-viewport-size.d.ts +1 -1
- package/types/automation/locate-text.d.ts +1 -1
- package/types/automation/locate.d.ts +1 -1
- package/types/automation/set-viewport-size.d.ts +1 -1
- package/types/automation/types.d.ts +107 -16
- package/types/automation/utils/report-kobiton.d.ts +12 -0
- package/types/automation/utils/take-screenshot.d.ts +5 -2
- package/types/automation/utils/to-base-check-settings.d.ts +13 -3
- package/types/automation/utils/to-environment-key.d.ts +2 -0
- package/types/automation/utils/uniquify-environments.d.ts +2 -0
- package/types/automation/utils/wait-for-lazy-load.d.ts +4 -8
- package/types/autonomous/core.d.ts +19 -0
- package/types/autonomous/create-render-results.d.ts +10 -0
- package/types/autonomous/create-render-target.d.ts +12 -0
- package/types/autonomous/get-render-results.d.ts +12 -0
- package/types/autonomous/open-eyes.d.ts +13 -0
- package/types/autonomous/start-renders.d.ts +12 -0
- package/types/autonomous/take-snapshots.d.ts +15 -0
- package/types/autonomous/types.d.ts +57 -0
- package/types/check-and-close.d.ts +3 -3
- package/types/check.d.ts +3 -3
- package/types/classic/check-and-close.d.ts +12 -5
- package/types/classic/check.d.ts +6 -3
- package/types/classic/core.d.ts +8 -2
- package/types/classic/get-base-eyes.d.ts +4 -8
- package/types/classic/open-eyes.d.ts +3 -4
- package/types/classic/types.d.ts +4 -5
- package/types/classic/utils/extract-default-environments.d.ts +9 -0
- package/types/classic/utils/take-dom-capture.d.ts +8 -0
- package/types/classic/utils/take-screenshots.d.ts +18 -0
- package/types/close-batch.d.ts +1 -1
- package/types/close.d.ts +3 -2
- package/types/core.d.ts +11 -2
- package/types/delete-test.d.ts +1 -1
- package/types/extract-text.d.ts +1 -1
- package/types/get-account-info.d.ts +11 -0
- package/types/get-ec-client.d.ts +1 -1
- package/types/get-eyes-results.d.ts +1 -1
- package/types/get-manager-results.d.ts +1 -1
- package/types/get-typed-eyes.d.ts +2 -4
- package/types/index.d.ts +2 -1
- package/types/lang.d.ts +32 -0
- package/types/locate-text.d.ts +1 -1
- package/types/locate.d.ts +1 -1
- package/types/make-manager.d.ts +11 -2
- package/types/offline/merge-configs.d.ts +1 -0
- package/types/offline/run-offline-snapshots.d.ts +11 -0
- package/types/open-eyes.d.ts +11 -2
- package/types/run-offline-snapshots.d.ts +6 -0
- package/types/troubleshoot/logs.d.ts +25 -0
- package/types/types.d.ts +19 -11
- package/types/ufg/check-and-close.d.ts +18 -10
- package/types/ufg/check.d.ts +5 -4
- package/types/ufg/core.d.ts +8 -5
- package/types/ufg/create-render-target-from-snapshot.d.ts +8 -0
- package/types/ufg/get-base-eyes.d.ts +4 -9
- package/types/ufg/get-ufg-client.d.ts +6 -3
- package/types/ufg/open-eyes.d.ts +3 -4
- package/types/ufg/take-snapshots.d.ts +17 -0
- package/types/ufg/types.d.ts +39 -39
- package/types/ufg/utils/extract-default-environment.d.ts +5 -0
- package/types/ufg/utils/generate-safe-selectors.d.ts +3 -12
- package/types/ufg/utils/take-dom-snapshot.d.ts +16 -21
- package/types/ufg/utils/take-dom-snapshots.d.ts +14 -10
- package/types/ufg/utils/to-generated-selectors.d.ts +34 -0
- package/types/ufg/utils/to-safe-check-settings.d.ts +22 -0
- package/types/universal/core-server.d.ts +6 -2
- package/types/universal/core.d.ts +6 -2
- package/types/universal/spec-driver.d.ts +6 -5
- package/types/universal/types.d.ts +59 -51
- package/types/utils/ensure-offline-folder.d.ts +1 -0
- package/types/utils/extract-branching-timestamp.d.ts +16 -0
- package/types/utils/extract-current-commit.d.ts +24 -0
- package/types/utils/extract-git-info.d.ts +59 -0
- package/types/utils/extract-start-info.d.ts +29 -0
- package/types/utils/extract-test-environment.d.ts +2 -0
- package/types/utils/memory-usage-logging.d.ts +7 -0
- package/types/utils/populate-eyes-server-settings.d.ts +2 -0
- package/types/utils/validate-sdk-version.d.ts +42 -0
- package/CHANGELOG.md +0 -222
- package/dist/classic/abort.js +0 -22
- package/dist/classic/close.js +0 -22
- package/dist/ufg/abort.js +0 -32
- package/dist/ufg/close.js +0 -37
- package/dist/ufg/get-results.js +0 -27
- package/dist/ufg/utils/take-vhses.js +0 -153
- package/dist/ufg/utils/uniquify-renderers.js +0 -27
- package/dist/utils/extract-ci-provider.js +0 -31
- package/types/classic/abort.d.ts +0 -16
- package/types/classic/close.d.ts +0 -16
- package/types/ufg/abort.d.ts +0 -21
- package/types/ufg/close.d.ts +0 -19
- package/types/ufg/get-nml-client.d.ts +0 -17
- package/types/ufg/get-results.d.ts +0 -16
- package/types/ufg/utils/take-vhses.d.ts +0 -17
- package/types/ufg/utils/uniquify-renderers.d.ts +0 -2
- package/types/utils/extract-ci-provider.d.ts +0 -1
package/dist/ufg/check.js
CHANGED
|
@@ -28,241 +28,174 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.makeCheck = void 0;
|
|
30
30
|
const driver_1 = require("@applitools/driver");
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
const wait_for_lazy_load_1 = require("../automation/utils/wait-for-lazy-load");
|
|
34
|
-
const to_base_check_settings_1 = require("../automation/utils/to-base-check-settings");
|
|
35
|
-
const generate_safe_selectors_1 = require("./utils/generate-safe-selectors");
|
|
36
|
-
const uniquify_renderers_1 = require("./utils/uniquify-renderers");
|
|
31
|
+
const uniquify_environments_1 = require("../automation/utils/uniquify-environments");
|
|
32
|
+
const to_environment_key_1 = require("../automation/utils/to-environment-key");
|
|
37
33
|
const abort_error_1 = require("../errors/abort-error");
|
|
38
34
|
const utils = __importStar(require("@applitools/utils"));
|
|
35
|
+
const lang = __importStar(require("../lang"));
|
|
39
36
|
const chalk_1 = __importDefault(require("chalk"));
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
const take_snapshots_1 = require("./take-snapshots");
|
|
38
|
+
const create_render_target_from_snapshot_1 = require("./create-render-target-from-snapshot");
|
|
39
|
+
const to_base_check_settings_1 = require("../automation/utils/to-base-check-settings");
|
|
40
|
+
function makeCheck({ eyes, target: defaultTarget, environments: defaultEnvironments = [], spec, signal, logger: mainLogger, }) {
|
|
41
|
+
return async function check({ target = defaultTarget, settings = {}, logger = mainLogger, } = {}) {
|
|
42
|
+
var _a;
|
|
43
|
+
logger = logger.extend(mainLogger);
|
|
43
44
|
logger.log('Command "check" is called with settings', settings);
|
|
44
45
|
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
45
46
|
logger.warn('Command "check" was called after test was already aborted');
|
|
46
47
|
throw new abort_error_1.AbortError('Command "check" was called after test was already aborted');
|
|
47
48
|
}
|
|
48
|
-
const
|
|
49
|
-
settings,
|
|
50
|
-
});
|
|
51
|
-
const uniqueRenderers = (0, uniquify_renderers_1.uniquifyRenderers)((_a = settings.renderers) !== null && _a !== void 0 ? _a : []);
|
|
49
|
+
const uniqueEnvironments = (0, uniquify_environments_1.uniquifyEnvironments)((_a = settings.environments) !== null && _a !== void 0 ? _a : defaultEnvironments);
|
|
52
50
|
const ufgClient = await eyes.core.getUFGClient({
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
settings: {
|
|
52
|
+
...eyes.test.ufgServer,
|
|
53
|
+
eyesServerUrl: eyes.test.eyesServer.eyesServerUrl,
|
|
54
|
+
apiKey: eyes.test.eyesServer.apiKey,
|
|
55
|
+
},
|
|
55
56
|
logger,
|
|
56
57
|
});
|
|
57
58
|
let snapshots;
|
|
58
|
-
let
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if (uniqueRenderers.length === 0) {
|
|
69
|
-
if (environment.isWeb) {
|
|
70
|
-
const viewportSize = await driver.getViewportSize();
|
|
71
|
-
uniqueRenderers.push({ name: 'chrome', ...viewportSize });
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
// TODO add default nmg renderers
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
let cleanupGeneratedSelectors;
|
|
78
|
-
if (environment.isWeb) {
|
|
79
|
-
userAgent = (_c = (await driver.getUserAgentLegacy())) !== null && _c !== void 0 ? _c : undefined;
|
|
80
|
-
const generated = await (0, generate_safe_selectors_1.generateSafeSelectors)({
|
|
81
|
-
context: driver.currentContext,
|
|
82
|
-
elementReferences: [
|
|
83
|
-
...(elementReferenceToTarget ? [elementReferenceToTarget] : []),
|
|
84
|
-
...(settings.scrollRootElement ? [settings.scrollRootElement] : []),
|
|
85
|
-
...elementReferencesToCalculate,
|
|
86
|
-
],
|
|
87
|
-
});
|
|
88
|
-
cleanupGeneratedSelectors = generated.cleanupGeneratedSelectors;
|
|
89
|
-
selectorsToCalculate = generated.selectors;
|
|
90
|
-
if (elementReferenceToTarget) {
|
|
91
|
-
if (!((_d = selectorsToCalculate[0]) === null || _d === void 0 ? void 0 : _d.safeSelector))
|
|
92
|
-
throw new Error('Target element not found');
|
|
93
|
-
regionToTarget = selectorsToCalculate[0].safeSelector;
|
|
94
|
-
selectorsToCalculate = selectorsToCalculate.slice(1);
|
|
95
|
-
}
|
|
96
|
-
if (settings.scrollRootElement) {
|
|
97
|
-
scrollRootSelector = (_e = selectorsToCalculate[0].safeSelector) !== null && _e !== void 0 ? _e : undefined;
|
|
98
|
-
selectorsToCalculate = selectorsToCalculate.slice(1);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
regionToTarget = (0, driver_1.isSelector)(elementReferenceToTarget)
|
|
103
|
-
? (_g = (_f = spec === null || spec === void 0 ? void 0 : spec.untransformSelector) === null || _f === void 0 ? void 0 : _f.call(spec, settings.scrollRootElement)) !== null && _g !== void 0 ? _g : undefined
|
|
104
|
-
: undefined;
|
|
105
|
-
scrollRootSelector = (0, driver_1.isSelector)(settings.scrollRootElement)
|
|
106
|
-
? (_j = (_h = spec === null || spec === void 0 ? void 0 : spec.untransformSelector) === null || _h === void 0 ? void 0 : _h.call(spec, settings.scrollRootElement)) !== null && _j !== void 0 ? _j : undefined
|
|
107
|
-
: undefined;
|
|
108
|
-
}
|
|
109
|
-
const currentContext = driver.currentContext;
|
|
110
|
-
const snapshotOptions = {
|
|
111
|
-
settings: {
|
|
112
|
-
...eyes.test.server,
|
|
113
|
-
waitBeforeCapture: settings.waitBeforeCapture,
|
|
114
|
-
disableBrowserFetching: settings.disableBrowserFetching,
|
|
115
|
-
layoutBreakpoints: settings.layoutBreakpoints,
|
|
116
|
-
renderers: uniqueRenderers,
|
|
117
|
-
skipResources: ufgClient.getCachedResourceUrls(),
|
|
118
|
-
},
|
|
119
|
-
hooks: {
|
|
120
|
-
async beforeSnapshots() {
|
|
121
|
-
if (settings.lazyLoad && environment.isWeb) {
|
|
122
|
-
await (0, wait_for_lazy_load_1.waitForLazyLoad)({
|
|
123
|
-
context: driver.currentContext,
|
|
124
|
-
settings: settings.lazyLoad !== true ? settings.lazyLoad : {},
|
|
125
|
-
logger,
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
},
|
|
129
|
-
},
|
|
130
|
-
provides: {
|
|
131
|
-
getChromeEmulationDevices: ufgClient.getChromeEmulationDevices,
|
|
132
|
-
getIOSDevices: ufgClient.getIOSDevices,
|
|
133
|
-
},
|
|
134
|
-
};
|
|
135
|
-
if (environment.isWeb) {
|
|
136
|
-
snapshots = await (0, take_dom_snapshots_1.takeDomSnapshots)({ driver, ...snapshotOptions, logger });
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
const nmlClient = await eyes.core.getNMLClient({ config: eyes.test.server, driver, logger });
|
|
140
|
-
if (nmlClient) {
|
|
141
|
-
snapshots = (await nmlClient.takeSnapshots({ ...snapshotOptions, logger }));
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
snapshots = await (0, take_vhses_1.takeVHSes)({ driver, ...snapshotOptions, logger });
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
await currentContext.focus();
|
|
148
|
-
snapshotUrl = await driver.getUrl();
|
|
149
|
-
snapshotTitle = await driver.getTitle();
|
|
150
|
-
await (cleanupGeneratedSelectors === null || cleanupGeneratedSelectors === void 0 ? void 0 : cleanupGeneratedSelectors());
|
|
59
|
+
let driver;
|
|
60
|
+
if (spec && (0, driver_1.isDriver)(target, spec)) {
|
|
61
|
+
const takeSnapshots = (0, take_snapshots_1.makeTakeSnapshots)({ core: eyes.core, spec, signal, logger });
|
|
62
|
+
driver = await (0, driver_1.makeDriver)({ spec, driver: target, logger });
|
|
63
|
+
snapshots = await takeSnapshots({
|
|
64
|
+
driver,
|
|
65
|
+
account: eyes.test.account,
|
|
66
|
+
settings: { ...settings, environments: uniqueEnvironments },
|
|
67
|
+
logger,
|
|
68
|
+
});
|
|
151
69
|
}
|
|
152
70
|
else {
|
|
153
|
-
|
|
154
|
-
|
|
71
|
+
// TODO (amit)
|
|
72
|
+
snapshots = !utils.types.isArray(target) ? Array(uniqueEnvironments.length).fill(target) : target;
|
|
155
73
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
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.`);
|
|
164
|
-
logger.console.log(message);
|
|
74
|
+
const promises = snapshots.map(async (snapshot, i) => {
|
|
75
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
76
|
+
const environmentLogger = logger.extend({ tags: [`environment-${utils.general.shortid()}`] });
|
|
77
|
+
const { target } = snapshot;
|
|
78
|
+
const environment = uniqueEnvironments[i];
|
|
79
|
+
if (utils.types.has(environment, 'name') && environment.name === 'edge') {
|
|
80
|
+
environmentLogger.console.log(chalk_1.default.yellow(lang.edgeUfgEnvironmentDeprecatedWarning));
|
|
165
81
|
}
|
|
166
82
|
try {
|
|
167
83
|
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
168
|
-
|
|
84
|
+
environmentLogger.warn('Command "check" was aborted before rendering');
|
|
169
85
|
throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
|
|
170
86
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
renderer,
|
|
177
|
-
referer: snapshotUrl,
|
|
178
|
-
cookies,
|
|
179
|
-
proxy: eyes.test.server.proxy,
|
|
180
|
-
autProxy: settings.autProxy,
|
|
181
|
-
userAgent,
|
|
182
|
-
},
|
|
183
|
-
});
|
|
184
|
-
const [baseEyes] = await eyes.getBaseEyes({ settings: { renderer, type: snapshotType }, logger });
|
|
87
|
+
if (utils.types.has(environment, 'iosDeviceInfo') || utils.types.has(environment, 'androidDeviceInfo')) {
|
|
88
|
+
environment.type = utils.types.has(target, 'cdt') ? 'web' : 'native';
|
|
89
|
+
}
|
|
90
|
+
const renderTargetPromise = (0, create_render_target_from_snapshot_1.createRenderTargetFromSnapshot)({ ufgClient, snapshot, logger: environmentLogger });
|
|
91
|
+
const baseEyes = await eyes.getBaseEyes({ settings: { environment, driver }, logger: environmentLogger });
|
|
185
92
|
try {
|
|
186
93
|
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
187
|
-
|
|
94
|
+
environmentLogger.warn('Command "check" was aborted before rendering');
|
|
188
95
|
throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
|
|
189
96
|
}
|
|
190
97
|
else if (!baseEyes.running) {
|
|
191
|
-
|
|
192
|
-
throw new abort_error_1.AbortError(`
|
|
98
|
+
environmentLogger.warn(`Render on environment with id "${(_a = baseEyes.test.environment) === null || _a === void 0 ? void 0 : _a.environmentId}" was aborted during one of the previous steps`);
|
|
99
|
+
throw new abort_error_1.AbortError(`Render on environment with id "${(_b = baseEyes.test.environment) === null || _b === void 0 ? void 0 : _b.environmentId}" was aborted during one of the previous steps`);
|
|
193
100
|
}
|
|
194
101
|
const renderTarget = await renderTargetPromise;
|
|
195
102
|
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
196
|
-
|
|
103
|
+
environmentLogger.warn('Command "check" was aborted before rendering');
|
|
197
104
|
throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
|
|
198
105
|
}
|
|
199
106
|
else if (!baseEyes.running) {
|
|
200
|
-
|
|
201
|
-
throw new abort_error_1.AbortError(`
|
|
107
|
+
environmentLogger.warn(`Render on environment with id "${(_c = baseEyes.test.environment) === null || _c === void 0 ? void 0 : _c.environmentId}" was aborted during one of the previous steps`);
|
|
108
|
+
throw new abort_error_1.AbortError(`Render on environment with id "${(_d = baseEyes.test.environment) === null || _d === void 0 ? void 0 : _d.environmentId}" was aborted during one of the previous steps`);
|
|
202
109
|
}
|
|
110
|
+
const { elementReferences: selectors, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({
|
|
111
|
+
settings: snapshot.settings,
|
|
112
|
+
});
|
|
203
113
|
const { renderId, selectorRegions, ...baseTarget } = await ufgClient.render({
|
|
204
114
|
target: renderTarget,
|
|
205
115
|
settings: {
|
|
206
|
-
...settings,
|
|
207
|
-
region:
|
|
208
|
-
scrollRootElement:
|
|
209
|
-
selectorsToCalculate:
|
|
210
|
-
includeFullPageSize: Boolean(settings.pageId),
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
rendererId: baseEyes.test.rendererId,
|
|
116
|
+
...snapshot.settings,
|
|
117
|
+
region: (_e = selectors.target) !== null && _e !== void 0 ? _e : snapshot.settings.region,
|
|
118
|
+
scrollRootElement: selectors.scrolling,
|
|
119
|
+
selectorsToCalculate: selectors.calculate,
|
|
120
|
+
includeFullPageSize: Boolean(snapshot.settings.pageId),
|
|
121
|
+
environment: { ...environment, environmentId: baseEyes.test.environment.environmentId },
|
|
122
|
+
uploadUrl: baseEyes.test.uploadUrl,
|
|
123
|
+
stitchingServiceUrl: baseEyes.test.stitchingServiceUrl,
|
|
215
124
|
},
|
|
216
125
|
signal,
|
|
126
|
+
logger: environmentLogger,
|
|
217
127
|
});
|
|
218
|
-
let offset = 0;
|
|
219
128
|
const baseSettings = getBaseCheckSettings({
|
|
220
|
-
calculatedRegions:
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
129
|
+
calculatedRegions: selectors.calculate.map((_, index) => {
|
|
130
|
+
var _a;
|
|
131
|
+
return ({
|
|
132
|
+
regions: (_a = selectorRegions === null || selectorRegions === void 0 ? void 0 : selectorRegions[index]) !== null && _a !== void 0 ? _a : [],
|
|
133
|
+
});
|
|
134
|
+
}),
|
|
224
135
|
});
|
|
225
136
|
baseSettings.renderId = renderId;
|
|
226
|
-
baseTarget.source =
|
|
227
|
-
baseTarget.name =
|
|
137
|
+
baseTarget.source = snapshot.url;
|
|
138
|
+
baseTarget.name = snapshot.title;
|
|
228
139
|
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
229
|
-
|
|
140
|
+
environmentLogger.warn('Command "check" was aborted after rendering');
|
|
230
141
|
throw new abort_error_1.AbortError('Command "check" was aborted after rendering');
|
|
231
142
|
}
|
|
232
143
|
else if (!baseEyes.running) {
|
|
233
|
-
|
|
234
|
-
throw new abort_error_1.AbortError(`
|
|
144
|
+
environmentLogger.warn(`Render on environment with id "${(_f = baseEyes.test.environment) === null || _f === void 0 ? void 0 : _f.environmentId}" was aborted during one of the previous steps`);
|
|
145
|
+
throw new abort_error_1.AbortError(`Render on environment with id "${(_g = baseEyes.test.environment) === null || _g === void 0 ? void 0 : _g.environmentId}" was aborted during one of the previous steps`);
|
|
235
146
|
}
|
|
236
|
-
|
|
147
|
+
if (settings.assumesMutability) {
|
|
148
|
+
void eyes.core.logEvent({
|
|
149
|
+
settings: {
|
|
150
|
+
level: 'Notice',
|
|
151
|
+
event: {
|
|
152
|
+
type: 'eyes.check',
|
|
153
|
+
message: 'Assuming mutability for check Target',
|
|
154
|
+
test: {
|
|
155
|
+
checkName: settings.name,
|
|
156
|
+
batchId: baseEyes.test.batchId,
|
|
157
|
+
sessionId: baseEyes.test.sessionId,
|
|
158
|
+
testName: baseEyes.test.testName,
|
|
159
|
+
testId: baseEyes.test.testId,
|
|
160
|
+
userTestId: baseEyes.test.userTestId,
|
|
161
|
+
appId: baseEyes.test.appId,
|
|
162
|
+
baselineId: baseEyes.test.baselineId,
|
|
163
|
+
environmentId: (_h = baseEyes.test.environment) === null || _h === void 0 ? void 0 : _h.environmentId,
|
|
164
|
+
},
|
|
165
|
+
isNew: baseEyes.test.isNew,
|
|
166
|
+
resultsUrl: baseEyes.test.resultsUrl,
|
|
167
|
+
},
|
|
168
|
+
...eyes.test.eyesServer,
|
|
169
|
+
},
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
await baseEyes.check({
|
|
237
173
|
target: { ...baseTarget, isTransformed: true },
|
|
238
174
|
settings: baseSettings,
|
|
239
|
-
logger,
|
|
175
|
+
logger: environmentLogger,
|
|
240
176
|
});
|
|
241
|
-
if (!baseEyes.running) {
|
|
242
|
-
logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
|
|
243
|
-
throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
|
|
244
|
-
}
|
|
245
|
-
return { ...result, eyes: baseEyes, renderer };
|
|
246
177
|
}
|
|
247
178
|
catch (error) {
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
error.info = { eyes: baseEyes };
|
|
252
|
-
throw error;
|
|
179
|
+
environmentLogger.error(`Render on environment with id "${(_j = baseEyes.test.environment) === null || _j === void 0 ? void 0 : _j.environmentId}" failed due to an error`, error);
|
|
180
|
+
if (baseEyes.running && !(signal === null || signal === void 0 ? void 0 : signal.aborted))
|
|
181
|
+
await baseEyes.abort({ logger: environmentLogger, settings: { reason: error } });
|
|
253
182
|
}
|
|
254
183
|
}
|
|
255
184
|
catch (error) {
|
|
256
|
-
error
|
|
185
|
+
environmentLogger.error(`Environment with id ${environment.environmentId} failed before rendering started due to an error`, error);
|
|
186
|
+
error.info = { ...error.info, userTestId: eyes.test.userTestId, environment };
|
|
257
187
|
throw error;
|
|
258
188
|
}
|
|
259
189
|
});
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
190
|
+
uniqueEnvironments.forEach((environment, index) => {
|
|
191
|
+
const key = (0, to_environment_key_1.toEnvironmentKey)(environment);
|
|
192
|
+
let item = eyes.storage.get(key);
|
|
193
|
+
if (!item) {
|
|
194
|
+
item = { eyes: utils.promises.makeControlledPromise(), jobs: [] };
|
|
195
|
+
eyes.storage.set(key, item);
|
|
196
|
+
}
|
|
197
|
+
item.jobs.push(promises[index]);
|
|
198
|
+
});
|
|
266
199
|
};
|
|
267
200
|
}
|
|
268
201
|
exports.makeCheck = makeCheck;
|
package/dist/ufg/core.js
CHANGED
|
@@ -31,26 +31,28 @@ const set_viewport_size_1 = require("../automation/set-viewport-size");
|
|
|
31
31
|
const locate_1 = require("../automation/locate");
|
|
32
32
|
const locate_text_1 = require("../automation/locate-text");
|
|
33
33
|
const extract_text_1 = require("../automation/extract-text");
|
|
34
|
+
const get_nml_client_1 = require("../automation/get-nml-client");
|
|
35
|
+
const take_snapshots_1 = require("./take-snapshots");
|
|
34
36
|
const get_ufg_client_1 = require("./get-ufg-client");
|
|
35
|
-
const get_nml_client_1 = require("./get-nml-client");
|
|
36
37
|
const open_eyes_1 = require("./open-eyes");
|
|
37
38
|
const utils = __importStar(require("@applitools/utils"));
|
|
38
|
-
function makeCore({
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
function makeCore({ spec, clients, base: defaultBase, asyncCache, concurrency, offlineLocationPath, fetchConcurrency, agentId = 'core-ufg', logger: defaultLogger, maskLog, }) {
|
|
40
|
+
const logger = (0, logger_1.makeLogger)({ logger: defaultLogger, format: { label: 'core-ufg' }, maskLog });
|
|
41
|
+
logger.log(`Core ufg is initialized ${defaultBase ? 'with' : 'without'} custom base core`);
|
|
42
|
+
const base = defaultBase !== null && defaultBase !== void 0 ? defaultBase : (0, core_base_1.makeCore)({ agentId, concurrency, logger, offlineLocationPath, maskLog });
|
|
43
|
+
const ufgClient = clients === null || clients === void 0 ? void 0 : clients.ufg;
|
|
43
44
|
return utils.general.extend(base, core => {
|
|
44
45
|
return {
|
|
45
46
|
type: 'ufg',
|
|
46
47
|
base: base,
|
|
47
48
|
getViewportSize: spec && (0, get_viewport_size_1.makeGetViewportSize)({ spec, logger }),
|
|
48
49
|
setViewportSize: spec && (0, set_viewport_size_1.makeSetViewportSize)({ spec, logger }),
|
|
50
|
+
takeSnapshots: spec && (0, take_snapshots_1.makeTakeSnapshots)({ spec, core, logger }),
|
|
49
51
|
locate: (0, locate_1.makeLocate)({ spec, core, logger }),
|
|
50
52
|
locateText: (0, locate_text_1.makeLocateText)({ spec, core, logger }),
|
|
51
53
|
extractText: (0, extract_text_1.makeExtractText)({ spec, core, logger }),
|
|
52
|
-
getUFGClient: (0, get_ufg_client_1.makeGetUFGClient)({ client:
|
|
53
|
-
|
|
54
|
+
getUFGClient: (0, get_ufg_client_1.makeGetUFGClient)({ client: ufgClient, fetchConcurrency, asyncCache, offlineLocationPath, logger }),
|
|
55
|
+
...(0, get_nml_client_1.makeGetNMLClient)({ client: clients === null || clients === void 0 ? void 0 : clients.nml, logger }),
|
|
54
56
|
openEyes: (0, open_eyes_1.makeOpenEyes)({ spec, core, logger }),
|
|
55
57
|
};
|
|
56
58
|
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createRenderTargetFromSnapshot = void 0;
|
|
4
|
+
async function createRenderTargetFromSnapshot({ ufgClient, snapshot, logger, }) {
|
|
5
|
+
return await ufgClient.createRenderTarget({
|
|
6
|
+
snapshot: snapshot.target,
|
|
7
|
+
settings: {
|
|
8
|
+
environment: snapshot.environment,
|
|
9
|
+
cookies: snapshot.target.cookies,
|
|
10
|
+
headers: {
|
|
11
|
+
Referer: snapshot.url,
|
|
12
|
+
'User-Agent': snapshot.userAgent,
|
|
13
|
+
...snapshot.settings.headers,
|
|
14
|
+
},
|
|
15
|
+
proxy: snapshot.account.eyesServer.proxy,
|
|
16
|
+
autProxy: snapshot.settings.autProxy,
|
|
17
|
+
},
|
|
18
|
+
logger,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
exports.createRenderTargetFromSnapshot = createRenderTargetFromSnapshot;
|
|
@@ -25,26 +25,54 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.makeGetBaseEyes = void 0;
|
|
27
27
|
const utils = __importStar(require("@applitools/utils"));
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
const report_kobiton_1 = require("../automation/utils/report-kobiton");
|
|
29
|
+
function makeGetBaseEyes({ settings: defaultSettings, eyes, logger: mainLogger, }) {
|
|
30
|
+
const getBaseEyesWithCache = utils.general.wrap(getBaseEyes, (getBaseEyes, options) => {
|
|
31
|
+
const key = JSON.stringify(options.settings.environment);
|
|
32
|
+
let item = eyes.storage.get(key);
|
|
33
|
+
if (!item) {
|
|
34
|
+
item = { eyes: utils.promises.makeControlledPromise(), jobs: [] };
|
|
35
|
+
eyes.storage.set(key, item);
|
|
36
|
+
}
|
|
37
|
+
if (!item.eyes.settled)
|
|
38
|
+
item.eyes.resolve(getBaseEyes(options));
|
|
39
|
+
return item.eyes;
|
|
40
|
+
});
|
|
33
41
|
return getBaseEyesWithCache;
|
|
34
|
-
async function getBaseEyes({ settings, logger =
|
|
42
|
+
async function getBaseEyes({ settings, logger = mainLogger, }) {
|
|
43
|
+
var _a;
|
|
44
|
+
logger = logger.extend(mainLogger);
|
|
35
45
|
logger.log(`Command "getBaseEyes" is called with settings`, settings);
|
|
36
|
-
if (!settings)
|
|
37
|
-
throw new Error('');
|
|
38
46
|
const ufgClient = await eyes.core.getUFGClient({
|
|
39
|
-
|
|
47
|
+
settings: {
|
|
48
|
+
...eyes.test.ufgServer,
|
|
49
|
+
eyesServerUrl: eyes.test.eyesServer.eyesServerUrl,
|
|
50
|
+
apiKey: eyes.test.eyesServer.apiKey,
|
|
51
|
+
},
|
|
52
|
+
logger,
|
|
53
|
+
});
|
|
54
|
+
const environment = await ufgClient.getActualEnvironment({
|
|
55
|
+
settings: { environment: settings.environment },
|
|
40
56
|
logger,
|
|
41
57
|
});
|
|
42
|
-
const environment = await ufgClient.bookRenderer({ settings });
|
|
43
58
|
const baseEyes = await eyes.core.base.openEyes({
|
|
44
|
-
settings: {
|
|
59
|
+
settings: {
|
|
60
|
+
...defaultSettings,
|
|
61
|
+
fallbackBaselineId: (_a = settings.environment) === null || _a === void 0 ? void 0 : _a.fallbackBaselineId,
|
|
62
|
+
environment: {
|
|
63
|
+
...defaultSettings.environment,
|
|
64
|
+
...environment,
|
|
65
|
+
os: settings.environment.os,
|
|
66
|
+
displayOs: settings.environment.displayOs,
|
|
67
|
+
hostingApp: settings.environment.hostingApp,
|
|
68
|
+
displayHostingApp: settings.environment.displayHostingApp,
|
|
69
|
+
properties: settings.environment.properties,
|
|
70
|
+
},
|
|
71
|
+
},
|
|
45
72
|
logger,
|
|
46
73
|
});
|
|
47
|
-
|
|
74
|
+
void (0, report_kobiton_1.reportKobiton)({ driver: settings.driver, settings: baseEyes.test, logger });
|
|
75
|
+
return baseEyes;
|
|
48
76
|
}
|
|
49
77
|
}
|
|
50
78
|
exports.makeGetBaseEyes = makeGetBaseEyes;
|
|
@@ -26,13 +26,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.makeGetUFGClient = void 0;
|
|
27
27
|
const ufg_client_1 = require("@applitools/ufg-client");
|
|
28
28
|
const utils = __importStar(require("@applitools/utils"));
|
|
29
|
-
function makeGetUFGClient({ client, logger:
|
|
30
|
-
|
|
29
|
+
function makeGetUFGClient({ client, fetchConcurrency, offlineLocationPath, logger: mainLogger, asyncCache, }) {
|
|
30
|
+
// we are caching by the server config, therefor if the user creates another Runner / manager with the same server config but different
|
|
31
|
+
// fetchConcurrency, it will not take any affect.
|
|
32
|
+
const getUFGClientWithCache = utils.general.cachify(getUFGClient, ([options]) => client ? 'default' : [{ ...options.settings, fetchConcurrency: undefined, offlineLocationPath }]);
|
|
31
33
|
if (client)
|
|
32
34
|
getUFGClientWithCache.setCachedValue('default', Promise.resolve(client));
|
|
33
35
|
return getUFGClientWithCache;
|
|
34
|
-
async function getUFGClient({
|
|
35
|
-
|
|
36
|
+
async function getUFGClient({ settings, logger = mainLogger }) {
|
|
37
|
+
logger = logger.extend(mainLogger);
|
|
38
|
+
const tunnelIds = utils.general.getEnvValue('FETCH_RESOURCE_FROM_TUNNEL', 'boolean')
|
|
39
|
+
? utils.general.getEnvValue('TUNNEL_IDS')
|
|
40
|
+
: undefined;
|
|
41
|
+
return (0, ufg_client_1.makeUFGClient)({
|
|
42
|
+
settings: { ...settings, fetchConcurrency, offlineLocationPath, tunnelIds, asyncCache },
|
|
43
|
+
logger,
|
|
44
|
+
});
|
|
36
45
|
}
|
|
37
46
|
}
|
|
38
47
|
exports.makeGetUFGClient = makeGetUFGClient;
|