@mablhq/mabl-cli 1.13.21 → 1.16.16

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 (38) hide show
  1. package/api/basicApiClient.js +56 -32
  2. package/api/featureSet.js +27 -0
  3. package/api/mablApiClient.js +22 -21
  4. package/api/mablApiClientFactory.js +0 -8
  5. package/browserLauncher/pageEvent.js +1 -0
  6. package/browserLauncher/playwrightBrowserLauncher/playwrightBrowser.js +3 -0
  7. package/browserLauncher/playwrightBrowserLauncher/playwrightBrowserLauncher.js +2 -0
  8. package/browserLauncher/playwrightBrowserLauncher/playwrightDom.js +12 -0
  9. package/browserLauncher/playwrightBrowserLauncher/playwrightPage.js +6 -0
  10. package/browserLauncher/puppeteerBrowserLauncher/puppeteerBrowser.js +10 -0
  11. package/browserLauncher/puppeteerBrowserLauncher/puppeteerElementHandle.js +12 -0
  12. package/browserLauncher/puppeteerBrowserLauncher/puppeteerPage.js +6 -0
  13. package/commands/applications/applications_cmds/list.js +5 -2
  14. package/commands/branches/branches_cmds/list.js +5 -2
  15. package/commands/config/config_cmds/get.js +5 -2
  16. package/commands/config/config_cmds/list.js +5 -2
  17. package/commands/credentials/credentials_cmds/list.js +5 -2
  18. package/commands/deploy/deploy_cmds/executionResultPresenter.js +5 -2
  19. package/commands/deploy/deploy_cmds/list.js +5 -2
  20. package/commands/environments/environments_cmds/list.js +5 -2
  21. package/commands/flows/flows_cmds/list.js +5 -2
  22. package/commands/plans/plans_cmds/list.js +5 -2
  23. package/commands/tests/executionUtil.js +6 -1
  24. package/commands/tests/testsUtil.js +8 -23
  25. package/commands/tests/tests_cmds/list.js +5 -2
  26. package/commands/tests/tests_cmds/trainer_cmds/trainerUtil.js +2 -2
  27. package/commands/workspaces/workspace_cmds/list.js +5 -2
  28. package/domUtil/index.js +1 -1
  29. package/execution/index.js +1 -1
  30. package/execution/index.js.LICENSE.txt +0 -6
  31. package/mablApi/index.js +1 -1
  32. package/mablscript/MablStep.js +3 -0
  33. package/mablscript/steps/AccessibilityCheck.js +14 -2
  34. package/mablscriptFind/index.js +1 -1
  35. package/package.json +3 -3
  36. package/resources/mablFind.js +1 -1
  37. package/util/resourceUtil.js +39 -13
  38. package/api/entities/JourneyRunScheduledMessage.js +0 -2
@@ -1,9 +1,12 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  const constants_1 = require("../../constants");
4
7
  const util_1 = require("../../commandUtil/util");
5
8
  const mablApiClientFactory_1 = require("../../../api/mablApiClientFactory");
6
- const Table = require("cli-table3");
9
+ const cli_table3_1 = __importDefault(require("cli-table3"));
7
10
  const moment = require("moment");
8
11
  const loggingProvider_1 = require("../../../providers/logging/loggingProvider");
9
12
  exports.command = 'list';
@@ -41,7 +44,7 @@ async function listPlans(parsed) {
41
44
  return plans.length;
42
45
  }
