@applitools/core 3.6.6 → 3.8.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.
Files changed (146) hide show
  1. package/CHANGELOG.md +21 -1
  2. package/package.json +3 -3
  3. package/dist/automation/extract-text.js +0 -79
  4. package/dist/automation/get-nml-client.js +0 -42
  5. package/dist/automation/get-viewport-size.js +0 -13
  6. package/dist/automation/locate-text.js +0 -58
  7. package/dist/automation/locate.js +0 -60
  8. package/dist/automation/set-viewport-size.js +0 -13
  9. package/dist/automation/types.js +0 -2
  10. package/dist/automation/utils/take-screenshot.js +0 -59
  11. package/dist/automation/utils/to-base-check-settings.js +0 -70
  12. package/dist/automation/utils/wait-for-lazy-load.js +0 -22
  13. package/dist/check-and-close.js +0 -49
  14. package/dist/check.js +0 -78
  15. package/dist/classic/abort.js +0 -23
  16. package/dist/classic/check-and-close.js +0 -104
  17. package/dist/classic/check.js +0 -117
  18. package/dist/classic/close.js +0 -23
  19. package/dist/classic/core.js +0 -55
  20. package/dist/classic/get-base-eyes.js +0 -40
  21. package/dist/classic/open-eyes.js +0 -98
  22. package/dist/classic/types.js +0 -17
  23. package/dist/classic/utils/take-dom-capture.js +0 -121
  24. package/dist/cli/cli.js +0 -139
  25. package/dist/close-batch.js +0 -39
  26. package/dist/close.js +0 -38
  27. package/dist/core.js +0 -64
  28. package/dist/delete-test.js +0 -39
  29. package/dist/errors/abort-error.js +0 -10
  30. package/dist/errors/internal-error.js +0 -11
  31. package/dist/errors/test-error.js +0 -32
  32. package/dist/extract-text.js +0 -46
  33. package/dist/get-account-info.js +0 -37
  34. package/dist/get-ec-client.js +0 -37
  35. package/dist/get-eyes-results.js +0 -43
  36. package/dist/get-manager-results.js +0 -112
  37. package/dist/get-typed-eyes.js +0 -27
  38. package/dist/index.js +0 -38
  39. package/dist/locate-text.js +0 -41
  40. package/dist/locate.js +0 -41
  41. package/dist/log-event.js +0 -39
  42. package/dist/make-manager.js +0 -60
  43. package/dist/open-eyes.js +0 -98
  44. package/dist/troubleshoot/check-network.js +0 -114
  45. package/dist/troubleshoot/eyes.js +0 -85
  46. package/dist/troubleshoot/logs.js +0 -41
  47. package/dist/troubleshoot/ufg.js +0 -131
  48. package/dist/troubleshoot/utils.js +0 -44
  49. package/dist/types.js +0 -17
  50. package/dist/ufg/abort.js +0 -33
  51. package/dist/ufg/check-and-close.js +0 -267
  52. package/dist/ufg/check.js +0 -274
  53. package/dist/ufg/close.js +0 -38
  54. package/dist/ufg/core.js +0 -57
  55. package/dist/ufg/get-base-eyes.js +0 -56
  56. package/dist/ufg/get-results.js +0 -28
  57. package/dist/ufg/get-ufg-client.js +0 -47
  58. package/dist/ufg/open-eyes.js +0 -97
  59. package/dist/ufg/types.js +0 -17
  60. package/dist/ufg/utils/generate-safe-selectors.js +0 -63
  61. package/dist/ufg/utils/take-dom-snapshot.js +0 -134
  62. package/dist/ufg/utils/take-dom-snapshots.js +0 -153
  63. package/dist/ufg/utils/uniquify-renderers.js +0 -27
  64. package/dist/universal/core-server-process.js +0 -31
  65. package/dist/universal/core-server.js +0 -190
  66. package/dist/universal/core.js +0 -158
  67. package/dist/universal/history.js +0 -86
  68. package/dist/universal/refer.js +0 -67
  69. package/dist/universal/spec-driver.js +0 -163
  70. package/dist/universal/types.js +0 -2
  71. package/dist/universal/ws-server.js +0 -59
  72. package/dist/utils/extract-ci-provider.js +0 -31
  73. package/dist/utils/format-results.js +0 -185
  74. package/dist/utils/separate-duplicate-results.js +0 -34
  75. package/types/automation/extract-text.d.ts +0 -15
  76. package/types/automation/get-nml-client.d.ts +0 -17
  77. package/types/automation/get-viewport-size.d.ts +0 -12
  78. package/types/automation/locate-text.d.ts +0 -14
  79. package/types/automation/locate.d.ts +0 -14
  80. package/types/automation/set-viewport-size.d.ts +0 -14
  81. package/types/automation/types.d.ts +0 -90
  82. package/types/automation/utils/take-screenshot.d.ts +0 -22
  83. package/types/automation/utils/to-base-check-settings.d.ts +0 -17
  84. package/types/automation/utils/wait-for-lazy-load.d.ts +0 -14
  85. package/types/check-and-close.d.ts +0 -18
  86. package/types/check.d.ts +0 -18
  87. package/types/classic/abort.d.ts +0 -16
  88. package/types/classic/check-and-close.d.ts +0 -19
  89. package/types/classic/check.d.ts +0 -15
  90. package/types/classic/close.d.ts +0 -16
  91. package/types/classic/core.d.ts +0 -17
  92. package/types/classic/get-base-eyes.d.ts +0 -18
  93. package/types/classic/open-eyes.d.ts +0 -16
  94. package/types/classic/types.d.ts +0 -35
  95. package/types/classic/utils/take-dom-capture.d.ts +0 -16
  96. package/types/cli/cli.d.ts +0 -2
  97. package/types/close-batch.d.ts +0 -12
  98. package/types/close.d.ts +0 -13
  99. package/types/core.d.ts +0 -14
  100. package/types/delete-test.d.ts +0 -12
  101. package/types/errors/abort-error.d.ts +0 -4
  102. package/types/errors/internal-error.d.ts +0 -6
  103. package/types/errors/test-error.d.ts +0 -5
  104. package/types/extract-text.d.ts +0 -16
  105. package/types/get-account-info.d.ts +0 -11
  106. package/types/get-ec-client.d.ts +0 -14
  107. package/types/get-eyes-results.d.ts +0 -12
  108. package/types/get-manager-results.d.ts +0 -13
  109. package/types/get-typed-eyes.d.ts +0 -19
  110. package/types/index.d.ts +0 -9
  111. package/types/locate-text.d.ts +0 -15
  112. package/types/locate.d.ts +0 -16
  113. package/types/log-event.d.ts +0 -12
  114. package/types/make-manager.d.ts +0 -19
  115. package/types/open-eyes.d.ts +0 -22
  116. package/types/troubleshoot/check-network.d.ts +0 -21
  117. package/types/troubleshoot/eyes.d.ts +0 -11
  118. package/types/troubleshoot/logs.d.ts +0 -10
  119. package/types/troubleshoot/ufg.d.ts +0 -10
  120. package/types/troubleshoot/utils.d.ts +0 -2
  121. package/types/types.d.ts +0 -142
  122. package/types/ufg/abort.d.ts +0 -21
  123. package/types/ufg/check-and-close.d.ts +0 -41
  124. package/types/ufg/check.d.ts +0 -23
  125. package/types/ufg/close.d.ts +0 -19
  126. package/types/ufg/core.d.ts +0 -21
  127. package/types/ufg/get-base-eyes.d.ts +0 -19
  128. package/types/ufg/get-results.d.ts +0 -16
  129. package/types/ufg/get-ufg-client.d.ts +0 -16
  130. package/types/ufg/open-eyes.d.ts +0 -16
  131. package/types/ufg/types.d.ts +0 -72
  132. package/types/ufg/utils/generate-safe-selectors.d.ts +0 -16
  133. package/types/ufg/utils/take-dom-snapshot.d.ts +0 -47
  134. package/types/ufg/utils/take-dom-snapshots.d.ts +0 -27
  135. package/types/ufg/utils/uniquify-renderers.d.ts +0 -2
  136. package/types/universal/core-server-process.d.ts +0 -9
  137. package/types/universal/core-server.d.ts +0 -13
  138. package/types/universal/core.d.ts +0 -23
  139. package/types/universal/history.d.ts +0 -2
  140. package/types/universal/refer.d.ts +0 -8
  141. package/types/universal/spec-driver.d.ts +0 -11
  142. package/types/universal/types.d.ts +0 -188
  143. package/types/universal/ws-server.d.ts +0 -14
  144. package/types/utils/extract-ci-provider.d.ts +0 -1
  145. package/types/utils/format-results.d.ts +0 -16
  146. package/types/utils/separate-duplicate-results.d.ts +0 -2
