@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.
Files changed (190) hide show
  1. package/dist/abort.js +40 -0
  2. package/dist/automation/abort.js +47 -0
  3. package/dist/automation/close.js +52 -0
  4. package/dist/automation/extract-text.js +3 -2
  5. package/dist/automation/get-nml-client.js +36 -0
  6. package/dist/automation/get-results.js +21 -0
  7. package/dist/automation/get-viewport-size.js +3 -2
  8. package/dist/automation/locate-text.js +3 -2
  9. package/dist/automation/locate.js +3 -2
  10. package/dist/automation/set-viewport-size.js +3 -2
  11. package/dist/automation/types.js +0 -15
  12. package/dist/automation/utils/report-kobiton.js +21 -0
  13. package/dist/automation/utils/take-screenshot.js +4 -2
  14. package/dist/automation/utils/to-base-check-settings.js +69 -7
  15. package/dist/automation/utils/to-environment-key.js +31 -0
  16. package/dist/automation/utils/uniquify-environments.js +27 -0
  17. package/dist/automation/utils/wait-for-lazy-load.js +9 -8
  18. package/dist/autonomous/core.js +25 -0
  19. package/dist/autonomous/create-render-results.js +49 -0
  20. package/dist/autonomous/create-render-target.js +19 -0
  21. package/dist/autonomous/get-render-results.js +55 -0
  22. package/dist/autonomous/open-eyes.js +13 -0
  23. package/dist/autonomous/start-renders.js +67 -0
  24. package/dist/autonomous/take-snapshots.js +16 -0
  25. package/dist/autonomous/types.js +17 -0
  26. package/dist/check-and-close.js +32 -15
  27. package/dist/check.js +33 -30
  28. package/dist/classic/check-and-close.js +189 -46
  29. package/dist/classic/check.js +319 -60
  30. package/dist/classic/core.js +6 -5
  31. package/dist/classic/get-base-eyes.js +27 -7
  32. package/dist/classic/open-eyes.js +47 -57
  33. package/dist/classic/utils/extract-default-environments.js +73 -0
  34. package/dist/classic/utils/take-dom-capture.js +2 -1
  35. package/dist/classic/utils/take-screenshots.js +63 -0
  36. package/dist/cli/cli.js +99 -3
  37. package/dist/close-batch.js +8 -7
  38. package/dist/close.js +32 -4
  39. package/dist/core.js +43 -9
  40. package/dist/delete-test.js +9 -7
  41. package/dist/extract-text.js +9 -5
  42. package/dist/get-account-info.js +36 -0
  43. package/dist/get-ec-client.js +3 -2
  44. package/dist/get-eyes-results.js +29 -3
  45. package/dist/get-manager-results.js +52 -18
  46. package/dist/get-typed-eyes.js +5 -6
  47. package/dist/index.js +3 -3
  48. package/dist/lang.js +31 -0
  49. package/dist/locate-text.js +7 -5
  50. package/dist/locate.js +7 -5
  51. package/dist/make-manager.js +34 -11
  52. package/dist/offline/merge-configs.js +42 -0
  53. package/dist/offline/run-offline-snapshots.js +341 -0
  54. package/dist/open-eyes.js +192 -48
  55. package/dist/run-offline-snapshots.js +336 -0
  56. package/dist/troubleshoot/check-network.js +5 -1
  57. package/dist/troubleshoot/eyes.js +3 -3
  58. package/dist/troubleshoot/logs.js +76 -0
  59. package/dist/troubleshoot/ufg.js +23 -16
  60. package/dist/ufg/check-and-close.js +109 -174
  61. package/dist/ufg/check.js +111 -178
  62. package/dist/ufg/core.js +10 -8
  63. package/dist/ufg/create-render-target-from-snapshot.js +21 -0
  64. package/dist/ufg/get-base-eyes.js +40 -12
  65. package/dist/ufg/get-ufg-client.js +13 -4
  66. package/dist/ufg/open-eyes.js +33 -57
  67. package/dist/ufg/take-snapshots.js +92 -0
  68. package/dist/ufg/utils/extract-default-environment.js +22 -0
  69. package/dist/ufg/utils/generate-safe-selectors.js +9 -32
  70. package/dist/ufg/utils/take-dom-snapshot.js +61 -26
  71. package/dist/ufg/utils/take-dom-snapshots.js +99 -68
  72. package/dist/ufg/utils/to-generated-selectors.js +67 -0
  73. package/dist/ufg/utils/to-safe-check-settings.js +69 -0
  74. package/dist/universal/core-server.js +53 -22
  75. package/dist/universal/core.js +23 -6
  76. package/dist/universal/history.js +9 -0
  77. package/dist/universal/spec-driver.js +46 -50
  78. package/dist/{ufg/get-nml-client.js → utils/ensure-offline-folder.js} +14 -13
  79. package/dist/utils/extract-branching-timestamp.js +56 -0
  80. package/dist/utils/extract-current-commit.js +72 -0
  81. package/dist/utils/extract-git-info.js +168 -0
  82. package/dist/utils/extract-start-info.js +100 -0
  83. package/dist/utils/extract-test-environment.js +70 -0
  84. package/dist/utils/memory-usage-logging.js +46 -0
  85. package/dist/utils/populate-eyes-server-settings.js +41 -0
  86. package/dist/utils/validate-sdk-version.js +89 -0
  87. package/package.json +3 -3
  88. package/types/abort.d.ts +13 -0
  89. package/types/automation/abort.d.ts +16 -0
  90. package/types/automation/close.d.ts +14 -0
  91. package/types/automation/extract-text.d.ts +1 -1
  92. package/types/automation/get-nml-client.d.ts +16 -0
  93. package/types/automation/get-results.d.ts +11 -0
  94. package/types/automation/get-viewport-size.d.ts +1 -1
  95. package/types/automation/locate-text.d.ts +1 -1
  96. package/types/automation/locate.d.ts +1 -1
  97. package/types/automation/set-viewport-size.d.ts +1 -1
  98. package/types/automation/types.d.ts +107 -16
  99. package/types/automation/utils/report-kobiton.d.ts +12 -0
  100. package/types/automation/utils/take-screenshot.d.ts +5 -2
  101. package/types/automation/utils/to-base-check-settings.d.ts +13 -3
  102. package/types/automation/utils/to-environment-key.d.ts +2 -0
  103. package/types/automation/utils/uniquify-environments.d.ts +2 -0
  104. package/types/automation/utils/wait-for-lazy-load.d.ts +4 -8
  105. package/types/autonomous/core.d.ts +19 -0
  106. package/types/autonomous/create-render-results.d.ts +10 -0
  107. package/types/autonomous/create-render-target.d.ts +12 -0
  108. package/types/autonomous/get-render-results.d.ts +12 -0
  109. package/types/autonomous/open-eyes.d.ts +13 -0
  110. package/types/autonomous/start-renders.d.ts +12 -0
  111. package/types/autonomous/take-snapshots.d.ts +15 -0
  112. package/types/autonomous/types.d.ts +57 -0
  113. package/types/check-and-close.d.ts +3 -3
  114. package/types/check.d.ts +3 -3
  115. package/types/classic/check-and-close.d.ts +12 -5
  116. package/types/classic/check.d.ts +6 -3
  117. package/types/classic/core.d.ts +8 -2
  118. package/types/classic/get-base-eyes.d.ts +4 -8
  119. package/types/classic/open-eyes.d.ts +3 -4
  120. package/types/classic/types.d.ts +4 -5
  121. package/types/classic/utils/extract-default-environments.d.ts +9 -0
  122. package/types/classic/utils/take-dom-capture.d.ts +8 -0
  123. package/types/classic/utils/take-screenshots.d.ts +18 -0
  124. package/types/close-batch.d.ts +1 -1
  125. package/types/close.d.ts +3 -2
  126. package/types/core.d.ts +11 -2
  127. package/types/delete-test.d.ts +1 -1
  128. package/types/extract-text.d.ts +1 -1
  129. package/types/get-account-info.d.ts +11 -0
  130. package/types/get-ec-client.d.ts +1 -1
  131. package/types/get-eyes-results.d.ts +1 -1
  132. package/types/get-manager-results.d.ts +1 -1
  133. package/types/get-typed-eyes.d.ts +2 -4
  134. package/types/index.d.ts +2 -1
  135. package/types/lang.d.ts +32 -0
  136. package/types/locate-text.d.ts +1 -1
  137. package/types/locate.d.ts +1 -1
  138. package/types/make-manager.d.ts +11 -2
  139. package/types/offline/merge-configs.d.ts +1 -0
  140. package/types/offline/run-offline-snapshots.d.ts +11 -0
  141. package/types/open-eyes.d.ts +11 -2
  142. package/types/run-offline-snapshots.d.ts +6 -0
  143. package/types/troubleshoot/logs.d.ts +25 -0
  144. package/types/types.d.ts +19 -11
  145. package/types/ufg/check-and-close.d.ts +18 -10
  146. package/types/ufg/check.d.ts +5 -4
  147. package/types/ufg/core.d.ts +8 -5
  148. package/types/ufg/create-render-target-from-snapshot.d.ts +8 -0
  149. package/types/ufg/get-base-eyes.d.ts +4 -9
  150. package/types/ufg/get-ufg-client.d.ts +6 -3
  151. package/types/ufg/open-eyes.d.ts +3 -4
  152. package/types/ufg/take-snapshots.d.ts +17 -0
  153. package/types/ufg/types.d.ts +39 -39
  154. package/types/ufg/utils/extract-default-environment.d.ts +5 -0
  155. package/types/ufg/utils/generate-safe-selectors.d.ts +3 -12
  156. package/types/ufg/utils/take-dom-snapshot.d.ts +16 -21
  157. package/types/ufg/utils/take-dom-snapshots.d.ts +14 -10
  158. package/types/ufg/utils/to-generated-selectors.d.ts +34 -0
  159. package/types/ufg/utils/to-safe-check-settings.d.ts +22 -0
  160. package/types/universal/core-server.d.ts +6 -2
  161. package/types/universal/core.d.ts +6 -2
  162. package/types/universal/spec-driver.d.ts +6 -5
  163. package/types/universal/types.d.ts +59 -51
  164. package/types/utils/ensure-offline-folder.d.ts +1 -0
  165. package/types/utils/extract-branching-timestamp.d.ts +16 -0
  166. package/types/utils/extract-current-commit.d.ts +24 -0
  167. package/types/utils/extract-git-info.d.ts +59 -0
  168. package/types/utils/extract-start-info.d.ts +29 -0
  169. package/types/utils/extract-test-environment.d.ts +2 -0
  170. package/types/utils/memory-usage-logging.d.ts +7 -0
  171. package/types/utils/populate-eyes-server-settings.d.ts +2 -0
  172. package/types/utils/validate-sdk-version.d.ts +42 -0
  173. package/CHANGELOG.md +0 -222
  174. package/dist/classic/abort.js +0 -22
  175. package/dist/classic/close.js +0 -22
  176. package/dist/ufg/abort.js +0 -32
  177. package/dist/ufg/close.js +0 -37
  178. package/dist/ufg/get-results.js +0 -27
  179. package/dist/ufg/utils/take-vhses.js +0 -153
  180. package/dist/ufg/utils/uniquify-renderers.js +0 -27
  181. package/dist/utils/extract-ci-provider.js +0 -31
  182. package/types/classic/abort.d.ts +0 -16
  183. package/types/classic/close.d.ts +0 -16
  184. package/types/ufg/abort.d.ts +0 -21
  185. package/types/ufg/close.d.ts +0 -19
  186. package/types/ufg/get-nml-client.d.ts +0 -17
  187. package/types/ufg/get-results.d.ts +0 -16
  188. package/types/ufg/utils/take-vhses.d.ts +0 -17
  189. package/types/ufg/utils/uniquify-renderers.d.ts +0 -2
  190. package/types/utils/extract-ci-provider.d.ts +0 -1