43
46
  function printPlans(plans) {
44
- const table = new Table({
47
+ const table = new cli_table3_1.default({
45
48
  head: ['ID', 'Name', 'Created time'],
46
49
  wordWrap: true,
47
50
  });
@@ -15,7 +15,12 @@ async function runTheTestInNewWindow(test, flows, branchName, url, credentialsId
15
15
  const authConfig = await new authenticationProvider_1.AuthenticationProvider().getAuthConfigWithAutoRenew();
16
16
  const browserPreferences = testsUtil_1.generateChromiumPreferencesFile();
17
17
  const browserPreferencesDirectory = await testsUtil_1.prepareChromePreferencesDirectory(browserPreferences);
18
- const runnerType = await (await mablApiClientFactory_1.MablApiClientFactory.createApiClient()).getRunnerTypeFromFeatureFlag(test.organization_id);
18
+ const apiClient = await mablApiClientFactory_1.MablApiClientFactory.createApiClient();
19
+ if (!test.organization_id) {
20
+ throw new Error('The test workspace ID is required, but it is not set.');
21
+ }
22
+ const featureFlags = await apiClient.getEffectiveFeaturesByWorkspaceId(test.organization_id);
23
+ const runnerType = featureFlags.getRunnerType();
19
24
  const trainingBrowser = await testsUtil_1.createBrowserWithAuthedExtension(authConfig.accessToken, width || exports.DEFAULT_BROWSER_WIDTH, height || exports.DEFAULT_BROWSER_HEIGHT, browserPreferencesDirectory, {
20
25
  runnerType,
21
26
  });
@@ -22,7 +22,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
22
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.toBasicHttpAuthenticationCredentials = exports.generateChromiumPreferencesFile = exports.logTestInfoIfPresent = exports.calculateTotalTimeSeconds = exports.extractTestRunConfig = exports.pullDownTestRunConfig = exports.validateRunCommandWithLabels = exports.validateRunEditCommand = exports.downloadUploadFile = exports.sleep = exports.editTheTest = exports.runTheTest = exports.prepareTrainerForSplitPlayback = exports.createTrainingSession = exports.cleanUpInitialPages = exports.getExtensionBackgroundPageWithCliTool = exports.setUpAuthTokenForExtension = exports.connectToExistingBrowserWebsocket = exports.connectToExistingBrowser = exports.createBrowserForExecutionEngine = exports.addExecutionEngineLaunchArgs = exports.createBrowser = exports.prepareChromePreferencesDirectory = exports.createBrowserWithAuthedExtension = exports.findChrome = exports.searchForChrome = exports.getFinalUrl = exports.getTempChromePrefDirectory = void 0;
25
+ exports.toBasicHttpAuthenticationCredentials = exports.generateChromiumPreferencesFile = exports.logTestInfoIfPresent = exports.calculateTotalTimeSeconds = exports.extractTestRunConfig = exports.pullDownTestRunConfig = exports.validateRunCommandWithLabels = exports.validateRunEditCommand = exports.downloadUploadFile = exports.sleep = exports.editTheTest = exports.runTheTest = exports.prepareTrainerForSplitPlayback = exports.createTrainingSession = exports.cleanUpInitialPages = exports.getExtensionBackgroundPageWithCliTool = exports.setUpAuthTokenForExtension = exports.createBrowserForExecutionEngine = exports.addExecutionEngineLaunchArgs = exports.createBrowser = exports.prepareChromePreferencesDirectory = exports.createBrowserWithAuthedExtension = exports.findChrome = exports.searchForChrome = exports.getFinalUrl = exports.getTempChromePrefDirectory = void 0;
26
26
  const os = __importStar(require("os"));
27
27
  const trainerUtil_1 = require("./tests_cmds/trainer_cmds/trainerUtil");
28
28
  const fs = __importStar(require("fs-extra"));
@@ -37,7 +37,7 @@ const env_1 = require("../../env/env");
37
37
  const axios_1 = __importDefault(require("axios"));
38
38
  const httpUtil_1 = require("../../util/httpUtil");
39
39
  const loggingProvider_1 = require("../../providers/logging/loggingProvider");
40
- const Table = require("cli-table3");
40
+ const cli_table3_1 = __importDefault(require("cli-table3"));
41
41
  const logLineMessaging_1 = require("../../core/messaging/logLineMessaging");
42
42
  const resourceUtil_1 = require("../../util/resourceUtil");
43
43
  const mobileEmulationUtil_1 = require("./mobileEmulationUtil");
@@ -158,6 +158,8 @@ async function launchBrowserInstance(chromePath, launchArgs, userDataDir, headle
158
158
  messaging_1.mablEventEmitter.log(error.message);
159
159
  });
160
160
  }
161
+ messaging_1.mablEventEmitter.log('Browser launch failed', Date.now(), logLineMessaging_1.LogLineColor.red);
162
+ messaging_1.mablEventEmitter.log(error.message);
161
163
  }
162
164
  return browser;
163
165
  }
