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,58 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import { copyTemplate } from './copy-template.js';
|
|
4
|
+
import { getConfig } from './config.js';
|
|
5
|
+
import { downloadRepo } from './download-repo.js';
|
|
6
|
+
import { patchPackageJsonScripts, runSetup } from './install.js';
|
|
7
|
+
const defaultDependencies = {
|
|
8
|
+
copyTemplate,
|
|
9
|
+
downloadRepo,
|
|
10
|
+
getConfig,
|
|
11
|
+
patchPackageJsonScripts,
|
|
12
|
+
removeDirectory: fs.remove,
|
|
13
|
+
runSetup,
|
|
14
|
+
};
|
|
15
|
+
async function copyBundledTemplate(directory, packageManager, dependencies, logger) {
|
|
16
|
+
logger.info(' Copying bundled template files...');
|
|
17
|
+
await dependencies.copyTemplate(directory, undefined, undefined, packageManager);
|
|
18
|
+
logger.info(' Template files copied.\n');
|
|
19
|
+
}
|
|
20
|
+
async function copyRemoteTemplate(directory, packageManager, config, dependencies, logger) {
|
|
21
|
+
let cleanupDir = null;
|
|
22
|
+
try {
|
|
23
|
+
logger.info(` Downloading template from ${config.repoBase} ...`);
|
|
24
|
+
const download = await dependencies.downloadRepo(config.repoBase, config.branch, config.templateSubpath);
|
|
25
|
+
cleanupDir = download.cleanupDir;
|
|
26
|
+
logger.info(' Copying template files...');
|
|
27
|
+
await dependencies.copyTemplate(directory, undefined, path.join(download.repoRoot, config.templateSubpath), packageManager);
|
|
28
|
+
logger.info(' Template files copied.\n');
|
|
29
|
+
}
|
|
30
|
+
finally {
|
|
31
|
+
if (cleanupDir) {
|
|
32
|
+
await dependencies.removeDirectory(cleanupDir).catch(() => { });
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export async function createProject(answers, dependencies = defaultDependencies, logger = { info: message => console.log(message) }) {
|
|
37
|
+
const config = dependencies.getConfig();
|
|
38
|
+
const { directory, packageManager, runInstall, playwrightBrowsers } = answers;
|
|
39
|
+
logger.info('\n Validating target directory...');
|
|
40
|
+
logger.info(` Creating project at: ${directory}\n`);
|
|
41
|
+
if (config.useBundled) {
|
|
42
|
+
await copyBundledTemplate(directory, packageManager, dependencies, logger);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
await copyRemoteTemplate(directory, packageManager, config, dependencies, logger);
|
|
46
|
+
}
|
|
47
|
+
await dependencies.patchPackageJsonScripts(directory, packageManager);
|
|
48
|
+
if (runInstall) {
|
|
49
|
+
logger.info(' Running setup (dependencies, env, production build)...');
|
|
50
|
+
await dependencies.runSetup(directory, packageManager, playwrightBrowsers);
|
|
51
|
+
logger.info(' Setup complete.\n');
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
config,
|
|
55
|
+
targetDirectory: directory,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=create-project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-project.js","sourceRoot":"","sources":["../src/create-project.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAe,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAqBhE,MAAM,mBAAmB,GAA8B;IACrD,YAAY;IACZ,YAAY;IACZ,SAAS;IACT,uBAAuB;IACvB,eAAe,EAAE,EAAE,CAAC,MAAM;IAC1B,QAAQ;CACT,CAAA;AAED,KAAK,UAAU,mBAAmB,CAChC,SAAiB,EACjB,cAA+C,EAC/C,YAAuC,EACvC,MAA2B;IAE3B,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAA;IAClD,MAAM,YAAY,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAA;IAChF,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;AAC3C,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,SAAiB,EACjB,cAA+C,EAC/C,MAAc,EACd,YAAuC,EACvC,MAA2B;IAE3B,IAAI,UAAU,GAAkB,IAAI,CAAA;IAEpC,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,+BAA+B,MAAM,CAAC,QAAQ,MAAM,CAAC,CAAA;QACjE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACxG,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAA;QAEhC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;QAC1C,MAAM,YAAY,CAAC,YAAY,CAC7B,SAAS,EACT,SAAS,EACT,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,eAAe,CAAC,EACpD,cAAc,CACf,CAAA;QACD,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;IAC3C,CAAC;YAAS,CAAC;QACT,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,YAAY,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAChE,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAsB,EACtB,eAA0C,mBAAmB,EAC7D,SAA8B,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;IAEvE,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,CAAA;IACvC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAA;IAE7E,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;IACjD,MAAM,CAAC,IAAI,CAAC,0BAA0B,SAAS,IAAI,CAAC,CAAA;IAEpD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,mBAAmB,CAAC,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;IAC5E,CAAC;SAAM,CAAC;QACN,MAAM,kBAAkB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;IACnF,CAAC;IAED,MAAM,YAAY,CAAC,uBAAuB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IAErE,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;QACvE,MAAM,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAA;QAC1E,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACpC,CAAC;IAED,OAAO;QACL,MAAM;QACN,eAAe,EAAE,SAAS;KAC3B,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-project.test.d.ts","sourceRoot":"","sources":["../src/create-project.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { createProject } from './create-project.js';
|
|
3
|
+
function createDependencies(overrides = {}) {
|
|
4
|
+
return {
|
|
5
|
+
copyTemplate: vi.fn().mockResolvedValue(undefined),
|
|
6
|
+
downloadRepo: vi.fn().mockResolvedValue({
|
|
7
|
+
repoRoot: '/tmp/remote-repo',
|
|
8
|
+
cleanupDir: '/tmp/remote-checkout',
|
|
9
|
+
}),
|
|
10
|
+
getConfig: vi.fn().mockReturnValue({
|
|
11
|
+
repoBase: 'https://github.com/jamil2018/appraisejs-core',
|
|
12
|
+
branch: 'main',
|
|
13
|
+
templateSubpath: 'templates/default',
|
|
14
|
+
useBundled: true,
|
|
15
|
+
}),
|
|
16
|
+
patchPackageJsonScripts: vi.fn().mockResolvedValue(undefined),
|
|
17
|
+
removeDirectory: vi.fn().mockResolvedValue(undefined),
|
|
18
|
+
runSetup: vi.fn().mockResolvedValue(undefined),
|
|
19
|
+
...overrides,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function createLogger() {
|
|
23
|
+
const messages = [];
|
|
24
|
+
return {
|
|
25
|
+
logger: {
|
|
26
|
+
info(message) {
|
|
27
|
+
messages.push(message);
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
messages,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const ANSWERS = {
|
|
34
|
+
directory: '/tmp/my-appraise-app',
|
|
35
|
+
packageManager: 'pnpm',
|
|
36
|
+
runInstall: true,
|
|
37
|
+
playwrightBrowsers: ['chromium'],
|
|
38
|
+
};
|
|
39
|
+
describe('createProject', () => {
|
|
40
|
+
it('uses the bundled template path by default', async () => {
|
|
41
|
+
const dependencies = createDependencies();
|
|
42
|
+
const { logger, messages } = createLogger();
|
|
43
|
+
const result = await createProject(ANSWERS, dependencies, logger);
|
|
44
|
+
expect(dependencies.copyTemplate).toHaveBeenCalledWith(ANSWERS.directory, undefined, undefined, ANSWERS.packageManager);
|
|
45
|
+
expect(dependencies.downloadRepo).not.toHaveBeenCalled();
|
|
46
|
+
expect(dependencies.patchPackageJsonScripts).toHaveBeenCalledWith(ANSWERS.directory, ANSWERS.packageManager);
|
|
47
|
+
expect(dependencies.runSetup).toHaveBeenCalledWith(ANSWERS.directory, ANSWERS.packageManager, ANSWERS.playwrightBrowsers);
|
|
48
|
+
expect(result.targetDirectory).toBe(ANSWERS.directory);
|
|
49
|
+
expect(messages).toContain(' Copying bundled template files...');
|
|
50
|
+
});
|
|
51
|
+
it('downloads and cleans up the remote template when overrides disable bundled mode', async () => {
|
|
52
|
+
const dependencies = createDependencies({
|
|
53
|
+
getConfig: vi.fn().mockReturnValue({
|
|
54
|
+
repoBase: 'https://example.com/custom',
|
|
55
|
+
branch: 'develop',
|
|
56
|
+
templateSubpath: 'templates/custom',
|
|
57
|
+
useBundled: false,
|
|
58
|
+
}),
|
|
59
|
+
});
|
|
60
|
+
await createProject({ ...ANSWERS, runInstall: false }, dependencies);
|
|
61
|
+
expect(dependencies.downloadRepo).toHaveBeenCalledWith('https://example.com/custom', 'develop', 'templates/custom');
|
|
62
|
+
expect(dependencies.copyTemplate).toHaveBeenCalledWith(ANSWERS.directory, undefined, '/tmp/remote-repo/templates/custom', ANSWERS.packageManager);
|
|
63
|
+
expect(dependencies.removeDirectory).toHaveBeenCalledWith('/tmp/remote-checkout');
|
|
64
|
+
expect(dependencies.runSetup).not.toHaveBeenCalled();
|
|
65
|
+
});
|
|
66
|
+
it('still cleans up remote downloads when copying fails', async () => {
|
|
67
|
+
const dependencies = createDependencies({
|
|
68
|
+
getConfig: vi.fn().mockReturnValue({
|
|
69
|
+
repoBase: 'https://example.com/custom',
|
|
70
|
+
branch: 'develop',
|
|
71
|
+
templateSubpath: 'templates/custom',
|
|
72
|
+
useBundled: false,
|
|
73
|
+
}),
|
|
74
|
+
copyTemplate: vi.fn().mockRejectedValue(new Error('copy failed')),
|
|
75
|
+
});
|
|
76
|
+
await expect(createProject({ ...ANSWERS, runInstall: false }, dependencies)).rejects.toThrow('copy failed');
|
|
77
|
+
expect(dependencies.removeDirectory).toHaveBeenCalledWith('/tmp/remote-checkout');
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=create-project.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-project.test.js","sourceRoot":"","sources":["../src/create-project.test.ts"],"names":[],"mappings":"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"}
|
package/dist/install.d.ts
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
import type { PackageManager } from './prompts.js';
|
|
1
|
+
import type { PackageManager, PlaywrightBrowser } from './prompts.js';
|
|
2
2
|
/** Used for "next steps" when user skips running setup (setup includes install). */
|
|
3
3
|
export declare function getInstallCommand(pm: PackageManager): {
|
|
4
4
|
command: string;
|
|
5
5
|
args: string[];
|
|
6
6
|
};
|
|
7
|
+
export declare function getPlaywrightInstallCommand(pm: PackageManager, browsers: PlaywrightBrowser[]): {
|
|
8
|
+
command: string;
|
|
9
|
+
args: string[];
|
|
10
|
+
};
|
|
7
11
|
/**
|
|
8
12
|
* Rewrite the project's package.json scripts to use the user's package manager
|
|
9
13
|
* instead of hardcoded npm, so that `setup` and related scripts use the chosen PM.
|
|
10
14
|
*/
|
|
11
15
|
export declare function patchPackageJsonScripts(targetDir: string, pm: PackageManager): Promise<void>;
|
|
12
16
|
/**
|
|
13
|
-
* Run the project's `setup` script (install-dependencies, setup-env,
|
|
14
|
-
*
|
|
17
|
+
* Run the project's `setup` script (install-dependencies, setup-env, build:local)
|
|
18
|
+
* and optionally install the selected Playwright browsers afterward.
|
|
15
19
|
*/
|
|
16
|
-
export declare function runSetup(targetDir: string, pm: PackageManager): Promise<void>;
|
|
20
|
+
export declare function runSetup(targetDir: string, pm: PackageManager, browsers: PlaywrightBrowser[]): Promise<void>;
|
|
17
21
|
//# sourceMappingURL=install.d.ts.map
|
package/dist/install.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAKtE,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAEzF;AAED,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,iBAAiB,EAAE,GAC5B;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAKrC;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAUlG;AA0BD;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,iBAAiB,EAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CAQf"}
|
package/dist/install.js
CHANGED
|
@@ -1,55 +1,18 @@
|
|
|
1
1
|
import fs from 'fs-extra';
|
|
2
2
|
import spawn from 'cross-spawn';
|
|
3
3
|
import path from 'path';
|
|
4
|
+
import { getPackageManagerProfile, rewriteScriptsForPackageManager } from './package-manager.js';
|
|
4
5
|
const RUN_SETUP_ARGS = ['run', 'setup'];
|
|
6
|
+
const RUN_PLAYWRIGHT_INSTALL_ARGS = ['run', 'install-playwright', '--'];
|
|
5
7
|
/** Used for "next steps" when user skips running setup (setup includes install). */
|
|
6
8
|
export function getInstallCommand(pm) {
|
|
7
|
-
|
|
8
|
-
case 'npm':
|
|
9
|
-
return { command: 'npm', args: [...RUN_SETUP_ARGS] };
|
|
10
|
-
case 'pnpm':
|
|
11
|
-
return { command: 'pnpm', args: [...RUN_SETUP_ARGS] };
|
|
12
|
-
case 'yarn':
|
|
13
|
-
return { command: 'yarn', args: [...RUN_SETUP_ARGS] };
|
|
14
|
-
case 'bun':
|
|
15
|
-
return { command: 'bun', args: [...RUN_SETUP_ARGS] };
|
|
16
|
-
default:
|
|
17
|
-
return { command: 'npm', args: [...RUN_SETUP_ARGS] };
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
/** Install command for each PM (used in package.json install-dependencies script). */
|
|
21
|
-
function getInstallScript(pm) {
|
|
22
|
-
switch (pm) {
|
|
23
|
-
case 'npm':
|
|
24
|
-
return 'npm install --legacy-peer-deps';
|
|
25
|
-
case 'pnpm':
|
|
26
|
-
return 'pnpm install';
|
|
27
|
-
case 'yarn':
|
|
28
|
-
return 'yarn install';
|
|
29
|
-
case 'bun':
|
|
30
|
-
return 'bun install';
|
|
31
|
-
default:
|
|
32
|
-
return 'npm install --legacy-peer-deps';
|
|
33
|
-
}
|
|
9
|
+
return { command: getPackageManagerProfile(pm).command, args: [...RUN_SETUP_ARGS] };
|
|
34
10
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
function getExecPrefix(pm) {
|
|
41
|
-
switch (pm) {
|
|
42
|
-
case 'npm':
|
|
43
|
-
return 'npx ';
|
|
44
|
-
case 'pnpm':
|
|
45
|
-
return 'pnpm exec ';
|
|
46
|
-
case 'yarn':
|
|
47
|
-
return 'yarn run ';
|
|
48
|
-
case 'bun':
|
|
49
|
-
return 'bunx ';
|
|
50
|
-
default:
|
|
51
|
-
return 'npx ';
|
|
52
|
-
}
|
|
11
|
+
export function getPlaywrightInstallCommand(pm, browsers) {
|
|
12
|
+
return {
|
|
13
|
+
command: pm,
|
|
14
|
+
args: [...RUN_PLAYWRIGHT_INSTALL_ARGS, ...browsers],
|
|
15
|
+
};
|
|
53
16
|
}
|
|
54
17
|
/**
|
|
55
18
|
* Rewrite the project's package.json scripts to use the user's package manager
|
|
@@ -62,27 +25,7 @@ export async function patchPackageJsonScripts(targetDir, pm) {
|
|
|
62
25
|
const pkg = (await fs.readJson(pkgPath));
|
|
63
26
|
if (!pkg.scripts)
|
|
64
27
|
return;
|
|
65
|
-
|
|
66
|
-
const runPrefix = getRunPrefix(pm);
|
|
67
|
-
if (pkg.scripts['install-dependencies'] !== undefined) {
|
|
68
|
-
pkg.scripts['install-dependencies'] = installScript;
|
|
69
|
-
}
|
|
70
|
-
if (pkg.scripts['setup'] !== undefined) {
|
|
71
|
-
pkg.scripts['setup'] = pkg.scripts['setup'].replace(/npm run /g, `${runPrefix} `);
|
|
72
|
-
}
|
|
73
|
-
if (pkg.scripts['appraisejs:setup'] !== undefined) {
|
|
74
|
-
pkg.scripts['appraisejs:setup'] = `${runPrefix} setup`;
|
|
75
|
-
}
|
|
76
|
-
if (pkg.scripts['appraisejs:sync'] !== undefined) {
|
|
77
|
-
pkg.scripts['appraisejs:sync'] = `${runPrefix} sync-all`;
|
|
78
|
-
}
|
|
79
|
-
const execPrefix = getExecPrefix(pm);
|
|
80
|
-
for (const key of Object.keys(pkg.scripts)) {
|
|
81
|
-
const value = pkg.scripts[key];
|
|
82
|
-
if (typeof value === 'string' && value.includes('npx ')) {
|
|
83
|
-
pkg.scripts[key] = value.replace(/npx /g, execPrefix);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
28
|
+
pkg.scripts = rewriteScriptsForPackageManager(pkg.scripts, pm);
|
|
86
29
|
await fs.writeJson(pkgPath, pkg, { spaces: 2 });
|
|
87
30
|
}
|
|
88
31
|
function spawnOptions(targetDir) {
|
|
@@ -97,12 +40,7 @@ function spawnOptions(targetDir) {
|
|
|
97
40
|
},
|
|
98
41
|
};
|
|
99
42
|
}
|
|
100
|
-
|
|
101
|
-
* Run the project's `setup` script (install-dependencies, setup-env, migrate-db, install-playwright).
|
|
102
|
-
* The template's setup already runs install, so we only need to run this once.
|
|
103
|
-
*/
|
|
104
|
-
export function runSetup(targetDir, pm) {
|
|
105
|
-
const { command, args } = getInstallCommand(pm);
|
|
43
|
+
function runCommand(targetDir, command, args) {
|
|
106
44
|
return new Promise((resolve, reject) => {
|
|
107
45
|
const child = spawn(command, args, spawnOptions(targetDir));
|
|
108
46
|
child.on('error', reject);
|
|
@@ -114,4 +52,16 @@ export function runSetup(targetDir, pm) {
|
|
|
114
52
|
});
|
|
115
53
|
});
|
|
116
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Run the project's `setup` script (install-dependencies, setup-env, build:local)
|
|
57
|
+
* and optionally install the selected Playwright browsers afterward.
|
|
58
|
+
*/
|
|
59
|
+
export async function runSetup(targetDir, pm, browsers) {
|
|
60
|
+
const { command, args } = getInstallCommand(pm);
|
|
61
|
+
await runCommand(targetDir, command, args);
|
|
62
|
+
if (browsers.length > 0) {
|
|
63
|
+
const playwrightCommand = getPlaywrightInstallCommand(pm, browsers);
|
|
64
|
+
await runCommand(targetDir, playwrightCommand.command, playwrightCommand.args);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
117
67
|
//# sourceMappingURL=install.js.map
|
package/dist/install.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,MAAM,aAAa,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
package/dist/install.test.js
CHANGED
|
@@ -2,15 +2,18 @@ import fs from 'fs-extra';
|
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import os from 'os';
|
|
4
4
|
import { describe, it, expect } from 'vitest';
|
|
5
|
-
import { getInstallCommand, patchPackageJsonScripts } from './install.js';
|
|
5
|
+
import { getInstallCommand, getPlaywrightInstallCommand, patchPackageJsonScripts } from './install.js';
|
|
6
6
|
const TEMPLATE_SCRIPTS = {
|
|
7
7
|
'install-dependencies': 'npm install --legacy-peer-deps',
|
|
8
|
-
setup: 'npm run install-dependencies && npm run setup-env && npm run
|
|
8
|
+
setup: 'npm run install-dependencies && npm run setup-env && npm run build:local',
|
|
9
9
|
'appraisejs:setup': 'npm run setup',
|
|
10
10
|
'appraisejs:sync': 'npm run sync-all',
|
|
11
|
+
'build:local': 'npm run build:cucumber-runtime && next build',
|
|
11
12
|
'setup-env': 'npx tsx scripts/setup-env.ts',
|
|
12
|
-
'migrate-db': 'npx prisma migrate
|
|
13
|
-
'install-playwright': 'npx playwright install
|
|
13
|
+
'migrate-db': 'npx prisma migrate deploy',
|
|
14
|
+
'install-playwright': 'npx playwright install',
|
|
15
|
+
'setup:db': 'npm run setup-env && npm run migrate-db && npm run sync-all',
|
|
16
|
+
'setup:full': 'npm run install-dependencies && npm run setup:db && npm run build:local',
|
|
14
17
|
'sync-all': 'npx tsx scripts/sync-all.ts',
|
|
15
18
|
};
|
|
16
19
|
async function patchAndRead(dir, pm) {
|
|
@@ -24,12 +27,15 @@ describe('patchPackageJsonScripts', () => {
|
|
|
24
27
|
try {
|
|
25
28
|
const pkg = await patchAndRead(dir, 'pnpm');
|
|
26
29
|
expect(pkg.scripts['install-dependencies']).toBe('pnpm install');
|
|
27
|
-
expect(pkg.scripts.setup).toBe('pnpm run install-dependencies && pnpm run setup-env && pnpm run
|
|
30
|
+
expect(pkg.scripts.setup).toBe('pnpm run install-dependencies && pnpm run setup-env && pnpm run build:local');
|
|
28
31
|
expect(pkg.scripts['appraisejs:setup']).toBe('pnpm run setup');
|
|
29
32
|
expect(pkg.scripts['appraisejs:sync']).toBe('pnpm run sync-all');
|
|
33
|
+
expect(pkg.scripts['build:local']).toBe('pnpm run build:cucumber-runtime && next build');
|
|
30
34
|
expect(pkg.scripts['setup-env']).toBe('pnpm exec tsx scripts/setup-env.ts');
|
|
31
|
-
expect(pkg.scripts['migrate-db']).toBe('pnpm exec prisma migrate
|
|
32
|
-
expect(pkg.scripts['install-playwright']).toBe('pnpm exec playwright install
|
|
35
|
+
expect(pkg.scripts['migrate-db']).toBe('pnpm exec prisma migrate deploy');
|
|
36
|
+
expect(pkg.scripts['install-playwright']).toBe('pnpm exec playwright install');
|
|
37
|
+
expect(pkg.scripts['setup:db']).toBe('pnpm run setup-env && pnpm run migrate-db && pnpm run sync-all');
|
|
38
|
+
expect(pkg.scripts['setup:full']).toBe('pnpm run install-dependencies && pnpm run setup:db && pnpm run build:local');
|
|
33
39
|
expect(pkg.scripts['sync-all']).toBe('pnpm exec tsx scripts/sync-all.ts');
|
|
34
40
|
expect(pkg.scripts['setup-env']).not.toContain('npx ');
|
|
35
41
|
}
|
|
@@ -57,10 +63,10 @@ describe('patchPackageJsonScripts', () => {
|
|
|
57
63
|
try {
|
|
58
64
|
const pkg = await patchAndRead(dir, 'yarn');
|
|
59
65
|
expect(pkg.scripts['install-dependencies']).toBe('yarn install');
|
|
60
|
-
expect(pkg.scripts.setup).toBe('yarn run install-dependencies && yarn run setup-env && yarn run
|
|
66
|
+
expect(pkg.scripts.setup).toBe('yarn run install-dependencies && yarn run setup-env && yarn run build:local');
|
|
61
67
|
expect(pkg.scripts['appraisejs:setup']).toBe('yarn run setup');
|
|
62
68
|
expect(pkg.scripts['setup-env']).toBe('yarn run tsx scripts/setup-env.ts');
|
|
63
|
-
expect(pkg.scripts['install-playwright']).toBe('yarn run playwright install
|
|
69
|
+
expect(pkg.scripts['install-playwright']).toBe('yarn run playwright install');
|
|
64
70
|
expect(pkg.scripts['sync-all']).not.toContain('npx ');
|
|
65
71
|
}
|
|
66
72
|
finally {
|
|
@@ -75,7 +81,7 @@ describe('patchPackageJsonScripts', () => {
|
|
|
75
81
|
expect(pkg.scripts.setup).toContain('bun run install-dependencies');
|
|
76
82
|
expect(pkg.scripts['appraisejs:sync']).toBe('bun run sync-all');
|
|
77
83
|
expect(pkg.scripts['setup-env']).toBe('bunx tsx scripts/setup-env.ts');
|
|
78
|
-
expect(pkg.scripts['migrate-db']).toBe('bunx prisma migrate
|
|
84
|
+
expect(pkg.scripts['migrate-db']).toBe('bunx prisma migrate deploy');
|
|
79
85
|
expect(pkg.scripts['sync-all']).toContain('bunx ');
|
|
80
86
|
expect(pkg.scripts['sync-all']).not.toContain('npx ');
|
|
81
87
|
}
|
|
@@ -115,5 +121,15 @@ describe('getInstallCommand', () => {
|
|
|
115
121
|
expect(result).toEqual({ command: 'bun', args: ['run', 'setup'] });
|
|
116
122
|
expect(`${result.command} ${result.args.join(' ')}`).toBe('bun run setup');
|
|
117
123
|
});
|
|
124
|
+
it('returns package-manager specific playwright install commands', () => {
|
|
125
|
+
expect(getPlaywrightInstallCommand('npm', ['chromium', 'firefox'])).toEqual({
|
|
126
|
+
command: 'npm',
|
|
127
|
+
args: ['run', 'install-playwright', '--', 'chromium', 'firefox'],
|
|
128
|
+
});
|
|
129
|
+
expect(getPlaywrightInstallCommand('pnpm', [])).toEqual({
|
|
130
|
+
command: 'pnpm',
|
|
131
|
+
args: ['run', 'install-playwright', '--'],
|
|
132
|
+
});
|
|
133
|
+
});
|
|
118
134
|
});
|
|
119
135
|
//# sourceMappingURL=install.test.js.map
|
package/dist/install.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.test.js","sourceRoot":"","sources":["../src/install.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"install.test.js","sourceRoot":"","sources":["../src/install.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PackageManager } from './prompts.js';
|
|
2
|
+
interface PackageManagerProfile {
|
|
3
|
+
command: PackageManager;
|
|
4
|
+
installDependenciesScript: string;
|
|
5
|
+
runPrefix: string;
|
|
6
|
+
execPrefix: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function getPackageManagerProfile(packageManager: PackageManager): PackageManagerProfile;
|
|
9
|
+
export declare function rewriteScriptsForPackageManager(scripts: Record<string, string>, packageManager: PackageManager): Record<string, string>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=package-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,UAAU,qBAAqB;IAC7B,OAAO,EAAE,cAAc,CAAA;IACvB,yBAAyB,EAAE,MAAM,CAAA;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AA6BD,wBAAgB,wBAAwB,CAAC,cAAc,EAAE,cAAc,GAAG,qBAAqB,CAE9F;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,cAAc,EAAE,cAAc,GAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoBxB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
const PACKAGE_MANAGER_PROFILES = {
|
|
2
|
+
npm: {
|
|
3
|
+
command: 'npm',
|
|
4
|
+
installDependenciesScript: 'npm install --legacy-peer-deps',
|
|
5
|
+
runPrefix: 'npm run',
|
|
6
|
+
execPrefix: 'npx ',
|
|
7
|
+
},
|
|
8
|
+
pnpm: {
|
|
9
|
+
command: 'pnpm',
|
|
10
|
+
installDependenciesScript: 'pnpm install',
|
|
11
|
+
runPrefix: 'pnpm run',
|
|
12
|
+
execPrefix: 'pnpm exec ',
|
|
13
|
+
},
|
|
14
|
+
yarn: {
|
|
15
|
+
command: 'yarn',
|
|
16
|
+
installDependenciesScript: 'yarn install',
|
|
17
|
+
runPrefix: 'yarn run',
|
|
18
|
+
execPrefix: 'yarn run ',
|
|
19
|
+
},
|
|
20
|
+
bun: {
|
|
21
|
+
command: 'bun',
|
|
22
|
+
installDependenciesScript: 'bun install',
|
|
23
|
+
runPrefix: 'bun run',
|
|
24
|
+
execPrefix: 'bunx ',
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
export function getPackageManagerProfile(packageManager) {
|
|
28
|
+
return PACKAGE_MANAGER_PROFILES[packageManager];
|
|
29
|
+
}
|
|
30
|
+
export function rewriteScriptsForPackageManager(scripts, packageManager) {
|
|
31
|
+
const profile = getPackageManagerProfile(packageManager);
|
|
32
|
+
const rewrittenScripts = Object.fromEntries(Object.entries(scripts).map(([key, value]) => [
|
|
33
|
+
key,
|
|
34
|
+
value.replace(/npm run /g, `${profile.runPrefix} `).replace(/npx /g, profile.execPrefix),
|
|
35
|
+
]));
|
|
36
|
+
if (rewrittenScripts['install-dependencies'] !== undefined) {
|
|
37
|
+
rewrittenScripts['install-dependencies'] = profile.installDependenciesScript;
|
|
38
|
+
}
|
|
39
|
+
if (rewrittenScripts['appraisejs:setup'] !== undefined) {
|
|
40
|
+
rewrittenScripts['appraisejs:setup'] = `${profile.runPrefix} setup`;
|
|
41
|
+
}
|
|
42
|
+
if (rewrittenScripts['appraisejs:sync'] !== undefined) {
|
|
43
|
+
rewrittenScripts['appraisejs:sync'] = `${profile.runPrefix} sync-all`;
|
|
44
|
+
}
|
|
45
|
+
return rewrittenScripts;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=package-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"AASA,MAAM,wBAAwB,GAAkD;IAC9E,GAAG,EAAE;QACH,OAAO,EAAE,KAAK;QACd,yBAAyB,EAAE,gCAAgC;QAC3D,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,MAAM;KACnB;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM;QACf,yBAAyB,EAAE,cAAc;QACzC,SAAS,EAAE,UAAU;QACrB,UAAU,EAAE,YAAY;KACzB;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM;QACf,yBAAyB,EAAE,cAAc;QACzC,SAAS,EAAE,UAAU;QACrB,UAAU,EAAE,WAAW;KACxB;IACD,GAAG,EAAE;QACH,OAAO,EAAE,KAAK;QACd,yBAAyB,EAAE,aAAa;QACxC,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,OAAO;KACpB;CACF,CAAA;AAED,MAAM,UAAU,wBAAwB,CAAC,cAA8B;IACrE,OAAO,wBAAwB,CAAC,cAAc,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,OAA+B,EAC/B,cAA8B;IAE9B,MAAM,OAAO,GAAG,wBAAwB,CAAC,cAAc,CAAC,CAAA;IACxD,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CACzC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QAC5C,GAAG;QACH,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;KACzF,CAAC,CACH,CAAA;IAED,IAAI,gBAAgB,CAAC,sBAAsB,CAAC,KAAK,SAAS,EAAE,CAAC;QAC3D,gBAAgB,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,yBAAyB,CAAA;IAC9E,CAAC;IACD,IAAI,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,SAAS,EAAE,CAAC;QACvD,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,GAAG,OAAO,CAAC,SAAS,QAAQ,CAAA;IACrE,CAAC;IACD,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,KAAK,SAAS,EAAE,CAAC;QACtD,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,GAAG,OAAO,CAAC,SAAS,WAAW,CAAA;IACvE,CAAC;IAED,OAAO,gBAAgB,CAAA;AACzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.test.d.ts","sourceRoot":"","sources":["../src/package-manager.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { getPackageManagerProfile, rewriteScriptsForPackageManager } from './package-manager.js';
|
|
3
|
+
const TEMPLATE_SCRIPTS = {
|
|
4
|
+
'install-dependencies': 'npm install --legacy-peer-deps',
|
|
5
|
+
setup: 'npm run install-dependencies && npm run setup-env && npm run build:local',
|
|
6
|
+
'appraisejs:setup': 'npm run setup',
|
|
7
|
+
'appraisejs:sync': 'npm run sync-all',
|
|
8
|
+
'build:local': 'npm run build:cucumber-runtime && next build',
|
|
9
|
+
'setup-env': 'npx tsx scripts/setup-env.ts',
|
|
10
|
+
'migrate-db': 'npx prisma migrate deploy',
|
|
11
|
+
'install-playwright': 'npx playwright install',
|
|
12
|
+
'setup:db': 'npm run setup-env && npm run migrate-db && npm run sync-all',
|
|
13
|
+
'setup:full': 'npm run install-dependencies && npm run setup:db && npm run build:local',
|
|
14
|
+
'sync-all': 'npx tsx scripts/sync-all.ts',
|
|
15
|
+
};
|
|
16
|
+
describe('getPackageManagerProfile', () => {
|
|
17
|
+
it('returns the expected prefixes for pnpm', () => {
|
|
18
|
+
expect(getPackageManagerProfile('pnpm')).toEqual({
|
|
19
|
+
command: 'pnpm',
|
|
20
|
+
installDependenciesScript: 'pnpm install',
|
|
21
|
+
runPrefix: 'pnpm run',
|
|
22
|
+
execPrefix: 'pnpm exec ',
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe('rewriteScriptsForPackageManager', () => {
|
|
27
|
+
it('rewrites scripts for pnpm', () => {
|
|
28
|
+
const scripts = rewriteScriptsForPackageManager(TEMPLATE_SCRIPTS, 'pnpm');
|
|
29
|
+
expect(scripts['install-dependencies']).toBe('pnpm install');
|
|
30
|
+
expect(scripts.setup).toBe('pnpm run install-dependencies && pnpm run setup-env && pnpm run build:local');
|
|
31
|
+
expect(scripts['appraisejs:setup']).toBe('pnpm run setup');
|
|
32
|
+
expect(scripts['appraisejs:sync']).toBe('pnpm run sync-all');
|
|
33
|
+
expect(scripts['setup-env']).toBe('pnpm exec tsx scripts/setup-env.ts');
|
|
34
|
+
expect(scripts['install-playwright']).toBe('pnpm exec playwright install');
|
|
35
|
+
});
|
|
36
|
+
it('rewrites scripts for yarn', () => {
|
|
37
|
+
const scripts = rewriteScriptsForPackageManager(TEMPLATE_SCRIPTS, 'yarn');
|
|
38
|
+
expect(scripts['install-dependencies']).toBe('yarn install');
|
|
39
|
+
expect(scripts.setup).toBe('yarn run install-dependencies && yarn run setup-env && yarn run build:local');
|
|
40
|
+
expect(scripts['setup-env']).toBe('yarn run tsx scripts/setup-env.ts');
|
|
41
|
+
expect(scripts['install-playwright']).toBe('yarn run playwright install');
|
|
42
|
+
});
|
|
43
|
+
it('rewrites scripts for bun', () => {
|
|
44
|
+
const scripts = rewriteScriptsForPackageManager(TEMPLATE_SCRIPTS, 'bun');
|
|
45
|
+
expect(scripts['install-dependencies']).toBe('bun install');
|
|
46
|
+
expect(scripts['setup-env']).toBe('bunx tsx scripts/setup-env.ts');
|
|
47
|
+
expect(scripts['migrate-db']).toBe('bunx prisma migrate deploy');
|
|
48
|
+
expect(scripts['sync-all']).toBe('bunx tsx scripts/sync-all.ts');
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=package-manager.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.test.js","sourceRoot":"","sources":["../src/package-manager.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface TemplateMetadata {
|
|
2
|
+
preparedAt: string;
|
|
3
|
+
inputHash: string;
|
|
4
|
+
databasePath: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const TEMPLATE_PREP_SYNC_SCRIPTS: readonly ["sync-template-step-groups", "sync-template-steps"];
|
|
7
|
+
export declare function collectFiles(dir: string, predicate?: (relativePath: string) => boolean, baseDir?: string): Promise<string[]>;
|
|
8
|
+
export declare function shouldAbortOnFallbackSeed(usedFallbackSeed: boolean, inputHash: string, previousMetadata: TemplateMetadata | null): boolean;
|
|
9
|
+
export declare function verifyPreparedTemplateState(packageTemplateDir: string, collectFilesFn?: typeof collectFiles): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=prepare-template-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare-template-utils.d.ts","sourceRoot":"","sources":["../src/prepare-template-utils.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,eAAO,MAAM,0BAA0B,+DAAgE,CAAA;AAEvG,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,EAC7C,OAAO,SAAM,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CAmBnB;AAED,wBAAgB,yBAAyB,CACvC,gBAAgB,EAAE,OAAO,EACzB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,GACxC,OAAO,CAET;AAED,wBAAsB,2BAA2B,CAC/C,kBAAkB,EAAE,MAAM,EAC1B,cAAc,GAAE,OAAO,YAA2B,GACjD,OAAO,CAAC,IAAI,CAAC,CAoCf"}
|