@@ -28,239 +28,174 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.makeCheckAndClose = void 0;
30
30
  const driver_1 = require("@applitools/driver");
31
- const take_dom_snapshots_1 = require("./utils/take-dom-snapshots");
32
- const take_vhses_1 = require("./utils/take-vhses");
33
- const wait_for_lazy_load_1 = require("../automation/utils/wait-for-lazy-load");
34
31
  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");
32
+ const uniquify_environments_1 = require("../automation/utils/uniquify-environments");
33
+ const to_environment_key_1 = require("../automation/utils/to-environment-key");
37
34
  const abort_error_1 = require("../errors/abort-error");
38
35
  const utils = __importStar(require("@applitools/utils"));
36
+ const lang = __importStar(require("../lang"));
39
37
  const chalk_1 = __importDefault(require("chalk"));
40
- function makeCheckAndClose({ eyes, target: defaultTarget, spec, signal, logger: defaultLogger, }) {
41
- return async function checkAndClose({ target = defaultTarget, settings = {}, logger = defaultLogger, }) {
42
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
38
+ const take_snapshots_1 = require("./take-snapshots");
39
+ const create_render_target_from_snapshot_1 = require("./create-render-target-from-snapshot");
40
+ function makeCheckAndClose({ eyes, target: defaultTarget, environments: defaultEnvironments = [], spec, signal, logger: mainLogger, }) {
41
+ return async function checkAndClose({ target = defaultTarget, settings = {}, logger = mainLogger, } = {}) {
42
+ var _a;
43
+ logger = logger.extend(mainLogger);
43
44
  logger.log('Command "checkAndClose" is called with settings', settings);
44
45
  if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
45
46
  logger.warn('Command "checkAndClose" was called after test was already aborted');
46
47
  throw new abort_error_1.AbortError('Command "checkAndClose" was called after test was already aborted');
47
48
  }
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 : []);
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
- config: { ...eyes.test.ufgServer },
54
- concurrency: uniqueRenderers.length || 5,
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 snapshotUrl;
59
- let snapshotTitle;
60
- let userAgent;
61
- let regionToTarget;
62
- let scrollRootSelector;
63
- let selectorsToCalculate;
64
- const driver = spec && (0, driver_1.isDriver)(target, spec) ? await (0, driver_1.makeDriver)({ spec, driver: target, logger }) : null;
65
- if (driver) {
66
- const environment = await driver.getEnvironment();
67
- if (uniqueRenderers.length === 0) {
68
- if (environment.isWeb) {
69
- const viewportSize = await driver.getViewportSize();
70
- uniqueRenderers.push({ name: 'chrome', ...viewportSize });
71
- }
72
- else {
73
- // TODO add default nmg renderers
74
- }
75
- }
76
- let cleanupGeneratedSelectors;
77
- if (environment.isWeb) {
78
- userAgent = (_b = (await driver.getUserAgentLegacy())) !== null && _b !== void 0 ? _b : undefined;
79
- const generated = await (0, generate_safe_selectors_1.generateSafeSelectors)({
80
- context: driver.currentContext,
81
- elementReferences: [
82
- ...(elementReferenceToTarget ? [elementReferenceToTarget] : []),
83
- ...(settings.scrollRootElement ? [settings.scrollRootElement] : []),
84
- ...elementReferencesToCalculate,
85
- ],
86
- });
87
- cleanupGeneratedSelectors = generated.cleanupGeneratedSelectors;
88
- selectorsToCalculate = generated.selectors;
89
- if (elementReferenceToTarget) {
90
- if (!((_c = selectorsToCalculate[0]) === null || _c === void 0 ? void 0 : _c.safeSelector))
91
- throw new Error('Target element not found');
92
- regionToTarget = selectorsToCalculate[0].safeSelector;
93
- selectorsToCalculate = selectorsToCalculate.slice(1);
94
- }
95
- if (settings.scrollRootElement) {
96
- scrollRootSelector = (_d = selectorsToCalculate[0].safeSelector) !== null && _d !== void 0 ? _d : undefined;
97
- selectorsToCalculate = selectorsToCalculate.slice(1);
98
- }
99
- }
100
- else {
101
- regionToTarget = (0, driver_1.isSelector)(elementReferenceToTarget)
102
- ? (_f = (_e = spec === null || spec === void 0 ? void 0 : spec.untransformSelector) === null || _e === void 0 ? void 0 : _e.call(spec, settings.scrollRootElement)) !== null && _f !== void 0 ? _f : undefined
103
- : undefined;
104
- scrollRootSelector = (0, driver_1.isSelector)(settings.scrollRootElement)
105
- ? (_h = (_g = spec === null || spec === void 0 ? void 0 : spec.untransformSelector) === null || _g === void 0 ? void 0 : _g.call(spec, settings.scrollRootElement)) !== null && _h !== void 0 ? _h : undefined
106
- : undefined;
107
- }
108
- const currentContext = driver.currentContext;
109
- const snapshotOptions = {
110
- settings: {
111
- ...eyes.test.server,
112
- waitBeforeCapture: settings.waitBeforeCapture,
113
- disableBrowserFetching: settings.disableBrowserFetching,
114
- layoutBreakpoints: settings.layoutBreakpoints,
115
- renderers: uniqueRenderers,
116
- skipResources: ufgClient.getCachedResourceUrls(),
117
- },
118
- hooks: {
119
- async beforeSnapshots() {
120
- if (settings.lazyLoad && environment.isWeb) {
121
- await (0, wait_for_lazy_load_1.waitForLazyLoad)({
122
- context: driver.currentContext,
123
- settings: settings.lazyLoad !== true ? settings.lazyLoad : {},
124
- logger,
125
- });
126
- }
127
- },
128
- },
129
- provides: {
130
- getChromeEmulationDevices: ufgClient.getChromeEmulationDevices,
131
- getIOSDevices: ufgClient.getIOSDevices,
132
- },
133
- };
134
- if (environment.isWeb) {
135
- snapshots = await (0, take_dom_snapshots_1.takeDomSnapshots)({ driver, ...snapshotOptions, logger });
136
- }
137
- else {
138
- const nmlClient = await eyes.core.getNMLClient({ config: eyes.test.server, driver, logger });
139
- if (nmlClient) {
140
- snapshots = (await nmlClient.takeSnapshots({ ...snapshotOptions, logger }));
141
- }
142
- else {
143
- snapshots = await (0, take_vhses_1.takeVHSes)({ driver, ...snapshotOptions, logger });
144
- }
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());
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
+ });
150
69
  }
