@qavajs/create 0.4.2 → 1.0.1

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
@@ -8,6 +8,9 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how
8
8
  :beetle: - bugfix
9
9
  :x: - deprecation
10
10
 
11
+ ## [1.0.0]
12
+ - :rocket: release
13
+
11
14
  ## [0.4.2]
12
15
  - :beetle: fixed default UI scenario
13
16
 
package/lib/deps.js CHANGED
@@ -8,14 +8,15 @@ exports.default = [
8
8
  '@qavajs/validation'
9
9
  ];
10
10
  exports.steps = [
11
- { module: 'playwright', packageName: '@qavajs/steps-playwright' },
12
- { module: 'wdio', packageName: '@qavajs/steps-wdio' },
13
- { module: 'api', packageName: '@qavajs/steps-api' },
14
- { module: 'files', packageName: '@qavajs/steps-files' },
15
- { module: 'sql', packageName: '@qavajs/steps-sql' },
16
- { module: 'accessibility', packageName: '@qavajs/steps-accessibility' },
17
- { module: 'lighthouse', packageName: '@qavajs/steps-lighthouse' },
18
- { module: 'visual testing', packageName: '@qavajs/steps-visual-testing' }
11
+ { module: 'playwright', packageName: '@qavajs/steps-playwright', version: '1' },
12
+ { module: 'wdio', packageName: '@qavajs/steps-wdio', version: '1' },
13
+ { module: 'api', packageName: '@qavajs/steps-api', version: '1' },
14
+ { module: 'files', packageName: '@qavajs/steps-files', version: '1' },
15
+ { module: 'sql', packageName: '@qavajs/steps-sql', version: '1' },
16
+ { module: 'accessibility', packageName: '@qavajs/steps-accessibility', version: '1' },
17
+ { module: 'lighthouse', packageName: '@qavajs/steps-lighthouse', version: '1' },
18
+ { module: 'visual testing', packageName: '@qavajs/steps-visual-testing', version: '1' },
19
+ { module: 'memory', packageName: '@qavajs/steps-memory', version: '1' }
19
20
  ];
20
21
  exports.format = [
21
22
  { module: 'report portal', packageName: '@qavajs/format-report-portal', out: 'report/rp.out' },
package/lib/install.js CHANGED
@@ -38,7 +38,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
38
38
  exports.default = install;
39
39
  const promises_1 = require("node:fs/promises");
40
40
  const fs_extra_1 = require("fs-extra");
41
- const path_1 = require("path");
41
+ const node_path_1 = require("node:path");
42
42
  const yarn_install_1 = __importDefault(require("yarn-install"));
43
43
  const deps_1 = __importStar(require("./deps"));
44
44
  const ejs_1 = require("ejs");
@@ -50,7 +50,16 @@ const packages = (moduleList, packageMap) => {
50
50
  const pkg = packageMap.find((p) => p.module === module);
51
51
  if (!pkg)
52
52
  throw new Error(`${module} module is not found`);
53
- return pkg.packageName;
53
+ return pkg.version ? `${pkg.packageName}@${pkg.version}` : pkg.packageName;
54
+ });
55
+ };
56
+ const requireGlob = (moduleList, packageMap) => {
57
+ return moduleList
58
+ .map((module) => {
59
+ const pkg = packageMap.find((p) => p.module === module);
60
+ if (!pkg)
61
+ throw new Error(`${module} module is not found`);
62
+ return `node_modules/${pkg.packageName}/index.js`;
54
63
  });
55
64
  };
56
65
  const replaceNewLines = (text) => text.replace(/(\r?\n\r?)+/g, '\n');
@@ -83,7 +92,7 @@ function install() {
83
92
  choices: packs(deps_1.additionalModules)
84
93
  })
85
94
  };
86
- const stepsPackages = ['@qavajs/steps-memory', ...packages(answers.steps, deps_1.steps)];
95
+ const stepsPackages = [...packages(['memory'], deps_1.steps), ...packages(answers.steps, deps_1.steps)];
87
96
  const formatPackages = packages(answers.formats, deps_1.format);
88
97
  const modulePackages = packages(answers.modules, deps_1.modules);
