bdy 1.10.12-stage → 1.10.13-dev

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bdy",
3
3
  "preferGlobal": false,
4
- "version": "1.10.12-stage",
4
+ "version": "1.10.13-dev",
5
5
  "type": "commonjs",
6
6
  "license": "MIT",
7
7
  "scripts": {
@@ -36,6 +36,8 @@
36
36
  "node-fetch": "3.3.2",
37
37
  "node-forge": "1.3.1",
38
38
  "path-is-inside": "1.0.2",
39
+ "fdir": "6.5.0",
40
+ "picomatch": "4.0.3",
39
41
  "pino": "8.20.0",
40
42
  "punycode.js": "2.3.1",
41
43
  "puppeteer-core": "23.6.0",
@@ -48,8 +50,7 @@
48
50
  "uuid": "10.0.0",
49
51
  "which": "4.0.0",
50
52
  "ws": "8.18.0",
51
- "zod": "3.24.2",
52
- "fast-xml-parser": "4.5.1"
53
+ "zod": "3.24.2"
53
54
  },
54
55
  "devDependencies": {
55
56
  "@eslint/js": "9.13.0",
@@ -59,6 +60,7 @@
59
60
  "@rollup/plugin-replace": "6.0.1",
60
61
  "@stylistic/eslint-plugin-js": "2.9.0",
61
62
  "@types/cross-spawn": "6.0.6",
63
+ "@types/picomatch": "4.0.2",
62
64
  "@types/eslint__js": "8.42.3",
63
65
  "@types/ssh2": "1.15.1",
64
66
  "@types/tar-stream": "3.1.3",
@@ -0,0 +1,108 @@
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
+ const utils_1 = require("../../utils");
30
+ const texts_js_1 = require("../../texts.js");
31
+ const output_1 = __importDefault(require("../../output"));
32
+ const commander_1 = require("commander");
33
+ const zod_1 = __importStar(require("zod"));
34
+ const fdir_1 = require("fdir");
35
+ const picomatch_1 = __importDefault(require("picomatch"));
36
+ const node_path_1 = __importDefault(require("node:path"));
37
+ const ci_1 = require("../../unitTest/ci");
38
+ const requests_1 = require("../../unitTest/requests");
39
+ const token = process.env.BUDDY_UT_TOKEN || '';
40
+ const commandUtUpload = (0, utils_1.newCommand)('upload', texts_js_1.DESC_COMMAND_UT_UPLOAD);
41
+ commandUtUpload.argument('<glob>', texts_js_1.OPTION_UPLOAD_REPORT_GLOB);
42
+ commandUtUpload.addOption(new commander_1.Option('--format <format>', texts_js_1.OPTION_UPLOAD_REPORT_FORMAT)
43
+ .choices(['junit-xml'])
44
+ .makeOptionMandatory());
45
+ commandUtUpload.option('--dryRun', texts_js_1.OPTION_UPLOAD_DRY_RUN);
46
+ commandUtUpload.action(async (input, options) => {
47
+ if (!token) {
48
+ output_1.default.exitError(texts_js_1.ERR_MISSING_UT_TOKEN);
49
+ }
50
+ const { glob, dryRun } = validateInputAndOptions(input, options);
51
+ const ciInfo = await (0, ci_1.getCiInfo)();
52
+ const { absolutePattern, files } = findFilesByGlob(glob);
53
+ if (files.length === 0) {
54
+ output_1.default.exitError(`No files matched the provided glob: ${absolutePattern}`);
55
+ }
56
+ if (dryRun) {
57
+ output_1.default.normal(`Found ${files.length} report file(s) using pattern: ${absolutePattern}`);
58
+ files.forEach((file) => {
59
+ output_1.default.normal(file);
60
+ });
61
+ output_1.default.exitSuccess('Dry run completed');
62
+ }
63
+ await (0, requests_1.sendUploadRequest)(files, ciInfo);
64
+ output_1.default.exitSuccess('Upload completed');
65
+ });
66
+ exports.default = commandUtUpload;
67
+ function validateInputAndOptions(input, options) {
68
+ const globSchema = zod_1.default.string();
69
+ const optionsSchema = zod_1.default.object({
70
+ format: zod_1.default.enum(['junit-xml']),
71
+ dryRun: zod_1.default.boolean().optional(),
72
+ });
73
+ try {
74
+ const glob = globSchema.parse(input);
75
+ const { format, dryRun } = optionsSchema.parse(options);
76
+ return {
77
+ glob,
78
+ format,
79
+ dryRun,
80
+ };
81
+ }
82
+ catch (error) {
83
+ if (error instanceof zod_1.ZodError) {
84
+ output_1.default.exitError(error.errors.map((e) => `${e.path}: ${e.message}`).join(', '));
85
+ }
86
+ else {
87
+ throw error;
88
+ }
89
+ }
90
+ }
91
+ function findFilesByGlob(pattern) {
92
+ const cwd = process.cwd();
93
+ const scan = picomatch_1.default.scan(pattern);
94
+ if (!scan.isGlob) {
95
+ return {
96
+ absolutePattern: pattern,
97
+ files: (0, utils_1.isFile)(pattern) ? [pattern] : [],
98
+ };
99
+ }
100
+ if (node_path_1.default.isAbsolute(pattern)) {
101
+ const root = scan.base;
102
+ const files = new fdir_1.fdir().withFullPaths().glob(pattern).crawl(root).sync();
103
+ return { absolutePattern: pattern, files };
104
+ }
105
+ const preparedPattern = node_path_1.default.resolve(cwd, pattern);
106
+ const files = new fdir_1.fdir().withFullPaths().glob(preparedPattern).crawl().sync();
107
+ return { absolutePattern: preparedPattern, files };
108
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("../utils");
7
+ const texts_js_1 = require("../texts.js");
8
+ const upload_1 = __importDefault(require("./ut/upload"));
9
+ const commandUt = (0, utils_1.newCommand)('ut', texts_js_1.DESC_COMMAND_UT);
10
+ commandUt.addCommand(upload_1.default);
11
+ exports.default = commandUt;
@@ -11,7 +11,7 @@ const output_1 = __importDefault(require("../../output"));
11
11
  const commandVtClose = (0, utils_1.newCommand)('close', texts_js_1.DESC_COMMAND_VT_CLOSE);
12
12
  commandVtClose.action(async () => {
13
13
  if (!(0, validation_1.checkToken)()) {
14
- output_1.default.exitError(texts_js_1.ERR_MISSING_TOKEN);
14
+ output_1.default.exitError(texts_js_1.ERR_MISSING_VT_TOKEN);
15
15
  }
16
16
  if (!(0, validation_1.checkBuildId)()) {
17
17
  output_1.default.exitError(texts_js_1.ERR_MISSING_BUILD_ID);
@@ -29,7 +29,7 @@ commandVtCompare.option('--waitFor <waitFors...>', texts_js_1.OPTION_COMPARE_WAI
29
29
  commandVtCompare.action(async (options) => {
30
30
  const validatedOptions = (0, validation_2.validateOptions)(options);
31
31
  if (!(0, validation_1.checkToken)()) {
32
- output_1.default.exitError(texts_js_1.ERR_MISSING_TOKEN);
32
+ output_1.default.exitError(texts_js_1.ERR_MISSING_VT_TOKEN);
33
33
  }
34
34
  if (!(0, validation_2.checkIfMinimalOptionsAreProvided)(validatedOptions)) {
35
35
  output_1.default.exitError(texts_js_1.ERR_MISSING_URLS);
@@ -58,7 +58,7 @@ commandVtCompare.action(async (options) => {
58
58
  else if (filteredUrls.length > 1) {
59
59
  output_1.default.normal(`List of urls:\n${filteredUrls.join('\n')}`);
60
60
  }
61
- const ciAndGitInfo = await (0, ci_1.getCiAndGitInfo)(undefined);
61
+ const ciAndGitInfo = await (0, ci_1.getCiAndGitInfo)({});
62
62
  (0, context_1.setCiAndCommitInfo)(ciAndGitInfo);
63
63
  try {
64
64
  const response = await (0, requests_1.sendCompareLinks)(filteredUrls, validatedOptions, sitemapSource);
@@ -30,7 +30,7 @@ commandVtExec.action(async (command, options) => {
30
30
  output_1.default.exitError(`${error}`);
31
31
  }
32
32
  if (!(0, validation_1.checkToken)()) {
33
- output_1.default.exitError(texts_js_1.ERR_MISSING_TOKEN);
33
+ output_1.default.exitError(texts_js_1.ERR_MISSING_VT_TOKEN);
34
34
  }
35
35
  if (!(0, validation_1.checkParallel)()) {
36
36
  output_1.default.exitError(texts_js_1.ERR_MISSING_BUILD_ID);
@@ -49,7 +49,9 @@ commandVtExec.action(async (command, options) => {
49
49
  }
50
50
  const defaultSettings = await (0, requests_1.getDefaultSettings)();
51
51
  (0, snapshots_1.setDefaultSettings)(defaultSettings);
52
- const ciAndGitInfo = await (0, ci_1.getCiAndGitInfo)(defaultSettings.baseBranch);
52
+ const ciAndGitInfo = await (0, ci_1.getCiAndGitInfo)({
53
+ baseBranch: defaultSettings.baseBranch,
54
+ });
53
55
  (0, context_1.setCiAndCommitInfo)(ciAndGitInfo);
54
56
  (0, ci_1.logCiInfo)(ciAndGitInfo);
55
57
  if (context_1.debug) {
@@ -37,7 +37,7 @@ commandScrap.option('--delay <delay>', texts_js_1.OPTION_SCRAP_DELAY, '0');
37
37
  commandScrap.option('--outputDir <dir>', texts_js_1.OPTION_SCRAP_OUTPUT_DIR, '.');
38
38
  commandScrap.action(async (inputUrl, options) => {
39
39
  if (!(0, validation_1.checkToken)()) {
40
- output_1.default.exitError(texts_js_1.ERR_MISSING_TOKEN);
40
+ output_1.default.exitError(texts_js_1.ERR_MISSING_VT_TOKEN);
41
41
  }
42
42
  const { url, follow, outputType, quality, outputDir, fullPage, cssSelector, xpathSelector, browser, viewport, devicePixelRatio, darkMode, delay, waitForElement, } = validateInputAndOptions(inputUrl, options);
43
43
  try {
@@ -16,7 +16,7 @@ const node_path_1 = __importDefault(require("node:path"));
16
16
  const commandVtStorybook = (0, utils_1.newCommand)('storybook', texts_js_1.DESC_COMMAND_VT_STORYBOOK);
17
17
  commandVtStorybook.action(async () => {
18
18
  if (!(0, validation_1.checkToken)()) {
19
- output_1.default.exitError(texts_js_1.ERR_MISSING_TOKEN);
19
+ output_1.default.exitError(texts_js_1.ERR_MISSING_VT_TOKEN);
20
20
  }
21
21
  const currentDirectoryFiles = getCurrentDirectoryFiles();
22
22
  if (!isStorybookDirectory(currentDirectoryFiles)) {
@@ -27,7 +27,9 @@ commandVtStorybook.action(async () => {
27
27
  const storybookSnapshots = getStorybookSnapshots(storiesList);
28
28
  const defaultSettings = await (0, requests_1.getDefaultSettings)();
29
29
  (0, snapshots_1.setDefaultSettings)(defaultSettings);
30
- const ciAndGitInfo = await (0, ci_1.getCiAndGitInfo)(defaultSettings.baseBranch);
30
+ const ciAndGitInfo = await (0, ci_1.getCiAndGitInfo)({
31
+ baseBranch: defaultSettings.baseBranch,
32
+ });
31
33
  (0, context_1.setCiAndCommitInfo)(ciAndGitInfo);
32
34
  (0, ci_1.logCiInfo)(ciAndGitInfo);
33
35
  try {
@@ -17,6 +17,7 @@ const stream_1 = __importDefault(require("stream"));
17
17
  const utils_1 = require("./utils");
18
18
  const texts_1 = require("./texts");
19
19
  const vt_1 = __importDefault(require("./command/vt"));
20
+ const ut_1 = __importDefault(require("./command/ut"));
20
21
  stream_1.default.setDefaultHighWaterMark(false, 67108864);
21
22
  process.title = 'bdy';
22
23
  process.on('uncaughtException', (err) => {
@@ -37,4 +38,5 @@ if (!(0, utils_1.isDocker)())
37
38
  program.addCommand(agent_js_1.default);
38
39
  program.addCommand(version_js_1.default);
39
40
  program.addCommand(vt_1.default);
41
+ program.addCommand(ut_1.default);
40
42
  program.parse();
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ERR_CONNECTION_ERROR = exports.ERR_CONNECTION_TIMEOUT = exports.ERR_WRONG_STREAM = exports.ERR_WRONG_HANDSHAKE = exports.ERR_FETCH_VERSION = exports.ERR_SWW = exports.ERR_NOT_FOUND = exports.ERR_FAILED_TO_CONNECT_TO_AGENT = exports.ERR_TUNNEL_REMOVED = exports.ERR_TUNNELS_DISABLED = exports.ERR_AGENT_LIMIT_REACHED = exports.ERR_TUNNEL_TARGET_INVALID = exports.ERR_WORKSPACE_FLAGGED = exports.ERR_TUNNEL_LIMIT_REACHED = exports.ERR_DOMAIN_RESTRICTED = exports.ERR_AGENT_REMOVED = exports.ERR_FAILED_TO_CONNECT = exports.ERR_TUNNEL_ALREADY_EXISTS = exports.ERR_AGENT_NOT_SUPPORTED = exports.ERR_AGENT_ADMIN_RIGHTS = exports.ERR_AGENT_ENABLE = exports.ERR_SWW_AGENT_UPDATING = exports.ERR_SWW_AGENT_DISABLING = exports.ERR_SWW_AGENT_ENABLING = exports.ERR_AGENT_NOT_FOUND = exports.ERR_AGENT_NOT_RUNNING = exports.ERR_AGENT_NOT_ENABLED = exports.ERR_TUNNEL_NOT_FOUND = exports.ERR_WHITELIST_IS_NOT_VALID = exports.ERR_USER_AGENT_IS_NOT_VALID = exports.ERR_BA_IS_NOT_VALID = exports.ERR_BA_LOGIN_NOT_PROVIDED = exports.ERR_BA_PASSWORD_NOT_PROVIDED = exports.ERR_CB_THRESHOLD_IS_NOT_VALID = exports.ERR_CERT_PATH_IS_NOT_VALID = exports.ERR_KEY_PATH_IS_NOT_VALID = exports.ERR_CA_PATH_IS_NOT_VALID = exports.ERR_WRONG_CA = exports.ERR_WRONG_KEY_CERT = exports.ERR_NAME_WITHOUT_ASTERISK = exports.ERR_PORT_IS_NOT_VALID = exports.ERR_REGION_IS_NOT_VALID = exports.ERR_PATH_IS_NOT_DIRECTORY = exports.ERR_DIRECTORY_DOES_NOT_EXISTS = exports.ERR_TERMINATE_IS_NOT_VALID = exports.ERR_TIMEOUT_IS_NOT_VALID = exports.ERR_TYPE_IS_NOT_VALID = exports.ERR_TARGET_IS_NOT_VALID = exports.ERR_SAVING_AGENT_CONFIG = exports.ERR_AGENT_NOT_REGISTERED = void 0;
4
- exports.TXT_AGENT_UPDATED = exports.TXT_AGENT_ENABLED = exports.TXT_AGENT_TARGET_DISABLED = exports.TXT_AGENT_TARGET_ENABLED = exports.TXT_AGENT_IS_DISABLED = exports.TXT_AGENT_IS_ENABLED_AND_HAVE_TROUBLES = exports.TXT_AGENT_IS_ENABLED_AND_INITIALIZING = exports.TXT_AGENT_IS_ENABLED_AND_STOPPED = exports.TXT_AGENT_IS_ENABLED_AND_STARTED = exports.TXT_AGENT_RESTARTED = exports.TXT_AGENT_STARTED = exports.TXT_AGENT_STOPPED = exports.WARN_BROWSER_VERSION = exports.ERR_NO_SNAPSHOTS_TO_SEND = exports.ERR_INVALID_SNAPSHOT = exports.ERR_GETTING_COMMIT_DETAILS = exports.ERR_GETTING_BASE_COMMIT = exports.ERR_HEAD_BRANCH_NOT_DEFINED = exports.ERR_BASE_BRANCH_NOT_DEFINED = exports.ERR_INVALID_COMMIT_HASH = exports.ERR_GETTING_COMMIT_HASH = exports.ERR_INVALID_BRANCH_NAME = exports.ERR_GETTING_BRANCH_NAME = exports.ERR_MISSING_HEAD_COMMIT_IN_FILE = exports.ERR_READING_FILE_WITH_HEAD_COMMIT = exports.ERR_MISSING_FILE_WITH_HEAD_COMMIT = exports.ERR_GITHUB_EVENT_PATH_NOT_FOUND = exports.ERR_TEST_EXECUTION = exports.ERR_INVALID_JSON = exports.ERR_INVALID_DOWNLOAD_RESPONSE = exports.ERR_INVALID_SCRAP_RESPONSE = exports.ERR_INVALID_COMPARE_LINKS_RESPONSE = exports.ERR_INVALID_STORYBOOK_RESPONSE = exports.ERR_INVALID_DEFAULT_SETTINGS_RESPONSE = exports.ERR_INVALID_CLOSE_SESSION_RESPONSE = exports.ERR_INVALID_SNAPSHOTS_RESPONSE = exports.ERR_INVALID_SNAPSHOT_RESPONSE = exports.ERR_MISSING_URLS = exports.ERR_RESOURCE_NOT_FOUND = exports.ERR_MISSING_EXEC_COMMAND = exports.ERR_PARSING_STORIES = exports.ERR_UNSUPPORTED_STORYBOOK = exports.ERR_MISSING_STORYBOOK_INDEX_FILE = exports.ERR_WRONG_STORYBOOK_DIRECTORY = exports.ERR_MISSING_BUILD_ID = exports.ERR_MISSING_TOKEN = exports.ERR_CONFIG_CORRUPTED = exports.ERR_WRONG_TOKEN = exports.ERR_TOKEN_NOT_PROVIDED = exports.ERR_CANT_CREATE_DIR_IN_HOME = void 0;
5
- exports.DESC_COMMAND_CONFIG = exports.DESC_COMMAND_AGENT_VERSION = exports.DESC_COMMAND_AGENT_UPDATE = exports.DESC_COMMAND_AGENT_TARGET = exports.DESC_COMMAND_AGENT_TUNNEL = exports.DESC_COMMAND_AGENT_STOP = exports.DESC_COMMAND_AGENT_TARGET_DISABLE = exports.DESC_COMMAND_AGENT_TARGET_ENABLE = exports.DESC_COMMAND_AGENT_TARGET_STATUS = exports.DESC_COMMAND_AGENT_STATUS = exports.DESC_COMMAND_AGENT_RESTART = exports.DESC_COMMAND_AGENT_ENABLE = exports.DESC_COMMAND_AGENT_DISABLE = exports.DESC_COMMAND_AGENT_START = exports.DESC_COMMAND_AGENT_INSTALL = exports.DESC_COMMAND_AGENT_UNINSTALL = exports.DESC_COMMAND_AGENT_TUNNEL_REMOVE = exports.DESC_COMMAND_AGENT_TUNNEL_STATUS = exports.DESC_COMMAND_AGENT_TUNNEL_LIST = exports.DESC_COMMAND_CONFIG_SET = exports.DESC_COMMAND_CONFIG_REMOVE = exports.DESC_COMMAND_CONFIG_GET = exports.DESC_COMMAND_CONFIG_ADD = exports.DESC_COMMAND_CONFIG_SET_WHITELIST = exports.DESC_COMMAND_CONFIG_SET_TOKEN = exports.DESC_COMMAND_CONFIG_SET_TIMEOUT = exports.DESC_COMMAND_CONFIG_SET_REGION = exports.DESC_COMMAND_CONFIG_REMOVE_TUNNEL = exports.DESC_COMMAND_CONFIG_GET_WHITELIST = exports.DESC_COMMAND_CONFIG_GET_TUNNELS = exports.DESC_COMMAND_CONFIG_GET_TUNNEL = exports.DESC_COMMAND_CONFIG_GET_TOKEN = exports.DESC_COMMAND_CONFIG_GET_TIMEOUT = exports.DESC_COMMAND_CONFIG_GET_REGION = exports.DESC_COMMAND_CONFIG_ADD_TLS = exports.DESC_COMMAND_CONFIG_ADD_TCP = exports.DESC_COMMAND_CONFIG_ADD_HTTP = exports.AGENT_FETCH_RETRY = exports.NO_TUNNELS_STARTED = exports.TXT_TUNNEL_ADDED = exports.TXT_TUNNEL_REMOVED = exports.TXT_REGION_SAVED = exports.TXT_TIMEOUT_SAVED = exports.TXT_TOKEN_REMOVED = exports.TXT_TOKEN_SAVED = exports.TXT_WHITELIST_SAVED = exports.TXT_TUNNEL_STOPPED = exports.TXT_TUNNEL_STARTED = exports.TXT_AGENT_DISABLED = exports.TXT_AGENT_ALREADY_ENABLED = void 0;
6
- exports.OPTION_AGENT_TOKEN = exports.OPTION_AGENT_START = exports.OPTION_AGENT_ID = exports.OPTION_ID = exports.OPTION_NAME = exports.OPTION_TARGET = exports.OPTION_TLS_TERMINATE = exports.OPTION_TLS_CA = exports.OPTION_TLS_CERT = exports.OPTION_TLS_KEY = exports.OPTION_HTTP_CIRCUIT_BREAKER = exports.OPTION_HTTP_COMPRESSION = exports.OPTION_HTTP_2 = exports.OPTION_HTTP_VERIFY = exports.OPTION_HTTP_LOG = exports.OPTION_HTTP_AUTH = exports.OPTION_HTTP_HOST = exports.OPTION_FORCE = exports.OPTION_TOKEN = exports.OPTION_TIMEOUT = exports.OPTION_FOLLOW = exports.OPTION_SERVE = exports.OPTION_HEADER_USER_AGENT = exports.OPTION_RESPONSE_HEADER = exports.OPTION_HEADER = exports.OPTION_WHITELIST = exports.OPTION_DEFAULT_REGION = exports.OPTION_REGION = exports.TXT_CI_INFO = exports.TXT_STORIES_AMOUNT = exports.TXT_OPENING_TUNNEL = exports.TXT_UPDATING_AGENT = exports.TXT_ENABLING_AGENT = exports.TXT_DISABLING_AGENT = exports.TXT_NEW_AGENT_VERSION = exports.TXT_NEW_CLI_VERSION = exports.TXT_NEW_CLI_DOCKER_VERSION = exports.DESC_COMMAND_VT_INSTALL_BROWSER = exports.DESC_COMMAND_VT_EXEC = exports.DESC_COMMAND_VT_SCRAP = exports.DESC_COMMAND_VT_COMPARE = exports.DESC_COMMAND_VT_STORYBOOK = exports.DESC_COMMAND_VT_CLOSE = exports.DESC_COMMAND_VT = exports.DESC_PROGRAM = exports.DESC_COMMAND_TLS = exports.DESC_COMMAND_TCP = exports.DESC_COMMAND_START = exports.DESC_COMMAND_AGENT = exports.DESC_COMMAND_HTTP = void 0;
7
- exports.LOG_AGENT_ENABLED = exports.LOG_AGENT_STARTING_SYSTEM = exports.LOG_AGENT_STOPPING_SYSTEM = exports.LOG_AGENT_ENABLING_SYSTEM = exports.LOG_AGENT_SYSTEM_SERVICE_CONFIG = exports.LOG_AGENT_EXTRACTING_ARCHIVE = exports.LOG_AGENT_DOWNLOADING_ARCHIVE = exports.LOG_AGENT_SYSTEM_DIR = exports.LOG_ERROR_SAVING_AGENT_LOCAL_CONFIG = exports.LOG_ERROR_SAVING_AGENT_SYSTEM_CONFIG = exports.LOG_ERROR_SAVING_AGENT_CONFIG = exports.LOG_SAVING_AGENT_LOCAL_CONFIG = exports.LOG_SAVING_AGENT_SYSTEM_CONFIG = exports.LOG_SAVING_AGENT_CONFIG = exports.LOG_REGISTERING_AGENT = exports.OPTION_SCRAP_OUTPUT_DIR = exports.OPTION_SCRAP_DELAY = exports.OPTION_SCRAP_DARK_MODE = exports.OPTION_SCRAP_WAIT_FOR_ELEMENT = exports.OPTION_SCRAP_DEVICE_PIXEL_RATIO = exports.OPTION_SCRAP_VIEWPORT = exports.OPTION_SCRAP_BROWSER = exports.OPTION_SCRAP_XPATH_SELECTOR = exports.OPTION_SCRAP_CSS_SELECTOR = exports.OPTION_SCRAP_FULL_PAGE = exports.OPTION_SCRAP_QUALITY = exports.OPTION_SCRAP_OUTPUT_TYPE = exports.OPTION_SCRAP_FOLLOW = exports.OPTION_SCRAP_URL = exports.OPTION_COMPARE_WAIT_FOR = exports.OPTION_COMPARE_DELAY = exports.OPTION_COMPARE_HEADER = exports.OPTION_COMPARE_COOKIE = exports.OPTION_COMPARE_IGNORE = exports.OPTION_COMPARE_IGNORE_URLS = exports.OPTION_COMPARE_DRY_RUN = exports.OPTION_COMPARE_URLS_FILE = exports.OPTION_COMPARE_SITEMAP = exports.OPTION_COMPARE_URLS = exports.OPTION_COMPARE_RESPECT_ROBOTS = exports.OPTION_COMPARE_FOLLOW = exports.OPTION_EXEC_PARALLEL = exports.OPTION_EXEC_ONE_BY_ONE = exports.OPTION_EXEC_SKIP_DISCOVERY = exports.OPTION_EXEC_COMMAND = exports.OPTION_AGENT_DEBUG = exports.OPTION_AGENT_PORT = exports.OPTION_AGENT_TARGET = exports.OPTION_PASS = exports.OPTION_USER = void 0;
8
- exports.LOG_INSTALLED_BROWSER = exports.LOG_SESSION_LINK = exports.LOG_SENDING_DATA = exports.LOG_SENDING_REQUEST = exports.LOG_PROCESSING_SNAPSHOTS = exports.LOG_RUNNING_EXEC_COMMAND = exports.LOG_TUNNEL_SSH_STREAM = exports.LOG_TUNNEL_TLS_AGENT_STREAM = exports.LOG_TUNNEL_TLS_REGION_STREAM = exports.LOG_TUNNEL_TLS_TARGET_STREAM = exports.LOG_TUNNEL_HTTP2_STREAM = exports.LOG_TUNNEL_HTTP1_STREAM = exports.LOG_TUNNEL_TCP_STREAM = exports.LOG_TUNNEL_HTTP_WRONG_USER_AGENTS = exports.LOG_TUNNEL_HTTP_CIRCUIT_BREAKER_OPEN = exports.LOG_TUNNEL_HTTP_RATE_LIMIT = exports.LOG_TUNNEL_HTTP_WRON_AUTH = exports.LOG_TUNNEL_IDENTIFIED = exports.LOG_TUNNEL_DISCONNECTED = exports.LOG_TUNNEL_FAILED = exports.LOG_TUNNEL_CONNECTED = exports.LOG_AGENT_STARTED = exports.LOG_AGENT_SERVER_STARTED = exports.LOG_ERROR_STARTING_AGENT_SERVER = exports.LOG_REQUEST = exports.LOG_SSH_CONNECTION = exports.LOG_WRONG_STREAM = exports.LOG_DETECTED_STREAM = exports.LOG_HTTP2_REQUEST = exports.LOG_HTTP2_CONNECTION = exports.LOG_HTTP1_REQUEST = exports.LOG_HTTP1_CONNECTION = exports.LOG_ERROR = exports.LOG_STOPPING_TUNNEL = exports.LOG_STARTING_TUNNEL = exports.LOG_ENABLING_AGENT_TARGET = exports.LOG_DISABLING_AGENT_TARGET = exports.LOG_REMOVING_TUNNEL = exports.LOG_TUNNEL_REGISTERED = exports.LOG_ERROR_WHILE_REFRESHING_AGENT = exports.LOG_REGISTERING_TUNNEL = exports.LOG_GETTING_AGENT = exports.LOG_UNREGISTERING_AGENT = exports.LOG_REGION_DETECTED = exports.LOG_AGENT_REGISTERED = exports.LOG_SOCKET_DISCONNECTED = exports.LOG_SOCKET_CONNECTED = exports.LOG_AGENT_NSSM_CLEARING = exports.LOG_AGENT_NSSM_EXTRACTING = exports.LOG_AGENT_NSSM_DOWNLOADING = void 0;
9
- exports.DEBUG_WAIT_FOR_IDLE_TIMEOUT = exports.DEBUG_WAIT_FOR_IDLE = exports.DEBUG_RESOURCE_DISCOVERY_TIMEOUT = exports.DEBUG_AUTO_WIDTH = exports.DEBUG_AUTO_SCROLL = exports.DEBUG_RESOURCE_SCRAPPING_URL = exports.DEBUG_SNAPSHOT_PROCESSING = exports.DEBUG_SNAPSHOTS_PROCESSING = exports.DEBUG_EXEC_COMMAND = exports.DEBUG_EXEC_TEST_COMMAND = void 0;
4
+ exports.TXT_AGENT_ENABLED = exports.TXT_AGENT_TARGET_DISABLED = exports.TXT_AGENT_TARGET_ENABLED = exports.TXT_AGENT_IS_DISABLED = exports.TXT_AGENT_IS_ENABLED_AND_HAVE_TROUBLES = exports.TXT_AGENT_IS_ENABLED_AND_INITIALIZING = exports.TXT_AGENT_IS_ENABLED_AND_STOPPED = exports.TXT_AGENT_IS_ENABLED_AND_STARTED = exports.TXT_AGENT_RESTARTED = exports.TXT_AGENT_STARTED = exports.TXT_AGENT_STOPPED = exports.WARN_BROWSER_VERSION = exports.ERR_NO_SNAPSHOTS_TO_SEND = exports.ERR_INVALID_SNAPSHOT = exports.ERR_GETTING_COMMIT_DETAILS = exports.ERR_GETTING_BASE_COMMIT = exports.ERR_HEAD_BRANCH_NOT_DEFINED = exports.ERR_BASE_BRANCH_NOT_DEFINED = exports.ERR_INVALID_COMMIT_HASH = exports.ERR_GETTING_COMMIT_HASH = exports.ERR_INVALID_BRANCH_NAME = exports.ERR_GETTING_BRANCH_NAME = exports.ERR_MISSING_HEAD_COMMIT_IN_FILE = exports.ERR_READING_FILE_WITH_HEAD_COMMIT = exports.ERR_MISSING_FILE_WITH_HEAD_COMMIT = exports.ERR_GITHUB_EVENT_PATH_NOT_FOUND = exports.ERR_TEST_EXECUTION = exports.ERR_INVALID_JSON = exports.ERR_INVALID_DOWNLOAD_RESPONSE = exports.ERR_INVALID_SCRAP_RESPONSE = exports.ERR_INVALID_COMPARE_LINKS_RESPONSE = exports.ERR_INVALID_STORYBOOK_RESPONSE = exports.ERR_INVALID_DEFAULT_SETTINGS_RESPONSE = exports.ERR_INVALID_CLOSE_SESSION_RESPONSE = exports.ERR_INVALID_SNAPSHOTS_RESPONSE = exports.ERR_INVALID_SNAPSHOT_RESPONSE = exports.ERR_MISSING_URLS = exports.ERR_RESOURCE_NOT_FOUND = exports.ERR_MISSING_EXEC_COMMAND = exports.ERR_PARSING_STORIES = exports.ERR_UNSUPPORTED_STORYBOOK = exports.ERR_MISSING_STORYBOOK_INDEX_FILE = exports.ERR_WRONG_STORYBOOK_DIRECTORY = exports.ERR_MISSING_BUILD_ID = exports.ERR_MISSING_UT_TOKEN = exports.ERR_MISSING_VT_TOKEN = exports.ERR_CONFIG_CORRUPTED = exports.ERR_WRONG_TOKEN = exports.ERR_TOKEN_NOT_PROVIDED = exports.ERR_CANT_CREATE_DIR_IN_HOME = void 0;
5
+ exports.DESC_COMMAND_AGENT_VERSION = exports.DESC_COMMAND_AGENT_UPDATE = exports.DESC_COMMAND_AGENT_TARGET = exports.DESC_COMMAND_AGENT_TUNNEL = exports.DESC_COMMAND_AGENT_STOP = exports.DESC_COMMAND_AGENT_TARGET_DISABLE = exports.DESC_COMMAND_AGENT_TARGET_ENABLE = exports.DESC_COMMAND_AGENT_TARGET_STATUS = exports.DESC_COMMAND_AGENT_STATUS = exports.DESC_COMMAND_AGENT_RESTART = exports.DESC_COMMAND_AGENT_ENABLE = exports.DESC_COMMAND_AGENT_DISABLE = exports.DESC_COMMAND_AGENT_START = exports.DESC_COMMAND_AGENT_INSTALL = exports.DESC_COMMAND_AGENT_UNINSTALL = exports.DESC_COMMAND_AGENT_TUNNEL_REMOVE = exports.DESC_COMMAND_AGENT_TUNNEL_STATUS = exports.DESC_COMMAND_AGENT_TUNNEL_LIST = exports.DESC_COMMAND_CONFIG_SET = exports.DESC_COMMAND_CONFIG_REMOVE = exports.DESC_COMMAND_CONFIG_GET = exports.DESC_COMMAND_CONFIG_ADD = exports.DESC_COMMAND_CONFIG_SET_WHITELIST = exports.DESC_COMMAND_CONFIG_SET_TOKEN = exports.DESC_COMMAND_CONFIG_SET_TIMEOUT = exports.DESC_COMMAND_CONFIG_SET_REGION = exports.DESC_COMMAND_CONFIG_REMOVE_TUNNEL = exports.DESC_COMMAND_CONFIG_GET_WHITELIST = exports.DESC_COMMAND_CONFIG_GET_TUNNELS = exports.DESC_COMMAND_CONFIG_GET_TUNNEL = exports.DESC_COMMAND_CONFIG_GET_TOKEN = exports.DESC_COMMAND_CONFIG_GET_TIMEOUT = exports.DESC_COMMAND_CONFIG_GET_REGION = exports.DESC_COMMAND_CONFIG_ADD_TLS = exports.DESC_COMMAND_CONFIG_ADD_TCP = exports.DESC_COMMAND_CONFIG_ADD_HTTP = exports.AGENT_FETCH_RETRY = exports.NO_TUNNELS_STARTED = exports.TXT_TUNNEL_ADDED = exports.TXT_TUNNEL_REMOVED = exports.TXT_REGION_SAVED = exports.TXT_TIMEOUT_SAVED = exports.TXT_TOKEN_REMOVED = exports.TXT_TOKEN_SAVED = exports.TXT_WHITELIST_SAVED = exports.TXT_TUNNEL_STOPPED = exports.TXT_TUNNEL_STARTED = exports.TXT_AGENT_DISABLED = exports.TXT_AGENT_ALREADY_ENABLED = exports.TXT_AGENT_UPDATED = void 0;
6
+ exports.OPTION_TLS_TERMINATE = exports.OPTION_TLS_CA = exports.OPTION_TLS_CERT = exports.OPTION_TLS_KEY = exports.OPTION_HTTP_CIRCUIT_BREAKER = exports.OPTION_HTTP_COMPRESSION = exports.OPTION_HTTP_2 = exports.OPTION_HTTP_VERIFY = exports.OPTION_HTTP_LOG = exports.OPTION_HTTP_AUTH = exports.OPTION_HTTP_HOST = exports.OPTION_FORCE = exports.OPTION_TOKEN = exports.OPTION_TIMEOUT = exports.OPTION_FOLLOW = exports.OPTION_SERVE = exports.OPTION_HEADER_USER_AGENT = exports.OPTION_RESPONSE_HEADER = exports.OPTION_HEADER = exports.OPTION_WHITELIST = exports.OPTION_DEFAULT_REGION = exports.OPTION_REGION = exports.TXT_CI_INFO = exports.TXT_STORIES_AMOUNT = exports.TXT_OPENING_TUNNEL = exports.TXT_UPDATING_AGENT = exports.TXT_ENABLING_AGENT = exports.TXT_DISABLING_AGENT = exports.TXT_NEW_AGENT_VERSION = exports.TXT_NEW_CLI_VERSION = exports.TXT_NEW_CLI_DOCKER_VERSION = exports.OPTION_UPLOAD_DRY_RUN = exports.OPTION_UPLOAD_REPORT_FORMAT = exports.OPTION_UPLOAD_REPORT_GLOB = exports.DESC_COMMAND_UT_UPLOAD = exports.DESC_COMMAND_UT = exports.DESC_COMMAND_VT_INSTALL_BROWSER = exports.DESC_COMMAND_VT_EXEC = exports.DESC_COMMAND_VT_SCRAP = exports.DESC_COMMAND_VT_COMPARE = exports.DESC_COMMAND_VT_STORYBOOK = exports.DESC_COMMAND_VT_CLOSE = exports.DESC_COMMAND_VT = exports.DESC_PROGRAM = exports.DESC_COMMAND_TLS = exports.DESC_COMMAND_TCP = exports.DESC_COMMAND_START = exports.DESC_COMMAND_AGENT = exports.DESC_COMMAND_HTTP = exports.DESC_COMMAND_CONFIG = void 0;
7
+ exports.LOG_AGENT_DOWNLOADING_ARCHIVE = exports.LOG_AGENT_SYSTEM_DIR = exports.LOG_ERROR_SAVING_AGENT_LOCAL_CONFIG = exports.LOG_ERROR_SAVING_AGENT_SYSTEM_CONFIG = exports.LOG_ERROR_SAVING_AGENT_CONFIG = exports.LOG_SAVING_AGENT_LOCAL_CONFIG = exports.LOG_SAVING_AGENT_SYSTEM_CONFIG = exports.LOG_SAVING_AGENT_CONFIG = exports.LOG_REGISTERING_AGENT = exports.OPTION_SCRAP_OUTPUT_DIR = exports.OPTION_SCRAP_DELAY = exports.OPTION_SCRAP_DARK_MODE = exports.OPTION_SCRAP_WAIT_FOR_ELEMENT = exports.OPTION_SCRAP_DEVICE_PIXEL_RATIO = exports.OPTION_SCRAP_VIEWPORT = exports.OPTION_SCRAP_BROWSER = exports.OPTION_SCRAP_XPATH_SELECTOR = exports.OPTION_SCRAP_CSS_SELECTOR = exports.OPTION_SCRAP_FULL_PAGE = exports.OPTION_SCRAP_QUALITY = exports.OPTION_SCRAP_OUTPUT_TYPE = exports.OPTION_SCRAP_FOLLOW = exports.OPTION_SCRAP_URL = exports.OPTION_COMPARE_WAIT_FOR = exports.OPTION_COMPARE_DELAY = exports.OPTION_COMPARE_HEADER = exports.OPTION_COMPARE_COOKIE = exports.OPTION_COMPARE_IGNORE = exports.OPTION_COMPARE_IGNORE_URLS = exports.OPTION_COMPARE_DRY_RUN = exports.OPTION_COMPARE_URLS_FILE = exports.OPTION_COMPARE_SITEMAP = exports.OPTION_COMPARE_URLS = exports.OPTION_COMPARE_RESPECT_ROBOTS = exports.OPTION_COMPARE_FOLLOW = exports.OPTION_EXEC_PARALLEL = exports.OPTION_EXEC_ONE_BY_ONE = exports.OPTION_EXEC_SKIP_DISCOVERY = exports.OPTION_EXEC_COMMAND = exports.OPTION_AGENT_DEBUG = exports.OPTION_AGENT_PORT = exports.OPTION_AGENT_TARGET = exports.OPTION_PASS = exports.OPTION_USER = exports.OPTION_AGENT_TOKEN = exports.OPTION_AGENT_START = exports.OPTION_AGENT_ID = exports.OPTION_ID = exports.OPTION_NAME = exports.OPTION_TARGET = void 0;
8
+ exports.LOG_TUNNEL_SSH_STREAM = exports.LOG_TUNNEL_TLS_AGENT_STREAM = exports.LOG_TUNNEL_TLS_REGION_STREAM = exports.LOG_TUNNEL_TLS_TARGET_STREAM = exports.LOG_TUNNEL_HTTP2_STREAM = exports.LOG_TUNNEL_HTTP1_STREAM = exports.LOG_TUNNEL_TCP_STREAM = exports.LOG_TUNNEL_HTTP_WRONG_USER_AGENTS = exports.LOG_TUNNEL_HTTP_CIRCUIT_BREAKER_OPEN = exports.LOG_TUNNEL_HTTP_RATE_LIMIT = exports.LOG_TUNNEL_HTTP_WRON_AUTH = exports.LOG_TUNNEL_IDENTIFIED = exports.LOG_TUNNEL_DISCONNECTED = exports.LOG_TUNNEL_FAILED = exports.LOG_TUNNEL_CONNECTED = exports.LOG_AGENT_STARTED = exports.LOG_AGENT_SERVER_STARTED = exports.LOG_ERROR_STARTING_AGENT_SERVER = exports.LOG_REQUEST = exports.LOG_SSH_CONNECTION = exports.LOG_WRONG_STREAM = exports.LOG_DETECTED_STREAM = exports.LOG_HTTP2_REQUEST = exports.LOG_HTTP2_CONNECTION = exports.LOG_HTTP1_REQUEST = exports.LOG_HTTP1_CONNECTION = exports.LOG_ERROR = exports.LOG_STOPPING_TUNNEL = exports.LOG_STARTING_TUNNEL = exports.LOG_ENABLING_AGENT_TARGET = exports.LOG_DISABLING_AGENT_TARGET = exports.LOG_REMOVING_TUNNEL = exports.LOG_TUNNEL_REGISTERED = exports.LOG_ERROR_WHILE_REFRESHING_AGENT = exports.LOG_REGISTERING_TUNNEL = exports.LOG_GETTING_AGENT = exports.LOG_UNREGISTERING_AGENT = exports.LOG_REGION_DETECTED = exports.LOG_AGENT_REGISTERED = exports.LOG_SOCKET_DISCONNECTED = exports.LOG_SOCKET_CONNECTED = exports.LOG_AGENT_NSSM_CLEARING = exports.LOG_AGENT_NSSM_EXTRACTING = exports.LOG_AGENT_NSSM_DOWNLOADING = exports.LOG_AGENT_ENABLED = exports.LOG_AGENT_STARTING_SYSTEM = exports.LOG_AGENT_STOPPING_SYSTEM = exports.LOG_AGENT_ENABLING_SYSTEM = exports.LOG_AGENT_SYSTEM_SERVICE_CONFIG = exports.LOG_AGENT_EXTRACTING_ARCHIVE = void 0;
9
+ exports.DEBUG_WAIT_FOR_IDLE_TIMEOUT = exports.DEBUG_WAIT_FOR_IDLE = exports.DEBUG_RESOURCE_DISCOVERY_TIMEOUT = exports.DEBUG_AUTO_WIDTH = exports.DEBUG_AUTO_SCROLL = exports.DEBUG_RESOURCE_SCRAPPING_URL = exports.DEBUG_SNAPSHOT_PROCESSING = exports.DEBUG_SNAPSHOTS_PROCESSING = exports.DEBUG_EXEC_COMMAND = exports.DEBUG_EXEC_TEST_COMMAND = exports.LOG_INSTALLED_BROWSER = exports.LOG_SESSION_LINK = exports.LOG_SENDING_DATA = exports.LOG_SENDING_REQUEST = exports.LOG_PROCESSING_SNAPSHOTS = exports.LOG_RUNNING_EXEC_COMMAND = void 0;
10
10
  const utils_1 = require("./utils");
11
11
  exports.ERR_AGENT_NOT_REGISTERED = 'Agent not registered. Exiting.';
12
12
  exports.ERR_SAVING_AGENT_CONFIG = 'Failed saving agent config. Exiting.';
@@ -81,7 +81,8 @@ exports.ERR_CANT_CREATE_DIR_IN_HOME = ERR_CANT_CREATE_DIR_IN_HOME;
81
81
  exports.ERR_TOKEN_NOT_PROVIDED = 'Token not provided';
82
82
  exports.ERR_WRONG_TOKEN = 'Wrong token';
83
83
  exports.ERR_CONFIG_CORRUPTED = 'Config file is corrupted';
84
- exports.ERR_MISSING_TOKEN = 'No token provided. Please provide a token with the BUDDY_VT_TOKEN environment variable.';
84
+ exports.ERR_MISSING_VT_TOKEN = 'No token provided. Please provide a token with the BUDDY_VT_TOKEN environment variable.';
85
+ exports.ERR_MISSING_UT_TOKEN = 'No token provided. Please provide a token with the BUDDY_UT_TOKEN environment variable.';
85
86
  exports.ERR_MISSING_BUILD_ID = 'No buildId provided. Please provide a buildId with the SNAPSHOTS_BUILD_ID environment variable.';
86
87
  exports.ERR_WRONG_STORYBOOK_DIRECTORY = 'Current directory is not a storybook directory';
87
88
  exports.ERR_MISSING_STORYBOOK_INDEX_FILE = 'Storybook index.json not found';
@@ -202,6 +203,11 @@ exports.DESC_COMMAND_VT_COMPARE = 'Create visual test session for specific set o
202
203
  exports.DESC_COMMAND_VT_SCRAP = 'Scrap website';
203
204
  exports.DESC_COMMAND_VT_EXEC = 'Run tests which use visual service plugin';
204
205
  exports.DESC_COMMAND_VT_INSTALL_BROWSER = 'Install browser for visual test';
206
+ exports.DESC_COMMAND_UT = 'Commands to interact with the unit test service';
207
+ exports.DESC_COMMAND_UT_UPLOAD = 'Upload unit test reports';
208
+ exports.OPTION_UPLOAD_REPORT_GLOB = 'Glob for reports';
209
+ exports.OPTION_UPLOAD_REPORT_FORMAT = 'Format of the reports';
210
+ exports.OPTION_UPLOAD_DRY_RUN = 'Run command without uploading reports';
205
211
  const TXT_NEW_CLI_DOCKER_VERSION = (version) => `A new version of bdy Docker image is available! (${version})\n\n`;
206
212
  exports.TXT_NEW_CLI_DOCKER_VERSION = TXT_NEW_CLI_DOCKER_VERSION;
207
213
  const TXT_NEW_CLI_VERSION = (version) => `A new version of bdy is available! (${version})\n\n`;
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCiInfo = getCiInfo;
4
+ const ciInfo_1 = require("../types/ciInfo");
5
+ const ci_1 = require("../visualTest/ci");
6
+ const uuid_1 = require("uuid");
7
+ function getGithubRefType() {
8
+ const ref = process.env.GITHUB_REF || '';
9
+ if (ref.startsWith('refs/heads/')) {
10
+ return 'BRANCH';
11
+ }
12
+ if (ref.startsWith('refs/tags/')) {
13
+ return 'TAG';
14
+ }
15
+ if (ref.startsWith('refs/pull/')) {
16
+ return 'PULL_REQUEST';
17
+ }
18
+ return '';
19
+ }
20
+ function getCircleRefType() {
21
+ const pullRequest = process.env.CIRCLE_PR_NUMBER || '';
22
+ if (pullRequest) {
23
+ return 'PULL_REQUEST';
24
+ }
25
+ const branch = process.env.CIRCLE_BRANCH || '';
26
+ if (branch) {
27
+ return 'BRANCH';
28
+ }
29
+ const tag = process.env.CIRCLE_TAG || '';
30
+ if (tag) {
31
+ return 'TAG';
32
+ }
33
+ return '';
34
+ }
35
+ function getCircleRefName() {
36
+ const branch = process.env.BUDDY_RUN_BRANCH || '';
37
+ const pullRequest = process.env.BUDDY_RUN_PR_NUMBER || '';
38
+ if (pullRequest) {
39
+ return `${pullRequest}/${branch}`;
40
+ }
41
+ if (branch) {
42
+ return branch;
43
+ }
44
+ const tag = process.env.BUDDY_RUN_TAG || '';
45
+ if (tag) {
46
+ return tag;
47
+ }
48
+ return '';
49
+ }
50
+ async function getCiInfo() {
51
+ const isBuddy = process.env.BUDDY === 'true';
52
+ const isGithubAction = process.env.GITHUB_ACTIONS === 'true';
53
+ const isCircleCI = process.env.CIRCLECI === 'true';
54
+ if (isBuddy) {
55
+ const ciProvider = ciInfo_1.CI.BUDDY;
56
+ const refType = process.env.BUDDY_RUN_REF_TYPE || '';
57
+ const refName = process.env.BUDDY_RUN_REF || '';
58
+ const buildId = process.env.BUDDY_RUN_HASH || '';
59
+ const toRevision = process.env.BUDDY_RUN_COMMIT || '';
60
+ return {
61
+ ciProvider,
62
+ refType,
63
+ refName,
64
+ buildId,
65
+ toRevision,
66
+ };
67
+ }
68
+ if (isGithubAction) {
69
+ const ciProvider = ciInfo_1.CI.GITHUB_ACTION;
70
+ const refType = getGithubRefType();
71
+ const refName = process.env.GITHUB_REF_NAME || '';
72
+ const buildId = process.env.GITHUB_RUN_ID || '';
73
+ const toRevision = process.env.GITHUB_SHA || '';
74
+ return {
75
+ ciProvider,
76
+ refType,
77
+ refName,
78
+ buildId,
79
+ toRevision,
80
+ };
81
+ }
82
+ if (isCircleCI) {
83
+ const ciProvider = ciInfo_1.CI.CIRCLE_CI;
84
+ const refType = getCircleRefType();
85
+ const refName = getCircleRefName();
86
+ const buildId = process.env.CIRCLE_BUILD_NUM || '';
87
+ const toRevision = process.env.CIRCLE_SHA1 || '';
88
+ return {
89
+ ciProvider,
90
+ refType,
91
+ refName,
92
+ buildId,
93
+ toRevision,
94
+ };
95
+ }
96
+ const ciProvider = ciInfo_1.CI.NONE;
97
+ const refType = 'BRANCH';
98
+ const refName = (await (0, ci_1.getBranchName)()) || '';
99
+ const buildId = (0, uuid_1.v4)();
100
+ const toRevision = (await (0, ci_1.getCommitHash)()) || '';
101
+ return {
102
+ ciProvider,
103
+ refType,
104
+ refName,
105
+ buildId,
106
+ toRevision,
107
+ };
108
+ }
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.sendUploadRequest = sendUploadRequest;
7
+ const output_1 = __importDefault(require("../output"));
8
+ const texts_1 = require("../texts");
9
+ const utils_1 = require("../utils");
10
+ const node_fs_1 = require("node:fs");
11
+ const undici_1 = require("undici");
12
+ const token = process.env.BUDDY_UT_TOKEN || '';
13
+ const customServiceUrl = process.env.SNAPSHOTS_SERVICE_URL;
14
+ function getServiceUrl() {
15
+ if (customServiceUrl) {
16
+ return customServiceUrl;
17
+ }
18
+ if (token.startsWith('bud_ut_eu')) {
19
+ return 'https://api.eu.buddy.works';
20
+ }
21
+ return 'https://api.buddy.works';
22
+ }
23
+ async function sendUploadRequest(files, ciInfo) {
24
+ const formData = new undici_1.FormData();
25
+ files.forEach((file) => {
26
+ if ((0, utils_1.isFile)(file)) {
27
+ const buffer = (0, node_fs_1.readFileSync)(file);
28
+ formData.append('files', buffer);
29
+ }
30
+ });
31
+ formData.append('ref_type', ciInfo.refType);
32
+ formData.append('ref_name', ciInfo.refName);
33
+ formData.append('ci_provider', ciInfo.ciProvider);
34
+ formData.append('to_revision', ciInfo.toRevision);
35
+ formData.append('build_id', ciInfo.buildId);
36
+ const [message, json] = await sendRequest({
37
+ url: '/unit-tests/import',
38
+ payload: formData,
39
+ });
40
+ if (message) {
41
+ output_1.default.error(message);
42
+ }
43
+ if (json && json.errors) {
44
+ output_1.default.exitError(json.errors.map((e) => `${e.message}`).join('\n'));
45
+ }
46
+ return json;
47
+ }
48
+ async function sendRequest({ url, payload, }) {
49
+ const fullUrl = `${getServiceUrl()}${url}`;
50
+ output_1.default.debug((0, texts_1.LOG_SENDING_REQUEST)(fullUrl));
51
+ const init = {
52
+ method: 'POST',
53
+ redirect: 'follow',
54
+ headers: {
55
+ Authorization: `Bearer ${token}`,
56
+ },
57
+ body: payload,
58
+ };
59
+ const response = await (0, undici_1.fetch)(fullUrl, init);
60
+ const contentType = response.headers.get('content-type');
61
+ if (contentType && contentType.includes('application/json')) {
62
+ try {
63
+ const json = (await response.json());
64
+ return [undefined, json];
65
+ }
66
+ catch {
67
+ throw new Error(texts_1.ERR_INVALID_JSON);
68
+ }
69
+ }
70
+ const text = await response.text();
71
+ return [text, undefined];
72
+ }
@@ -30,6 +30,7 @@ exports.TUNNEL_EVENT_HTTP_CLOSED = exports.TUNNEL_EVENT_HTTP_OPEN = exports.TUNN
30
30
  exports.TUNNEL_COMPRESSION_METHOD_BR = exports.TUNNEL_COMPRESSION_METHOD_IDENTITY = exports.TARGET_ONLY_PORT_REGEX = exports.TARGET_HTTP_REGEX = exports.TARGET_TCP_TLS_REGEX = exports.ApiErrorTunnelsDisabled = exports.ApiErrorWorkspaceFlagged = exports.ApiErrorTunnelLimitReached = exports.ApiErrorAgentLimitReached = exports.ApiErrorDomainRestricted = exports.ApiErrorTargetInvalid = exports.ApiErrorWrongToken = exports.ApiErrorFailedToConnect = exports.ApiErrorAgentNotFound = exports.SUGGESTED_BROWSER_VERSION = exports.SOCKET_IO_EVENT_TUNNEL = exports.SOCKET_IO_EVENT_AGENT = exports.SOCKET_IO_EVENT_FETCH_FAILED = exports.SOCKET_IO_EVENT_FETCH_SUCCESS = exports.SOCKET_IO_EVENT_DISCONNECTED = exports.SOCKET_IO_EVENT_CONNECTED = exports.AGENT_SOCKET_MESSAGE_TUNNEL_HTTP_RETRY = exports.AGENT_SOCKET_MESSAGE_TUNNEL_HTTP_RESPONSE = exports.AGENT_SOCKET_MESSAGE_TUNNEL_HTTP_REQUEST = exports.AGENT_SOCKET_MESSAGE_TUNNEL_HTTP_REQUESTS = exports.AGENT_SOCKET_MESSAGE_TUNNEL_HTTP_IDENTIFIED = exports.AGENT_SOCKET_MESSAGE_TUNNEL_TLS_CLOSED = exports.AGENT_SOCKET_MESSAGE_TUNNEL_TLS_OPEN = exports.AGENT_SOCKET_MESSAGE_TUNNEL_TCP_CLOSED = exports.AGENT_SOCKET_MESSAGE_TUNNEL_TCP_OPEN = exports.AGENT_SOCKET_MESSAGE_TUNNEL_CLOSED = exports.AGENT_SOCKET_MESSAGE_TUNNEL_OPEN = exports.AGENT_SOCKET_MESSAGE_TUNNEL_STOPPED = exports.AGENT_SOCKET_MESSAGE_TUNNEL = exports.AGENT_SOCKET_MESSAGE_READY = exports.AGENT_ACTION_DELETE = exports.AGENT_ACTION_RESTART = exports.AGENT_ACTION_START = exports.AGENT_ACTION_STOP = exports.AGENT_STATUS_ENABLED = exports.AGENT_STATUS_FETCH_FAILED = exports.AGENT_STATUS_INITIALIZING = exports.AGENT_STATUS_DISABLED = exports.DEFAULT_TIMEOUT = exports.TUNNEL_CLOSED = exports.TUNNEL_OPEN = exports.TUNNEL_EVENT_STOPPED = exports.TUNNEL_EVENT_HTTP_RESPONSE = exports.TUNNEL_EVENT_HTTP_REQUEST = exports.TUNNEL_EVENT_HTTP_IDENTIFIED = void 0;
31
31
  exports.getBasicCommandTls = exports.getBasicCommandHttp = exports.getBasicCommandTcp = exports.createSshHostKey = exports.getRealTargetHost = exports.isWindows = exports.isLinux = exports.isOsx = exports.isDocker = exports.sleep = exports.getLatestVersion = exports.getVersionEnv = exports.getVersionWithoutEnv = exports.getVersion = exports.getHomeDirectory = exports.newCommand = exports.formatHelp = exports.getPlatform = exports.getHostname = exports.isStringRegExp = exports.getRootDir = exports.TCP_EVENT_CLOSED = exports.TUNNEL_LATENCY_EVENT_RECONNECTED = exports.TUNNEL_COMPRESSION_METHOD_DEFLATE = exports.TUNNEL_COMPRESSION_METHOD_GZIP = void 0;
32
32
  exports.apiErrorCodeToClass = apiErrorCodeToClass;
33
+ exports.isFile = isFile;
33
34
  const node_path_1 = __importStar(require("node:path"));
34
35
  const node_fs_1 = require("node:fs");
35
36
  const texts_1 = require("./texts");
@@ -451,3 +452,11 @@ const getBasicCommandTls = () => {
451
452
  return commandTls;
452
453
  };
453
454
  exports.getBasicCommandTls = getBasicCommandTls;
455
+ function isFile(path) {
456
+ try {
457
+ return (0, node_fs_1.statSync)(path).isFile();
458
+ }
459
+ catch {
460
+ return false;
461
+ }
462
+ }
@@ -3,6 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getBranchName = getBranchName;
7
+ exports.getCommitHash = getCommitHash;
6
8
  exports.getCiAndGitInfo = getCiAndGitInfo;
7
9
  exports.logCiInfo = logCiInfo;
8
10
  const promises_1 = __importDefault(require("node:fs/promises"));
@@ -130,7 +132,7 @@ async function getCommitDetails(commitHash) {
130
132
  }
131
133
  }
132
134
  }
133
- async function getCiAndGitInfo(baseBranch) {
135
+ async function getCiAndGitInfo({ baseBranch, skipBaseCommitDiscovery, }) {
134
136
  const isBuddy = process.env.BUDDY === 'true';
135
137
  const isGithubAction = process.env.GITHUB_ACTIONS === 'true';
136
138
  const isCircleCI = process.env.CIRCLECI === 'true';
@@ -138,7 +140,7 @@ async function getCiAndGitInfo(baseBranch) {
138
140
  const forceBranch = process.env.SNAPSHOTS_BRANCH;
139
141
  const forceCommit = process.env.SNAPSHOTS_COMMIT;
140
142
  const forceBaseCommit = process.env.SNAPSHOTS_BASE_COMMIT;
141
- const withoutBaseCommit = baseBranch === undefined;
143
+ const withoutBaseCommit = baseBranch === undefined || skipBaseCommitDiscovery;
142
144
  if (isBuddy) {
143
145
  const pullRequestNumber = Number(process.env.BUDDY_RUN_PR_NO);
144
146
  const isPR = !!pullRequestNumber;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bdy",
3
3
  "preferGlobal": false,
4
- "version": "1.10.12-stage",
4
+ "version": "1.10.13-dev",
5
5
  "type": "commonjs",
6
6
  "license": "MIT",
7
7
  "scripts": {
@@ -36,6 +36,8 @@
36
36
  "node-fetch": "3.3.2",
37
37
  "node-forge": "1.3.1",
38
38
  "path-is-inside": "1.0.2",
39
+ "fdir": "6.5.0",
40
+ "picomatch": "4.0.3",
39
41
  "pino": "8.20.0",
40
42
  "punycode.js": "2.3.1",
41
43
  "puppeteer-core": "23.6.0",
@@ -48,8 +50,7 @@
48
50
  "uuid": "10.0.0",
49
51
  "which": "4.0.0",
50
52
  "ws": "8.18.0",
51
- "zod": "3.24.2",
52
- "fast-xml-parser": "4.5.1"
53
+ "zod": "3.24.2"
53
54
  },
54
55
  "devDependencies": {
55
56
  "@eslint/js": "9.13.0",
@@ -59,6 +60,7 @@
59
60
  "@rollup/plugin-replace": "6.0.1",
60
61
  "@stylistic/eslint-plugin-js": "2.9.0",
61
62
  "@types/cross-spawn": "6.0.6",
63
+ "@types/picomatch": "4.0.2",
62
64
  "@types/eslint__js": "8.42.3",
63
65
  "@types/ssh2": "1.15.1",
64
66
  "@types/tar-stream": "3.1.3",