@qavajs/create 0.2.0 → 0.4.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/CHANGELOG.MD +11 -1
- package/lib/deps.js +3 -3
- package/lib/install.js +30 -39
- package/package.json +7 -8
- package/src/deps.ts +3 -3
- package/src/install.ts +35 -48
package/CHANGELOG.MD
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
-
All notable changes to the "@qavajs/
|
|
3
|
+
All notable changes to the "@qavajs/create" will be documented in this file.
|
|
4
4
|
|
|
5
5
|
Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file.
|
|
6
6
|
|
|
@@ -8,6 +8,16 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how
|
|
|
8
8
|
:beetle: - bugfix
|
|
9
9
|
:x: - deprecation
|
|
10
10
|
|
|
11
|
+
## [0.4.0]
|
|
12
|
+
- :rocket: updated formatters to modern syntax
|
|
13
|
+
- :rocket: added .gitignore template
|
|
14
|
+
- :rocket: migrated to @inquirer/prompts
|
|
15
|
+
- :rocket: updated wizard to support built-in po
|
|
16
|
+
|
|
17
|
+
## [0.3.0]
|
|
18
|
+
- :rocket: added @qavajs/validation as dependency
|
|
19
|
+
- :rocket: added @qavajs/steps-memory as default module
|
|
20
|
+
|
|
11
21
|
## [0.2.0]
|
|
12
22
|
- :rocket: added typescript to required modules
|
|
13
23
|
- :rocket: added package.json template
|
package/lib/deps.js
CHANGED
|
@@ -4,13 +4,13 @@ exports.additionalModules = exports.modules = exports.format = exports.steps = v
|
|
|
4
4
|
exports.default = [
|
|
5
5
|
'@cucumber/cucumber',
|
|
6
6
|
'@qavajs/memory',
|
|
7
|
-
'@qavajs/cli'
|
|
7
|
+
'@qavajs/cli',
|
|
8
|
+
'@qavajs/validation'
|
|
8
9
|
];
|
|
9
10
|
exports.steps = [
|
|
10
|
-
{ module: 'wdio', packageName: '@qavajs/steps-wdio' },
|
|
11
11
|
{ module: 'playwright', packageName: '@qavajs/steps-playwright' },
|
|
12
|
+
{ module: 'wdio', packageName: '@qavajs/steps-wdio' },
|
|
12
13
|
{ module: 'api', packageName: '@qavajs/steps-api' },
|
|
13
|
-
{ module: 'memory', packageName: '@qavajs/steps-memory' },
|
|
14
14
|
{ module: 'files', packageName: '@qavajs/steps-files' },
|
|
15
15
|
{ module: 'sql', packageName: '@qavajs/steps-sql' },
|
|
16
16
|
{ module: 'accessibility', packageName: '@qavajs/steps-accessibility' },
|
package/lib/install.js
CHANGED
|
@@ -35,14 +35,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
35
35
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
36
|
};
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
|
|
38
|
+
exports.default = install;
|
|
39
|
+
const promises_1 = require("node:fs/promises");
|
|
39
40
|
const fs_extra_1 = require("fs-extra");
|
|
40
41
|
const path_1 = require("path");
|
|
41
42
|
const yarn_install_1 = __importDefault(require("yarn-install"));
|
|
42
43
|
const deps_1 = __importStar(require("./deps"));
|
|
43
44
|
const ejs_1 = require("ejs");
|
|
44
|
-
const
|
|
45
|
-
const packs = (deps) => deps.map(({ module }) => module);
|
|
45
|
+
const prompts_1 = require("@inquirer/prompts");
|
|
46
|
+
const packs = (deps) => deps.map(({ module }) => ({ value: module }));
|
|
46
47
|
const packages = (moduleList, packageMap) => {
|
|
47
48
|
return moduleList
|
|
48
49
|
.map((module) => {
|
|
@@ -56,44 +57,33 @@ const replaceNewLines = (text) => text.replace(/(\r?\n\r?)+/g, '\n');
|
|
|
56
57
|
function install() {
|
|
57
58
|
return __awaiter(this, void 0, void 0, function* () {
|
|
58
59
|
const requiredDeps = [...deps_1.default];
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
{
|
|
62
|
-
type: 'list',
|
|
60
|
+
const answers = {
|
|
61
|
+
moduleSystem: yield (0, prompts_1.select)({
|
|
63
62
|
message: 'select module system you want to use:',
|
|
64
|
-
name: 'moduleSystem',
|
|
65
63
|
choices: [
|
|
66
|
-
'CommonJS',
|
|
67
|
-
'ES Modules',
|
|
68
|
-
'Typescript'
|
|
64
|
+
{ value: 'CommonJS' },
|
|
65
|
+
{ value: 'ES Modules' },
|
|
66
|
+
{ value: 'Typescript' }
|
|
69
67
|
]
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
type: 'checkbox',
|
|
68
|
+
}),
|
|
69
|
+
steps: yield (0, prompts_1.checkbox)({
|
|
73
70
|
message: 'select step packages to install:',
|
|
74
|
-
name: 'steps',
|
|
75
71
|
choices: packs(deps_1.steps)
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
type: 'checkbox',
|
|
79
|
-
message: 'select modules to install:',
|
|
80
|
-
name: 'modules',
|
|
81
|
-
choices: packs(deps_1.modules)
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
type: 'checkbox',
|
|
72
|
+
}),
|
|
73
|
+
formats: yield (0, prompts_1.checkbox)({
|
|
85
74
|
message: 'select formatters (reporters) to install:',
|
|
86
|
-
name: 'formats',
|
|
87
75
|
choices: packs(deps_1.format)
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
|
|
76
|
+
}),
|
|
77
|
+
modules: yield (0, prompts_1.checkbox)({
|
|
78
|
+
message: 'select modules to install:',
|
|
79
|
+
choices: packs(deps_1.modules)
|
|
80
|
+
}),
|
|
81
|
+
additionalModules: yield (0, prompts_1.checkbox)({
|
|
91
82
|
message: 'select additional modules to install:',
|
|
92
|
-
name: 'additionalModules',
|
|
93
83
|
choices: packs(deps_1.additionalModules)
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
const stepsPackages = packages(answers.steps, deps_1.steps);
|
|
84
|
+
})
|
|
85
|
+
};
|
|
86
|
+
const stepsPackages = ['@qavajs/steps-memory', ...packages(answers.steps, deps_1.steps)];
|
|
97
87
|
const formatPackages = packages(answers.formats, deps_1.format);
|
|
98
88
|
const modulePackages = packages(answers.modules, deps_1.modules);
|
|
99
89
|
const additionalPackages = packages(answers.additionalModules, deps_1.additionalModules);
|
|
@@ -107,6 +97,9 @@ function install() {
|
|
|
107
97
|
}
|
|
108
98
|
const isPOIncluded = isWdioIncluded || isPlaywrightIncluded;
|
|
109
99
|
const isTemplateIncluded = answers.modules.includes('template');
|
|
100
|
+
// add .gitignore
|
|
101
|
+
const gitignoreTemplate = yield (0, promises_1.readFile)((0, path_1.resolve)(__dirname, '../templates/.gitignore'), 'utf-8');
|
|
102
|
+
yield (0, promises_1.writeFile)(`./.gitignore`, gitignoreTemplate, 'utf-8');
|
|
110
103
|
// add package.json
|
|
111
104
|
const packageJsonTemplate = yield (0, promises_1.readFile)((0, path_1.resolve)(__dirname, '../templates/package.json'), 'utf-8');
|
|
112
105
|
yield (0, promises_1.writeFile)(`./package.json`, packageJsonTemplate, 'utf-8');
|
|
@@ -123,12 +116,12 @@ function install() {
|
|
|
123
116
|
const stepDefinitionGlob = `step_definition/*.${isTypescript ? 'ts' : 'js'}`;
|
|
124
117
|
const stepsPackagesGlobs = [...stepsPackages].map(p => `node_modules/${p}/index.js`);
|
|
125
118
|
const config = configEjs({
|
|
126
|
-
steps: JSON.stringify([
|
|
119
|
+
steps: JSON.stringify([...stepsPackagesGlobs, stepDefinitionGlob]),
|
|
127
120
|
moduleSystem: answers.moduleSystem,
|
|
128
121
|
modules: JSON.stringify(modulePackages),
|
|
129
122
|
format: JSON.stringify(deps_1.format
|
|
130
123
|
.filter(p => formatPackages.includes(p.packageName))
|
|
131
|
-
.map(p => p.
|
|
124
|
+
.map(p => p.out ? [p.packageName, p.out] : p.packageName)),
|
|
132
125
|
isWdioIncluded,
|
|
133
126
|
isPlaywrightIncluded,
|
|
134
127
|
isTemplateIncluded
|
|
@@ -140,12 +133,11 @@ function install() {
|
|
|
140
133
|
if (isPOIncluded) {
|
|
141
134
|
let poModule;
|
|
142
135
|
if (isWdioIncluded)
|
|
143
|
-
poModule = '@qavajs/po';
|
|
136
|
+
poModule = '@qavajs/steps-wdio/po';
|
|
144
137
|
if (isPlaywrightIncluded)
|
|
145
|
-
poModule = '@qavajs/
|
|
138
|
+
poModule = '@qavajs/steps-playwright/po';
|
|
146
139
|
if (!poModule)
|
|
147
140
|
throw new Error('No PO module');
|
|
148
|
-
requiredDeps.push(poModule);
|
|
149
141
|
const featureTemplate = yield (0, promises_1.readFile)((0, path_1.resolve)(__dirname, '../templates/feature.ejs'), 'utf-8');
|
|
150
142
|
const featureEjs = (0, ejs_1.compile)(featureTemplate);
|
|
151
143
|
const featureFile = featureEjs();
|
|
@@ -197,7 +189,6 @@ function install() {
|
|
|
197
189
|
respectNpm5: true
|
|
198
190
|
});
|
|
199
191
|
console.log('test script:');
|
|
200
|
-
console.log(`npx qavajs
|
|
192
|
+
console.log(`npx qavajs --config config.${isTypescript ? 'ts' : 'js'}`);
|
|
201
193
|
});
|
|
202
194
|
}
|
|
203
|
-
exports.default = install;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qavajs/create",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "initializer of @qavajs project",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -20,18 +20,17 @@
|
|
|
20
20
|
"author": "Alexandr Galichenko",
|
|
21
21
|
"license": "MIT",
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"
|
|
23
|
+
"@inquirer/prompts": "^5.3.2",
|
|
24
|
+
"ejs": "^3.1.10",
|
|
24
25
|
"fs-extra": "^11.2.0",
|
|
25
|
-
"
|
|
26
|
-
"typescript": "^5.4.2",
|
|
26
|
+
"typescript": "^5.5.4",
|
|
27
27
|
"yarn-install": "^1.0.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/ejs": "^3.1.5",
|
|
31
31
|
"@types/fs-extra": "^11.0.4",
|
|
32
|
-
"@types/
|
|
33
|
-
"@
|
|
34
|
-
"
|
|
35
|
-
"vitest": "^1.4.0"
|
|
32
|
+
"@types/node": "^20.14.11",
|
|
33
|
+
"@vitest/coverage-v8": "^2.0.4",
|
|
34
|
+
"vitest": "^2.0.4"
|
|
36
35
|
}
|
|
37
36
|
}
|
package/src/deps.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export default [
|
|
2
2
|
'@cucumber/cucumber',
|
|
3
3
|
'@qavajs/memory',
|
|
4
|
-
'@qavajs/cli'
|
|
4
|
+
'@qavajs/cli',
|
|
5
|
+
'@qavajs/validation'
|
|
5
6
|
]
|
|
6
7
|
|
|
7
8
|
export type ModuleDefinition = {
|
|
@@ -11,10 +12,9 @@ export type ModuleDefinition = {
|
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
export const steps: Array<ModuleDefinition> = [
|
|
14
|
-
{ module: 'wdio', packageName: '@qavajs/steps-wdio' },
|
|
15
15
|
{ module: 'playwright', packageName: '@qavajs/steps-playwright' },
|
|
16
|
+
{ module: 'wdio', packageName: '@qavajs/steps-wdio' },
|
|
16
17
|
{ module: 'api', packageName: '@qavajs/steps-api' },
|
|
17
|
-
{ module: 'memory', packageName: '@qavajs/steps-memory' },
|
|
18
18
|
{ module: 'files', packageName: '@qavajs/steps-files' },
|
|
19
19
|
{ module: 'sql', packageName: '@qavajs/steps-sql' },
|
|
20
20
|
{ module: 'accessibility', packageName: '@qavajs/steps-accessibility' },
|
package/src/install.ts
CHANGED
|
@@ -1,21 +1,12 @@
|
|
|
1
|
-
import { readFile, writeFile } from 'fs/promises';
|
|
1
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { ensureDir } from 'fs-extra';
|
|
3
3
|
import { resolve } from 'path';
|
|
4
4
|
import yarnInstall from 'yarn-install';
|
|
5
|
-
import deps, {steps, format, modules, additionalModules, ModuleDefinition} from './deps';
|
|
5
|
+
import deps, { steps, format, modules, additionalModules, ModuleDefinition } from './deps';
|
|
6
6
|
import { compile } from 'ejs';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
type Answers = {
|
|
10
|
-
steps: Array<string>,
|
|
11
|
-
formats: Array<string>,
|
|
12
|
-
modules: Array<string>,
|
|
13
|
-
additionalModules: Array<string>,
|
|
14
|
-
parallel: number,
|
|
15
|
-
moduleSystem: string
|
|
16
|
-
}
|
|
7
|
+
import { select, checkbox } from '@inquirer/prompts';
|
|
17
8
|
|
|
18
|
-
const packs = (deps: Array<ModuleDefinition>) => deps.map(({module}) => module);
|
|
9
|
+
const packs = (deps: Array<ModuleDefinition>) => deps.map(({module}) => ({ value: module }));
|
|
19
10
|
const packages = (moduleList: Array<string>, packageMap: Array<ModuleDefinition>): Array<string> => {
|
|
20
11
|
return moduleList
|
|
21
12
|
.map((module: string) => {
|
|
@@ -29,45 +20,35 @@ const replaceNewLines = (text: string) => text.replace(/(\r?\n\r?)+/g, '\n');
|
|
|
29
20
|
|
|
30
21
|
export default async function install(): Promise<void> {
|
|
31
22
|
const requiredDeps = [...deps];
|
|
32
|
-
|
|
33
|
-
const answers =
|
|
34
|
-
{
|
|
35
|
-
type: 'list',
|
|
23
|
+
|
|
24
|
+
const answers = {
|
|
25
|
+
moduleSystem: await select({
|
|
36
26
|
message: 'select module system you want to use:',
|
|
37
|
-
name: 'moduleSystem',
|
|
38
27
|
choices: [
|
|
39
|
-
'CommonJS',
|
|
40
|
-
'ES Modules',
|
|
41
|
-
'Typescript'
|
|
28
|
+
{ value: 'CommonJS' },
|
|
29
|
+
{ value: 'ES Modules' },
|
|
30
|
+
{ value: 'Typescript' }
|
|
42
31
|
]
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
type: 'checkbox',
|
|
32
|
+
}),
|
|
33
|
+
steps: await checkbox({
|
|
46
34
|
message: 'select step packages to install:',
|
|
47
|
-
name: 'steps',
|
|
48
35
|
choices: packs(steps)
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
type: 'checkbox',
|
|
52
|
-
message: 'select modules to install:',
|
|
53
|
-
name: 'modules',
|
|
54
|
-
choices: packs(modules)
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
type: 'checkbox',
|
|
36
|
+
}),
|
|
37
|
+
formats: await checkbox({
|
|
58
38
|
message: 'select formatters (reporters) to install:',
|
|
59
|
-
name: 'formats',
|
|
60
39
|
choices: packs(format)
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
|
|
40
|
+
}),
|
|
41
|
+
modules: await checkbox({
|
|
42
|
+
message: 'select modules to install:',
|
|
43
|
+
choices: packs(modules)
|
|
44
|
+
}),
|
|
45
|
+
additionalModules: await checkbox({
|
|
64
46
|
message: 'select additional modules to install:',
|
|
65
|
-
name: 'additionalModules',
|
|
66
47
|
choices: packs(additionalModules)
|
|
67
|
-
}
|
|
68
|
-
|
|
48
|
+
})
|
|
49
|
+
};
|
|
69
50
|
|
|
70
|
-
const stepsPackages: Array<string> = packages(answers.steps, steps);
|
|
51
|
+
const stepsPackages: Array<string> = ['@qavajs/steps-memory', ...packages(answers.steps, steps)];
|
|
71
52
|
const formatPackages: Array<string> = packages(answers.formats, format);
|
|
72
53
|
const modulePackages: Array<string> = packages(answers.modules, modules);
|
|
73
54
|
const additionalPackages: Array<string> = packages(answers.additionalModules, additionalModules);
|
|
@@ -83,6 +64,13 @@ export default async function install(): Promise<void> {
|
|
|
83
64
|
const isPOIncluded: boolean = isWdioIncluded || isPlaywrightIncluded;
|
|
84
65
|
const isTemplateIncluded: boolean = answers.modules.includes('template');
|
|
85
66
|
|
|
67
|
+
// add .gitignore
|
|
68
|
+
const gitignoreTemplate = await readFile(
|
|
69
|
+
resolve(__dirname, '../templates/.gitignore'),
|
|
70
|
+
'utf-8'
|
|
71
|
+
);
|
|
72
|
+
await writeFile(`./.gitignore`, gitignoreTemplate, 'utf-8');
|
|
73
|
+
|
|
86
74
|
// add package.json
|
|
87
75
|
const packageJsonTemplate = await readFile(
|
|
88
76
|
resolve(__dirname, '../templates/package.json'),
|
|
@@ -108,13 +96,13 @@ export default async function install(): Promise<void> {
|
|
|
108
96
|
const stepDefinitionGlob = `step_definition/*.${isTypescript ? 'ts' : 'js'}`;
|
|
109
97
|
const stepsPackagesGlobs = [...stepsPackages].map(p => `node_modules/${p}/index.js`);
|
|
110
98
|
const config = configEjs({
|
|
111
|
-
steps: JSON.stringify([
|
|
99
|
+
steps: JSON.stringify([...stepsPackagesGlobs, stepDefinitionGlob]),
|
|
112
100
|
moduleSystem: answers.moduleSystem,
|
|
113
101
|
modules: JSON.stringify(modulePackages),
|
|
114
102
|
format: JSON.stringify(
|
|
115
103
|
format
|
|
116
104
|
.filter(p => formatPackages.includes(p.packageName))
|
|
117
|
-
.map(p => p.
|
|
105
|
+
.map(p => p.out ? [p.packageName, p.out] : p.packageName)
|
|
118
106
|
),
|
|
119
107
|
isWdioIncluded,
|
|
120
108
|
isPlaywrightIncluded,
|
|
@@ -128,10 +116,9 @@ export default async function install(): Promise<void> {
|
|
|
128
116
|
|
|
129
117
|
if (isPOIncluded) {
|
|
130
118
|
let poModule: string | undefined;
|
|
131
|
-
if (isWdioIncluded) poModule = '@qavajs/po';
|
|
132
|
-
if (isPlaywrightIncluded) poModule = '@qavajs/
|
|
119
|
+
if (isWdioIncluded) poModule = '@qavajs/steps-wdio/po';
|
|
120
|
+
if (isPlaywrightIncluded) poModule = '@qavajs/steps-playwright/po';
|
|
133
121
|
if (!poModule) throw new Error('No PO module');
|
|
134
|
-
requiredDeps.push(poModule);
|
|
135
122
|
const featureTemplate: string = await readFile(
|
|
136
123
|
resolve(__dirname, '../templates/feature.ejs'),
|
|
137
124
|
'utf-8'
|
|
@@ -209,5 +196,5 @@ export default async function install(): Promise<void> {
|
|
|
209
196
|
});
|
|
210
197
|
|
|
211
198
|
console.log('test script:');
|
|
212
|
-
console.log(`npx qavajs
|
|
199
|
+
console.log(`npx qavajs --config config.${isTypescript ? 'ts' : 'js'}`);
|
|
213
200
|
}
|