create-appraisejs 0.1.9 → 0.1.10-alpha.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/README.md +24 -17
- package/dist/cli.d.ts +2 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.e2e.test.js +11 -8
- package/dist/cli.e2e.test.js.map +1 -1
- package/dist/cli.js +32 -48
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -1
- package/dist/config.js.map +1 -1
- package/dist/config.test.js +9 -5
- package/dist/config.test.js.map +1 -1
- package/dist/copy-template.d.ts +1 -1
- package/dist/copy-template.d.ts.map +1 -1
- package/dist/copy-template.js +7 -3
- package/dist/copy-template.js.map +1 -1
- package/dist/copy-template.test.js +14 -9
- package/dist/copy-template.test.js.map +1 -1
- package/dist/create-project.d.ts +23 -0
- package/dist/create-project.d.ts.map +1 -0
- package/dist/create-project.js +58 -0
- package/dist/create-project.js.map +1 -0
- package/dist/create-project.test.d.ts +2 -0
- package/dist/create-project.test.d.ts.map +1 -0
- package/dist/create-project.test.js +80 -0
- package/dist/create-project.test.js.map +1 -0
- package/dist/install.d.ts +8 -4
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +22 -72
- package/dist/install.js.map +1 -1
- package/dist/install.test.js +26 -10
- package/dist/install.test.js.map +1 -1
- package/dist/package-manager.d.ts +11 -0
- package/dist/package-manager.d.ts.map +1 -0
- package/dist/package-manager.js +47 -0
- package/dist/package-manager.js.map +1 -0
- package/dist/package-manager.test.d.ts +2 -0
- package/dist/package-manager.test.d.ts.map +1 -0
- package/dist/package-manager.test.js +51 -0
- package/dist/package-manager.test.js.map +1 -0
- package/dist/prepare-template-utils.d.ts +10 -0
- package/dist/prepare-template-utils.d.ts.map +1 -0
- package/dist/prepare-template-utils.js +53 -0
- package/dist/prepare-template-utils.js.map +1 -0
- package/dist/prepare-template-utils.test.d.ts +2 -0
- package/dist/prepare-template-utils.test.d.ts.map +1 -0
- package/dist/prepare-template-utils.test.js +67 -0
- package/dist/prepare-template-utils.test.js.map +1 -0
- package/dist/prompts.d.ts +2 -0
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +11 -3
- package/dist/prompts.js.map +1 -1
- package/dist/prompts.test.js +17 -7
- package/dist/prompts.test.js.map +1 -1
- package/dist/template-sync-utils.test.d.ts +2 -0
- package/dist/template-sync-utils.test.d.ts.map +1 -0
- package/dist/template-sync-utils.test.js +41 -0
- package/dist/template-sync-utils.test.js.map +1 -0
- package/package.json +3 -2
- package/templates/default/.appraise-template-meta.json +5 -0
- package/templates/default/.env.example +1 -1
- package/templates/default/.vscode/settings.json +10 -3
- package/templates/default/README.md +27 -25
- package/templates/default/automation/features/base/login.feature +15 -0
- package/templates/default/automation/locators/base/home.json +3 -0
- package/templates/default/automation/locators/base/login.json +6 -0
- package/templates/default/automation/locators/base/test.json +1 -0
- package/templates/default/automation/mapping/locator-map.json +14 -0
- package/templates/default/{src/tests → automation}/steps/actions/click.step.ts +1 -4
- package/templates/default/{src/tests → automation}/steps/actions/hover.step.ts +1 -4
- package/templates/default/{src/tests → automation}/steps/actions/input.step.ts +1 -4
- package/templates/default/{src/tests → automation}/steps/actions/navigation.step.ts +1 -3
- package/templates/default/{src/tests → automation}/steps/actions/random_data.step.ts +1 -3
- package/templates/default/{src/tests → automation}/steps/actions/store.step.ts +1 -4
- package/templates/default/automation/steps/actions/wait.step.ts +91 -0
- package/templates/default/{src/tests → automation}/steps/validations/active_state_assertion.step.ts +1 -4
- package/templates/default/{src/tests → automation}/steps/validations/navigation_assertion.step.ts +1 -2
- package/templates/default/{src/tests → automation}/steps/validations/text_assertion.step.ts +1 -4
- package/templates/default/{src/tests → automation}/steps/validations/visibility_assertion.step.ts +1 -4
- package/templates/default/cucumber.mjs +6 -6
- package/templates/default/eslint.config.mjs +5 -4
- package/templates/default/package-lock.json +322 -485
- package/templates/default/package.json +12 -6
- package/templates/default/packages/cucumber-runtime/package.json +13 -0
- package/templates/default/packages/cucumber-runtime/src/cache.util.ts +93 -0
- package/templates/default/packages/cucumber-runtime/src/cli.ts +68 -0
- package/templates/default/packages/cucumber-runtime/src/environment.util.ts +21 -0
- package/templates/default/packages/cucumber-runtime/src/executor.ts +32 -0
- package/templates/default/{src/tests/hooks → packages/cucumber-runtime/src}/hooks.ts +17 -32
- package/templates/default/packages/cucumber-runtime/src/index.ts +17 -0
- package/templates/default/{src/tests/utils → packages/cucumber-runtime/src}/locator.util.ts +50 -64
- package/templates/default/packages/cucumber-runtime/src/parameter-types.ts +7 -0
- package/templates/default/packages/cucumber-runtime/src/paths.ts +33 -0
- package/templates/default/packages/cucumber-runtime/src/random-data.util.ts +35 -0
- package/templates/default/packages/cucumber-runtime/src/types.ts +13 -0
- package/templates/default/{src/tests/config/executor → packages/cucumber-runtime/src}/world.ts +4 -1
- package/templates/default/packages/cucumber-runtime/tsconfig.json +11 -0
- package/templates/default/scripts/setup-env.ts +4 -4
- package/templates/default/scripts/sync-appraise-base-template.ts +124 -105
- package/templates/default/scripts/sync-environments.ts +8 -5
- package/templates/default/scripts/sync-locator-groups.ts +7 -10
- package/templates/default/scripts/sync-locators.ts +5 -9
- package/templates/default/scripts/sync-modules.ts +9 -17
- package/templates/default/scripts/sync-tags.ts +2 -2
- package/templates/default/scripts/sync-template-step-groups.ts +16 -6
- package/templates/default/scripts/sync-template-steps.ts +16 -5
- package/templates/default/scripts/sync-test-cases.ts +6 -3
- package/templates/default/scripts/sync-test-suites.ts +7 -4
- package/templates/default/src/actions/environments/environment-actions.ts +6 -23
- package/templates/default/src/actions/locator/locator-actions.ts +36 -93
- package/templates/default/src/actions/locator-groups/locator-group-actions.ts +24 -78
- package/templates/default/src/actions/modules/module-actions.ts +4 -2
- package/templates/default/src/actions/tags/tag-actions.ts +4 -1
- package/templates/default/src/actions/template-step/template-step-actions.ts +10 -101
- package/templates/default/src/actions/template-step-group/template-step-group-actions.ts +31 -130
- package/templates/default/src/actions/test-case/test-case-actions.ts +31 -94
- package/templates/default/src/actions/test-run/test-run-actions.ts +11 -13
- package/templates/default/src/actions/test-suite/test-suite-actions.ts +29 -82
- package/templates/default/src/app/(base)/locator-groups/page.tsx +1 -3
- package/templates/default/src/app/(base)/reports/page.tsx +1 -1
- package/templates/default/src/app/(base)/reports/test-cases/page.tsx +2 -2
- package/templates/default/src/app/(base)/reports/test-cases/test-cases-metric-table-columns.tsx +1 -1
- package/templates/default/src/app/(base)/tags/page.tsx +2 -2
- package/templates/default/src/app/(base)/template-steps/page.tsx +1 -2
- package/templates/default/src/app/(base)/test-runs/page.tsx +2 -2
- package/templates/default/src/app/api/test-runs/[runId]/logs/route.ts +2 -1
- package/templates/default/src/app/api/test-runs/[runId]/trace/[testCaseId]/route.ts +2 -1
- package/templates/default/src/app/page.tsx +4 -5
- package/templates/default/src/components/diagram/dynamic-parameters.tsx +76 -40
- package/templates/default/src/components/diagram/options-header-node.tsx +1 -1
- package/templates/default/src/components/ui/data-table.tsx +33 -39
- package/templates/default/src/lib/automation/paths.ts +181 -0
- package/templates/default/src/lib/automation/projection-service.ts +230 -0
- package/templates/default/src/lib/environment-file-utils.ts +14 -51
- package/templates/default/src/lib/executor/local-executor-adapter.ts +101 -0
- package/templates/default/src/lib/executor/types.ts +24 -0
- package/templates/default/src/lib/feature-file-generator.ts +22 -112
- package/templates/default/src/lib/locator-group-file-utils.ts +57 -120
- package/templates/default/src/lib/process/task-spawner.ts +236 -0
- package/templates/default/src/lib/template-sync-utils.d.ts +7 -0
- package/templates/default/src/lib/template-sync-utils.d.ts.map +1 -0
- package/templates/default/src/lib/template-sync-utils.js +47 -0
- package/templates/default/src/lib/template-sync-utils.js.map +1 -0
- package/templates/default/src/lib/template-sync-utils.ts +63 -0
- package/templates/default/src/lib/test-run/process-manager.ts +9 -87
- package/templates/default/src/lib/test-run/test-run-executor.ts +7 -136
- package/templates/default/src/lib/test-run/winston-logger.ts +6 -35
- package/templates/default/src/lib/utils/template-step-file-generator.ts +22 -85
- package/templates/default/src/lib/utils/template-step-file-manager-intelligent.ts +7 -22
- package/templates/default/public/favicon.ico +0 -0
- package/templates/default/src/tests/executor.ts +0 -80
- package/templates/default/src/tests/mapping/locator-map.json +0 -1
- package/templates/default/src/tests/steps/actions/wait.step.ts +0 -107
- package/templates/default/src/tests/support/parameter-types.ts +0 -12
- package/templates/default/src/tests/utils/cache.util.ts +0 -260
- package/templates/default/src/tests/utils/cli.util.ts +0 -177
- package/templates/default/src/tests/utils/environment.util.ts +0 -65
- package/templates/default/src/tests/utils/random-data.util.ts +0 -45
- package/templates/default/src/tests/utils/spawner.util.ts +0 -617
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { existsSync, promises as fs } from 'fs';
|
|
3
|
+
export const TEMPLATE_PREP_SYNC_SCRIPTS = ['sync-template-step-groups', 'sync-template-steps'];
|
|
4
|
+
export async function collectFiles(dir, predicate, baseDir = dir) {
|
|
5
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
6
|
+
const files = [];
|
|
7
|
+
for (const entry of entries) {
|
|
8
|
+
const fullPath = path.join(dir, entry.name);
|
|
9
|
+
const relativePath = path.relative(baseDir, fullPath).replace(/\\/g, '/');
|
|
10
|
+
if (entry.isDirectory()) {
|
|
11
|
+
files.push(...(await collectFiles(fullPath, predicate, baseDir)));
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
if (!predicate || predicate(relativePath)) {
|
|
15
|
+
files.push(fullPath);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return files;
|
|
19
|
+
}
|
|
20
|
+
export function shouldAbortOnFallbackSeed(usedFallbackSeed, inputHash, previousMetadata) {
|
|
21
|
+
return usedFallbackSeed && previousMetadata?.inputHash !== inputHash;
|
|
22
|
+
}
|
|
23
|
+
export async function verifyPreparedTemplateState(packageTemplateDir, collectFilesFn = collectFiles) {
|
|
24
|
+
const seededDbPath = path.join(packageTemplateDir, 'prisma', 'dev.db');
|
|
25
|
+
const staleNestedDbPath = path.join(packageTemplateDir, 'prisma', 'prisma', 'dev.db');
|
|
26
|
+
const packageEnvPath = path.join(packageTemplateDir, '.env');
|
|
27
|
+
const starterFeaturePath = path.join(packageTemplateDir, 'automation', 'features', 'base', 'login.feature');
|
|
28
|
+
const starterEnvironmentPath = path.join(packageTemplateDir, 'automation', 'config', 'environments', 'environments.json');
|
|
29
|
+
const starterLocatorMapPath = path.join(packageTemplateDir, 'automation', 'mapping', 'locator-map.json');
|
|
30
|
+
const reportFiles = await collectFilesFn(path.join(packageTemplateDir, 'automation', 'reports'));
|
|
31
|
+
if (!existsSync(seededDbPath)) {
|
|
32
|
+
throw new Error(`Prepared template is missing ${seededDbPath}`);
|
|
33
|
+
}
|
|
34
|
+
if (existsSync(staleNestedDbPath)) {
|
|
35
|
+
throw new Error(`Prepared template still contains stale nested database ${staleNestedDbPath}`);
|
|
36
|
+
}
|
|
37
|
+
if (existsSync(packageEnvPath)) {
|
|
38
|
+
throw new Error(`Prepared template should not include ${packageEnvPath}`);
|
|
39
|
+
}
|
|
40
|
+
if (!existsSync(starterFeaturePath)) {
|
|
41
|
+
throw new Error(`Prepared template is missing starter automation feature ${starterFeaturePath}`);
|
|
42
|
+
}
|
|
43
|
+
if (!existsSync(starterEnvironmentPath)) {
|
|
44
|
+
throw new Error(`Prepared template is missing starter environments file ${starterEnvironmentPath}`);
|
|
45
|
+
}
|
|
46
|
+
if (!existsSync(starterLocatorMapPath)) {
|
|
47
|
+
throw new Error(`Prepared template is missing locator map ${starterLocatorMapPath}`);
|
|
48
|
+
}
|
|
49
|
+
if (reportFiles.length > 0) {
|
|
50
|
+
throw new Error(`Prepared template should not include report artifacts, found ${reportFiles.join(', ')}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=prepare-template-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare-template-utils.js","sourceRoot":"","sources":["../src/prepare-template-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare-template-utils.test.d.ts","sourceRoot":"","sources":["../src/prepare-template-utils.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import os from 'os';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import { afterEach, describe, expect, it } from 'vitest';
|
|
5
|
+
import { shouldAbortOnFallbackSeed, verifyPreparedTemplateState, } from './prepare-template-utils.js';
|
|
6
|
+
async function createPreparedTemplateFixture(rootDir) {
|
|
7
|
+
await fs.ensureDir(path.join(rootDir, 'prisma'));
|
|
8
|
+
await fs.ensureDir(path.join(rootDir, 'automation', 'features', 'base'));
|
|
9
|
+
await fs.ensureDir(path.join(rootDir, 'automation', 'config', 'environments'));
|
|
10
|
+
await fs.ensureDir(path.join(rootDir, 'automation', 'mapping'));
|
|
11
|
+
await fs.ensureDir(path.join(rootDir, 'automation', 'reports'));
|
|
12
|
+
await fs.writeFile(path.join(rootDir, 'prisma', 'dev.db'), 'db');
|
|
13
|
+
await fs.writeFile(path.join(rootDir, 'automation', 'features', 'base', 'login.feature'), 'Feature: login');
|
|
14
|
+
await fs.writeFile(path.join(rootDir, 'automation', 'config', 'environments', 'environments.json'), '{"demo":{"baseUrl":"https://example.com","apiBaseUrl":"","email":"","password":""}}');
|
|
15
|
+
await fs.writeFile(path.join(rootDir, 'automation', 'mapping', 'locator-map.json'), '[]');
|
|
16
|
+
}
|
|
17
|
+
describe('shouldAbortOnFallbackSeed', () => {
|
|
18
|
+
const previousMetadata = {
|
|
19
|
+
preparedAt: '2026-03-11T00:00:00.000Z',
|
|
20
|
+
inputHash: 'previous-hash',
|
|
21
|
+
databasePath: 'prisma/dev.db',
|
|
22
|
+
};
|
|
23
|
+
it('aborts when fallback seed is used and the template input hash changed', () => {
|
|
24
|
+
expect(shouldAbortOnFallbackSeed(true, 'new-hash', previousMetadata)).toBe(true);
|
|
25
|
+
});
|
|
26
|
+
it('does not abort when fallback seed is not used', () => {
|
|
27
|
+
expect(shouldAbortOnFallbackSeed(false, 'new-hash', previousMetadata)).toBe(false);
|
|
28
|
+
});
|
|
29
|
+
it('does not abort when the previous hash matches', () => {
|
|
30
|
+
expect(shouldAbortOnFallbackSeed(true, 'previous-hash', previousMetadata)).toBe(false);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe('verifyPreparedTemplateState', () => {
|
|
34
|
+
const tempDirs = [];
|
|
35
|
+
afterEach(async () => {
|
|
36
|
+
await Promise.all(tempDirs.map(dir => fs.remove(dir).catch(() => { })));
|
|
37
|
+
tempDirs.length = 0;
|
|
38
|
+
});
|
|
39
|
+
async function createTempTemplateDir() {
|
|
40
|
+
const dir = await fs.mkdtemp(path.join(os.tmpdir(), 'create-appraisejs-prepare-'));
|
|
41
|
+
tempDirs.push(dir);
|
|
42
|
+
await createPreparedTemplateFixture(dir);
|
|
43
|
+
return dir;
|
|
44
|
+
}
|
|
45
|
+
it('accepts a prepared template with required starter assets and no reports', async () => {
|
|
46
|
+
const dir = await createTempTemplateDir();
|
|
47
|
+
await expect(verifyPreparedTemplateState(dir)).resolves.toBeUndefined();
|
|
48
|
+
});
|
|
49
|
+
it('fails when the environments starter file is missing', async () => {
|
|
50
|
+
const dir = await createTempTemplateDir();
|
|
51
|
+
await fs.remove(path.join(dir, 'automation', 'config', 'environments', 'environments.json'));
|
|
52
|
+
await expect(verifyPreparedTemplateState(dir)).rejects.toThrow(/starter environments file/);
|
|
53
|
+
});
|
|
54
|
+
it('fails when report artifacts are present', async () => {
|
|
55
|
+
const dir = await createTempTemplateDir();
|
|
56
|
+
await fs.ensureDir(path.join(dir, 'automation', 'reports', 'logs'));
|
|
57
|
+
await fs.writeFile(path.join(dir, 'automation', 'reports', 'logs', 'run.log'), 'artifact');
|
|
58
|
+
await expect(verifyPreparedTemplateState(dir)).rejects.toThrow(/report artifacts/);
|
|
59
|
+
});
|
|
60
|
+
it('fails when a stale nested prisma database is present', async () => {
|
|
61
|
+
const dir = await createTempTemplateDir();
|
|
62
|
+
await fs.ensureDir(path.join(dir, 'prisma', 'prisma'));
|
|
63
|
+
await fs.writeFile(path.join(dir, 'prisma', 'prisma', 'dev.db'), 'stale');
|
|
64
|
+
await expect(verifyPreparedTemplateState(dir)).rejects.toThrow(/stale nested database/);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=prepare-template-utils.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare-template-utils.test.js","sourceRoot":"","sources":["../src/prepare-template-utils.test.ts"],"names":[],"mappings":"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"}
|
package/dist/prompts.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export type PackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun';
|
|
2
|
+
export type PlaywrightBrowser = 'chromium' | 'firefox' | 'webkit';
|
|
2
3
|
export interface PromptAnswers {
|
|
3
4
|
directory: string;
|
|
4
5
|
packageManager: PackageManager;
|
|
5
6
|
runInstall: boolean;
|
|
7
|
+
playwrightBrowsers: PlaywrightBrowser[];
|
|
6
8
|
}
|
|
7
9
|
export declare function runPrompts(cwd: string): Promise<PromptAnswers>;
|
|
8
10
|
//# sourceMappingURL=prompts.d.ts.map
|
package/dist/prompts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAC7D,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAElE,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;CACzC;AAuBD,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA8CpE"}
|
package/dist/prompts.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { input, select
|
|
1
|
+
import { checkbox, confirm, input, select } from '@inquirer/prompts';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import fs from 'fs';
|
|
4
4
|
const DEFAULT_DIR = './my-appraisejs-app';
|
|
@@ -49,9 +49,17 @@ export async function runPrompts(cwd) {
|
|
|
49
49
|
default: 'npm',
|
|
50
50
|
});
|
|
51
51
|
const runInstall = await confirm({
|
|
52
|
-
message: 'Would you like to run the
|
|
52
|
+
message: 'Would you like to run the production setup now?',
|
|
53
53
|
default: true,
|
|
54
54
|
});
|
|
55
|
-
|
|
55
|
+
const playwrightBrowsers = await checkbox({
|
|
56
|
+
message: 'Which Playwright browsers should we install?',
|
|
57
|
+
choices: [
|
|
58
|
+
{ name: 'Chromium', value: 'chromium' },
|
|
59
|
+
{ name: 'Firefox', value: 'firefox' },
|
|
60
|
+
{ name: 'WebKit', value: 'webkit' },
|
|
61
|
+
],
|
|
62
|
+
});
|
|
63
|
+
return { directory: resolved, packageManager, runInstall, playwrightBrowsers };
|
|
56
64
|
}
|
|
57
65
|
//# sourceMappingURL=prompts.js.map
|
package/dist/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
|
package/dist/prompts.test.js
CHANGED
|
@@ -7,10 +7,16 @@ vi.mock('@inquirer/prompts', () => ({
|
|
|
7
7
|
input: vi.fn(),
|
|
8
8
|
select: vi.fn(),
|
|
9
9
|
confirm: vi.fn(),
|
|
10
|
+
checkbox: vi.fn(),
|
|
10
11
|
}));
|
|
11
12
|
async function getMocks() {
|
|
12
|
-
const { input, select, confirm } = await import('@inquirer/prompts');
|
|
13
|
-
return {
|
|
13
|
+
const { checkbox, input, select, confirm } = await import('@inquirer/prompts');
|
|
14
|
+
return {
|
|
15
|
+
checkbox: checkbox,
|
|
16
|
+
input: input,
|
|
17
|
+
select: select,
|
|
18
|
+
confirm: confirm,
|
|
19
|
+
};
|
|
14
20
|
}
|
|
15
21
|
describe('runPrompts', () => {
|
|
16
22
|
let cwd;
|
|
@@ -25,16 +31,18 @@ describe('runPrompts', () => {
|
|
|
25
31
|
}
|
|
26
32
|
vi.clearAllMocks();
|
|
27
33
|
});
|
|
28
|
-
it('returns directory, packageManager, and
|
|
34
|
+
it('returns directory, packageManager, runInstall, and browsers from mocked prompts', async () => {
|
|
29
35
|
fs.mkdirSync(tempDir, { recursive: true });
|
|
30
|
-
const { input, select, confirm } = await getMocks();
|
|
36
|
+
const { checkbox, input, select, confirm } = await getMocks();
|
|
31
37
|
input.mockResolvedValue(tempDir);
|
|
32
38
|
select.mockResolvedValue('pnpm');
|
|
33
|
-
confirm.mockResolvedValue(
|
|
39
|
+
confirm.mockResolvedValue(true);
|
|
40
|
+
checkbox.mockResolvedValue(['chromium', 'webkit']);
|
|
34
41
|
const result = await runPrompts(cwd);
|
|
35
42
|
expect(result.directory).toBe(path.resolve(cwd, tempDir));
|
|
36
43
|
expect(result.packageManager).toBe('pnpm');
|
|
37
|
-
expect(result.runInstall).toBe(
|
|
44
|
+
expect(result.runInstall).toBe(true);
|
|
45
|
+
expect(result.playwrightBrowsers).toEqual(['chromium', 'webkit']);
|
|
38
46
|
});
|
|
39
47
|
it('throws when target directory exists and is non-empty', async () => {
|
|
40
48
|
fs.mkdirSync(tempDir, { recursive: true });
|
|
@@ -45,14 +53,16 @@ describe('runPrompts', () => {
|
|
|
45
53
|
});
|
|
46
54
|
it('accepts when target directory does not exist', async () => {
|
|
47
55
|
const newPath = path.join(tempDir, 'new-app');
|
|
48
|
-
const { input, select, confirm } = await getMocks();
|
|
56
|
+
const { checkbox, input, select, confirm } = await getMocks();
|
|
49
57
|
input.mockResolvedValue(newPath);
|
|
50
58
|
select.mockResolvedValue('npm');
|
|
51
59
|
confirm.mockResolvedValue(true);
|
|
60
|
+
checkbox.mockResolvedValue([]);
|
|
52
61
|
const result = await runPrompts(cwd);
|
|
53
62
|
expect(result.directory).toBe(path.resolve(cwd, newPath));
|
|
54
63
|
expect(result.packageManager).toBe('npm');
|
|
55
64
|
expect(result.runInstall).toBe(true);
|
|
65
|
+
expect(result.playwrightBrowsers).toEqual([]);
|
|
56
66
|
});
|
|
57
67
|
});
|
|
58
68
|
//# sourceMappingURL=prompts.test.js.map
|
package/dist/prompts.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.test.js","sourceRoot":"","sources":["../src/prompts.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;IAClC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;IACd,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;IACf,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"prompts.test.js","sourceRoot":"","sources":["../src/prompts.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-sync-utils.test.d.ts","sourceRoot":"","sources":["../src/template-sync-utils.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { extractModulePathFromAutomationFile, getAutomationLocatorMapPath, shouldBackfillLegacyEnvironmentConfig, shouldExcludeTemplatePath, } from '../../../src/lib/template-sync-utils.js';
|
|
2
|
+
import { describe, expect, it } from 'vitest';
|
|
3
|
+
describe('shouldExcludeTemplatePath', () => {
|
|
4
|
+
it('excludes report artifacts and database files', () => {
|
|
5
|
+
expect(shouldExcludeTemplatePath('automation/reports/logs/run.log')).toBe(true);
|
|
6
|
+
expect(shouldExcludeTemplatePath('prisma/dev.db')).toBe(true);
|
|
7
|
+
expect(shouldExcludeTemplatePath('tsconfig.tsbuildinfo')).toBe(true);
|
|
8
|
+
});
|
|
9
|
+
it('keeps normal source files and config files', () => {
|
|
10
|
+
expect(shouldExcludeTemplatePath('automation/features/base/login.feature')).toBe(false);
|
|
11
|
+
expect(shouldExcludeTemplatePath('prisma/schema.prisma')).toBe(false);
|
|
12
|
+
expect(shouldExcludeTemplatePath('package.json')).toBe(false);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
describe('shouldBackfillLegacyEnvironmentConfig', () => {
|
|
16
|
+
it('backs fills only when the target file is missing and the legacy directory exists', () => {
|
|
17
|
+
expect(shouldBackfillLegacyEnvironmentConfig(false, true)).toBe(true);
|
|
18
|
+
expect(shouldBackfillLegacyEnvironmentConfig(true, true)).toBe(false);
|
|
19
|
+
expect(shouldBackfillLegacyEnvironmentConfig(false, false)).toBe(false);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
describe('extractModulePathFromAutomationFile', () => {
|
|
23
|
+
it('derives locator module paths from automation locators', () => {
|
|
24
|
+
expect(extractModulePathFromAutomationFile('/repo/automation/locators/base/login.json', '/repo', 'locators')).toBe('/base');
|
|
25
|
+
});
|
|
26
|
+
it('derives nested feature module paths from automation features', () => {
|
|
27
|
+
expect(extractModulePathFromAutomationFile('/repo/automation/features/users/admins/directors/login.feature', '/repo', 'features')).toBe('/users/admins/directors');
|
|
28
|
+
});
|
|
29
|
+
it('handles windows-style paths', () => {
|
|
30
|
+
expect(extractModulePathFromAutomationFile('C:\\repo\\automation\\locators\\users\\admins\\dashboard.json', 'C:\\repo', 'locators')).toBe('/users/admins');
|
|
31
|
+
});
|
|
32
|
+
it('returns the root module for top-level feature files', () => {
|
|
33
|
+
expect(extractModulePathFromAutomationFile('/repo/automation/features/login.feature', '/repo', 'features')).toBe('/');
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
describe('getAutomationLocatorMapPath', () => {
|
|
37
|
+
it('points locator-map.json into the automation workspace', () => {
|
|
38
|
+
expect(getAutomationLocatorMapPath('/repo')).toBe('/repo/automation/mapping/locator-map.json');
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=template-sync-utils.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-sync-utils.test.js","sourceRoot":"","sources":["../src/template-sync-utils.test.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mCAAmC,EACnC,2BAA2B,EAC3B,qCAAqC,EACrC,yBAAyB,GAC1B,MAAM,yCAAyC,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,yBAAyB,CAAC,iCAAiC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/E,MAAM,CAAC,yBAAyB,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7D,MAAM,CAAC,yBAAyB,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,yBAAyB,CAAC,wCAAwC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvF,MAAM,CAAC,yBAAyB,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrE,MAAM,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,MAAM,CAAC,qCAAqC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrE,MAAM,CAAC,qCAAqC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrE,MAAM,CAAC,qCAAqC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CACJ,mCAAmC,CAAC,2CAA2C,EAAE,OAAO,EAAE,UAAU,CAAC,CACtG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,CACJ,mCAAmC,CACjC,gEAAgE,EAChE,OAAO,EACP,UAAU,CACX,CACF,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CACJ,mCAAmC,CACjC,+DAA+D,EAC/D,UAAU,EACV,UAAU,CACX,CACF,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IACzB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,mCAAmC,CAAC,yCAAyC,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAC9G,GAAG,CACJ,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;IAChG,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-appraisejs",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.10-alpha.1",
|
|
4
4
|
"description": "Scaffold a new AppraiseJS app in your directory",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Hasnat Jamil",
|
|
@@ -37,7 +37,8 @@
|
|
|
37
37
|
],
|
|
38
38
|
"scripts": {
|
|
39
39
|
"prepublishOnly": "npm run build",
|
|
40
|
-
"build": "npm run
|
|
40
|
+
"build": "npm run prepare-template && tsc",
|
|
41
|
+
"prepare-template": "tsx scripts/prepare-template.ts",
|
|
41
42
|
"sync-templates": "tsx scripts/sync-templates.ts",
|
|
42
43
|
"test": "vitest run",
|
|
43
44
|
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# Database configuration for local development
|
|
2
|
-
DATABASE_URL="file:./
|
|
2
|
+
DATABASE_URL="file:./dev.db"
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
{
|
|
2
|
-
"cucumber.features": ["
|
|
3
|
-
"cucumber.glue": ["
|
|
4
|
-
"prisma.pinToPrisma6": true
|
|
2
|
+
"cucumber.features": ["automation/features/**/*.feature"],
|
|
3
|
+
"cucumber.glue": ["automation/steps/**/*.ts"],
|
|
4
|
+
"prisma.pinToPrisma6": true,
|
|
5
|
+
"cucumber.parameterTypes": [
|
|
6
|
+
{
|
|
7
|
+
"name": "boolean",
|
|
8
|
+
"regexp": "true|false"
|
|
9
|
+
}
|
|
10
|
+
]
|
|
5
11
|
}
|
|
12
|
+
|
|
@@ -1,51 +1,53 @@
|
|
|
1
1
|
# Appraise Starter Template
|
|
2
2
|
|
|
3
|
-
This is a
|
|
3
|
+
This is a production-first Appraise starter project. Copy this folder into a new directory to start a new project.
|
|
4
4
|
|
|
5
5
|
## Prerequisites
|
|
6
6
|
|
|
7
7
|
- Node.js 18+
|
|
8
|
-
- npm, pnpm, or
|
|
8
|
+
- npm, pnpm, yarn, or bun
|
|
9
9
|
|
|
10
10
|
## Quick start
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
|
-
# 1. Install dependencies
|
|
14
|
-
npm install --legacy-peer-deps
|
|
15
|
-
|
|
16
|
-
# 2. Setup: create .env, run migrations, install Playwright
|
|
13
|
+
# 1. Install dependencies, create .env, and build the production app
|
|
17
14
|
npm run setup
|
|
18
15
|
|
|
19
|
-
#
|
|
20
|
-
npm run
|
|
16
|
+
# 2. Optional: install Playwright browsers when you need test execution
|
|
17
|
+
npm run install-playwright -- chromium
|
|
21
18
|
|
|
22
|
-
#
|
|
23
|
-
npm run
|
|
19
|
+
# 3. Start the local production server
|
|
20
|
+
npm run start
|
|
24
21
|
```
|
|
25
22
|
|
|
26
23
|
## What you get
|
|
27
24
|
|
|
28
25
|
- **URL**: Open [http://localhost:3000](http://localhost:3000) in your browser.
|
|
29
|
-
- **
|
|
26
|
+
- **Runtime**: A seeded local SQLite database at `prisma/dev.db`.
|
|
27
|
+
- **Automation**: Starter automation assets under `automation/`, including features, locators, environments, and reusable steps.
|
|
28
|
+
- **UI**: The full Appraise dashboard and UI, ready to run from a production build.
|
|
30
29
|
|
|
31
30
|
## Scripts
|
|
32
31
|
|
|
33
|
-
| Script
|
|
34
|
-
|
|
|
35
|
-
| `npm run
|
|
36
|
-
| `npm run build`
|
|
37
|
-
| `npm run start`
|
|
38
|
-
| `npm run
|
|
39
|
-
| `npm run
|
|
40
|
-
| `npm run
|
|
41
|
-
| `npm run
|
|
42
|
-
| `npm run
|
|
32
|
+
| Script | Description |
|
|
33
|
+
| --- | --- |
|
|
34
|
+
| `npm run setup` | Install deps, create `.env`, and build the cucumber runtime plus the local production app |
|
|
35
|
+
| `npm run build:local` | Build the cucumber runtime and the local production app |
|
|
36
|
+
| `npm run start` | Start the local production server |
|
|
37
|
+
| `npm run dev` | Start the Next.js development server |
|
|
38
|
+
| `npm run install-playwright -- <browser...>` | Install selected Playwright browsers |
|
|
39
|
+
| `npm run setup:db` | Recreate the local SQLite database from migrations and rerun `sync-all` |
|
|
40
|
+
| `npm run setup:full` | Reinstall dependencies, rebuild the DB, rerun `sync-all`, and rebuild the production app |
|
|
41
|
+
| `npm run sync-all` | Sync all starter entities from the bundled automation workspace into the database |
|
|
42
|
+
| `npm run appraisejs:sync` | Alias for `sync-all` |
|
|
43
43
|
|
|
44
44
|
## Configuration
|
|
45
45
|
|
|
46
|
-
- Copy `.env.example` to `.env` before running
|
|
47
|
-
-
|
|
46
|
+
- Copy `.env.example` to `.env` before running, or let `npm run setup` create it.
|
|
47
|
+
- Default local database URL: `DATABASE_URL="file:./dev.db"`.
|
|
48
|
+
- The database file is created at `prisma/dev.db`.
|
|
48
49
|
|
|
49
|
-
##
|
|
50
|
+
## Notes
|
|
50
51
|
|
|
51
|
-
`npm run setup`
|
|
52
|
+
- `npm run setup` does not install Playwright browsers automatically. Install them only when you need browser-based test execution.
|
|
53
|
+
- `npm run dev` is still available for development workflows, but `npm run start` is the primary path for day-to-day local usage.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# AUTO-GENERATED FILE - DO NOT EDIT MANUALLY
|
|
2
|
+
# This file is automatically generated from Test Suite data.
|
|
3
|
+
# Any manual changes will be overwritten when the Test Suite is updated.
|
|
4
|
+
# To modify this feature, update the corresponding Test Suite in the application.
|
|
5
|
+
|
|
6
|
+
Feature: login
|
|
7
|
+
|
|
8
|
+
@tc_7d56316baeced87a
|
|
9
|
+
Scenario: [Login] Verify user is able to login using valid credentials
|
|
10
|
+
Given the user navigates to the "https://demo-test-site-beta.vercel.app" url
|
|
11
|
+
When the user fills in the "email" input field with value "demo@example.com"
|
|
12
|
+
And the user fills in the "password" input field with value "test1234"
|
|
13
|
+
And the user clicks on the "submit" element
|
|
14
|
+
And the user waits for the route "/home" to be loaded
|
|
15
|
+
Then the element "home title" should true contain the text "Welcome to Home Page"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
+
import { When, Then, CustomWorld, expect, SelectorName, resolveLocator, getEnvironment, generateRandomData, RandomDataType } from '../../../packages/cucumber-runtime/src/index.js'
|
|
1
2
|
/**
|
|
2
3
|
* @name click
|
|
3
4
|
* @description Template step for handling element click
|
|
4
5
|
* @type ACTION
|
|
5
6
|
*/
|
|
6
|
-
import { When } from '@cucumber/cucumber'
|
|
7
|
-
import { CustomWorld } from '../../config/executor/world.js'
|
|
8
|
-
import { SelectorName } from '@/types/locator/locator.type'
|
|
9
|
-
import { resolveLocator } from '../../utils/locator.util.js'
|
|
10
7
|
|
|
11
8
|
// This file is generated automatically. Add template steps to this group to generate content.
|
|
12
9
|
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
+
import { When, Then, CustomWorld, expect, SelectorName, resolveLocator, getEnvironment, generateRandomData, RandomDataType } from '../../../packages/cucumber-runtime/src/index.js'
|
|
1
2
|
/**
|
|
2
3
|
* @name hover
|
|
3
4
|
* @description Template steps that handles hover actions
|
|
4
5
|
* @type ACTION
|
|
5
6
|
*/
|
|
6
|
-
import { When } from '@cucumber/cucumber';
|
|
7
|
-
import { CustomWorld } from '../../config/executor/world.js';
|
|
8
|
-
import { SelectorName } from '../../../types/locator/locator.type';
|
|
9
|
-
import { resolveLocator } from '../../utils/locator.util.js';
|
|
10
7
|
|
|
11
8
|
// This file is generated automatically. Add template steps to this group to generate content.
|
|
12
9
|
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
+
import { When, Then, CustomWorld, expect, SelectorName, resolveLocator, getEnvironment, generateRandomData, RandomDataType } from '../../../packages/cucumber-runtime/src/index.js'
|
|
1
2
|
/**
|
|
2
3
|
* @name input
|
|
3
4
|
* @description Template steps that deal with inputs
|
|
4
5
|
* @type ACTION
|
|
5
6
|
*/
|
|
6
|
-
import { When } from '@cucumber/cucumber';
|
|
7
|
-
import { CustomWorld } from '../../config/executor/world.js';
|
|
8
|
-
import { SelectorName } from '@/types/locator/locator.type';
|
|
9
|
-
import { resolveLocator } from '../../utils/locator.util.js';
|
|
10
7
|
|
|
11
8
|
// This file is generated automatically. Add template steps to this group to generate content.
|
|
12
9
|
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
+
import { When, Then, CustomWorld, expect, SelectorName, resolveLocator, getEnvironment, generateRandomData, RandomDataType } from '../../../packages/cucumber-runtime/src/index.js'
|
|
1
2
|
/**
|
|
2
3
|
* @name navigation
|
|
3
4
|
* @description Template steps that deals with browser navigation
|
|
4
5
|
* @type ACTION
|
|
5
6
|
*/
|
|
6
|
-
import { When } from '@cucumber/cucumber'
|
|
7
|
-
import { CustomWorld } from '../../config/executor/world.js'
|
|
8
|
-
import { getEnvironment } from '../../utils/environment.util.js'
|
|
9
7
|
|
|
10
8
|
// This file is generated automatically. Add template steps to this group to generate content.
|
|
11
9
|
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
+
import { When, Then, CustomWorld, expect, SelectorName, resolveLocator, getEnvironment, generateRandomData, RandomDataType } from '../../../packages/cucumber-runtime/src/index.js'
|
|
1
2
|
/**
|
|
2
3
|
* @name random data
|
|
3
4
|
* @description Template steps that handles random data generation
|
|
4
5
|
* @type ACTION
|
|
5
6
|
*/
|
|
6
|
-
import { When } from '@cucumber/cucumber';
|
|
7
|
-
import { CustomWorld } from '../../config/executor/world.js';
|
|
8
|
-
import { generateRandomData, RandomDataType } from '../../utils/random-data.util.js';
|
|
9
7
|
|
|
10
8
|
// This file is generated automatically. Add template steps to this group to generate content.
|
|
11
9
|
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
+
import { When, Then, CustomWorld, expect, SelectorName, resolveLocator, getEnvironment, generateRandomData, RandomDataType } from '../../../packages/cucumber-runtime/src/index.js'
|
|
1
2
|
/**
|
|
2
3
|
* @name store
|
|
3
4
|
* @description Template steps that handle data storage
|
|
4
5
|
* @type ACTION
|
|
5
6
|
*/
|
|
6
|
-
import { When } from '@cucumber/cucumber';
|
|
7
|
-
import { CustomWorld } from '../../config/executor/world.js';
|
|
8
|
-
import { SelectorName } from '@/types/locator/locator.type';
|
|
9
|
-
import { resolveLocator } from '../../utils/locator.util.js';
|
|
10
7
|
|
|
11
8
|
// This file is generated automatically. Add template steps to this group to generate content.
|
|
12
9
|
|