@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # Change Log
2
2
 
3
- All notable changes to the "@qavajs/cli" will be documented in this file.
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
- const promises_1 = require("fs/promises");
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 inquirer = import('inquirer').then(m => m.default);
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 { prompt } = yield inquirer;
60
- const answers = yield prompt([
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
- type: 'checkbox',
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([stepDefinitionGlob, ...stepsPackagesGlobs]),
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.packageName + (p.out ? `:${p.out}` : ''))),
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/po-playwright';
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 run --config config.${isTypescript ? 'ts' : 'js'}`);
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.2.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
- "ejs": "^3.1.9",
23
+ "@inquirer/prompts": "^5.3.2",
24
+ "ejs": "^3.1.10",
24
25
  "fs-extra": "^11.2.0",
25
- "inquirer": "^9.2.16",
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/inquirer": "^9.0.7",
33
- "@types/node": "^20.11.28",
34
- "@vitest/coverage-v8": "^1.4.0",
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
- const inquirer = import('inquirer').then(m => m.default);
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
- const { prompt } = await inquirer;
33
- const answers = await prompt([
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
- type: 'checkbox',
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
- ]) as Answers;
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([stepDefinitionGlob, ...stepsPackagesGlobs]),
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.packageName + (p.out ? `:${p.out}` : ''))
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/po-playwright';
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 run --config config.${isTypescript ? 'ts' : 'js'}`);
199
+ console.log(`npx qavajs --config config.${isTypescript ? 'ts' : 'js'}`);
213
200
  }