@wdio/cli 8.19.0 → 8.20.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.
- package/build/cjs/index.js +2 -1
- package/build/commands/config.d.ts +2 -2
- package/build/commands/config.d.ts.map +1 -1
- package/build/commands/config.js +6 -6
- package/build/commands/install.d.ts +0 -5
- package/build/commands/install.d.ts.map +1 -1
- package/build/commands/install.js +20 -16
- package/build/constants.d.ts.map +1 -1
- package/build/constants.js +5 -6
- package/build/install.d.ts +4 -0
- package/build/install.d.ts.map +1 -0
- package/build/install.js +39 -0
- package/build/interface.d.ts +1 -1
- package/build/launcher.d.ts +1 -1
- package/build/launcher.d.ts.map +1 -1
- package/build/launcher.js +4 -2
- package/build/types.d.ts +0 -1
- package/build/types.d.ts.map +1 -1
- package/build/utils.d.ts +9 -9
- package/build/utils.d.ts.map +1 -1
- package/build/utils.js +31 -30
- package/package.json +10 -10
package/build/cjs/index.js
CHANGED
|
@@ -41,7 +41,7 @@ export declare const builder: (yargs: Argv) => Argv<import("yargs").Omit<{}, "ya
|
|
|
41
41
|
};
|
|
42
42
|
}>>;
|
|
43
43
|
export declare const parseAnswers: (yes: boolean) => Promise<ParsedAnswers>;
|
|
44
|
-
export declare function runConfigCommand(parsedAnswers: ParsedAnswers,
|
|
44
|
+
export declare function runConfigCommand(parsedAnswers: ParsedAnswers, npmTag: string): Promise<void>;
|
|
45
45
|
export declare function handler(argv: ConfigCommandArguments, runConfigCmd?: typeof runConfigCommand): Promise<{
|
|
46
46
|
success: boolean;
|
|
47
47
|
parsedAnswers: ParsedAnswers;
|
|
@@ -69,5 +69,5 @@ export declare function canAccessConfigPath(configPath: string): Promise<string
|
|
|
69
69
|
* @param {boolean} useYarn parameter set to true if yarn is used
|
|
70
70
|
* @param {Function} runConfigCmd runConfig method to be replaceable for unit testing
|
|
71
71
|
*/
|
|
72
|
-
export declare function missingConfigurationPrompt(command: string, configPath: string,
|
|
72
|
+
export declare function missingConfigurationPrompt(command: string, configPath: string, runConfigCmd?: typeof runConfigCommand): Promise<false | undefined>;
|
|
73
73
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAWjC,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAIxE,eAAO,MAAM,OAAO,WAAW,CAAA;AAC/B,eAAO,MAAM,IAAI,4EAA4E,CAAA;AAE7F,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;CAkBV,CAAA;AAEV,eAAO,MAAM,OAAO,UAAW,IAAI;;;;;;;;;;;;;;;;;;GAKlC,CAAA;AAED,eAAO,MAAM,YAAY,QAAwB,OAAO,KAAG,QAAQ,aAAa,CAyF/E,CAAA;AAED,wBAAsB,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAWjC,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAIxE,eAAO,MAAM,OAAO,WAAW,CAAA;AAC/B,eAAO,MAAM,IAAI,4EAA4E,CAAA;AAE7F,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;CAkBV,CAAA;AAEV,eAAO,MAAM,OAAO,UAAW,IAAI;;;;;;;;;;;;;;;;;;GAKlC,CAAA;AAED,eAAO,MAAM,YAAY,QAAwB,OAAO,KAAG,QAAQ,aAAa,CAyF/E,CAAA;AAED,wBAAsB,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,iBAsBlF;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,sBAAsB,EAAE,YAAY,0BAAmB;;;;GAQ1F;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM;;;GAMzD;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,+BAQ3D;AAED;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,0BAAmB,8BA4BpH"}
|
package/build/commands/config.js
CHANGED
|
@@ -42,7 +42,7 @@ export const parseAnswers = async function (yes) {
|
|
|
42
42
|
const reporterPackages = answers.reporters.map((reporter) => convertPackageHashToObject(reporter));
|
|
43
43
|
const presetPackage = convertPackageHashToObject(answers.preset || '');
|
|
44
44
|
const projectProps = await getProjectProps(process.cwd());
|
|
45
|
-
const projectRootDir = getProjectRoot(answers
|
|
45
|
+
const projectRootDir = await getProjectRoot(answers);
|
|
46
46
|
const packagesToInstall = [
|
|
47
47
|
runnerPackage.package,
|
|
48
48
|
frameworkPackage.package,
|
|
@@ -115,12 +115,12 @@ export const parseAnswers = async function (yes) {
|
|
|
115
115
|
wdioConfigPath
|
|
116
116
|
};
|
|
117
117
|
};
|
|
118
|
-
export async function runConfigCommand(parsedAnswers,
|
|
118
|
+
export async function runConfigCommand(parsedAnswers, npmTag) {
|
|
119
119
|
console.log('\n');
|
|
120
120
|
await createPackageJSON(parsedAnswers);
|
|
121
121
|
await setupTypeScript(parsedAnswers);
|
|
122
122
|
await setupBabel(parsedAnswers);
|
|
123
|
-
await npmInstall(parsedAnswers,
|
|
123
|
+
await npmInstall(parsedAnswers, npmTag);
|
|
124
124
|
await createWDIOConfig(parsedAnswers);
|
|
125
125
|
await createWDIOScript(parsedAnswers);
|
|
126
126
|
/**
|
|
@@ -135,7 +135,7 @@ export async function runConfigCommand(parsedAnswers, useYarn, npmTag) {
|
|
|
135
135
|
}
|
|
136
136
|
export async function handler(argv, runConfigCmd = runConfigCommand) {
|
|
137
137
|
const parsedAnswers = await parseAnswers(argv.yes);
|
|
138
|
-
await runConfigCmd(parsedAnswers, argv.
|
|
138
|
+
await runConfigCmd(parsedAnswers, argv.npmTag);
|
|
139
139
|
return {
|
|
140
140
|
success: true,
|
|
141
141
|
parsedAnswers,
|
|
@@ -172,7 +172,7 @@ export async function canAccessConfigPath(configPath) {
|
|
|
172
172
|
* @param {boolean} useYarn parameter set to true if yarn is used
|
|
173
173
|
* @param {Function} runConfigCmd runConfig method to be replaceable for unit testing
|
|
174
174
|
*/
|
|
175
|
-
export async function missingConfigurationPrompt(command, configPath,
|
|
175
|
+
export async function missingConfigurationPrompt(command, configPath, runConfigCmd = runConfigCommand) {
|
|
176
176
|
const message = (`Could not execute "${command}" due to missing configuration, file ` +
|
|
177
177
|
`"${path.parse(configPath).name}[.js/.ts]" not found! ` +
|
|
178
178
|
'Would you like to create one?');
|
|
@@ -192,5 +192,5 @@ export async function missingConfigurationPrompt(command, configPath, useYarn =
|
|
|
192
192
|
return !process.env.VITEST_WORKER_ID && process.exit(0);
|
|
193
193
|
}
|
|
194
194
|
const parsedAnswers = await parseAnswers(false);
|
|
195
|
-
await runConfigCmd(parsedAnswers,
|
|
195
|
+
await runConfigCmd(parsedAnswers, 'latest');
|
|
196
196
|
}
|
|
@@ -3,11 +3,6 @@ import type { InstallCommandArguments } from '../types.js';
|
|
|
3
3
|
export declare const command = "install <type> <name>";
|
|
4
4
|
export declare const desc: string;
|
|
5
5
|
export declare const cmdArgs: {
|
|
6
|
-
readonly yarn: {
|
|
7
|
-
readonly desc: "Install packages using yarn";
|
|
8
|
-
readonly type: "boolean";
|
|
9
|
-
readonly default: false;
|
|
10
|
-
};
|
|
11
6
|
readonly config: {
|
|
12
7
|
readonly desc: "Location of your WDIO configuration (default: wdio.conf.(js|ts|cjs|mjs))";
|
|
13
8
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAYjC,OAAO,KAAK,EAAE,uBAAuB,EAAoB,MAAM,aAAa,CAAA;AAU5E,eAAO,MAAM,OAAO,0BAA0B,CAAA;AAC9C,eAAO,MAAM,IAAI,QAIN,CAAA;AAEX,eAAO,MAAM,OAAO;;;;CAIV,CAAA;AAEV,eAAO,MAAM,OAAO,UAAW,IAAI,aAalC,CAAA;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,uBAAuB,iBAoF1D"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/* eslint-disable no-console */
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
|
|
5
|
-
import {
|
|
4
|
+
// @ts-expect-error https://github.com/egoist/detect-package-manager/pull/6
|
|
5
|
+
import { detect } from 'detect-package-manager';
|
|
6
|
+
import { getProjectRoot, replaceConfig, findInConfig, addServiceDeps, convertPackageHashToObject } from '../utils.js';
|
|
7
|
+
import { installPackages } from '../install.js';
|
|
6
8
|
import { formatConfigFilePaths, canAccessConfigPath, missingConfigurationPrompt } from './config.js';
|
|
7
9
|
import { SUPPORTED_PACKAGES, CLI_EPILOGUE } from '../constants.js';
|
|
8
10
|
const supportedInstallations = {
|
|
@@ -19,11 +21,6 @@ export const desc = [
|
|
|
19
21
|
'and modifies the wdio.conf.js accordingly.'
|
|
20
22
|
].join(' ');
|
|
21
23
|
export const cmdArgs = {
|
|
22
|
-
yarn: {
|
|
23
|
-
desc: 'Install packages using yarn',
|
|
24
|
-
type: 'boolean',
|
|
25
|
-
default: false
|
|
26
|
-
},
|
|
27
24
|
config: {
|
|
28
25
|
desc: 'Location of your WDIO configuration (default: wdio.conf.(js|ts|cjs|mjs))',
|
|
29
26
|
},
|
|
@@ -44,9 +41,8 @@ export async function handler(argv) {
|
|
|
44
41
|
/**
|
|
45
42
|
* type = service | reporter | framework
|
|
46
43
|
* name = names for the supported service or reporter
|
|
47
|
-
* yarn = optional flag to install package using yarn instead of default yarn
|
|
48
44
|
*/
|
|
49
|
-
const { type, name,
|
|
45
|
+
const { type, name, config } = argv;
|
|
50
46
|
/**
|
|
51
47
|
* verify for supported types via `supportedInstallations` keys
|
|
52
48
|
*/
|
|
@@ -58,9 +54,13 @@ export async function handler(argv) {
|
|
|
58
54
|
/**
|
|
59
55
|
* verify if the name of the `type` is valid
|
|
60
56
|
*/
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
const options = supportedInstallations[type].map((pkg) => pkg.short);
|
|
58
|
+
if (!options.find((pkg) => pkg === name)) {
|
|
59
|
+
console.log(`Error: ${name} is not a supported ${type}.\n\n` +
|
|
60
|
+
`Available options for a ${type} are:\n` +
|
|
61
|
+
`- ${options.join('\n- ')}`);
|
|
63
62
|
process.exit(0);
|
|
63
|
+
// keep return for unit test purposes
|
|
64
64
|
return;
|
|
65
65
|
}
|
|
66
66
|
const defaultPath = path.resolve(process.cwd(), 'wdio.conf');
|
|
@@ -70,29 +70,33 @@ export async function handler(argv) {
|
|
|
70
70
|
const wdioConfPath = await canAccessConfigPath(wdioConfPathWithNoExtension);
|
|
71
71
|
if (!wdioConfPath) {
|
|
72
72
|
try {
|
|
73
|
-
await missingConfigurationPrompt('install', wdioConfPathWithNoExtension
|
|
73
|
+
await missingConfigurationPrompt('install', wdioConfPathWithNoExtension);
|
|
74
74
|
return handler(argv);
|
|
75
75
|
}
|
|
76
76
|
catch {
|
|
77
77
|
process.exit(1);
|
|
78
|
+
// keep return for unit test purposes
|
|
78
79
|
return;
|
|
79
80
|
}
|
|
80
81
|
}
|
|
81
82
|
const configFile = await fs.readFile(wdioConfPath, { encoding: 'utf-8' });
|
|
82
83
|
const match = findInConfig(configFile, type);
|
|
84
|
+
const projectRoot = await getProjectRoot();
|
|
83
85
|
if (match && match[0].includes(name)) {
|
|
84
86
|
console.log(`The ${type} ${name} is already part of your configuration.`);
|
|
85
87
|
process.exit(0);
|
|
88
|
+
// keep return for unit test purposes
|
|
86
89
|
return;
|
|
87
90
|
}
|
|
88
91
|
const selectedPackage = supportedInstallations[type].find(({ short }) => short === name);
|
|
89
92
|
const pkgsToInstall = selectedPackage ? [selectedPackage.package] : [];
|
|
90
93
|
addServiceDeps(selectedPackage ? [selectedPackage] : [], pkgsToInstall, true);
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
94
|
+
const pm = await detect({ cwd: projectRoot });
|
|
95
|
+
console.log(`Installing "${selectedPackage.package}" using ${pm}.`);
|
|
96
|
+
const success = await installPackages(projectRoot, pkgsToInstall, true);
|
|
97
|
+
if (!success) {
|
|
95
98
|
process.exit(1);
|
|
99
|
+
// keep return for unit test purposes
|
|
96
100
|
return;
|
|
97
101
|
}
|
|
98
102
|
console.log(`Package "${selectedPackage.package}" installed successfully.`);
|
package/build/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAqC,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAqC,MAAM,aAAa,CAAA;AAQ7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAG9C,eAAO,MAAM,GAAG,KAA6B,CAAA;AAE7C,eAAO,MAAM,YAAY,QAAqE,CAAA;AAE9F,eAAO,MAAM,mBAAmB,8HAI/B,CAAA;AAED,eAAO,MAAM,+BAA+B,UAA2C,CAAA;AACvF,eAAO,MAAM,0BAA0B;oBAAqE,MAAM;eAAa,MAAM;eAAa,MAAM;YAYvJ,CAAA;AAED,eAAO,MAAM,6BAA6B,8EAGzC,CAAA;AAED,eAAO,MAAM,iCAAiC,8CAG7C,CAAA;AAED,eAAO,MAAM,WAAW,KAAK,CAAA;AAE7B,eAAO,MAAM,cAAc;;;;CAI1B,CAAA;AAED,eAAO,MAAM,UAAU;;;;CAItB,CAAA;AAED,oBAAY,eAAe;IACvB,KAAK,gCAAgC;IACrC,EAAE,iDAAiD;IACnD,GAAG,QAAQ;CACd;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;CAsF9B,CAAA;AAED,eAAO,MAAM,gCAAgC;;;;;;IAS5C,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM3D,CAAA;AAED,oBAAY,aAAa;IACrB,KAAK,wBAAwB;IAC7B,UAAU,kCAAkC;IAC5C,SAAS,kCAAkC;IAC3C,YAAY,oCAAoC;IAChD,YAAY,uEAAuE;IACnF,IAAI,iCAAiC;CACxC;AAED,oBAAY,uBAAuB;IAC/B,aAAa,mDAAmD;IAChE,eAAe,mDAAmD;IAClE,aAAa,mBAAmB;CACnC;AAED,aAAK,eAAe;IAChB,KAAK,UAAU;IACf,IAAI,SAAS;CAChB;AAED,oBAAY,aAAa;IACrB,EAAE,OAAO;IACT,EAAE,OAAO;IACT,IAAI,SAAS;CAChB;AAED,eAAO,MAAM,gBAAgB;;;GAG5B,CAAA;AAED,eAAO,MAAM,mBAAmB;;;GAG/B,CAAA;AAED,eAAO,MAAM,oBAAoB;;;GAKhC,CAAA;AAED,iBAAS,eAAe,CAAE,OAAO,EAAE,YAAY,WAE9C;AAED,wBAAgB,YAAY,CAAE,OAAO,EAAE,YAAY,WAElD;AAMD,eAAO,MAAM,aAAa,SAYzB,CAAA;AAqBD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAkBqB,YAAY;;;;;;;oBAYX,YAAY;;;;;;;oBAWZ,YAAY;;;;;;;;;;;oBAOb,YAAY;;;;;;;;;;oBAgBX,YAAY;;;;;oBAQb,YAAY;;;;;;;;oBAMZ,YAAY;;;;;;;;oBAyBZ,YAAY;;;;;;oBAoDZ,YAAY;;;;;;;oBASZ,YAAY;;;;;;uBA0BR,YAAY;;;;;;;;;;uBAaxC,YAAY;uBASe,YAAY;;;;;;uBAmBZ,YAAY;oBAIf,YAAY;;;;;;uBAuCT,YAAY;oBAKf,YAAY;;;;;;;;;;;;;;;;uBA+BpC,YAAY;;;;uBAuBZ,YAAY;;;;;;;;;IA2DjC,CAAA;AAEF,eAAO,MAAM,kCAAkC,UAM9C,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CA+QtE,CAAA"}
|
package/build/constants.js
CHANGED
|
@@ -2,7 +2,7 @@ import fs from 'node:fs/promises';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { createRequire } from 'node:module';
|
|
4
4
|
import { HOOK_DEFINITION } from '@wdio/utils';
|
|
5
|
-
import { detectCompiler, getDefaultFiles, convertPackageHashToObject,
|
|
5
|
+
import { detectCompiler, getDefaultFiles, convertPackageHashToObject, getProjectRoot, } from './utils.js';
|
|
6
6
|
const require = createRequire(import.meta.url);
|
|
7
7
|
export const pkg = require('../package.json');
|
|
8
8
|
export const CLI_EPILOGUE = `Documentation: https://webdriver.io\n@wdio/cli (v${pkg.version})`;
|
|
@@ -87,9 +87,9 @@ export const SUPPORTED_PACKAGES = {
|
|
|
87
87
|
{ name: 'html-nice', value: 'wdio-html-nice-reporter$--$html-nice' },
|
|
88
88
|
{ name: 'slack', value: '@moroo/wdio-slack-reporter$--$slack' },
|
|
89
89
|
{ name: 'teamcity', value: 'wdio-teamcity-reporter$--$teamcity' },
|
|
90
|
-
{ name: 'delta', value: '@delta-reporter/wdio-delta-reporter-service' },
|
|
90
|
+
{ name: 'delta', value: '@delta-reporter/wdio-delta-reporter-service$--$delta' },
|
|
91
91
|
{ name: 'testrail', value: '@wdio/testrail-reporter$--$testrail' },
|
|
92
|
-
{ name: 'light', value: 'wdio-light-reporter
|
|
92
|
+
{ name: 'light', value: 'wdio-light-reporter$--$light' }
|
|
93
93
|
],
|
|
94
94
|
plugin: [
|
|
95
95
|
{ name: 'wait-for: utilities that provide functionalities to wait for certain conditions till a defined task is complete.\n > https://www.npmjs.com/package/wdio-wait-for', value: 'wdio-wait-for$--$wait-for' },
|
|
@@ -118,7 +118,7 @@ export const SUPPORTED_PACKAGES = {
|
|
|
118
118
|
{ name: 'docker', value: 'wdio-docker-service$--$docker' },
|
|
119
119
|
{ name: 'ui5', value: 'wdio-ui5-service$--$ui5' },
|
|
120
120
|
{ name: 'wiremock', value: 'wdio-wiremock-service$--$wiremock' },
|
|
121
|
-
{ name: 'ng-apimock', value: 'wdio-ng-apimock-service
|
|
121
|
+
{ name: 'ng-apimock', value: 'wdio-ng-apimock-service$--$ng-apimock' },
|
|
122
122
|
{ name: 'slack', value: 'wdio-slack-service$--$slack' },
|
|
123
123
|
{ name: 'cucumber-viewport-logger', value: 'wdio-cucumber-viewport-logger-service$--$cucumber-viewport-logger' },
|
|
124
124
|
{ name: 'intercept', value: 'wdio-intercept-service$--$intercept' },
|
|
@@ -494,8 +494,7 @@ export const QUESTIONNAIRE = [{
|
|
|
494
494
|
name: 'serenityLibPath',
|
|
495
495
|
message: 'What should be the location of your Serenity/JS Screenplay Pattern library?',
|
|
496
496
|
default: /* istanbul ignore next */ async (answers) => {
|
|
497
|
-
const
|
|
498
|
-
const projectRootDir = getProjectRoot(answers, projectProps);
|
|
497
|
+
const projectRootDir = await getProjectRoot(answers);
|
|
499
498
|
const specsDir = path.resolve(projectRootDir, path.dirname(answers.specs || '').replace(/\*\*$/, ''));
|
|
500
499
|
return path.resolve(specsDir, '..', 'serenity');
|
|
501
500
|
},
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type PM } from 'detect-package-manager';
|
|
2
|
+
export declare function installPackages(cwd: string, packages: string[], dev: boolean): Promise<boolean>;
|
|
3
|
+
export declare function getInstallCommand(pm: PM, packages: string[], dev: boolean): string;
|
|
4
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,KAAK,EAAE,EAAE,MAAM,wBAAwB,CAAA;AAgBxD,wBAAsB,eAAe,CAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,oBAwBnF;AAED,wBAAgB,iBAAiB,CAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,UAG1E"}
|
package/build/install.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { execa } from 'execa';
|
|
2
|
+
// @ts-expect-error // @ts-expect-error https://github.com/egoist/detect-package-manager/pull/6
|
|
3
|
+
import { detect } from 'detect-package-manager';
|
|
4
|
+
const installCommand = {
|
|
5
|
+
npm: 'install',
|
|
6
|
+
pnpm: 'add',
|
|
7
|
+
yarn: 'add',
|
|
8
|
+
bun: 'install'
|
|
9
|
+
};
|
|
10
|
+
const devFlag = {
|
|
11
|
+
npm: '--save-dev',
|
|
12
|
+
pnpm: '--save-dev',
|
|
13
|
+
yarn: '--dev',
|
|
14
|
+
bun: '--dev'
|
|
15
|
+
};
|
|
16
|
+
export async function installPackages(cwd, packages, dev) {
|
|
17
|
+
const pm = await detect({ cwd });
|
|
18
|
+
const devParam = dev ? devFlag[pm] : '';
|
|
19
|
+
console.log('\n');
|
|
20
|
+
const p = execa(pm, [installCommand[pm], ...packages, devParam], {
|
|
21
|
+
cwd,
|
|
22
|
+
stdout: process.stdout,
|
|
23
|
+
stderr: process.stderr
|
|
24
|
+
});
|
|
25
|
+
const { stdout, stderr, exitCode } = await p;
|
|
26
|
+
if (exitCode !== 0) {
|
|
27
|
+
const cmd = getInstallCommand(pm, packages, dev);
|
|
28
|
+
const customError = ('⚠️ An unknown error happened! Please retry ' +
|
|
29
|
+
`installing dependencies via "${cmd}"\n\n` +
|
|
30
|
+
`Error: ${stderr || stdout || 'unknown'}`);
|
|
31
|
+
console.error(customError);
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
export function getInstallCommand(pm, packages, dev) {
|
|
37
|
+
const devParam = dev ? devFlag[pm] : '';
|
|
38
|
+
return `${pm} ${installCommand[pm]} ${packages.join(' ')} ${devParam}`;
|
|
39
|
+
}
|
package/build/interface.d.ts
CHANGED
package/build/launcher.d.ts
CHANGED
package/build/launcher.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,OAAO,KAAK,EAAyB,QAAQ,EAAE,MAAM,aAAa,CAAA;AAElE,OAAO,WAAW,MAAM,gBAAgB,CAAA;AAIxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAkBrD,MAAM,WAAW,UAAU;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,CAAA;CAClB;AAED,cAAM,QAAQ;IAkBN,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,YAAY;IAnBjB,YAAY,EAAE,YAAY,CAAA;IAC1B,aAAa,UAAQ;IACrB,qBAAqB,UAAQ;IAC7B,MAAM,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAA;IAChC,SAAS,CAAC,EAAE,WAAW,CAAA;IAE9B,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,wBAAwB,CAAQ;IACxC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,aAAa,CAAI;IAEzB,OAAO,CAAC,SAAS,CAAC,CAA4B;IAC9C,OAAO,CAAC,QAAQ,CAAC,CAAU;gBAGf,eAAe,EAAE,MAAM,EACvB,KAAK,GAAE,OAAO,CAAC,mBAAmB,CAAM,EACxC,YAAY,UAAQ;IAKhC;;;OAGG;IACG,GAAG,IAAI,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;IAsHxC;;OAEG;IACH,OAAO,CAAC,QAAQ;IA+EhB;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;;OAGG;IACH,OAAO,CAAC,SAAS;IAmEjB;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAIpC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;;;;;OAMG;YACW,cAAc;IA8F5B,OAAO,CAAC,gBAAgB;IAWxB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAOpB;;;;;;OAMG;YACW,WAAW;IA0DzB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAcpB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;CAG7B;AAED,eAAe,QAAQ,CAAA"}
|
package/build/launcher.js
CHANGED
|
@@ -2,8 +2,10 @@ import fs from 'node:fs/promises';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import exitHook from 'async-exit-hook';
|
|
4
4
|
import logger from '@wdio/logger';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { validateConfig } from '@wdio/config';
|
|
6
|
+
import { ConfigParser } from '@wdio/config/node';
|
|
7
|
+
import { initialisePlugin, initialiseLauncherService, sleep } from '@wdio/utils';
|
|
8
|
+
import { setupDriver, setupBrowser } from '@wdio/utils/node';
|
|
7
9
|
import CLInterface from './interface.js';
|
|
8
10
|
import { runLauncherHook, runOnCompleteHook, runServiceHook } from './utils.js';
|
|
9
11
|
import { TESTRUNNER_DEFAULTS } from './constants.js';
|
package/build/types.d.ts
CHANGED
package/build/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAE5G,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,iBAAiB,CAAC,EAAE,uBAAuB,CAAA;IAC3C,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAClC,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAEjC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,eAAe,CAAA;IAChC,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAA;IACjC,iBAAiB,CAAC,EAAE,SAAS,GAAG,KAAK,CAAA;IACrC,kBAAkB,CAAC,EAAE,CAAC,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,eAAe,CAAC,EAAE,CAAA;CAC7E;AAED,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;IACpH,UAAU,EAAE,YAAY,CAAA;IACxB,MAAM,EAAE,OAAO,GAAG,SAAS,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,EAAE,OAAO,CAAA;IACrB,eAAe,EAAE,MAAM,GAAG,KAAK,CAAA;IAC/B,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,sBAAsB,EAAE,MAAM,CAAA;IAC9B,uBAAuB,EAAE,MAAM,CAAA;IAC/B,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,OAAO,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;IACnE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC,aAAa,EAAE,CAAA;IACrC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,SAAS,CAAC,EAAE,WAAW,CAAC,SAAS,CAAA;IACjC,WAAW,CAAC,EAAE,WAAW,CAAC,WAAW,CAAA;IACrC,YAAY,CAAC,EAAE,WAAW,CAAC,YAAY,CAAA;IACvC,eAAe,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAA;IAC3C,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAA;CACnC;AAED,MAAM,WAAW,oBAAoB;IACjC,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,uBAAuB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAA;IACrD,IAAI,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,OAAO,CAAA;IACb,GAAG,EAAE,OAAO,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACjB;AAED,4CAA4C;AAC5C,MAAM,MAAM,gBAAgB,CAAC,CAAC,IACxB,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,GACpC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC3B,KAAK,iBAAiB,CAAC,CAAC,IAClB,YAAY,GACZ,CAAC,YAAY,EAAE,GAAG,CAAC,GACnB,cAAc,CAAC,CAAC,CAAC,CAAC;AACxB,KAAK,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAC7C,KAAK,cAAc,CAAC,CAAC,IAAI;KACpB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;CACvD,CAAC;AACF,KAAK,OAAO,GAAG,OAAO,CAAC;AAEvB,MAAM,WAAW,YAAY;IACzB,YAAY,EAAE,OAAO,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,qBAAqB,CAAA;CACrC"}
|
package/build/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
import type { SpawnOptions } from 'node:child_process';
|
|
3
3
|
import { SevereServiceError } from 'webdriverio';
|
|
4
4
|
import type { Capabilities, Options, Services } from '@wdio/types';
|
|
@@ -71,13 +71,6 @@ export declare function getCapabilities(arg: ReplCommandArguments): Promise<{
|
|
|
71
71
|
browserName: string;
|
|
72
72
|
};
|
|
73
73
|
}>;
|
|
74
|
-
/**
|
|
75
|
-
* Get project root directory based on questionair answers
|
|
76
|
-
* @param answers questionair answers
|
|
77
|
-
* @param projectProps project properties received via `getProjectProps`
|
|
78
|
-
* @returns project root path
|
|
79
|
-
*/
|
|
80
|
-
export declare function getProjectRoot(answers: Questionnair, projectProps?: ProjectProps): string;
|
|
81
74
|
/**
|
|
82
75
|
* Checks if certain directory has babel configuration files
|
|
83
76
|
* @param rootDir directory where this function checks for Babel signs
|
|
@@ -128,7 +121,7 @@ export declare function createPackageJSON(parsedAnswers: ParsedAnswers): Promise
|
|
|
128
121
|
/**
|
|
129
122
|
* run npm install only if required by the user
|
|
130
123
|
*/
|
|
131
|
-
export declare function npmInstall(parsedAnswers: ParsedAnswers,
|
|
124
|
+
export declare function npmInstall(parsedAnswers: ParsedAnswers, npmTag: string): Promise<void>;
|
|
132
125
|
/**
|
|
133
126
|
* add ts-node if TypeScript is desired but not installed
|
|
134
127
|
*/
|
|
@@ -138,6 +131,13 @@ export declare function setupTypeScript(parsedAnswers: ParsedAnswers): Promise<v
|
|
|
138
131
|
*/
|
|
139
132
|
export declare function setupBabel(parsedAnswers: ParsedAnswers): Promise<void>;
|
|
140
133
|
export declare function createWDIOConfig(parsedAnswers: ParsedAnswers): Promise<void>;
|
|
134
|
+
/**
|
|
135
|
+
* Get project root directory based on questionair answers
|
|
136
|
+
* @param answers questionair answers
|
|
137
|
+
* @param projectProps project properties received via `getProjectProps`
|
|
138
|
+
* @returns project root path
|
|
139
|
+
*/
|
|
140
|
+
export declare function getProjectRoot(parsedAnswers?: Questionnair): Promise<string>;
|
|
141
141
|
export declare function createWDIOScript(parsedAnswers: ParsedAnswers): Promise<boolean>;
|
|
142
142
|
export declare function runAppiumInstaller(parsedAnswers: ParsedAnswers): Promise<void | import("execa").ExecaReturnValue<string>>;
|
|
143
143
|
//# sourceMappingURL=utils.d.ts.map
|
package/build/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/build/utils.js
CHANGED
|
@@ -9,13 +9,15 @@ import inquirer from 'inquirer';
|
|
|
9
9
|
import pickBy from 'lodash.pickby';
|
|
10
10
|
import logger from '@wdio/logger';
|
|
11
11
|
import readDir from 'recursive-readdir';
|
|
12
|
-
import yarnInstall from 'yarn-install';
|
|
13
12
|
import { $ } from 'execa';
|
|
13
|
+
// @ts-expect-error // @ts-expect-error https://github.com/egoist/detect-package-manager/pull/6
|
|
14
|
+
import { detect } from 'detect-package-manager';
|
|
14
15
|
import { readPackageUp } from 'read-pkg-up';
|
|
15
16
|
import { resolve } from 'import-meta-resolve';
|
|
16
17
|
import { SevereServiceError } from 'webdriverio';
|
|
17
|
-
import { ConfigParser } from '@wdio/config';
|
|
18
|
+
import { ConfigParser } from '@wdio/config/node';
|
|
18
19
|
import { CAPABILITY_KEYS } from '@wdio/protocols';
|
|
20
|
+
import { installPackages, getInstallCommand } from './install.js';
|
|
19
21
|
import { ANDROID_CONFIG, CompilerOptions, DEPENDENCIES_INSTALLATION_MESSAGE, IOS_CONFIG, pkg, QUESTIONNAIRE, TESTING_LIBRARY_PACKAGES, COMMUNITY_PACKAGES_WITH_TS_SUPPORT, usesSerenity, } from './constants.js';
|
|
20
22
|
import { EjsHelpers } from './templates/EjsHelpers.js';
|
|
21
23
|
const log = logger('@wdio/cli:utils');
|
|
@@ -269,18 +271,6 @@ export async function getCapabilities(arg) {
|
|
|
269
271
|
}
|
|
270
272
|
return { capabilities: { browserName: arg.option } };
|
|
271
273
|
}
|
|
272
|
-
/**
|
|
273
|
-
* Get project root directory based on questionair answers
|
|
274
|
-
* @param answers questionair answers
|
|
275
|
-
* @param projectProps project properties received via `getProjectProps`
|
|
276
|
-
* @returns project root path
|
|
277
|
-
*/
|
|
278
|
-
export function getProjectRoot(answers, projectProps) {
|
|
279
|
-
return (answers.projectRoot ||
|
|
280
|
-
(typeof projectProps === 'undefined'
|
|
281
|
-
? process.cwd()
|
|
282
|
-
: projectProps.path));
|
|
283
|
-
}
|
|
284
274
|
/**
|
|
285
275
|
* Checks if certain directory has babel configuration files
|
|
286
276
|
* @param rootDir directory where this function checks for Babel signs
|
|
@@ -298,8 +288,7 @@ export function hasBabelConfig(rootDir) {
|
|
|
298
288
|
* detect if project has a compiler file
|
|
299
289
|
*/
|
|
300
290
|
export async function detectCompiler(answers) {
|
|
301
|
-
const
|
|
302
|
-
const root = getProjectRoot(answers, projectProps);
|
|
291
|
+
const root = await getProjectRoot(answers);
|
|
303
292
|
const rootTSConfigExist = await fs.access(path.resolve(root, 'tsconfig.json')).then(() => true, () => false);
|
|
304
293
|
return (await hasBabelConfig(root))
|
|
305
294
|
? CompilerOptions.Babel // default to Babel
|
|
@@ -506,8 +495,7 @@ export function getPathForFileGeneration(answers, projectRootDir) {
|
|
|
506
495
|
};
|
|
507
496
|
}
|
|
508
497
|
export async function getDefaultFiles(answers, pattern) {
|
|
509
|
-
const
|
|
510
|
-
const rootdir = getProjectRoot(answers, projectProps);
|
|
498
|
+
const rootdir = await getProjectRoot(answers);
|
|
511
499
|
const presetPackage = convertPackageHashToObject(answers.preset || '');
|
|
512
500
|
const isJSX = TSX_BASED_FRAMEWORKS.includes(presetPackage.short || '');
|
|
513
501
|
const val = pattern.endsWith('.feature')
|
|
@@ -608,7 +596,7 @@ export async function createPackageJSON(parsedAnswers) {
|
|
|
608
596
|
/**
|
|
609
597
|
* run npm install only if required by the user
|
|
610
598
|
*/
|
|
611
|
-
export function npmInstall(parsedAnswers,
|
|
599
|
+
export async function npmInstall(parsedAnswers, npmTag) {
|
|
612
600
|
const servicePackages = parsedAnswers.rawAnswers.services.map((service) => convertPackageHashToObject(service));
|
|
613
601
|
const presetPackage = convertPackageHashToObject(parsedAnswers.rawAnswers.preset || '');
|
|
614
602
|
/**
|
|
@@ -671,19 +659,17 @@ export function npmInstall(parsedAnswers, useYarn, npmTag) {
|
|
|
671
659
|
* update package version if CLI is a pre release
|
|
672
660
|
*/
|
|
673
661
|
parsedAnswers.packagesToInstall = specifyVersionIfNeeded(parsedAnswers.packagesToInstall, pkg.version, npmTag);
|
|
662
|
+
const cwd = await getProjectRoot(parsedAnswers);
|
|
663
|
+
const pm = await detect({ cwd });
|
|
674
664
|
if (parsedAnswers.npmInstall) {
|
|
675
|
-
console.log(
|
|
676
|
-
const
|
|
677
|
-
if (
|
|
678
|
-
|
|
679
|
-
`installing dependencies via "${useYarn ? 'yarn add --dev' : 'npm i --save-dev'} ` +
|
|
680
|
-
`${parsedAnswers.packagesToInstall.join(' ')}"\n\nError: ${result.stderr || 'unknown'}`;
|
|
681
|
-
console.error(customError);
|
|
665
|
+
console.log(`Installing packages using ${pm}:\n-${parsedAnswers.packagesToInstall.join('\n- ')}`);
|
|
666
|
+
const success = await installPackages(cwd, parsedAnswers.packagesToInstall, true);
|
|
667
|
+
if (success) {
|
|
668
|
+
console.log(chalk.green.bold('✔ Success!\n'));
|
|
682
669
|
}
|
|
683
|
-
console.log(chalk.green.bold('✔ Success!\n'));
|
|
684
670
|
}
|
|
685
671
|
else {
|
|
686
|
-
const installationCommand =
|
|
672
|
+
const installationCommand = getInstallCommand(pm, parsedAnswers.packagesToInstall, true);
|
|
687
673
|
console.log(util.format(DEPENDENCIES_INSTALLATION_MESSAGE, installationCommand));
|
|
688
674
|
}
|
|
689
675
|
}
|
|
@@ -844,9 +830,24 @@ export async function createWDIOConfig(parsedAnswers) {
|
|
|
844
830
|
throw new Error(`⚠️ Couldn't write config file: ${err.stack}`);
|
|
845
831
|
}
|
|
846
832
|
}
|
|
833
|
+
/**
|
|
834
|
+
* Get project root directory based on questionair answers
|
|
835
|
+
* @param answers questionair answers
|
|
836
|
+
* @param projectProps project properties received via `getProjectProps`
|
|
837
|
+
* @returns project root path
|
|
838
|
+
*/
|
|
839
|
+
export async function getProjectRoot(parsedAnswers) {
|
|
840
|
+
const root = (await getProjectProps())?.path;
|
|
841
|
+
if (!root) {
|
|
842
|
+
throw new Error('Could not find project root directory with a package.json');
|
|
843
|
+
}
|
|
844
|
+
return !parsedAnswers || parsedAnswers.projectRootCorrect
|
|
845
|
+
? root
|
|
846
|
+
: parsedAnswers.projectRoot || process.cwd();
|
|
847
|
+
}
|
|
847
848
|
export async function createWDIOScript(parsedAnswers) {
|
|
848
|
-
const
|
|
849
|
-
const pathToWdioConfig = `./${path.join('.', parsedAnswers.wdioConfigPath.replace(
|
|
849
|
+
const rootDir = await getProjectRoot(parsedAnswers);
|
|
850
|
+
const pathToWdioConfig = `./${path.join('.', parsedAnswers.wdioConfigPath.replace(rootDir, ''))}`;
|
|
850
851
|
const wdioScripts = {
|
|
851
852
|
'wdio': `wdio run ${pathToWdioConfig}`,
|
|
852
853
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wdio/cli",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.20.0",
|
|
4
4
|
"description": "WebdriverIO testrunner command line interface",
|
|
5
5
|
"author": "Christian Bromann <mail@bromann.dev>",
|
|
6
6
|
"homepage": "https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-cli",
|
|
@@ -46,12 +46,12 @@
|
|
|
46
46
|
"typeScriptVersion": "3.8.3",
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@types/node": "^20.1.1",
|
|
49
|
-
"@wdio/config": "8.
|
|
50
|
-
"@wdio/globals": "8.
|
|
49
|
+
"@wdio/config": "8.20.0",
|
|
50
|
+
"@wdio/globals": "8.20.0",
|
|
51
51
|
"@wdio/logger": "8.16.17",
|
|
52
52
|
"@wdio/protocols": "8.18.0",
|
|
53
|
-
"@wdio/types": "8.
|
|
54
|
-
"@wdio/utils": "8.
|
|
53
|
+
"@wdio/types": "8.20.0",
|
|
54
|
+
"@wdio/utils": "8.20.0",
|
|
55
55
|
"async-exit-hook": "^2.0.1",
|
|
56
56
|
"chalk": "^5.2.0",
|
|
57
57
|
"chokidar": "^3.5.3",
|
|
@@ -66,9 +66,8 @@
|
|
|
66
66
|
"lodash.union": "^4.6.0",
|
|
67
67
|
"read-pkg-up": "10.1.0",
|
|
68
68
|
"recursive-readdir": "^2.2.3",
|
|
69
|
-
"webdriverio": "8.
|
|
70
|
-
"yargs": "^17.7.2"
|
|
71
|
-
"yarn-install": "^1.0.0"
|
|
69
|
+
"webdriverio": "8.20.0",
|
|
70
|
+
"yargs": "^17.7.2"
|
|
72
71
|
},
|
|
73
72
|
"devDependencies": {
|
|
74
73
|
"@types/async-exit-hook": "^2.0.0",
|
|
@@ -78,10 +77,11 @@
|
|
|
78
77
|
"@types/lodash.pickby": "^4.6.7",
|
|
79
78
|
"@types/lodash.union": "^4.6.7",
|
|
80
79
|
"@types/recursive-readdir": "^2.2.1",
|
|
81
|
-
"@types/yargs": "^17.0.24"
|
|
80
|
+
"@types/yargs": "^17.0.24",
|
|
81
|
+
"detect-package-manager": "^3.0.1"
|
|
82
82
|
},
|
|
83
83
|
"publishConfig": {
|
|
84
84
|
"access": "public"
|
|
85
85
|
},
|
|
86
|
-
"gitHead": "
|
|
86
|
+
"gitHead": "6aa9e33233a6abc832bb16d2e24aaaa382e206b6"
|
|
87
87
|
}
|