89
98
  const additionalPackages = packages(answers.additionalModules, deps_1.additionalModules);
@@ -98,23 +107,23 @@ function install() {
98
107
  const isPOIncluded = isWdioIncluded || isPlaywrightIncluded;
99
108
  const isTemplateIncluded = answers.modules.includes('template');
100
109
  // add gitignore
101
- const gitignoreTemplate = yield (0, promises_1.readFile)((0, path_1.resolve)(__dirname, '../templates/gitignore'), 'utf-8');
110
+ const gitignoreTemplate = yield (0, promises_1.readFile)((0, node_path_1.resolve)(__dirname, '../templates/gitignore'), 'utf-8');
102
111
  yield (0, promises_1.writeFile)(`./.gitignore`, gitignoreTemplate, 'utf-8');
103
112
  // add package.json
104
- const packageJsonTemplate = yield (0, promises_1.readFile)((0, path_1.resolve)(__dirname, '../templates/package.json'), 'utf-8');
113
+ const packageJsonTemplate = yield (0, promises_1.readFile)((0, node_path_1.resolve)(__dirname, '../templates/package.json'), 'utf-8');
105
114
  yield (0, promises_1.writeFile)(`./package.json`, packageJsonTemplate, 'utf-8');
106
115
  // add ts-node and typescript packages if module system is typescript
107
116
  // put tsconfig
108
117
  if (isTypescript) {
109
118
  requiredDeps.push('ts-node');
110
119
  requiredDeps.push('typescript');
111
- const tsconfig = yield (0, promises_1.readFile)((0, path_1.resolve)(__dirname, '../templates/tsconfig.json'), 'utf-8');
120
+ const tsconfig = yield (0, promises_1.readFile)((0, node_path_1.resolve)(__dirname, '../templates/tsconfig.json'), 'utf-8');
112
121
  yield (0, promises_1.writeFile)(`./tsconfig.json`, tsconfig, 'utf-8');
113
122
  }
114
- const configTemplate = yield (0, promises_1.readFile)((0, path_1.resolve)(__dirname, '../templates/config.ejs'), 'utf-8');
123
+ const configTemplate = yield (0, promises_1.readFile)((0, node_path_1.resolve)(__dirname, '../templates/config.ejs'), 'utf-8');
115
124
  const configEjs = (0, ejs_1.compile)(configTemplate);
116
125
  const stepDefinitionGlob = `step_definition/*.${isTypescript ? 'ts' : 'js'}`;
117
- const stepsPackagesGlobs = [...stepsPackages].map(p => `node_modules/${p}/index.js`);
126
+ const stepsPackagesGlobs = [...requireGlob(['memory'], deps_1.steps), ...requireGlob(answers.steps, deps_1.steps)];
118
127
  const config = configEjs({
119
128
  steps: JSON.stringify([...stepsPackagesGlobs, stepDefinitionGlob]),
120
129
  moduleSystem: answers.moduleSystem,
@@ -138,13 +147,13 @@ function install() {
138
147
  poModule = '@qavajs/steps-playwright/po';
139
148
  if (!poModule)
140
149
  throw new Error('No PO module');
141
- const featureTemplate = yield (0, promises_1.readFile)((0, path_1.resolve)(__dirname, '../templates/feature.ejs'), 'utf-8');
150
+ const featureTemplate = yield (0, promises_1.readFile)((0, node_path_1.resolve)(__dirname, '../templates/feature.ejs'), 'utf-8');
142
151
  const featureEjs = (0, ejs_1.compile)(featureTemplate);
143
152
  const featureFile = featureEjs();
144
153
  yield (0, promises_1.writeFile)('./features/qavajs.feature', replaceNewLines(featureFile), 'utf-8');
145
154
  //create page object folder
146
155
  yield (0, fs_extra_1.ensureDir)('./page_object');
147
- const poTemplate = yield (0, promises_1.readFile)((0, path_1.resolve)(__dirname, '../templates/po.ejs'), 'utf-8');
156
+ const poTemplate = yield (0, promises_1.readFile)((0, node_path_1.resolve)(__dirname, '../templates/po.ejs'), 'utf-8');
148
157
  const poEjs = (0, ejs_1.compile)(poTemplate);
149
158
  const poFile = poEjs({
150
159
  moduleSystem: answers.moduleSystem,
@@ -153,7 +162,7 @@ function install() {
153
162
  yield (0, promises_1.writeFile)(`./page_object/index.${isTypescript ? 'ts' : 'js'}`, replaceNewLines(poFile), 'utf-8');
154
163
  }
155
164
  if (isApiIncluded) {
156
- const featureTemplate = yield (0, promises_1.readFile)((0, path_1.resolve)(__dirname, '../templates/featureApi.ejs'), 'utf-8');
165
+ const featureTemplate = yield (0, promises_1.readFile)((0, node_path_1.resolve)(__dirname, '../templates/featureApi.ejs'), 'utf-8');
157
166
  const featureEjs = (0, ejs_1.compile)(featureTemplate);
158
167
  const featureFile = featureEjs();
159
168
  yield (0, promises_1.writeFile)('./features/qavajsApi.feature', replaceNewLines(featureFile), 'utf-8');
@@ -162,13 +171,13 @@ function install() {
162
171
  yield (0, fs_extra_1.ensureDir)('./templates');
163
172
  }
164
173
  yield (0, promises_1.writeFile)(`config.${isTypescript ? 'ts' : 'js'}`, replaceNewLines(config), 'utf-8');
165
- const memoryTemplate = yield (0, promises_1.readFile)((0, path_1.resolve)(__dirname, '../templates/memory.ejs'), 'utf-8');
174
+ const memoryTemplate = yield (0, promises_1.readFile)((0, node_path_1.resolve)(__dirname, '../templates/memory.ejs'), 'utf-8');
166
175
  const memoryEjs = (0, ejs_1.compile)(memoryTemplate);
167
176
  const memoryFile = memoryEjs({
168
177
  moduleSystem: answers.moduleSystem
169
178
  });
170
179
  yield (0, promises_1.writeFile)(`./memory/index.${isTypescript ? 'ts' : 'js'}`, replaceNewLines(memoryFile), 'utf-8');
171
- const readmeTemplate = yield (0, promises_1.readFile)((0, path_1.resolve)(__dirname, '../templates/readme.ejs'), 'utf-8');
180
+ const readmeTemplate = yield (0, promises_1.readFile)((0, node_path_1.resolve)(__dirname, '../templates/readme.ejs'), 'utf-8');
172
181
  const readmeEjs = (0, ejs_1.compile)(readmeTemplate);
173
182
  const readmeFile = readmeEjs({
174
183
  moduleSystem: answers.moduleSystem
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qavajs/create",
3
- "version": "0.4.2",
3
+ "version": "1.0.1",
4
4
  "description": "initializer of @qavajs project",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -20,17 +20,17 @@
20
20
  "author": "Alexandr Galichenko",
21
21
  "license": "MIT",
22
22
  "dependencies": {
23
- "@inquirer/prompts": "^5.5.0",
23
+ "@inquirer/prompts": "^7.0.1",
24
24
  "ejs": "^3.1.10",
25
25
  "fs-extra": "^11.2.0",
26
- "typescript": "^5.6.2",
26
+ "typescript": "^5.6.3",
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/node": "^20.16.5",
33
- "@vitest/coverage-v8": "^2.0.5",
34
- "vitest": "^2.0.5"
32
+ "@types/node": "^22.8.2",
33
+ "@vitest/coverage-v8": "^2.1.4",
34
+ "vitest": "^2.1.4"
35
35
  }
36
36
  }
package/src/deps.ts CHANGED
@@ -8,18 +8,20 @@ export default [
8
8
  export type ModuleDefinition = {
9
9
  module: string,
10
10
  packageName: string,
11
- out?: string
11
+ out?: string,
12
+ version?: string
12
13
  }
13
14
 
14
15
  export const steps: Array<ModuleDefinition> = [
15
- { module: 'playwright', packageName: '@qavajs/steps-playwright' },
16
- { module: 'wdio', packageName: '@qavajs/steps-wdio' },
17
- { module: 'api', packageName: '@qavajs/steps-api' },
18
- { module: 'files', packageName: '@qavajs/steps-files' },
19
- { module: 'sql', packageName: '@qavajs/steps-sql' },
20
- { module: 'accessibility', packageName: '@qavajs/steps-accessibility' },
21
- { module: 'lighthouse', packageName: '@qavajs/steps-lighthouse' },
22
- { module: 'visual testing', packageName: '@qavajs/steps-visual-testing' }
16
+ { module: 'playwright', packageName: '@qavajs/steps-playwright', version: '1' },
17
+ { module: 'wdio', packageName: '@qavajs/steps-wdio', version: '1' },
18
+ { module: 'api', packageName: '@qavajs/steps-api', version: '1' },
19
+ { module: 'files', packageName: '@qavajs/steps-files', version: '1' },
20
+ { module: 'sql', packageName: '@qavajs/steps-sql', version: '1' },
21
+ { module: 'accessibility', packageName: '@qavajs/steps-accessibility', version: '1' },
22
+ { module: 'lighthouse', packageName: '@qavajs/steps-lighthouse', version: '1' },
23
+ { module: 'visual testing', packageName: '@qavajs/steps-visual-testing', version: '1' },
24
+ { module: 'memory', packageName: '@qavajs/steps-memory', version: '1' }
23
25
  ]
24
26
 
25
27
  export const format: Array<ModuleDefinition> = [
package/src/install.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { readFile, writeFile } from 'node:fs/promises';
2
2
  import { ensureDir } from 'fs-extra';
3
- import { resolve } from 'path';
3
+ import { resolve } from 'node:path';
4
4
  import yarnInstall from 'yarn-install';
5
5
  import deps, { steps, format, modules, additionalModules, ModuleDefinition } from './deps';
6
6
  import { compile } from 'ejs';
@@ -12,7 +12,15 @@ const packages = (moduleList: Array<string>, packageMap: Array<ModuleDefinition>
12
12
  .map((module: string) => {
13
13
  const pkg = packageMap.find((p: ModuleDefinition) => p.module === module);
14
14
  if (!pkg) throw new Error(`${module} module is not found`);
15
- return pkg.packageName
15
+ return pkg.version ? `${pkg.packageName}@${pkg.version}` : pkg.packageName;
16
+ }) as Array<string>
17
+ }
18
+ const requireGlob = (moduleList: Array<string>, packageMap: Array<ModuleDefinition>): Array<string> => {
19
+ return moduleList
20
+ .map((module: string) => {
21
+ const pkg = packageMap.find((p: ModuleDefinition) => p.module === module);
22
+ if (!pkg) throw new Error(`${module} module is not found`);
23
+ return `node_modules/${pkg.packageName}/index.js`;
16
24
  }) as Array<string>
17
25
  }
18
26
 
@@ -48,7 +56,7 @@ export default async function install(): Promise<void> {
48
56
  })
49
57
  };
50
58
 
51
- const stepsPackages: Array<string> = ['@qavajs/steps-memory', ...packages(answers.steps, steps)];
59
+ const stepsPackages: Array<string> = [...packages(['memory'], steps), ...packages(answers.steps, steps)];
52
60
  const formatPackages: Array<string> = packages(answers.formats, format);
53
61
  const modulePackages: Array<string> = packages(answers.modules, modules);
54
62
  const additionalPackages: Array<string> = packages(answers.additionalModules, additionalModules);
@@ -94,7 +102,7 @@ export default async function install(): Promise<void> {
94
102
  );
95
103
  const configEjs = compile(configTemplate);
96
104
  const stepDefinitionGlob = `step_definition/*.${isTypescript ? 'ts' : 'js'}`;
97
- const stepsPackagesGlobs = [...stepsPackages].map(p => `node_modules/${p}/index.js`);
105
+ const stepsPackagesGlobs = [...requireGlob(['memory'], steps), ...requireGlob(answers.steps, steps)];
98
106
  const config = configEjs({
99
107
  steps: JSON.stringify([...stepsPackagesGlobs, stepDefinitionGlob]),
100
108
  moduleSystem: answers.moduleSystem,