@testim/testim-cli 3.284.0 → 3.286.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,9 +7,11 @@
7
7
  const fs = require('fs');
8
8
  const childProcess = require('child_process');
9
9
  const path = require('path');
10
+ const chalk = require('chalk');
10
11
  const validateNpmPackageName = require('validate-npm-package-name');
11
12
  const { promisify } = require('util');
12
13
  const { ArgError } = require('../errors.js');
14
+ const { copyDir } = require('../utils/fsUtils');
13
15
 
14
16
  const exec = promisify(childProcess.exec);
15
17
 
@@ -40,10 +42,12 @@ module.exports.init = async function init(name) {
40
42
  const nameValidity = validateNpmPackageName(packageName);
41
43
 
42
44
  if (!nameValidity.validForNewPackages) {
43
- if (nameValidity.errors) nameValidity.errors.forEach((e) => console.log(e));
44
- if (nameValidity.warnings) nameValidity.warnings.forEach((e) => console.log(e));
45
+ const message = `The name '${packageName}' is not a valid package name:`;
46
+ console.log(chalk.red(message));
47
+ if (nameValidity.errors) nameValidity.errors.forEach((e) => console.log(chalk.red(e)));
48
+ if (nameValidity.warnings) nameValidity.warnings.forEach((e) => console.log(chalk.yellowBright(`warning: ${e}`)));
45
49
 
46
- throw new ArgError('Package name is not valid');
50
+ throw new ArgError(`${message}\nvalidation errors:\n${nameValidity.errors?.join('\n') || ''}\nwarnings:\n${nameValidity.warnings?.join('\n') || ''}`);
47
51
  }
48
52
 
49
53
  const response = await prompts({
@@ -55,14 +59,14 @@ module.exports.init = async function init(name) {
55
59
  inactive: 'yes',
56
60
  });
57
61
 
58
- const sourceFolder = response.isJs ? 'template.js' : 'template.ts';
62
+ const sourceFolder = response.isJs ? 'template.js' : 'template.ts'; // these are directories and not file names
59
63
 
60
64
  const source = path.join(__dirname, sourceFolder);
61
- const dest = path.join(process.cwd(), name);
65
+ const destDir = path.join(process.cwd(), name);
62
66
 
63
- let spinner = ora(`Creating new test project in ${dest}`).start();
67
+ let spinner = ora(`Creating new test project in ${destDir}`).start();
64
68
 
65
- await fs.promises.copyFile(source, dest);
69
+ await copyDir(source, destDir);
66
70
 
67
71
  const sourcePackageJson = path.join(__dirname, sourceFolder, 'package.json');
68
72
  const destPackageJson = path.join(process.cwd(), name, 'package.json');
@@ -79,9 +83,9 @@ module.exports.init = async function init(name) {
79
83
 
80
84
  spinner.succeed();
81
85
  spinner = ora('Installing dependencies').start();
82
- await exec('npm install', { cwd: dest });
86
+ await exec('npm install', { cwd: destDir });
83
87
 
84
88
  spinner.succeed();
85
89
 
86
- console.log(`Testim Dev Kit project folder successfully created in ${dest}.`);
90
+ console.log(`Testim Dev Kit project folder successfully created in ${destDir}.`);
87
91
  };
@@ -62,6 +62,7 @@ class FeatureFlagsService {
62
62
  LTNetworkCapabilities: new Rox.Flag(),
63
63
  downloadToBase64: new Rox.Flag(),
64
64
  dec2022eolBrowsers: new Rox.Flag(),
65
+ publicGridURL: new Rox.Configuration('public-grid.testim.io'),
65
66
  };
66
67
  Rox.register('default', this.flags);
67
68
  }
@@ -529,7 +529,11 @@ function buildSeleniumOptions(browserOptions, testName, testRunConfig, gridInfo,
529
529
  * One level targeting (either grid provider, host, browser name or browser version): { "devicefarm": { selenium_version: '3.141.59' } }
530
530
  * Two level targeting: { "internet explorer": { "11": { selenium_version: '3.141.59' } } }
531
531
  */
532
- const hostToProvider = { 'hub.lambdatest.com': 'lambdatest', 'public-grid.testim.io': 'testim', 'testgrid-devicefarm.us-west-2.amazonaws.com': 'devicefarm' };
532
+ const hostToProvider = {
533
+ 'hub.lambdatest.com': 'lambdatest',
534
+ [featureFlags.flags.publicGridURL.getValue()]: 'testim',
535
+ 'testgrid-devicefarm.us-west-2.amazonaws.com': 'devicefarm',
536
+ };
533
537
  const byGrid = (capabilities) => capabilities[gridInfo.provider] || capabilities[opts.host] || capabilities[hostToProvider[opts.host]];
534
538
  const getTargetingGroup = capabilities =>
535
539
  byGrid(capabilities) ||