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.
Files changed (159) hide show
  1. package/README.md +24 -17
  2. package/dist/cli.d.ts +2 -1
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.e2e.test.js +11 -8
  5. package/dist/cli.e2e.test.js.map +1 -1
  6. package/dist/cli.js +32 -48
  7. package/dist/cli.js.map +1 -1
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +5 -1
  10. package/dist/config.js.map +1 -1
  11. package/dist/config.test.js +9 -5
  12. package/dist/config.test.js.map +1 -1
  13. package/dist/copy-template.d.ts +1 -1
  14. package/dist/copy-template.d.ts.map +1 -1
  15. package/dist/copy-template.js +7 -3
  16. package/dist/copy-template.js.map +1 -1
  17. package/dist/copy-template.test.js +14 -9
  18. package/dist/copy-template.test.js.map +1 -1
  19. package/dist/create-project.d.ts +23 -0
  20. package/dist/create-project.d.ts.map +1 -0
  21. package/dist/create-project.js +58 -0
  22. package/dist/create-project.js.map +1 -0
  23. package/dist/create-project.test.d.ts +2 -0
  24. package/dist/create-project.test.d.ts.map +1 -0
  25. package/dist/create-project.test.js +80 -0
  26. package/dist/create-project.test.js.map +1 -0
  27. package/dist/install.d.ts +8 -4
  28. package/dist/install.d.ts.map +1 -1
  29. package/dist/install.js +22 -72
  30. package/dist/install.js.map +1 -1
  31. package/dist/install.test.js +26 -10
  32. package/dist/install.test.js.map +1 -1
  33. package/dist/package-manager.d.ts +11 -0
  34. package/dist/package-manager.d.ts.map +1 -0
  35. package/dist/package-manager.js +47 -0
  36. package/dist/package-manager.js.map +1 -0
  37. package/dist/package-manager.test.d.ts +2 -0
  38. package/dist/package-manager.test.d.ts.map +1 -0
  39. package/dist/package-manager.test.js +51 -0
  40. package/dist/package-manager.test.js.map +1 -0
  41. package/dist/prepare-template-utils.d.ts +10 -0
  42. package/dist/prepare-template-utils.d.ts.map +1 -0
  43. package/dist/prepare-template-utils.js +53 -0
  44. package/dist/prepare-template-utils.js.map +1 -0
  45. package/dist/prepare-template-utils.test.d.ts +2 -0
  46. package/dist/prepare-template-utils.test.d.ts.map +1 -0
  47. package/dist/prepare-template-utils.test.js +67 -0
  48. package/dist/prepare-template-utils.test.js.map +1 -0
  49. package/dist/prompts.d.ts +2 -0
  50. package/dist/prompts.d.ts.map +1 -1
  51. package/dist/prompts.js +11 -3
  52. package/dist/prompts.js.map +1 -1
  53. package/dist/prompts.test.js +17 -7
  54. package/dist/prompts.test.js.map +1 -1
  55. package/dist/template-sync-utils.test.d.ts +2 -0
  56. package/dist/template-sync-utils.test.d.ts.map +1 -0
  57. package/dist/template-sync-utils.test.js +41 -0
  58. package/dist/template-sync-utils.test.js.map +1 -0
  59. package/package.json +3 -2
  60. package/templates/default/.appraise-template-meta.json +5 -0
  61. package/templates/default/.env.example +1 -1
  62. package/templates/default/.vscode/settings.json +10 -3
  63. package/templates/default/README.md +27 -25
  64. package/templates/default/automation/features/base/login.feature +15 -0
  65. package/templates/default/automation/locators/base/home.json +3 -0
  66. package/templates/default/automation/locators/base/login.json +6 -0
  67. package/templates/default/automation/locators/base/test.json +1 -0
  68. package/templates/default/automation/mapping/locator-map.json +14 -0
  69. package/templates/default/{src/tests → automation}/steps/actions/click.step.ts +1 -4
  70. package/templates/default/{src/tests → automation}/steps/actions/hover.step.ts +1 -4
  71. package/templates/default/{src/tests → automation}/steps/actions/input.step.ts +1 -4
  72. package/templates/default/{src/tests → automation}/steps/actions/navigation.step.ts +1 -3
  73. package/templates/default/{src/tests → automation}/steps/actions/random_data.step.ts +1 -3
  74. package/templates/default/{src/tests → automation}/steps/actions/store.step.ts +1 -4
  75. package/templates/default/automation/steps/actions/wait.step.ts +91 -0
  76. package/templates/default/{src/tests → automation}/steps/validations/active_state_assertion.step.ts +1 -4
  77. package/templates/default/{src/tests → automation}/steps/validations/navigation_assertion.step.ts +1 -2
  78. package/templates/default/{src/tests → automation}/steps/validations/text_assertion.step.ts +1 -4
  79. package/templates/default/{src/tests → automation}/steps/validations/visibility_assertion.step.ts +1 -4
  80. package/templates/default/cucumber.mjs +6 -6
  81. package/templates/default/eslint.config.mjs +5 -4
  82. package/templates/default/package-lock.json +322 -485
  83. package/templates/default/package.json +12 -6
  84. package/templates/default/packages/cucumber-runtime/package.json +13 -0
  85. package/templates/default/packages/cucumber-runtime/src/cache.util.ts +93 -0
  86. package/templates/default/packages/cucumber-runtime/src/cli.ts +68 -0
  87. package/templates/default/packages/cucumber-runtime/src/environment.util.ts +21 -0
  88. package/templates/default/packages/cucumber-runtime/src/executor.ts +32 -0
  89. package/templates/default/{src/tests/hooks → packages/cucumber-runtime/src}/hooks.ts +17 -32
  90. package/templates/default/packages/cucumber-runtime/src/index.ts +17 -0
  91. package/templates/default/{src/tests/utils → packages/cucumber-runtime/src}/locator.util.ts +50 -64
  92. package/templates/default/packages/cucumber-runtime/src/parameter-types.ts +7 -0
  93. package/templates/default/packages/cucumber-runtime/src/paths.ts +33 -0
  94. package/templates/default/packages/cucumber-runtime/src/random-data.util.ts +35 -0
  95. package/templates/default/packages/cucumber-runtime/src/types.ts +13 -0
  96. package/templates/default/{src/tests/config/executor → packages/cucumber-runtime/src}/world.ts +4 -1
  97. package/templates/default/packages/cucumber-runtime/tsconfig.json +11 -0
  98. package/templates/default/scripts/setup-env.ts +4 -4
  99. package/templates/default/scripts/sync-appraise-base-template.ts +124 -105
  100. package/templates/default/scripts/sync-environments.ts +8 -5
  101. package/templates/default/scripts/sync-locator-groups.ts +7 -10
  102. package/templates/default/scripts/sync-locators.ts +5 -9
  103. package/templates/default/scripts/sync-modules.ts +9 -17
  104. package/templates/default/scripts/sync-tags.ts +2 -2
  105. package/templates/default/scripts/sync-template-step-groups.ts +16 -6
  106. package/templates/default/scripts/sync-template-steps.ts +16 -5
  107. package/templates/default/scripts/sync-test-cases.ts +6 -3
  108. package/templates/default/scripts/sync-test-suites.ts +7 -4
  109. package/templates/default/src/actions/environments/environment-actions.ts +6 -23
  110. package/templates/default/src/actions/locator/locator-actions.ts +36 -93
  111. package/templates/default/src/actions/locator-groups/locator-group-actions.ts +24 -78
  112. package/templates/default/src/actions/modules/module-actions.ts +4 -2
  113. package/templates/default/src/actions/tags/tag-actions.ts +4 -1
  114. package/templates/default/src/actions/template-step/template-step-actions.ts +10 -101
  115. package/templates/default/src/actions/template-step-group/template-step-group-actions.ts +31 -130
  116. package/templates/default/src/actions/test-case/test-case-actions.ts +31 -94
  117. package/templates/default/src/actions/test-run/test-run-actions.ts +11 -13
  118. package/templates/default/src/actions/test-suite/test-suite-actions.ts +29 -82
  119. package/templates/default/src/app/(base)/locator-groups/page.tsx +1 -3
  120. package/templates/default/src/app/(base)/reports/page.tsx +1 -1
  121. package/templates/default/src/app/(base)/reports/test-cases/page.tsx +2 -2
  122. package/templates/default/src/app/(base)/reports/test-cases/test-cases-metric-table-columns.tsx +1 -1
  123. package/templates/default/src/app/(base)/tags/page.tsx +2 -2
  124. package/templates/default/src/app/(base)/template-steps/page.tsx +1 -2
  125. package/templates/default/src/app/(base)/test-runs/page.tsx +2 -2
  126. package/templates/default/src/app/api/test-runs/[runId]/logs/route.ts +2 -1
  127. package/templates/default/src/app/api/test-runs/[runId]/trace/[testCaseId]/route.ts +2 -1
  128. package/templates/default/src/app/page.tsx +4 -5
  129. package/templates/default/src/components/diagram/dynamic-parameters.tsx +76 -40
  130. package/templates/default/src/components/diagram/options-header-node.tsx +1 -1
  131. package/templates/default/src/components/ui/data-table.tsx +33 -39
  132. package/templates/default/src/lib/automation/paths.ts +181 -0
  133. package/templates/default/src/lib/automation/projection-service.ts +230 -0
  134. package/templates/default/src/lib/environment-file-utils.ts +14 -51
  135. package/templates/default/src/lib/executor/local-executor-adapter.ts +101 -0
  136. package/templates/default/src/lib/executor/types.ts +24 -0
  137. package/templates/default/src/lib/feature-file-generator.ts +22 -112
  138. package/templates/default/src/lib/locator-group-file-utils.ts +57 -120
  139. package/templates/default/src/lib/process/task-spawner.ts +236 -0
  140. package/templates/default/src/lib/template-sync-utils.d.ts +7 -0
  141. package/templates/default/src/lib/template-sync-utils.d.ts.map +1 -0
  142. package/templates/default/src/lib/template-sync-utils.js +47 -0
  143. package/templates/default/src/lib/template-sync-utils.js.map +1 -0
  144. package/templates/default/src/lib/template-sync-utils.ts +63 -0
  145. package/templates/default/src/lib/test-run/process-manager.ts +9 -87
  146. package/templates/default/src/lib/test-run/test-run-executor.ts +7 -136
  147. package/templates/default/src/lib/test-run/winston-logger.ts +6 -35
  148. package/templates/default/src/lib/utils/template-step-file-generator.ts +22 -85
  149. package/templates/default/src/lib/utils/template-step-file-manager-intelligent.ts +7 -22
  150. package/templates/default/public/favicon.ico +0 -0
  151. package/templates/default/src/tests/executor.ts +0 -80
  152. package/templates/default/src/tests/mapping/locator-map.json +0 -1
  153. package/templates/default/src/tests/steps/actions/wait.step.ts +0 -107
  154. package/templates/default/src/tests/support/parameter-types.ts +0 -12
  155. package/templates/default/src/tests/utils/cache.util.ts +0 -260
  156. package/templates/default/src/tests/utils/cli.util.ts +0 -177
  157. package/templates/default/src/tests/utils/environment.util.ts +0 -65
  158. package/templates/default/src/tests/utils/random-data.util.ts +0 -45
  159. 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":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=create-project.test.d.ts.map
@@ -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, migrate-db, install-playwright).
14
- * The template's setup already runs install, so we only need to run this once.
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
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAInD,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAazF;AAuCD;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAgClG;AAeD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAU7E"}
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
- switch (pm) {
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
- /** "pm run" prefix for script invocations (e.g. "pnpm run"). */
36
- function getRunPrefix(pm) {
37
- return `${pm} run`;
38
- }
39
- /** Exec prefix for running binaries (replaces "npx " in script bodies). */
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
- const installScript = getInstallScript(pm);
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
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
@@ -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 migrate-db && npm run install-playwright',
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 dev',
13
- 'install-playwright': 'npx playwright install && npx playwright install-deps',
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 migrate-db && pnpm run install-playwright');
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 dev');
32
- expect(pkg.scripts['install-playwright']).toBe('pnpm exec playwright install && pnpm exec playwright install-deps');
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 migrate-db && yarn run install-playwright');
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 && yarn run playwright install-deps');
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 dev');
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
@@ -1 +1 @@
1
- {"version":3,"file":"install.test.js","sourceRoot":"","sources":["../src/install.test.ts"],"names":[],"mappings":"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"}
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=package-manager.test.d.ts.map
@@ -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"}