@@ -197,7 +199,7 @@ function removeTempBrowserPreferencesDirectory(tempDirPath) {
197
199
  }
198
200
  }
199
201
  async function createBrowser(browserWidth, browserHeight, headless, containerTesting, tempBrowserPreferencesDirectory, options) {
200
- const { credentials, browserPath, disableIsolation, extraHttpHeaders, ignoreCertificateErrors, emulationConfig, enableExtensions, runnerType, loggerFunc, } = options || {};
202
+ const { credentials, browserPath, disableIsolation, extraHttpHeaders, ignoreCertificateErrors, emulationConfig, enableExtensions, runnerType, loggerFunc, resourcesDirectoryOverride, } = options || {};
201
203
  const chromePath = browserPath !== null && browserPath !== void 0 ? browserPath : findChrome();
202
204
  if (!chromePath.length) {
203
205
  messaging_1.mablEventEmitter.log(chalk.yellow('Could not find a local install of Chrome to use, please ensure you have it installed and try again'));
@@ -213,8 +215,8 @@ async function createBrowser(browserWidth, browserHeight, headless, containerTes
213
215
  }
214
216
  disableFeaturesFlags.push('site-per-process');
215
217
  launchArgs.push(`--disable-features=${disableFeaturesFlags.join(',')}`);
216
- const fakeMicrophoneMedia = resourceUtil_1.findResource('media/mabl_test_audio.wav');
217
- const fakeWebcamMedia = resourceUtil_1.findResource('media/mabl_test_pattern.y4m');
218
+ const fakeMicrophoneMedia = resourceUtil_1.findResource('media/mabl_test_audio.wav', resourcesDirectoryOverride);
219
+ const fakeWebcamMedia = resourceUtil_1.findResource('media/mabl_test_pattern.y4m', resourcesDirectoryOverride);
218
220
  const defaultDeviceDescriptor = addLaunchArgs(launchArgs, browserWidth, browserHeight, fakeMicrophoneMedia, fakeWebcamMedia, ignoreCertificateErrors, emulationConfig);
219
221
  let ignoreDefaultArgs;
220
222
  if (enableExtensions) {
@@ -282,23 +284,6 @@ async function createBrowserForExecutionEngine(browserWidth, browserHeight, head
282
284
  return maybeBrowser;
283
285
  }
284
286
  exports.createBrowserForExecutionEngine = createBrowserForExecutionEngine;
285
- async function connectToExistingBrowser(port, browserHeight, browserWidth, currentDownloadPath, runnerType) {
286
- const defaultDeviceDescriptor = {
287
- width: browserWidth,
288
- height: browserHeight,
289
- };
290
- const response = await axios_1.default.get(`http://localhost:${port}/json/version`);
291
- const url = response.data.webSocketDebuggerUrl;
292
- return connectToExistingBrowserWebsocket(url, currentDownloadPath, defaultDeviceDescriptor, runnerType);
293
- }
294
- exports.connectToExistingBrowser = connectToExistingBrowser;
295
- function connectToExistingBrowserWebsocket(websocketEndpoint, currentDownloadPath, defaultDeviceDescriptor, runnerType) {
296
- return browserLauncher_1.BrowserLauncherFactory.createRunner(runnerType).connect({
297
- defaultDeviceDescriptor,
298
- browserWSEndpoint: websocketEndpoint,
299
- }, currentDownloadPath);
300
- }
301
- exports.connectToExistingBrowserWebsocket = connectToExistingBrowserWebsocket;
302
287
  async function setUpAuthTokenForExtension(browser, accessToken) {
303
288
  const backgroundPage = await browser.getExtensionBackgroundPage(trainerUtil_1.getTrainerId());
304
289
  await backgroundPage.evaluate((token) => {
@@ -472,7 +457,7 @@ function handleExtensionMessage(message, trainingBrowser) {
472
457
  break;
473
458
  }
474
459
  trainingSessionActions_1.TrainingEventEmitter.sessionSaved(trainedTestInfoMessage.test.id, trainedTestInfoMessage.test.invariant_id, trainedTestInfoMessage.branch, trainedTestInfoMessage.planId);
475
- const table = new Table({
460
+ const table = new cli_table3_1.default({
476
461
  head: [chalk.yellow('Saved Test Info')],
477
462
  wordWrap: true,
478
463
  });
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const Table = require("cli-table3");
6
+ const cli_table3_1 = __importDefault(require("cli-table3"));
4
7
  const moment = require("moment");
5
8
  const mablApiClientFactory_1 = require("../../../api/mablApiClientFactory");
6
9
  const util_1 = require("../../commandUtil/util");
@@ -72,7 +75,7 @@ async function listTests(parsed) {
72
75
  return journeys.length;
73
76
  }
74
77
  function printTestsAsTable(tests) {
75
- const table = new Table({
78
+ const table = new cli_table3_1.default({
76
79
  head: ['ID', 'Name', 'Created time'],
77
80
  wordWrap: true,
78
81
  });
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.checkForTrainerUpdate = exports.getTrainerVersion = exports.getTrainerId = exports.updateMablTrainer = exports.getMablTrainerExtensionPath = exports.getTrainerZipFile = exports.getTrainerManifestPath = exports.getTrainerUnzippedPath = exports.getTrainerPath = exports.LOCAL_TRAINER_ID = void 0;
7
7
  const env_1 = require("../../../../env/env");
8
- const Table = require("cli-table3");
8
+ const cli_table3_1 = __importDefault(require("cli-table3"));
9
9
  const httpUtil_1 = require("../../../../util/httpUtil");
10
10
  const messaging_1 = require("../../../../core/messaging/messaging");
11
11
  const envPaths = require('env-paths');
@@ -131,7 +131,7 @@ async function checkForTrainerUpdate() {
131
131
  .then((checkSum) => {
132
132
  const checkSumLatest = checkSum.match('md5=([^}]+)');
133
133
  if (checkSumLatest && checkSumLatest[1] !== currentTrainerCheckSum) {
134
- const table = new Table({
134
+ const table = new cli_table3_1.default({
135
135
  head: [chalk.yellow('Trainer Update Available')],
136
136
  wordWrap: true,
137
137
  });
@@ -1,8 +1,11 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  const js_yaml_1 = require("js-yaml");
4
7
  const mablApiClientFactory_1 = require("../../../api/mablApiClientFactory");
5
- const Table = require("cli-table3");
8
+ const cli_table3_1 = __importDefault(require("cli-table3"));
6
9
  const moment = require("moment");
7
10
  const util_1 = require("../../commandUtil/util");
8
11
  const interfaces_1 = require("../../commandUtil/interfaces");
@@ -43,7 +46,7 @@ function printWorkspaces(workspaces, output) {
43
46
  loggingProvider_1.logger.info(js_yaml_1.dump(workspaces));
44
47
  break;
45
48
  default:
46
- const table = new Table({
49
+ const table = new cli_table3_1.default({
47
50
  head: ['ID', 'Name', 'Created time'],
48
51
  wordWrap: true,
49
52
  });