@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
@@ -0,0 +1,72 @@
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.extractLatestCommitInfo = exports.cacheKey = void 0;
30
+ const utils = __importStar(require("@applitools/utils"));
31
+ const fs_1 = __importDefault(require("fs"));
32
+ const logger_1 = require("@applitools/logger");
33
+ exports.cacheKey = 'extract-current-commit';
34
+ exports.extractLatestCommitInfo = utils.general.cachify(extractCommitInfo, () => exports.cacheKey);
35
+ async function extractGithubPullRequestLastCommitSha() {
36
+ var _a, _b, _c;
37
+ if (((_a = process.env.GITHUB_EVENT_NAME) === null || _a === void 0 ? void 0 : _a.startsWith('pull_request')) && process.env.GITHUB_EVENT_PATH) {
38
+ const event = await fs_1.default.promises.readFile(process.env.GITHUB_EVENT_PATH, 'utf-8').then(JSON.parse);
39
+ return (_c = (_b = event === null || event === void 0 ? void 0 : event.pull_request) === null || _b === void 0 ? void 0 : _b.head) === null || _c === void 0 ? void 0 : _c.sha;
40
+ }
41
+ }
42
+ async function extractCommitInfo({ execOptions, logger = (0, logger_1.makeLogger)(), }) {
43
+ let result;
44
+ try {
45
+ const githubPullRequestLastCommitSha = await extractGithubPullRequestLastCommitSha();
46
+ await executeWithLog(`git fetch origin --depth=2`);
47
+ result = await executeWithLog(`git log ${githubPullRequestLastCommitSha !== null && githubPullRequestLastCommitSha !== void 0 ? githubPullRequestLastCommitSha : ''} -1 --format="%aI %H"`, {
48
+ execOptions,
49
+ logger,
50
+ });
51
+ if (result.stderr) {
52
+ logger.log(`Error during extracting commit information from git`, result.stderr);
53
+ }
54
+ else {
55
+ const [timestamp, sha] = result.stdout.trim().split(' ');
56
+ return { timestamp, sha };
57
+ }
58
+ }
59
+ catch (err) {
60
+ logger.log(`Error during parsing commit hash from git`, err, result === null || result === void 0 ? void 0 : result.stdout);
61
+ }
62
+ }
63
+ async function executeWithLog(command, { execOptions, logger = (0, logger_1.makeLogger)() } = {
64
+ execOptions: {},
65
+ logger: (0, logger_1.makeLogger)(),
66
+ }) {
67
+ logger.log(`executing command: ${command}`);
68
+ const result = await utils.process.execute(command, execOptions);
69
+ if (result.stderr && result.code)
70
+ logger.log(`exit code: ${result.code}, stderr: ${result.stderr}`);
71
+ return result;
72
+ }
@@ -0,0 +1,168 @@
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.isISODate = exports.extractBranchingTimestamp = exports.extractBuildIdFromCI = exports.extractGitRepo = exports.extractGitBranch = exports.extractLatestCommitInfo = exports.cacheKey = void 0;
30
+ const utils = __importStar(require("@applitools/utils"));
31
+ const fs_1 = __importDefault(require("fs"));
32
+ const path_1 = __importDefault(require("path"));
33
+ const logger_1 = require("@applitools/logger");
34
+ exports.cacheKey = 'default';
35
+ exports.extractLatestCommitInfo = utils.general.cachify(async function ({ execOptions, logger = (0, logger_1.makeLogger)(), }) {
36
+ let result;
37
+ try {
38
+ const githubPullRequestLastCommitSha = await extractGithubPullRequestLastCommitSha();
39
+ result = await executeWithLog(`git log ${githubPullRequestLastCommitSha !== null && githubPullRequestLastCommitSha !== void 0 ? githubPullRequestLastCommitSha : ''} -1 --format="%aI %H"`, {
40
+ execOptions,
41
+ logger,
42
+ });
43
+ if (result.stderr) {
44
+ logger.log(`Error during extracting commit information from git`, result.stderr);
45
+ }
46
+ else {
47
+ const [timestamp, sha] = result.stdout.trim().split(' ');
48
+ if (isISODate(timestamp)) {
49
+ return { sha, timestamp };
50
+ }
51
+ else {
52
+ logger.log(`latestCommitInfo.timestamp is an invalid ISO date string: ${timestamp}`);
53
+ }
54
+ }
55
+ }
56
+ catch (err) {
57
+ logger.log(`Error during parsing commit hash from git`, err, result === null || result === void 0 ? void 0 : result.stdout);
58
+ }
59
+ async function extractGithubPullRequestLastCommitSha() {
60
+ var _a, _b, _c;
61
+ if (((_a = process.env.GITHUB_EVENT_NAME) === null || _a === void 0 ? void 0 : _a.startsWith('pull_request')) && process.env.GITHUB_EVENT_PATH) {
62
+ await executeWithLog(`git fetch origin --depth=2`, { execOptions, logger });
63
+ const event = await fs_1.default.promises.readFile(process.env.GITHUB_EVENT_PATH, 'utf-8').then(JSON.parse);
64
+ return (_c = (_b = event === null || event === void 0 ? void 0 : event.pull_request) === null || _b === void 0 ? void 0 : _b.head) === null || _c === void 0 ? void 0 : _c.sha;
65
+ }
66
+ }
67
+ }, () => exports.cacheKey);
68
+ exports.extractGitBranch = utils.general.cachify(async function ({ execOptions, logger = (0, logger_1.makeLogger)() }) {
69
+ if (process.env.GITHUB_HEAD_REF) {
70
+ return process.env.GITHUB_HEAD_REF;
71
+ }
72
+ if (process.env.GITHUB_REF) {
73
+ return process.env.GITHUB_REF.split('/')[2]; // refs/heads/<branch_name>
74
+ }
75
+ const result = await executeWithLog('git branch --show-current', { execOptions, logger });
76
+ if (result.stderr) {
77
+ logger.log(`Error during extracting current branch from git`, result.stderr);
78
+ }
79
+ else {
80
+ const branch = result.stdout.trim();
81
+ logger.log(`Extracted current git branch: "${branch}"`);
82
+ return branch;
83
+ }
84
+ }, () => exports.cacheKey);
85
+ exports.extractGitRepo = utils.general.cachify(async function ({ execOptions, logger = (0, logger_1.makeLogger)() }) {
86
+ const remotes = await extractRemotes();
87
+ logger.log(`Extracted remotes from git: ${remotes}`);
88
+ const remote = remotes.includes('origin') ? 'origin' : remotes[0];
89
+ const result = await executeWithLog(`git remote get-url ${remote}`, { execOptions, logger });
90
+ if (result.stderr) {
91
+ logger.log(`Error during extracting remote url from git`, result.stderr);
92
+ return {};
93
+ }
94
+ else {
95
+ const remoteUrl = result.stdout.trim();
96
+ logger.log(`Extracted url for git remote ${remote}: ${remoteUrl}`);
97
+ return extractRepoFromRemoteUrl(remoteUrl);
98
+ }
99
+ async function extractRemotes() {
100
+ const result = await executeWithLog('git remote show', { execOptions, logger });
101
+ if (result.stderr) {
102
+ logger.log(`Error during extracting remotes from git`, result.stderr);
103
+ return [];
104
+ }
105
+ else {
106
+ return result.stdout.trim().split(/\s+/);
107
+ }
108
+ }
109
+ function extractRepoFromRemoteUrl(remoteUrl) {
110
+ try {
111
+ const url = new URL(remoteUrl);
112
+ return { name: path_1.default.basename(url.pathname, '.git'), owner: path_1.default.dirname(url.pathname).replace(/^\//, '') };
113
+ }
114
+ catch (err) {
115
+ return { name: path_1.default.basename(remoteUrl, '.git'), owner: path_1.default.dirname(remoteUrl).replace(/^[^:]+:/, '') };
116
+ }
117
+ }
118
+ }, () => exports.cacheKey);
119
+ async function extractBuildIdFromCI() {
120
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
121
+ return ((_k = (_j = (_h = (_g = (_f = (_e = (_d = (_c = (_b = (_a = process.env.GITHUB_RUN_ID) !== null && _a !== void 0 ? _a : process.env.CI_JOB_ID) !== null && _b !== void 0 ? _b : process.env.CIRCLE_BUILD_NUM) !== null && _c !== void 0 ? _c : process.env.BUILD_BUILDID) !== null && _d !== void 0 ? _d : process.env.BITBUCKET_BUILD_NUMBER) !== null && _e !== void 0 ? _e : process.env.CODEBUILD_BUILD_ID) !== null && _f !== void 0 ? _f : process.env.BUILD_ID) !== null && _g !== void 0 ? _g : process.env.BUILD_NUMBER) !== null && _h !== void 0 ? _h : process.env.TRAVIS_BUILD_ID) !== null && _j !== void 0 ? _j : process.env.BUILDKITE_BUILD_ID) !== null && _k !== void 0 ? _k : process.env.BAMBOO // TODO: Bamboo
122
+ );
123
+ }
124
+ exports.extractBuildIdFromCI = extractBuildIdFromCI;
125
+ exports.extractBranchingTimestamp = utils.general.cachify(async function ({ branchName, parentBranchName, execOptions, logger = (0, logger_1.makeLogger)(), }) {
126
+ var _a;
127
+ logger = logger.extend({ tags: [`extract-branching-timestamp-${utils.general.shortid()}`] });
128
+ const command = `HASH=$(git merge-base ${branchName} ${parentBranchName}) && git show -q --format=%aI $HASH`;
129
+ let result = await executeWithLog(command, { execOptions, logger });
130
+ // both parent and current branches could be missing, that's why we have to iterate the missing branches check check twice
131
+ for (let i = 0; i < 2; i++) {
132
+ if (result.stderr) {
133
+ const [, missingBranch] = (_a = result.stderr.match(/Not a valid object name ([^\s]+)/)) !== null && _a !== void 0 ? _a : [];
134
+ if (missingBranch) {
135
+ result = await executeWithLog(`git fetch origin ${missingBranch}:${missingBranch} && ${command}`, {
136
+ execOptions,
137
+ logger,
138
+ });
139
+ }
140
+ }
141
+ }
142
+ if (!result.stdout) {
143
+ result = await executeWithLog(`git fetch origin --unshallow && ${command}`, { execOptions, logger });
144
+ }
145
+ const timestamp = result.stdout.replace(/\s/g, '');
146
+ if (isISODate(timestamp)) {
147
+ logger.log('git branching timestamp successfully extracted', timestamp);
148
+ return timestamp;
149
+ }
150
+ else {
151
+ logger.log(`Error during extracting merge timestamp: git branching timestamp is an invalid ISO date string: ${timestamp}. stderr: ${result.stderr}, stdout: ${result.stdout}`);
152
+ }
153
+ }, () => exports.cacheKey);
154
+ async function executeWithLog(command, { execOptions, logger = (0, logger_1.makeLogger)() } = {
155
+ execOptions: {},
156
+ logger: (0, logger_1.makeLogger)(),
157
+ }) {
158
+ logger.log(`executing command: ${command}`);
159
+ const result = await utils.process.execute(command, execOptions);
160
+ if (result.stderr && result.code) {
161
+ logger.log(`exit code: ${result.code}, stderr: ${result.stderr}`);
162
+ }
163
+ return result;
164
+ }
165
+ function isISODate(str) {
166
+ return /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\+\d{2}:\d{2})?/.test(str);
167
+ }
168
+ exports.isISODate = isISODate;
@@ -0,0 +1,100 @@
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.extractBuildIdFromCI = exports.extractGitRepo = exports.extractGitBranch = exports.cacheKey = void 0;
30
+ const utils = __importStar(require("@applitools/utils"));
31
+ const path_1 = __importDefault(require("path"));
32
+ const logger_1 = require("@applitools/logger");
33
+ exports.cacheKey = 'default';
34
+ exports.extractGitBranch = utils.general.cachify(async function ({ execOptions, logger = (0, logger_1.makeLogger)() }) {
35
+ if (process.env.GITHUB_HEAD_REF) {
36
+ return process.env.GITHUB_HEAD_REF;
37
+ }
38
+ if (process.env.GITHUB_REF) {
39
+ return process.env.GITHUB_REF.split('/')[2]; // refs/heads/<branch_name>
40
+ }
41
+ const result = await executeWithLog('git branch --show-current', { execOptions, logger });
42
+ if (result.stderr) {
43
+ logger.log(`Error during extracting current branch from git`, result.stderr);
44
+ }
45
+ else {
46
+ const branch = result.stdout.trim();
47
+ logger.log(`Extracted current git branch: "${branch}"`);
48
+ return branch;
49
+ }
50
+ }, () => exports.cacheKey);
51
+ exports.extractGitRepo = utils.general.cachify(async function ({ execOptions, logger = (0, logger_1.makeLogger)() }) {
52
+ const remotes = await extractRemotes();
53
+ logger.log(`Extracted remotes from git: ${remotes}`);
54
+ const remote = remotes.includes('origin') ? 'origin' : remotes[0];
55
+ const result = await executeWithLog(`git remote get-url ${remote}`, { execOptions, logger });
56
+ if (result.stderr) {
57
+ logger.log(`Error during extracting remote url from git`, result.stderr);
58
+ return {};
59
+ }
60
+ else {
61
+ const remoteUrl = result.stdout.trim();
62
+ logger.log(`Extracted url for git remote ${remote}: ${remoteUrl}`);
63
+ return extractRepoFromRemoteUrl(remoteUrl);
64
+ }
65
+ async function extractRemotes() {
66
+ const result = await executeWithLog('git remote show', { execOptions, logger });
67
+ if (result.stderr) {
68
+ logger.log(`Error during extracting remotes from git`, result.stderr);
69
+ return [];
70
+ }
71
+ else {
72
+ return result.stdout.trim().split(/\s+/);
73
+ }
74
+ }
75
+ function extractRepoFromRemoteUrl(remoteUrl) {
76
+ try {
77
+ const url = new URL(remoteUrl);
78
+ return { name: path_1.default.basename(url.pathname, '.git'), owner: path_1.default.dirname(url.pathname).replace(/^\//, '') };
79
+ }
80
+ catch (err) {
81
+ return { name: path_1.default.basename(remoteUrl, '.git'), owner: path_1.default.dirname(remoteUrl).replace(/^[^:]+:/, '') };
82
+ }
83
+ }
84
+ }, () => exports.cacheKey);
85
+ async function extractBuildIdFromCI() {
86
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
87
+ return ((_k = (_j = (_h = (_g = (_f = (_e = (_d = (_c = (_b = (_a = process.env.GITHUB_RUN_ID) !== null && _a !== void 0 ? _a : process.env.CI_JOB_ID) !== null && _b !== void 0 ? _b : process.env.CIRCLE_BUILD_NUM) !== null && _c !== void 0 ? _c : process.env.BUILD_BUILDID) !== null && _d !== void 0 ? _d : process.env.BITBUCKET_BUILD_NUMBER) !== null && _e !== void 0 ? _e : process.env.CODEBUILD_BUILD_ID) !== null && _f !== void 0 ? _f : process.env.BUILD_ID) !== null && _g !== void 0 ? _g : process.env.BUILD_NUMBER) !== null && _h !== void 0 ? _h : process.env.TRAVIS_BUILD_ID) !== null && _j !== void 0 ? _j : process.env.BUILDKITE_BUILD_ID) !== null && _k !== void 0 ? _k : process.env.BAMBOO // TODO: Bamboo
88
+ );
89
+ }
90
+ exports.extractBuildIdFromCI = extractBuildIdFromCI;
91
+ async function executeWithLog(command, { execOptions, logger = (0, logger_1.makeLogger)() } = {
92
+ execOptions: {},
93
+ logger: (0, logger_1.makeLogger)(),
94
+ }) {
95
+ logger.log(`executing command: ${command}`);
96
+ const result = await utils.process.execute(command, execOptions);
97
+ if (result.stderr && result.code)
98
+ logger.log(`exit code: ${result.code}, stderr: ${result.stderr}`);
99
+ return result;
100
+ }
@@ -0,0 +1,70 @@
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.extractCIProvider = exports.extractTestEnvironment = void 0;
27
+ const os = __importStar(require("os"));
28
+ function extractTestEnvironment(baseEnvironment) {
29
+ return {
30
+ ...baseEnvironment,
31
+ versions: {
32
+ ...baseEnvironment === null || baseEnvironment === void 0 ? void 0 : baseEnvironment.versions,
33
+ core: require('../../package.json').version,
34
+ node: process.version,
35
+ },
36
+ platform: `${os.type()}@${os.release()}`,
37
+ arch: os.arch(),
38
+ ram: os.totalmem(),
39
+ ci: extractCIProvider(),
40
+ };
41
+ }
42
+ exports.extractTestEnvironment = extractTestEnvironment;
43
+ function extractCIProvider() {
44
+ if (process.env.TF_BUILD)
45
+ return 'Azure';
46
+ else if (process.env['bamboo.buildKey'])
47
+ return 'Bamboo';
48
+ else if (process.env.BUILDKITE)
49
+ return 'Buildkite';
50
+ else if (process.env.CIRCLECI)
51
+ return 'Circle';
52
+ else if (process.env.CIRRUS_CI)
53
+ return 'Cirrus';
54
+ else if (process.env.CODEBUILD_BUILD_ID)
55
+ return 'CodeBuild';
56
+ else if (process.env.GITHUB_ACTIONS)
57
+ return 'GitHub Actions';
58
+ else if (process.env.GITLAB_CI)
59
+ return 'GitLab';
60
+ else if (process.env.HEROKU_TEST_RUN_ID)
61
+ return 'Heroku';
62
+ else if (process.env.BUILD_ID)
63
+ return 'Jenkins';
64
+ else if (process.env.TEAMCITY_VERSION)
65
+ return 'TeamCity';
66
+ else if (process.env.TRAVIS)
67
+ return 'Travis';
68
+ return null;
69
+ }
70
+ exports.extractCIProvider = extractCIProvider;
@@ -0,0 +1,46 @@
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.startMemoryUsageLogging = void 0;
27
+ const utils = __importStar(require("@applitools/utils"));
28
+ function startMemoryUsageLogging({ timeout = 30000, logger }) {
29
+ var _a;
30
+ logger = logger.extend({ tags: [`mem-usage-${utils.general.shortid()}`] });
31
+ const interval = setInterval(() => logger.log(formatMemoryUsage(process.memoryUsage())), (_a = utils.general.getEnvValue('MEMORY_LOG_TIMEOUT', 'number')) !== null && _a !== void 0 ? _a : timeout);
32
+ interval.unref();
33
+ return { stop };
34
+ function stop() {
35
+ clearInterval(interval);
36
+ }
37
+ }
38
+ exports.startMemoryUsageLogging = startMemoryUsageLogging;
39
+ function formatMemoryUsage(usage) {
40
+ return `Memory usage: ${Object.entries(usage)
41
+ .map(([key, value]) => `${key}: ${toMB(value)}MB`)
42
+ .join(', ')}`;
43
+ }
44
+ function toMB(size) {
45
+ return Math.round((size / 1024 / 1024) * 100) / 100;
46
+ }
@@ -0,0 +1,41 @@
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.populateEyesServerSettings = void 0;
27
+ const utils = __importStar(require("@applitools/utils"));
28
+ function populateEyesServerSettings(settings) {
29
+ var _a, _b, _c, _d, _e, _f;
30
+ (_a = settings.eyesServerUrl) !== null && _a !== void 0 ? _a : (settings.eyesServerUrl = (_c = (_b = utils.general.getEnvValue('EYES_SERVER_URL')) !== null && _b !== void 0 ? _b : utils.general.getEnvValue('SERVER_URL')) !== null && _c !== void 0 ? _c : 'https://eyesapi.applitools.com');
31
+ (_d = settings.apiKey) !== null && _d !== void 0 ? _d : (settings.apiKey = utils.general.getEnvValue('API_KEY'));
32
+ (_e = settings.proxy) !== null && _e !== void 0 ? _e : (settings.proxy = utils.general.getEnvValue('PROXY_URL') ? { url: utils.general.getEnvValue('PROXY_URL') } : undefined);
33
+ (_f = settings.useDnsCache) !== null && _f !== void 0 ? _f : (settings.useDnsCache = utils.general.getEnvValue('USE_DNS_CACHE', 'boolean'));
34
+ return {
35
+ eyesServerUrl: settings.eyesServerUrl,
36
+ apiKey: settings.apiKey,
37
+ proxy: settings.proxy,
38
+ useDnsCache: settings.useDnsCache,
39
+ };
40
+ }
41
+ exports.populateEyesServerSettings = populateEyesServerSettings;
@@ -0,0 +1,89 @@
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.extractLatestRubyPackageVersion = exports.extractLatestPythonPackageVersion = exports.extractLatestDotNetPackageVersion = exports.extractLatestJavaPackageVersion = exports.extractLatestJsPackageVersion = exports.validateSdkVersion = void 0;
30
+ const req_1 = require("@applitools/req");
31
+ const lt_1 = __importDefault(require("semver/functions/lt"));
32
+ const chalk_1 = __importDefault(require("chalk"));
33
+ const utils = __importStar(require("@applitools/utils"));
34
+ const lang = __importStar(require("../lang"));
35
+ const extractors = {
36
+ js: utils.general.cachify(extractLatestJsPackageVersion),
37
+ java: utils.general.cachify(extractLatestJavaPackageVersion),
38
+ dotnet: utils.general.cachify(extractLatestDotNetPackageVersion),
39
+ python: utils.general.cachify(extractLatestPythonPackageVersion),
40
+ ruby: utils.general.cachify(extractLatestRubyPackageVersion),
41
+ };
42
+ async function validateSdkVersion(sdk, { logger }) {
43
+ try {
44
+ if (!sdk.latestVersion) {
45
+ logger.log(`Extracting latest version of ${sdk.lang}/${sdk.name}`);
46
+ sdk.latestVersion = await extractors[sdk.lang](sdk.name);
47
+ }
48
+ logger.log(`Latest version of ${sdk.lang}/${sdk.name} is ${sdk.latestVersion}`);
49
+ if ((0, lt_1.default)(sdk.currentVersion, sdk.latestVersion)) {
50
+ const message = lang.outdatedSdkVersionWarning(sdk);
51
+ logger.console.warn(chalk_1.default.yellow(message));
52
+ logger.warn(message);
53
+ }
54
+ }
55
+ catch (error) {
56
+ logger.error(`Failed to extract latest version of ${sdk.lang}/${sdk.name} due to the error: `, error);
57
+ }
58
+ }
59
+ exports.validateSdkVersion = validateSdkVersion;
60
+ async function extractLatestJsPackageVersion(name) {
61
+ const response = await (0, req_1.req)(`https://registry.npmjs.org/${name}/latest`);
62
+ const info = await response.json();
63
+ return info.version;
64
+ }
65
+ exports.extractLatestJsPackageVersion = extractLatestJsPackageVersion;
66
+ async function extractLatestJavaPackageVersion(name) {
67
+ const response = await (0, req_1.req)(`https://search.maven.org/solrsearch/select?q=a:${name}&wt=json`);
68
+ const info = await response.json();
69
+ return info.response.docs[0].latestVersion;
70
+ }
71
+ exports.extractLatestJavaPackageVersion = extractLatestJavaPackageVersion;
72
+ async function extractLatestDotNetPackageVersion(name) {
73
+ const response = await (0, req_1.req)(`https://api.nuget.org/v3-flatcontainer/${name.toLowerCase()}/index.json`);
74
+ const info = await response.json();
75
+ return info.versions[info.versions.length - 1];
76
+ }
77
+ exports.extractLatestDotNetPackageVersion = extractLatestDotNetPackageVersion;
78
+ async function extractLatestPythonPackageVersion(name) {
79
+ const response = await (0, req_1.req)(`https://pypi.org/pypi/${name}/json`);
80
+ const info = await response.json();
81
+ return info.info.version;
82
+ }
83
+ exports.extractLatestPythonPackageVersion = extractLatestPythonPackageVersion;
84
+ async function extractLatestRubyPackageVersion(name) {
85
+ const response = await (0, req_1.req)(`https://rubygems.org/api/v1/gems/${name}.json`);
86
+ const info = await response.json();
87
+ return info.version;
88
+ }
89
+ exports.extractLatestRubyPackageVersion = extractLatestRubyPackageVersion;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applitools/core",
3
- "version": "2.5.2",
3
+ "version": "2.5.3-legacy",
4
4
  "homepage": "https://applitools.com",
5
5
  "bugs": {
6
6
  "url": "https://github.com/applitools/eyes.sdk.javascript1/issues"
@@ -87,14 +87,14 @@
87
87
  "@applitools/snippets": "2.4.19",
88
88
  "@applitools/socket": "1.0.10",
89
89
  "@applitools/spec-driver-webdriver": "1.0.24",
90
- "@applitools/ufg-client": "1.2.9",
90
+ "@applitools/ufg-client": "1.2.10",
91
91
  "@applitools/utils": "1.3.32",
92
92
  "@types/ws": "8.5.4",
93
93
  "abort-controller": "3.0.0",
94
94
  "chalk": "4.1.2",
95
95
  "node-fetch": "2.6.7",
96
96
  "webdriver": "7.30.0",
97
- "ws": "8.12.0",
97
+ "ws": "8.17.1",
98
98
  "yargs": "17.6.2"
99
99
  },
100
100
  "devDependencies": {
@@ -0,0 +1,13 @@
1
+ import type { Eyes, AbortSettings, Environment } from './types';
2
+ import { type SpecType } from '@applitools/driver';
3
+ import { type Logger } from '@applitools/logger';
4
+ type Options<TSpec extends SpecType, TType extends 'classic' | 'ufg'> = {
5
+ eyes: Eyes<TSpec, TType>;
6
+ environments?: Environment[];
7
+ logger: Logger;
8
+ };
9
+ export declare function makeAbort<TSpec extends SpecType, TType extends 'classic' | 'ufg'>({ eyes, environments: defaultEnvironments, logger: mainLogger, }: Options<TSpec, TType>): ({ settings, logger, }?: {
10
+ settings?: AbortSettings<TType> | undefined;
11
+ logger?: Logger | undefined;
12
+ }) => Promise<void>;
13
+ export {};
@@ -0,0 +1,16 @@
1
+ import type { Eyes, AbortSettings, Environment } from './types';
2
+ import { type Logger } from '@applitools/logger';
3
+ import { type AbortController } from 'abort-controller';
4
+ import { type Driver, type SpecType } from '@applitools/driver';
5
+ type Options<TSpec extends SpecType> = {
6
+ eyes: Eyes<TSpec>;
7
+ driver?: Driver<TSpec>;
8
+ controller: AbortController;
9
+ environments?: Environment[];
10
+ logger: Logger;
11
+ };
12
+ export declare function makeAbort<TSpec extends SpecType>({ eyes, driver, controller, environments: defaultEnvironments, logger: mainLogger, }: Options<TSpec>): ({ settings, logger, }?: {
13
+ settings?: AbortSettings | undefined;
14
+ logger?: Logger | undefined;
15
+ }) => Promise<void>;
16
+ export {};
@@ -0,0 +1,14 @@
1
+ import type { Eyes, CloseSettings, Environment } from '../ufg/types';
2
+ import { type Logger } from '@applitools/logger';
3
+ import { type Driver, type SpecType } from '@applitools/driver';
4
+ type Options<TSpec extends SpecType> = {
5
+ eyes: Eyes<TSpec>;
6
+ driver?: Driver<TSpec>;
7
+ environments?: Environment[];
8
+ logger: Logger;
9
+ };
10
+ export declare function makeClose<TSpec extends SpecType>({ eyes, driver, environments: defaultEnvironments, logger: mainLogger, }: Options<TSpec>): ({ settings, logger, }?: {
11
+ settings?: CloseSettings | undefined;
12
+ logger?: Logger | undefined;
13
+ }) => Promise<void>;
14
+ export {};