@@ -1,131 +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
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.getCmd = void 0;
30
- const https_1 = require("https");
31
- const crypto_1 = require("crypto");
32
- const logger_1 = require("@applitools/logger");
33
- const ufg_client_1 = require("@applitools/ufg-client");
34
- const utils_1 = require("./utils");
35
- const eyes_1 = require("./eyes");
36
- const utils = __importStar(require("@applitools/utils"));
37
- const node_fetch_1 = __importDefault(require("node-fetch"));
38
- const value = Buffer.from(JSON.stringify({ resources: {}, domNodes: [] }));
39
- const hash = (0, crypto_1.createHash)('sha256').update(value).digest('hex');
40
- const contentType = 'x-applitools-html/cdt';
41
- const resource = {
42
- id: 'id',
43
- url: 'https://localhost:2107',
44
- value,
45
- hash: { hashFormat: 'sha256', hash, contentType },
46
- contentType,
47
- };
48
- const UFG_PUT_RESOURCE_URL = `https://render-wus.applitools.com/sha256/${resource.hash.hash}?render-id=fake`;
49
- const accessTokenPromise = new Promise(async (resolve) => {
50
- const { stdout } = await utils.process.execute(`curl -s ${eyes_1.RENDER_INFO_URL} ${(0, utils_1.getProxyCurlArg)()}`, {
51
- maxBuffer: 10000000,
52
- });
53
- const accessToken = JSON.parse(stdout).accessToken;
54
- if (!accessToken)
55
- throw new Error('could not receive auth token since cURL command to get it failed.');
56
- resolve(accessToken);
57
- });
58
- const getCmd = async () => `curl -X PUT -H "Content-Type: application/json" -H "X-Auth-Token: ${await accessTokenPromise}" -d '${resource.value}' ${UFG_PUT_RESOURCE_URL} ${(0, utils_1.getProxyCurlArg)()}`;
59
- exports.getCmd = getCmd;
60
- const validateVgResult = (res, sha) => {
61
- if (!res || res.hash !== sha) {
62
- throw new Error(`bad VG result ${res}`);
63
- }
64
- };
65
- exports.default = {
66
- async testFetch() {
67
- const response = await (0, node_fetch_1.default)(UFG_PUT_RESOURCE_URL, {
68
- method: 'PUT',
69
- headers: {
70
- 'Content-Type': 'x-applitools-html/cdt',
71
- 'X-Auth-Token': await accessTokenPromise,
72
- },
73
- body: resource.value,
74
- });
75
- const data = await response.json();
76
- validateVgResult(data, resource.hash.hash);
77
- },
78
- async testCurl() {
79
- // HTTP_PROXY and HTTPS_PROXY are read by cURL.
80
- let proxyUrl;
81
- if (utils_1.config.proxy) {
82
- proxyUrl = new URL(utils.types.isString(utils_1.config.proxy) ? utils_1.config.proxy : utils_1.config.proxy.url);
83
- if (utils_1.config.proxy.username)
84
- proxyUrl.username = utils_1.config.proxy.username;
85
- if (utils_1.config.proxy.password)
86
- proxyUrl.password = utils_1.config.proxy.password;
87
- }
88
- const { stdout } = await utils.process.execute(await (0, exports.getCmd)(), { maxBuffer: 10000000 });
89
- validateVgResult(JSON.parse(stdout), resource.hash.hash);
90
- },
91
- testServer: async () => {
92
- const url = new URL(UFG_PUT_RESOURCE_URL);
93
- const requests = (0, ufg_client_1.makeUFGRequests)({
94
- settings: { ufgServerUrl: url.origin, accessToken: await accessTokenPromise },
95
- logger: (0, logger_1.makeLogger)(),
96
- });
97
- await requests.uploadResource({ resource });
98
- },
99
- async testHttps() {
100
- return new Promise(async (resolve, reject) => {
101
- const url = new URL(UFG_PUT_RESOURCE_URL);
102
- const request = (0, https_1.request)({
103
- host: url.host,
104
- path: `${url.pathname}${url.search}`,
105
- method: 'PUT',
106
- headers: {
107
- 'Content-Type': 'x-applitools-html/cdt',
108
- 'X-Auth-Token': await accessTokenPromise,
109
- },
110
- });
111
- request.on('response', response => {
112
- let data = '';
113
- response.on('data', chunk => (data += chunk));
114
- response.on('end', () => {
115
- try {
116
- validateVgResult(JSON.parse(data), resource.hash.hash);
117
- resolve();
118
- }
119
- catch (e) {
120
- reject(e);
121
- }
122
- });
123
- });
124
- request.on('error', reject);
125
- request.write(resource.value);
126
- request.end();
127
- });
128
- },
129
- url: new URL(UFG_PUT_RESOURCE_URL),
130
- getCmd: exports.getCmd,
131
- };
@@ -1,44 +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.getProxyCurlArg = exports.config = void 0;
27
- const utils = __importStar(require("@applitools/utils"));
28
- exports.config = {
29
- serverUrl: 'https://eyesapi.applitools.com',
30
- ...utils.config.getConfig({ params: ['apiKey', 'serverUrl', 'proxy'] }),
31
- };
32
- function getProxyCurlArg() {
33
- // HTTP_PROXY and HTTPS_PROXY are read by cURL.
34
- let proxyUrl;
35
- if (exports.config.proxy) {
36
- proxyUrl = new URL(utils.types.isString(exports.config.proxy) ? exports.config.proxy : exports.config.proxy.url);
37
- if (exports.config.proxy.username)
38
- proxyUrl.username = exports.config.proxy.username;
39
- if (exports.config.proxy.password)
40
- proxyUrl.password = exports.config.proxy.password;
41
- }
42
- return proxyUrl ? `-x ${proxyUrl.href}` : '';
43
- }
44
- exports.getProxyCurlArg = getProxyCurlArg;
package/dist/types.js DELETED
@@ -1,17 +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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./automation/types"), exports);
package/dist/ufg/abort.js DELETED
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeAbort = void 0;
4
- const driver_1 = require("@applitools/driver");
5
- function makeAbort({ storage, target, spec, controller, logger: mainLogger, }) {
6
- return async function abort({ settings, logger = mainLogger, } = {}) {
7
- logger = logger.extend(mainLogger);
8
- logger.log('Command "abort" is called with settings', settings);
9
- controller.abort();
10
- settings !== null && settings !== void 0 ? settings : (settings = {});
11
- if (!settings.testMetadata) {
12
- try {
13
- const driver = (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
14
- settings.testMetadata = await (driver === null || driver === void 0 ? void 0 : driver.getSessionMetadata());
15
- }
16
- catch (error) {
17
- logger.warn('Command "abort" received an error during extracting driver metadata', error);
18
- }
19
- }
20
- storage.forEach(async (promises) => {
21
- var _a, _b;
22
- try {
23
- const { eyes } = await Promise.race(promises);
24
- await eyes.abort({ settings, logger });
25
- }
26
- catch (error) {
27
- logger.warn('Command "abort" received an error during waiting for eyes instances in background', error);
28
- await ((_b = (_a = error === null || error === void 0 ? void 0 : error.info) === null || _a === void 0 ? void 0 : _a.eyes) === null || _b === void 0 ? void 0 : _b.abort({ settings, logger }));
29
- }
30
- });
31
- };
32
- }
33
- exports.makeAbort = makeAbort;
@@ -1,267 +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
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.makeCheckAndClose = void 0;
30
- const driver_1 = require("@applitools/driver");
31
- const take_dom_snapshots_1 = require("./utils/take-dom-snapshots");
32
- const wait_for_lazy_load_1 = require("../automation/utils/wait-for-lazy-load");
33
- const to_base_check_settings_1 = require("../automation/utils/to-base-check-settings");
34
- const generate_safe_selectors_1 = require("./utils/generate-safe-selectors");
35
- const uniquify_renderers_1 = require("./utils/uniquify-renderers");
36
- const abort_error_1 = require("../errors/abort-error");
37
- const utils = __importStar(require("@applitools/utils"));
38
- const chalk_1 = __importDefault(require("chalk"));
39
- function makeCheckAndClose({ eyes, storage, target: defaultTarget, spec, signal, logger: mainLogger, }) {
40
- return async function checkAndClose({ target = defaultTarget, settings = {}, logger = mainLogger, } = {}) {
41
- var _a, _b, _c, _d, _e, _f, _g, _h;
42
- logger = logger.extend(mainLogger);
43
- logger.log('Command "checkAndClose" is called with settings', settings);
44
- if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
45
- logger.warn('Command "checkAndClose" was called after test was already aborted');
46
- throw new abort_error_1.AbortError('Command "checkAndClose" was called after test was already aborted');
47
- }
48
- const { elementReferencesToCalculate, elementReferenceToTarget, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({
49
- settings,
50
- });
51
- const uniqueRenderers = (0, uniquify_renderers_1.uniquifyRenderers)((_a = settings.renderers) !== null && _a !== void 0 ? _a : []);
52
- const ufgClient = await eyes.core.getUFGClient({
53
- settings: {
54
- ...eyes.test.ufgServer,
55
- eyesServerUrl: eyes.test.eyesServer.eyesServerUrl,
56
- apiKey: eyes.test.eyesServer.apiKey,
57
- },
58
- logger,
59
- });
60
- let snapshots;
61
- let snapshotUrl;
62
- let snapshotTitle;
63
- let userAgent;
64
- let regionToTarget;
65
- let scrollRootSelector;
66
- let selectorsToCalculate;
67
- const driver = spec && (0, driver_1.isDriver)(target, spec)
68
- ? await (0, driver_1.makeDriver)({ spec, driver: target, reset: target === defaultTarget, logger })
69
- : null;
70
- if (driver) {
71
- const environment = await driver.getEnvironment();
72
- if (uniqueRenderers.length === 0) {
73
- if (environment.isWeb) {
74
- const viewportSize = await driver.getViewportSize();
75
- uniqueRenderers.push({ name: 'chrome', ...viewportSize });
76
- }
77
- else {
78
- // TODO add default nmg renderers
79
- }
80
- }
81
- let cleanupGeneratedSelectors;
82
- if (environment.isWeb) {
83
- userAgent = await driver.getUserAgentLegacy();
84
- const generated = await (0, generate_safe_selectors_1.generateSafeSelectors)({
85
- context: driver.currentContext,
86
- elementReferences: [
87
- ...(elementReferenceToTarget ? [elementReferenceToTarget] : []),
88
- ...(settings.scrollRootElement ? [settings.scrollRootElement] : []),
89
- ...elementReferencesToCalculate,
90
- ],
91
- });
92
- cleanupGeneratedSelectors = generated.cleanupGeneratedSelectors;
93
- selectorsToCalculate = generated.selectors;
94
- if (elementReferenceToTarget) {
95
- if (!((_b = selectorsToCalculate[0]) === null || _b === void 0 ? void 0 : _b.safeSelector))
96
- throw new Error('Target element not found');
97
- regionToTarget = selectorsToCalculate[0].safeSelector;
98
- selectorsToCalculate = selectorsToCalculate.slice(1);
99
- }
100
- if (settings.scrollRootElement) {
101
- scrollRootSelector = (_c = selectorsToCalculate[0].safeSelector) !== null && _c !== void 0 ? _c : undefined;
102
- selectorsToCalculate = selectorsToCalculate.slice(1);
103
- }
104
- }
105
- else {
106
- regionToTarget = (0, driver_1.isSelector)(elementReferenceToTarget)
107
- ? (_e = (_d = spec === null || spec === void 0 ? void 0 : spec.untransformSelector) === null || _d === void 0 ? void 0 : _d.call(spec, settings.scrollRootElement)) !== null && _e !== void 0 ? _e : undefined
108
- : undefined;
109
- scrollRootSelector = (0, driver_1.isSelector)(settings.scrollRootElement)
110
- ? (_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
111
- : undefined;
112
- }
113
- const currentContext = driver.currentContext;
114
- const snapshotOptions = {
115
- settings: {
116
- ...eyes.test.eyesServer,
117
- waitBeforeCapture: settings.waitBeforeCapture,
118
- disableBrowserFetching: settings.disableBrowserFetching,
119
- layoutBreakpoints: settings.layoutBreakpoints,
120
- renderers: uniqueRenderers,
121
- skipResources: ufgClient.getCachedResourceUrls(),
122
- },
123
- hooks: {
124
- async beforeSnapshots() {
125
- if (settings.lazyLoad && environment.isWeb) {
126
- await (0, wait_for_lazy_load_1.waitForLazyLoad)({
127
- context: driver.currentContext,
128
- settings: settings.lazyLoad !== true ? settings.lazyLoad : {},
129
- logger,
130
- });
131
- }
132
- },
133
- },
134
- provides: {
135
- getChromeEmulationDevices: ufgClient.getChromeEmulationDevices,
136
- getIOSDevices: ufgClient.getIOSDevices,
137
- },
138
- };
139
- if (environment.isWeb) {
140
- snapshots = await (0, take_dom_snapshots_1.takeDomSnapshots)({ driver, ...snapshotOptions, logger });
141
- }
142
- else {
143
- const nmlClient = await eyes.core.getNMLClient({ config: eyes.test.eyesServer, driver, logger });
144
- snapshots = (await nmlClient.takeSnapshots({ ...snapshotOptions, logger }));
145
- }
146
- await currentContext.focus();
147
- snapshotUrl = await driver.getUrl();
148
- snapshotTitle = await driver.getTitle();
149
- await (cleanupGeneratedSelectors === null || cleanupGeneratedSelectors === void 0 ? void 0 : cleanupGeneratedSelectors());
150
- }
151
- else {
152
- snapshots = !utils.types.isArray(target) ? Array(uniqueRenderers.length).fill(target) : target;
153
- snapshotUrl = utils.types.has(snapshots[0], 'url') ? snapshots[0].url : undefined;
154
- }
155
- regionToTarget !== null && regionToTarget !== void 0 ? regionToTarget : (regionToTarget = (_h = elementReferenceToTarget) !== null && _h !== void 0 ? _h : settings.region);
156
- selectorsToCalculate !== null && selectorsToCalculate !== void 0 ? selectorsToCalculate : (selectorsToCalculate = elementReferencesToCalculate.map(selector => ({
157
- originalSelector: selector,
158
- safeSelector: selector,
159
- })));
160
- const promises = uniqueRenderers.map(async ({ properties, ...renderer }, index) => {
161
- const rendererLogger = logger.extend({ tags: [`renderer-${utils.general.shortid()}`] });
162
- if (utils.types.has(renderer, 'name') && renderer.name === 'edge') {
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
- rendererLogger.console.log(message);
165
- }
166
- try {
167
- if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
168
- rendererLogger.warn('Command "check" was aborted before rendering');
169
- throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
170
- }
171
- const { cookies, ...snapshot } = snapshots[index];
172
- if (utils.types.has(renderer, 'iosDeviceInfo') || utils.types.has(renderer, 'androidDeviceInfo')) {
173
- renderer.type = utils.types.has(snapshot, 'cdt') ? 'web' : 'native';
174
- }
175
- const renderTargetPromise = ufgClient.createRenderTarget({
176
- snapshot,
177
- settings: {
178
- renderer,
179
- referer: snapshotUrl,
180
- cookies,
181
- proxy: eyes.test.eyesServer.proxy,
182
- autProxy: settings.autProxy,
183
- userAgent,
184
- },
185
- logger: rendererLogger,
186
- });
187
- const [baseEyes] = await eyes.getBaseEyes({ settings: { renderer, properties }, logger });
188
- try {
189
- if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
190
- rendererLogger.warn('Command "check" was aborted before rendering');
191
- throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
192
- }
193
- else if (!baseEyes.running) {
194
- rendererLogger.warn(`Render on environment with id "${baseEyes.test.renderEnvironmentId}" was aborted during one of the previous steps`);
195
- throw new abort_error_1.AbortError(`Render on environment with id "${baseEyes.test.renderEnvironmentId}" was aborted during one of the previous steps`);
196
- }
197
- const renderTarget = await renderTargetPromise;
198
- if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
199
- rendererLogger.warn('Command "check" was aborted before rendering');
200
- throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
201
- }
202
- else if (!baseEyes.running) {
203
- rendererLogger.warn(`Render on environment with id "${baseEyes.test.renderEnvironmentId}" was aborted during one of the previous steps`);
204
- throw new abort_error_1.AbortError(`Render on environment with id "${baseEyes.test.renderEnvironmentId}" was aborted during one of the previous steps`);
205
- }
206
- const { renderId, selectorRegions, ...baseTarget } = await ufgClient.render({
207
- target: renderTarget,
208
- settings: {
209
- ...settings,
210
- region: regionToTarget,
211
- scrollRootElement: scrollRootSelector,
212
- selectorsToCalculate: selectorsToCalculate.flatMap(({ safeSelector }) => safeSelector !== null && safeSelector !== void 0 ? safeSelector : []),
213
- includeFullPageSize: !!settings.pageId,
214
- renderer,
215
- renderEnvironmentId: baseEyes.test.renderEnvironmentId,
216
- uploadUrl: baseEyes.test.uploadUrl,
217
- stitchingServiceUrl: baseEyes.test.stitchingServiceUrl,
218
- },
219
- signal,
220
- logger: rendererLogger,
221
- });
222
- let offset = 0;
223
- const baseSettings = getBaseCheckSettings({
224
- calculatedRegions: selectorsToCalculate.map(({ originalSelector, safeSelector }) => ({
225
- selector: originalSelector !== null && originalSelector !== void 0 ? originalSelector : undefined,
226
- regions: safeSelector ? selectorRegions[offset++] : [],
227
- })),
228
- });
229
- baseSettings.renderId = renderId;
230
- baseTarget.source = snapshotUrl;
231
- baseTarget.name = snapshotTitle;
232
- if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
233
- rendererLogger.warn('Command "check" was aborted after rendering');
234
- throw new abort_error_1.AbortError('Command "check" was aborted after rendering');
235
- }
236
- else if (!baseEyes.running) {
237
- rendererLogger.warn(`Render on environment with id "${baseEyes.test.renderEnvironmentId}" was aborted during one of the previous steps`);
238
- throw new abort_error_1.AbortError(`Render on environment with id "${baseEyes.test.renderEnvironmentId}" was aborted during one of the previous steps`);
239
- }
240
- await baseEyes.checkAndClose({
241
- target: { ...baseTarget, isTransformed: true },
242
- settings: baseSettings,
243
- logger: rendererLogger,
244
- });
245
- return { eyes: baseEyes, renderer };
246
- }
247
- catch (error) {
248
- rendererLogger.error(`Render on environment with id "${baseEyes.test.renderEnvironmentId}" failed due to an error`, error);
249
- await baseEyes.abort({ logger: rendererLogger });
250
- error.info = { eyes: baseEyes };
251
- throw error;
252
- }
253
- }
254
- catch (error) {
255
- rendererLogger.error(`Renderer with id ${renderer.id} failed before rendering started due to an error`, error);
256
- error.info = { ...error.info, userTestId: eyes.test.userTestId, renderer };
257
- throw error;
258
- }
259
- });
260
- uniqueRenderers.forEach((renderer, index) => {
261
- var _a;
262
- const key = JSON.stringify(renderer);
263
- storage.set(key, [...((_a = storage.get(key)) !== null && _a !== void 0 ? _a : []), promises[index]]);
264
- });
265
- };
266
- }
267
- exports.makeCheckAndClose = makeCheckAndClose;