151
70
  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;
71
+ // TODO (amit)
72
+ snapshots = !utils.types.isArray(target) ? Array(uniqueEnvironments.length).fill(target) : target;
154
73
  }
155
- regionToTarget !== null && regionToTarget !== void 0 ? regionToTarget : (regionToTarget = (_j = elementReferenceToTarget) !== null && _j !== void 0 ? _j : 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 (renderer, index) => {
161
- if (utils.types.has(renderer, 'name') && renderer.name === 'edge') {
162
- 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.`);
163
- 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));
164
81
  }
165
82
  try {
166
83
  if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
167
- logger.warn('Command "check" was aborted before rendering');
84
+ environmentLogger.warn('Command "check" was aborted before rendering');
168
85
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
169
86
  }
170
- const { cookies, ...snapshot } = snapshots[index];
171
- const snapshotType = utils.types.has(snapshot, 'cdt') ? 'web' : 'native';
172
- const renderTargetPromise = ufgClient.createRenderTarget({
173
- snapshot,
174
- settings: {
175
- renderer,
176
- referer: snapshotUrl,
177
- cookies,
178
- proxy: eyes.test.server.proxy,
179
- autProxy: settings.autProxy,
180
- userAgent,
181
- },
182
- });
183
- 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 });
184
92
  try {
185
93
  if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
186
- logger.warn('Command "check" was aborted before rendering');
94
+ environmentLogger.warn('Command "check" was aborted before rendering');
187
95
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
188
96
  }
189
97
  else if (!baseEyes.running) {
190
- logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
191
- throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
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`);
192
100
  }
193
101
  const renderTarget = await renderTargetPromise;
194
102
  if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
195
- logger.warn('Command "check" was aborted before rendering');
103
+ environmentLogger.warn('Command "check" was aborted before rendering');
196
104
  throw new abort_error_1.AbortError('Command "check" was aborted before rendering');
197
105
  }
