@qavajs/create 1.0.0 → 2.0.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/lib/deps.js +9 -11
- package/lib/install.js +22 -13
- package/package.json +1 -1
- package/src/deps.ts +11 -12
- package/src/install.ts +12 -4
- package/templates/config.ejs +2 -2
- package/templates/po.ejs +4 -4
package/lib/deps.js
CHANGED
|
@@ -3,19 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.additionalModules = exports.modules = exports.format = exports.steps = void 0;
|
|
4
4
|
exports.default = [
|
|
5
5
|
'@cucumber/cucumber',
|
|
6
|
-
'@qavajs/
|
|
7
|
-
'@qavajs/cli',
|
|
8
|
-
'@qavajs/validation'
|
|
6
|
+
'@qavajs/core@2'
|
|
9
7
|
];
|
|
10
8
|
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' }
|
|
9
|
+
{ module: 'playwright', packageName: '@qavajs/steps-playwright', version: '2' },
|
|
10
|
+
{ module: 'wdio', packageName: '@qavajs/steps-wdio', version: '2' },
|
|
11
|
+
{ module: 'api', packageName: '@qavajs/steps-api', version: '2' },
|
|
12
|
+
{ module: 'files', packageName: '@qavajs/steps-files', version: '2' },
|
|
13
|
+
{ module: 'sql', packageName: '@qavajs/steps-sql', version: '2' },
|
|
14
|
+
{ module: 'accessibility', packageName: '@qavajs/steps-accessibility', version: '2' },
|
|
15
|
+
{ module: 'lighthouse', packageName: '@qavajs/steps-lighthouse', version: '2' },
|
|
16
|
+
{ module: 'visual testing', packageName: '@qavajs/steps-visual-testing', version: '2' }
|
|
19
17
|
];
|
|
20
18
|
exports.format = [
|
|
21
19
|
{ 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
|
|
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 = ['@qavajs/steps-memory@2', ...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,
|
|
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,
|
|
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,
|
|
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,
|
|
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 = [
|
|
126
|
+
const stepsPackagesGlobs = ['node_modules/@qavajs/steps-memory/index.js', ...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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
package/src/deps.ts
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
export default [
|
|
2
2
|
'@cucumber/cucumber',
|
|
3
|
-
'@qavajs/
|
|
4
|
-
'@qavajs/cli',
|
|
5
|
-
'@qavajs/validation'
|
|
3
|
+
'@qavajs/core@2'
|
|
6
4
|
]
|
|
7
5
|
|
|
8
6
|
export type ModuleDefinition = {
|
|
9
7
|
module: string,
|
|
10
8
|
packageName: string,
|
|
11
|
-
out?: string
|
|
9
|
+
out?: string,
|
|
10
|
+
version?: string,
|
|
12
11
|
}
|
|
13
12
|
|
|
14
13
|
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' }
|
|
14
|
+
{ module: 'playwright', packageName: '@qavajs/steps-playwright', version: '2' },
|
|
15
|
+
{ module: 'wdio', packageName: '@qavajs/steps-wdio', version: '2' },
|
|
16
|
+
{ module: 'api', packageName: '@qavajs/steps-api', version: '2' },
|
|
17
|
+
{ module: 'files', packageName: '@qavajs/steps-files', version: '2' },
|
|
18
|
+
{ module: 'sql', packageName: '@qavajs/steps-sql', version: '2' },
|
|
19
|
+
{ module: 'accessibility', packageName: '@qavajs/steps-accessibility', version: '2' },
|
|
20
|
+
{ module: 'lighthouse', packageName: '@qavajs/steps-lighthouse', version: '2'},
|
|
21
|
+
{ module: 'visual testing', packageName: '@qavajs/steps-visual-testing', version: '2' }
|
|
23
22
|
]
|
|
24
23
|
|
|
25
24
|
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> = ['@qavajs/steps-memory@2', ...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 = [
|
|
105
|
+
const stepsPackagesGlobs = ['node_modules/@qavajs/steps-memory/index.js', ...requireGlob(answers.steps, steps)];
|
|
98
106
|
const config = configEjs({
|
|
99
107
|
steps: JSON.stringify([...stepsPackagesGlobs, stepDefinitionGlob]),
|
|
100
108
|
moduleSystem: answers.moduleSystem,
|
package/templates/config.ejs
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<%-` format: `%><%-format%>,
|
|
12
12
|
<%-` memory: new Memory()`%>,
|
|
13
13
|
<% if (isPlaywrightIncluded || isWdioIncluded) {%>
|
|
14
|
-
<%-` pageObject:
|
|
14
|
+
<%-` pageObject: App`%>,
|
|
15
15
|
<%-` browser: {`%>
|
|
16
16
|
<%-` capabilities: {`%>
|
|
17
17
|
<%-` browserName: `%><% if (isWdioIncluded) {%><%-'"chrome"'%><%} else {%><%-'"chromium"'%><%}%>
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
<%-` format: `%><%-format%>,
|
|
37
37
|
<%-` memory: new Memory()`%>,
|
|
38
38
|
<% if (isPlaywrightIncluded || isWdioIncluded) {%>
|
|
39
|
-
<%-` pageObject:
|
|
39
|
+
<%-` pageObject: App`%>,
|
|
40
40
|
<%-` browser: {`%>
|
|
41
41
|
<%-` capabilities: {`%>
|
|
42
42
|
<%-` browserName: `%><% if (isWdioIncluded) {%><%-'"chrome"'%><%} else {%><%-'"chromium"'%><%}%>
|
package/templates/po.ejs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<% if (moduleSystem === 'ES Modules' || moduleSystem === 'Typescript') {-%>
|
|
2
|
-
<%-'import {
|
|
2
|
+
<%-'import { locator } from "'-%><%-poModule%>";
|
|
3
3
|
<%} else {-%>
|
|
4
|
-
<%-'const {
|
|
4
|
+
<%-'const { locator } = require('%>"<%-poModule%>");
|
|
5
5
|
<%}%>
|
|
6
6
|
<% if (moduleSystem === 'ES Modules' || moduleSystem === 'Typescript') {-%><%-'export default '%><%} else {%><%-'module.exports = '%><%}%>class App {
|
|
7
|
-
Body =
|
|
8
|
-
GetStartedButton =
|
|
7
|
+
Body = locator("body");
|
|
8
|
+
GetStartedButton = locator("a.button[href='/docs/intro']");
|
|
9
9
|
}
|