@pwtap/create 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,84 @@
1
+ # @pwtap/create
2
+
3
+ Scaffold a **Playwright Test Automation Platform** project — an editable UI + API testing core with opt-in, separately-published plugins.
4
+
5
+ [![npm](https://img.shields.io/npm/v/@pwtap/create)](https://www.npmjs.com/package/@pwtap/create)
6
+ [![license](https://img.shields.io/npm/l/@pwtap/create)](https://github.com/caslanqa/test-automation-platform/blob/main/LICENSE)
7
+ [![node](https://img.shields.io/node/v/@pwtap/create)](https://nodejs.org)
8
+
9
+ > **This is a scaffolder (`create-*`), not a library.** The `npm i …` box npm shows at the top of this page is auto-generated — **don't use it.** Create a ready-to-run project with `npm init` / `npm create`:
10
+
11
+ ```bash
12
+ npm init @pwtap@latest my-tests
13
+ ```
14
+
15
+ ## What you get
16
+
17
+ The core is **copied into your project as editable source** (not imported from `node_modules`):
18
+
19
+ - **UI testing** — Chromium + Page Object Model (`BasePage`, `LoginPage`).
20
+ - **API testing** — layered `ApiClient` → service → test in a browser-free `api` project (Petstore v3 example).
21
+ - **Lazy session auth** — named sessions logged in once and cached per worker; opt in per test or per suite.
22
+ - **One fixtures barrel** (`@fixtures`) composed with `mergeTests`/`mergeExpects` — plugins merge into it.
23
+ - **Tooling out of the box** — ESLint, Prettier, husky + lint-staged, commitlint.
24
+
25
+ ## After scaffolding
26
+
27
+ ```bash
28
+ cd my-tests
29
+ cp env/environments.example.json env/environments.json # BASE_URL (UI) + API_BASE_URL (API)
30
+ cp testData/users.example.json testData/users.json # named login sessions (optional)
31
+ npm test
32
+ ```
33
+
34
+ ## Auth — per suite or per test
35
+
36
+ ```ts
37
+ import { test, expect } from '@fixtures';
38
+
39
+ test.use({ session: 'admin' }); // whole file / describe
40
+ test('dashboard', async ({ page }) => {
41
+ /* signed in as admin */
42
+ });
43
+
44
+ test.as('customer')('checkout', async ({ page }) => {
45
+ /* just this test */
46
+ });
47
+ test.as('admin').skip('wip', async () => {}); // .skip/.only/.fixme/.fail supported
48
+ ```
49
+
50
+ ## Plugins (opt-in)
51
+
52
+ Add or remove engines any time — real npm packages, wired via a typed manifest:
53
+
54
+ ```bash
55
+ npx create-pwtap add ai-judge # installs @pwtap/plugin-ai-judge + wires expect / env / example
56
+ npx create-pwtap remove ai-judge
57
+ ```
58
+
59
+ | Plugin | Package | Status |
60
+ | ---------------- | ------------------------ | -------------- |
61
+ | AI Judge | `@pwtap/plugin-ai-judge` | ✅ stable |
62
+ | Maestro (mobile) | `@pwtap/plugin-maestro` | 🚧 coming soon |
63
+ | Appium (mobile) | `@pwtap/plugin-appium` | 🚧 coming soon |
64
+
65
+ You can also preselect at scaffold time: `npm init @pwtap@latest my-tests --ai-judge`.
66
+
67
+ ## CLI reference
68
+
69
+ ```
70
+ npm init @pwtap@latest [dir] [flags] # scaffold (dir defaults to ".")
71
+ npx create-pwtap add <plugin...> # add plugins to an existing project
72
+ npx create-pwtap remove <plugin...> # remove plugins
73
+ ```
74
+
75
+ Flags: `-y` / `--yes` (accept defaults, skip the menu), `--no-install` (skip `npm install`), `--no-browsers` (skip the Playwright browser download), `--ai-judge` (preselect a plugin).
76
+
77
+ ## Requirements
78
+
79
+ - **Node.js ≥ 20.19**
80
+ - macOS-first; other OSes are additive (mobile/desktop engines are macOS today).
81
+
82
+ ## License
83
+
84
+ MIT
@@ -1 +1 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,oGAAoG;AACpG,wBAAsB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKvE"}
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,oGAAoG;AACpG,wBAAsB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKvE"}
@@ -1,9 +1,22 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
1
3
  import { addPlugins } from '../plugin-apply.js';
2
4
  /** `create-pwtap add <plugin…>` — install and wire one or more plugins into an existing project. */
3
5
  export async function addCommand(opts) {
4
6
  if (opts.pluginIds.length === 0) {
5
7
  throw new Error('add: name at least one plugin, e.g. `npx create-pwtap add maestro`');
6
8
  }
7
- await addPlugins(opts);
9
+ await addPlugins({ ...opts, testsDir: readTestsDir(opts.clientDir) });
10
+ }
11
+ /** Read the project's tests folder recorded at scaffold time (`pwtap.testsDir`); defaults to 'tests'. */
12
+ function readTestsDir(clientDir) {
13
+ try {
14
+ const pkg = JSON.parse(fs.readFileSync(path.join(clientDir, 'package.json'), 'utf8'));
15
+ const dir = pkg.pwtap?.testsDir;
16
+ return typeof dir === 'string' && dir.length > 0 ? dir : 'tests';
17
+ }
18
+ catch {
19
+ return 'tests';
20
+ }
8
21
  }
9
22
  //# sourceMappingURL=add.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQhD,oGAAoG;AACpG,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAuB;IACtD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQhD,oGAAoG;AACpG,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAuB;IACtD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,yGAAyG;AACzG,SAAS,YAAY,CAAC,SAAiB;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAEnF,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC;QAChC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC"}
@@ -3,6 +3,8 @@ export interface CreateOptions {
3
3
  yes: boolean;
4
4
  install: boolean;
5
5
  browsers: boolean;
6
+ gha: boolean;
7
+ testsDirDefault: string;
6
8
  selectedPluginIds: string[];
7
9
  templateDir: string;
8
10
  coreManifestPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,+FAA+F;AAC/F,wBAAsB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDtE"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,OAAO,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,+FAA+F;AAC/F,wBAAsB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA4FtE"}
@@ -4,7 +4,7 @@ import { loadCoreManifest } from '../manifest.js';
4
4
  import { addPlugins } from '../plugin-apply.js';
5
5
  import { Prompter } from '../prompts.js';
6
6
  import { KNOWN_PLUGINS } from '../registry.js';
7
- import { copyDir, exists, isEmptyDir, sortObject, writeJson } from '../util/fs.js';
7
+ import { copyDir, ensureDir, exists, isEmptyDir, sortObject, writeJson } from '../util/fs.js';
8
8
  import { log } from '../util/log.js';
9
9
  import { run } from '../util/run.js';
10
10
  /** Scaffold a new core project (UI + API), then optionally install/inject selected plugins. */
@@ -22,41 +22,96 @@ export async function createProject(opts) {
22
22
  fs.renameSync(shippedGitignore, path.join(targetDir, '.gitignore'));
23
23
  fs.rmSync(path.join(targetDir, 'templates'), { recursive: true, force: true });
24
24
  }
25
- // 2. Gather project name + plugin choices.
25
+ // 2. Gather answers mirrors the official `npm init playwright` questions (minus TS/JS: this
26
+ // platform is TypeScript-only). Non-interactive (`-y` or no TTY) takes every default.
26
27
  const prompter = new Prompter(opts.yes);
27
28
  let name;
29
+ let testsDir;
28
30
  let selectedIds;
31
+ let addGha;
32
+ let installBrowsers;
33
+ let installOsDeps;
29
34
  try {
30
35
  name = await prompter.text('Project name', path.basename(targetDir));
36
+ testsDir = sanitizeDir(await prompter.text('Where to put your tests?', opts.testsDirDefault));
31
37
  selectedIds =
32
38
  opts.selectedPluginIds.length > 0
33
39
  ? opts.selectedPluginIds
34
40
  : await prompter.selectPlugins(KNOWN_PLUGINS);
41
+ addGha = await prompter.confirm('Add a GitHub Actions workflow?', opts.gha);
42
+ installBrowsers = await prompter.confirm('Install Playwright browsers?', opts.browsers);
43
+ installOsDeps =
44
+ process.platform === 'linux'
45
+ ? await prompter.confirm('Install Playwright operating system dependencies (requires sudo)?', false)
46
+ : false;
35
47
  }
36
48
  finally {
37
49
  prompter.close();
38
50
  }
39
- // 3. Write the base package.json from the core manifest.
40
- writeBasePackageJson(targetDir, name, coreManifestPath);
41
- // 4. git init + husky hooks so commit hygiene (lint-staged + commitlint) activates on install.
51
+ // 3. Relocate the tests folder if the user renamed it (repoints config + tsconfig + eslint globs).
52
+ if (testsDir !== 'tests') {
53
+ relocateTestsDir(targetDir, testsDir);
54
+ }
55
+ // 4. Write the base package.json from the core manifest (records testsDir so `add` places plugin
56
+ // examples in the right folder later).
57
+ writeBasePackageJson(targetDir, name, coreManifestPath, testsDir);
58
+ // 5. Optional GitHub Actions workflow for the scaffolded project.
59
+ if (addGha) {
60
+ writeGithubWorkflow(targetDir);
61
+ }
62
+ // 6. git init + husky hooks so commit hygiene (lint-staged + commitlint) activates on install.
42
63
  await initGit(targetDir);
43
64
  writeHuskyHooks(targetDir);
44
- // 5. Install core deps, then plugins (install + inject), then browsers.
65
+ // 7. Install core deps, then plugins (install + inject), then browsers / OS dependencies.
45
66
  if (opts.install) {
46
67
  log.step('Installing dependencies');
47
68
  await run('npm', ['install'], { cwd: targetDir });
48
69
  }
49
70
  if (selectedIds.length > 0) {
50
- await addPlugins({ clientDir: targetDir, pluginIds: selectedIds, install: opts.install });
71
+ await addPlugins({
72
+ clientDir: targetDir,
73
+ pluginIds: selectedIds,
74
+ install: opts.install,
75
+ testsDir,
76
+ });
51
77
  }
52
- if (opts.browsers) {
78
+ if (installBrowsers) {
53
79
  const core = loadCoreManifest(coreManifestPath);
54
80
  log.step(`Installing Playwright browsers: ${core.browsers.join(', ')}`);
55
81
  await run('npx', ['playwright', 'install', ...core.browsers], { cwd: targetDir }).catch(err => log.warn(`playwright install skipped: ${err instanceof Error ? err.message : String(err)}`));
56
82
  }
57
- printNextSteps(targetDir, name);
83
+ if (installOsDeps) {
84
+ log.step('Installing Playwright operating system dependencies');
85
+ await run('npx', ['playwright', 'install-deps'], { cwd: targetDir }).catch(err => log.warn(`install-deps skipped: ${err instanceof Error ? err.message : String(err)}`));
86
+ }
87
+ printNextSteps(targetDir, name, testsDir);
88
+ }
89
+ /** Normalize a tests-folder answer to a safe relative dir; empty/invalid falls back to 'tests'. */
90
+ function sanitizeDir(input) {
91
+ const cleaned = input
92
+ .trim()
93
+ .replace(/^[./]+/, '')
94
+ .replace(/\/+$/, '');
95
+ return cleaned === '' || cleaned.includes('..') ? 'tests' : cleaned;
96
+ }
97
+ /** Rename tests/ → <testsDir>/ and repoint the Playwright config, tsconfig alias, and eslint glob. */
98
+ function relocateTestsDir(targetDir, testsDir) {
99
+ const from = path.join(targetDir, 'tests');
100
+ const to = path.join(targetDir, testsDir);
101
+ if (exists(from)) {
102
+ ensureDir(path.dirname(to));
103
+ fs.renameSync(from, to);
104
+ }
105
+ patchFile(path.join(targetDir, 'playwright.config.ts'), s => s.replaceAll('./tests', `./${testsDir}`));
106
+ patchFile(path.join(targetDir, 'tsconfig.json'), s => s.replace('"tests/*"', `"${testsDir}/*"`));
107
+ patchFile(path.join(targetDir, 'eslint.config.js'), s => s.replace("'tests/**/*.ts'", `'${testsDir}/**/*.ts'`));
108
+ }
109
+ function patchFile(file, replacer) {
110
+ if (exists(file)) {
111
+ fs.writeFileSync(file, replacer(fs.readFileSync(file, 'utf8')));
112
+ }
58
113
  }
59
- function writeBasePackageJson(targetDir, name, coreManifestPath) {
114
+ function writeBasePackageJson(targetDir, name, coreManifestPath, testsDir) {
60
115
  const core = loadCoreManifest(coreManifestPath);
61
116
  writeJson(path.join(targetDir, 'package.json'), {
62
117
  name,
@@ -66,8 +121,15 @@ function writeBasePackageJson(targetDir, name, coreManifestPath) {
66
121
  scripts: sortObject(core.scripts),
67
122
  devDependencies: sortObject(core.devDependencies),
68
123
  ...(core.packageJson ?? {}),
124
+ pwtap: { testsDir },
69
125
  });
70
126
  }
127
+ /** Standard Playwright CI — mirrors the workflow `npm init playwright` generates. */
128
+ function writeGithubWorkflow(targetDir) {
129
+ const dir = path.join(targetDir, '.github', 'workflows');
130
+ fs.mkdirSync(dir, { recursive: true });
131
+ fs.writeFileSync(path.join(dir, 'playwright.yml'), GITHUB_WORKFLOW);
132
+ }
71
133
  async function initGit(targetDir) {
72
134
  // git init so husky's `prepare` can wire hooks during npm install (husky needs a .git dir).
73
135
  try {
@@ -97,7 +159,7 @@ function writeHuskyHooks(targetDir) {
97
159
  }
98
160
  }
99
161
  }
100
- function printNextSteps(targetDir, name) {
162
+ function printNextSteps(targetDir, name, testsDir) {
101
163
  const rel = path.relative(process.cwd(), targetDir) || '.';
102
164
  log.done(`Created ${name}`);
103
165
  log.info([
@@ -106,9 +168,36 @@ function printNextSteps(targetDir, name) {
106
168
  ` cd ${rel}`,
107
169
  ' cp env/environments.example.json env/environments.json # set BASE_URL / API_BASE_URL',
108
170
  ' cp testData/users.example.json testData/users.json # add login sessions (optional)',
109
- ' npm test # runs chromium + api',
171
+ ` npm test # chromium + api (in ${testsDir}/)`,
110
172
  '',
111
- 'Add a plugin later: npx create-pwtap add <maestro|appium|...>',
173
+ 'Add a plugin later: npx create-pwtap add <maestro|appium|ai-judge>',
112
174
  ].join('\n'));
113
175
  }
176
+ const GITHUB_WORKFLOW = `name: Playwright Tests
177
+ on:
178
+ push:
179
+ branches: [main, master]
180
+ pull_request:
181
+ jobs:
182
+ test:
183
+ timeout-minutes: 60
184
+ runs-on: ubuntu-latest
185
+ steps:
186
+ - uses: actions/checkout@v4
187
+ - uses: actions/setup-node@v4
188
+ with:
189
+ node-version: 20
190
+ - name: Install dependencies
191
+ run: npm ci
192
+ - name: Install Playwright browsers
193
+ run: npx playwright install --with-deps
194
+ - name: Run tests
195
+ run: npm test
196
+ - uses: actions/upload-artifact@v4
197
+ if: \${{ !cancelled() }}
198
+ with:
199
+ name: playwright-report
200
+ path: playwright-report/
201
+ retention-days: 30
202
+ `;
114
203
  //# sourceMappingURL=create.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -20,6 +20,20 @@ function flagPresent(argv, flag) {
20
20
  const value = process.env[key];
21
21
  return value !== undefined && value !== '' && value !== 'false';
22
22
  }
23
+ /** Value of `--flag=x` / `--flag x`, or npm's `npm_config_<flag>`; undefined when absent. */
24
+ function flagValue(argv, flag) {
25
+ const eq = argv.find(a => a.startsWith(`${flag}=`));
26
+ if (eq !== undefined) {
27
+ return eq.slice(flag.length + 1);
28
+ }
29
+ const i = argv.indexOf(flag);
30
+ if (i !== -1 && argv[i + 1] !== undefined && !argv[i + 1].startsWith('-')) {
31
+ return argv[i + 1];
32
+ }
33
+ const key = `npm_config_${flag.replace(/^--/, '').replace(/-/g, '_')}`;
34
+ const value = process.env[key];
35
+ return value !== undefined && value !== '' && value !== 'false' ? value : undefined;
36
+ }
23
37
  async function main() {
24
38
  const argv = process.argv.slice(2);
25
39
  const positional = argv.filter(a => !a.startsWith('-'));
@@ -27,6 +41,8 @@ async function main() {
27
41
  const yes = flagPresent(argv, '--yes') || argv.includes('-y');
28
42
  const install = !flagPresent(argv, '--no-install');
29
43
  const browsers = !flagPresent(argv, '--no-browsers');
44
+ const gha = flagPresent(argv, '--gha');
45
+ const testsDirDefault = flagValue(argv, '--tests-dir') ?? 'tests';
30
46
  const pluginIdsFromFlags = KNOWN_PLUGINS.filter(p => flagPresent(argv, p.flag)).map(p => p.id);
31
47
  if (command === 'add') {
32
48
  const ids = positional.slice(1).length > 0 ? positional.slice(1) : pluginIdsFromFlags;
@@ -43,6 +59,8 @@ async function main() {
43
59
  yes,
44
60
  install,
45
61
  browsers,
62
+ gha,
63
+ testsDirDefault,
46
64
  selectedPluginIds: pluginIdsFromFlags,
47
65
  templateDir,
48
66
  coreManifestPath,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { PluginManifest } from '../manifest.js';
2
2
  /** Copy a plugin's example tests/flows into the client once — never overwriting existing files. */
3
- export declare function copyExamples(clientDir: string, m: PluginManifest): void;
3
+ export declare function copyExamples(clientDir: string, m: PluginManifest, testsDir?: string): void;
4
4
  /** Copy a plugin's docs into the client (e.g. docs/MAESTRO.md). */
5
5
  export declare function copyDocs(clientDir: string, m: PluginManifest): void;
6
6
  //# sourceMappingURL=assets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/injectors/assets.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA0BrD,mGAAmG;AACnG,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,cAAc,GAAG,IAAI,CAEvE;AAED,mEAAmE;AACnE,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,cAAc,GAAG,IAAI,CAEnE"}
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/injectors/assets.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA0BrD,mGAAmG;AACnG,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,cAAc,EAAE,QAAQ,SAAU,GAAG,IAAI,CAM3F;AAUD,mEAAmE;AACnE,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,cAAc,GAAG,IAAI,CAEnE"}
@@ -25,8 +25,18 @@ function packageRoot(clientDir, pkg) {
25
25
  }
26
26
  }
27
27
  /** Copy a plugin's example tests/flows into the client once — never overwriting existing files. */
28
- export function copyExamples(clientDir, m) {
29
- copyAssets(clientDir, m, m.examples);
28
+ export function copyExamples(clientDir, m, testsDir = 'tests') {
29
+ const examples = testsDir === 'tests'
30
+ ? m.examples
31
+ : m.examples?.map(a => ({ ...a, dest: remapTestsDir(a.dest, testsDir) }));
32
+ copyAssets(clientDir, m, examples);
33
+ }
34
+ /** Rewrite a `tests/...` example destination onto the project's chosen tests folder. */
35
+ function remapTestsDir(dest, testsDir) {
36
+ if (dest === 'tests') {
37
+ return testsDir;
38
+ }
39
+ return dest.startsWith('tests/') ? `${testsDir}${dest.slice('tests'.length)}` : dest;
30
40
  }
31
41
  /** Copy a plugin's docs into the client (e.g. docs/MAESTRO.md). */
32
42
  export function copyDocs(clientDir, m) {
@@ -1 +1 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/injectors/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE3D,gGAAgG;AAChG,SAAS,WAAW,CAAC,SAAiB,EAAE,GAAW;IACjD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;QAC/C,oGAAoG;QACpG,kGAAkG;QAClG,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;gBAC3C,OAAO,GAAG,CAAC;YACb,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnB,MAAM;YACR,CAAC;YACD,GAAG,GAAG,MAAM,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,YAAY,CAAC,SAAiB,EAAE,CAAiB;IAC/D,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,QAAQ,CAAC,SAAiB,EAAE,CAAiB;IAC3D,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,UAAU,CACjB,SAAiB,EACjB,CAAiB,EACjB,MAAwD;IAExD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;IACT,CAAC;IACD,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAClC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YAChC,SAAS,CAAC,sDAAsD;QAClE,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/injectors/assets.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,10 @@ export interface AddOptions {
2
2
  clientDir: string;
3
3
  pluginIds: string[];
4
4
  install: boolean;
5
+ /** The project's tests folder (default 'tests') — where plugin example specs are copied. */
6
+ testsDir?: string;
5
7
  }
6
- export declare function addPlugins({ clientDir, pluginIds, install }: AddOptions): Promise<void>;
8
+ export declare function addPlugins({ clientDir, pluginIds, install, testsDir, }: AddOptions): Promise<void>;
7
9
  export interface RemoveOptions {
8
10
  clientDir: string;
9
11
  pluginIds: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-apply.d.ts","sourceRoot":"","sources":["../src/plugin-apply.ts"],"names":[],"mappings":"AAwDA,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,UAAU,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB7F;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAsB,aAAa,CAAC,EAClC,SAAS,EACT,SAAS,EACT,SAAgB,GACjB,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB/B"}
1
+ {"version":3,"file":"plugin-apply.d.ts","sourceRoot":"","sources":["../src/plugin-apply.ts"],"names":[],"mappings":"AAwDA,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,UAAU,CAAC,EAC/B,SAAS,EACT,SAAS,EACT,OAAO,EACP,QAAkB,GACnB,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB5B;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAsB,aAAa,CAAC,EAClC,SAAS,EACT,SAAS,EACT,SAAgB,GACjB,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB/B"}
@@ -14,10 +14,10 @@ function toPackages(pluginIds) {
14
14
  .filter((p) => Boolean(p));
15
15
  }
16
16
  /** Run all injectors for one plugin manifest. Warns (does not throw) when a marker is missing. */
17
- function injectManifest(clientDir, m) {
17
+ function injectManifest(clientDir, m, testsDir) {
18
18
  mergePluginPackageJson(clientDir, m);
19
19
  mergePluginEnv(clientDir, m);
20
- copyExamples(clientDir, m);
20
+ copyExamples(clientDir, m, testsDir);
21
21
  copyDocs(clientDir, m);
22
22
  if (applyFixture(clientDir, m) === false) {
23
23
  log.warn(`fixtures/index.ts is missing a pwtap marker — wire ${m.name} into the barrel manually ` +
@@ -44,7 +44,7 @@ async function runEnsure(clientDir, m) {
44
44
  log.warn(`${m.name} ensure() check skipped: ${err instanceof Error ? err.message : String(err)}`);
45
45
  }
46
46
  }
47
- export async function addPlugins({ clientDir, pluginIds, install }) {
47
+ export async function addPlugins({ clientDir, pluginIds, install, testsDir = 'tests', }) {
48
48
  const packages = toPackages(pluginIds);
49
49
  if (packages.length === 0) {
50
50
  return;
@@ -59,7 +59,7 @@ export async function addPlugins({ clientDir, pluginIds, install }) {
59
59
  log.warn(`Could not load manifest for ${pkg} — is it installed? Skipping.`);
60
60
  continue;
61
61
  }
62
- injectManifest(clientDir, m);
62
+ injectManifest(clientDir, m, testsDir);
63
63
  await runEnsure(clientDir, m);
64
64
  log.done(`Added ${pkg}`);
65
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-apply.js","sourceRoot":"","sources":["../src/plugin-apply.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-apply.js","sourceRoot":"","sources":["../src/plugin-apply.ts"],"names":[],"mappings":"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"}
package/dist/registry.js CHANGED
@@ -6,7 +6,7 @@ export const KNOWN_PLUGINS = [
6
6
  description: 'Mobile testing with Maestro flows (Android + iOS)',
7
7
  flag: '--maestro',
8
8
  defaultSelected: false,
9
- status: 'coming-soon',
9
+ status: 'stable',
10
10
  },
11
11
  {
12
12
  id: 'appium',
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAuBA,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C;QACE,EAAE,EAAE,SAAS;QACb,OAAO,EAAE,uBAAuB;QAChC,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,mDAAmD;QAChE,IAAI,EAAE,WAAW;QACjB,eAAe,EAAE,KAAK;QACtB,MAAM,EAAE,aAAa;KACtB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,OAAO,EAAE,sBAAsB;QAC/B,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,iEAAiE;QAC9E,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,KAAK;QACtB,MAAM,EAAE,aAAa;KACtB;IACD;QACE,EAAE,EAAE,UAAU;QACd,OAAO,EAAE,wBAAwB;QACjC,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,oEAAoE;QACjF,IAAI,EAAE,YAAY;QAClB,eAAe,EAAE,KAAK;QACtB,MAAM,EAAE,QAAQ;KACjB;CACF,CAAC;AAEF,iDAAiD;AACjD,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,KAAK,WAAW,CAAC,CAAC;AACpF,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAuBA,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C;QACE,EAAE,EAAE,SAAS;QACb,OAAO,EAAE,uBAAuB;QAChC,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,mDAAmD;QAChE,IAAI,EAAE,WAAW;QACjB,eAAe,EAAE,KAAK;QACtB,MAAM,EAAE,QAAQ;KACjB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,OAAO,EAAE,sBAAsB;QAC/B,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,iEAAiE;QAC9E,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,KAAK;QACtB,MAAM,EAAE,aAAa;KACtB;IACD;QACE,EAAE,EAAE,UAAU;QACd,OAAO,EAAE,wBAAwB;QACjC,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,oEAAoE;QACjF,IAAI,EAAE,YAAY;QAClB,eAAe,EAAE,KAAK;QACtB,MAAM,EAAE,QAAQ;KACjB;CACF,CAAC;AAEF,iDAAiD;AACjD,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,KAAK,WAAW,CAAC,CAAC;AACpF,CAAC"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@pwtap/create",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Scaffold a Playwright Test Automation Platform project — UI + API core with opt-in plugins (npm init @pwtap)",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "repository": {
8
8
  "type": "git",
9
- "url": "git+https://github.com/caslanqa/playwright-ai-distro.git",
9
+ "url": "git+https://github.com/caslanqa/test-automation-platform.git",
10
10
  "directory": "packages/create"
11
11
  },
12
12
  "engines": {
@@ -7,7 +7,7 @@ import { expect, test } from '@fixtures';
7
7
  * fixtures/auth.ts → ensureSession) which caches `.auth/demoUser.json`; every later test and run
8
8
  * reuses that file — no repeated logins, no setup project.
9
9
  *
10
- * Run: `npx playwright test tests/example/authSession.spec.ts --project=chromium`
10
+ * Run: `npx playwright test tests/ui/authSession.spec.ts --project=chromium`
11
11
  *
12
12
  * NOTE: each session needs its own describe with a single `test.use({ session })` — two `test.use`
13
13
  * calls in one describe do not create two scopes; the last one wins for every test in that describe.
File without changes