198
106
  else if (!baseEyes.running) {
199
- logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
200
- throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
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`);
201
109
  }
110
+ const { elementReferences: selectors, getBaseCheckSettings } = (0, to_base_check_settings_1.toBaseCheckSettings)({
111
+ settings: snapshot.settings,
112
+ });
202
113
  const { renderId, selectorRegions, ...baseTarget } = await ufgClient.render({
203
114
  target: renderTarget,
204
115
  settings: {
205
- ...settings,
206
- region: regionToTarget,
207
- scrollRootElement: scrollRootSelector,
208
- selectorsToCalculate: selectorsToCalculate.flatMap(({ safeSelector }) => safeSelector !== null && safeSelector !== void 0 ? safeSelector : []),
209
- includeFullPageSize: Boolean(settings.pageId),
210
- type: snapshotType,
211
- renderer,
212
- rendererUniqueId: baseEyes.test.rendererUniqueId,
213
- 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,
214
124
  },
215
125
  signal,
126
+ logger: environmentLogger,
216
127
  });
217
- let offset = 0;
218
128
  const baseSettings = getBaseCheckSettings({
219
- calculatedRegions: selectorsToCalculate.map(({ originalSelector, safeSelector }) => ({
220
- selector: originalSelector !== null && originalSelector !== void 0 ? originalSelector : undefined,
221
- regions: safeSelector ? selectorRegions[offset++] : [],
222
- })),
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
+ }),
223
135
  });
224
136
  baseSettings.renderId = renderId;
225
- baseTarget.source = snapshotUrl;
226
- baseTarget.name = snapshotTitle;
137
+ baseTarget.source = snapshot.url;
138
+ baseTarget.name = snapshot.title;
227
139
  if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
228
- logger.warn('Command "check" was aborted after rendering');
140
+ environmentLogger.warn('Command "check" was aborted after rendering');
229
141
  throw new abort_error_1.AbortError('Command "check" was aborted after rendering');
230
142
  }
231
143
  else if (!baseEyes.running) {
232
- logger.warn(`Renderer with id ${baseEyes.test.rendererId} was aborted during one of the previous steps`);
233
- throw new abort_error_1.AbortError(`Renderer with id "${baseEyes.test.rendererId}" was aborted during one of the previous steps`);
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`);
146
+ }
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
+ });
234
171
  }
235
- const [result] = await baseEyes.checkAndClose({
172
+ await baseEyes.checkAndClose({
236
173
  target: { ...baseTarget, isTransformed: true },
237
174
  settings: baseSettings,
238
- logger,
175
+ logger: environmentLogger,
239
176
  });
240
- return { ...result, eyes: baseEyes, renderer };
241
177
  }
242
178
  catch (error) {
243
- await baseEyes.abort();
244
- error.info = { eyes: baseEyes };
245
- 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 } });
246
182
  }
247
183
  }
248
184
  catch (error) {
249
- error.info = { ...error.info, userTestId: eyes.test.userTestId, renderer };
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 };
250
187
  throw error;
251
188
  }
252
189
  });
253
- return Promise.all(promises.map(async (promise) => {
254
- var _a, _b;
255
- try {
256
- const result = await promise;
257
- return { ...result, userTestId: eyes.test.userTestId };
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);
258
196
  }
259
- catch (error) {
260
- await ((_b = (_a = error.info) === null || _a === void 0 ? void 0 : _a.eyes) === null || _b === void 0 ? void 0 : _b.abort({ logger }));
261
- throw error;
262
- }
263
- }));
197
+ item.jobs.push(promises[index]);
198
+ });
264
199
  };
265
200
  }
266
201
  exports.makeCheckAndClose = makeCheckAndClose;