@pwtap/create 0.1.0 → 0.3.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,86 @@
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), `--tests-dir <name>` (tests folder), `--gha` (add a GitHub Actions workflow), `--ai-judge` (preselect a plugin).
76
+
77
+ Interactively (no `-y`), `create` first collects **package.json metadata** — name, version, description, author (defaulted from your git identity), keywords, repository URL, license — then the platform questions: tests-folder name, plugins, GitHub Actions workflow, install browsers, and (on Linux) OS dependencies. Press Enter to accept any default.
78
+
79
+ ## Requirements
80
+
81
+ - **Node.js ≥ 20.19**
82
+ - macOS-first; other OSes are additive (mobile/desktop engines are macOS today).
83
+
84
+ ## License
85
+
86
+ 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":"AAYA,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,CAsGtE"}
@@ -1,10 +1,11 @@
1
+ import { execFileSync } from 'node:child_process';
1
2
  import fs from 'node:fs';
2
3
  import path from 'node:path';
3
4
  import { loadCoreManifest } from '../manifest.js';
4
5
  import { addPlugins } from '../plugin-apply.js';
5
6
  import { Prompter } from '../prompts.js';
6
7
  import { KNOWN_PLUGINS } from '../registry.js';
7
- import { copyDir, exists, isEmptyDir, sortObject, writeJson } from '../util/fs.js';
8
+ import { copyDir, ensureDir, exists, isEmptyDir, sortObject, writeJson } from '../util/fs.js';
8
9
  import { log } from '../util/log.js';
9
10
  import { run } from '../util/run.js';
10
11
  /** Scaffold a new core project (UI + API), then optionally install/inject selected plugins. */
@@ -22,51 +23,163 @@ export async function createProject(opts) {
22
23
  fs.renameSync(shippedGitignore, path.join(targetDir, '.gitignore'));
23
24
  fs.rmSync(path.join(targetDir, 'templates'), { recursive: true, force: true });
24
25
  }
25
- // 2. Gather project name + plugin choices.
26
+ // 2. Gather answers package.json metadata (npm-init style) + the `npm init playwright`-style
27
+ // platform questions (minus TS/JS: this platform is TypeScript-only). Non-interactive (`-y` or
28
+ // no TTY) takes every default; Enter accepts a shown default interactively.
26
29
  const prompter = new Prompter(opts.yes);
27
30
  let name;
31
+ let meta;
32
+ let testsDir;
28
33
  let selectedIds;
34
+ let addGha;
35
+ let installBrowsers;
36
+ let installOsDeps;
29
37
  try {
30
38
  name = await prompter.text('Project name', path.basename(targetDir));
39
+ meta = {
40
+ version: await prompter.text('Version', '0.1.0'),
41
+ description: await prompter.text('Description', ''),
42
+ author: await prompter.text('Author', defaultAuthor()),
43
+ keywords: parseKeywords(await prompter.text('Keywords (comma-separated)', '')),
44
+ repository: (await prompter.text('Repository URL', '')).trim(),
45
+ license: await prompter.text('License', 'MIT'),
46
+ };
47
+ testsDir = sanitizeDir(await prompter.text('Where to put your tests?', opts.testsDirDefault));
31
48
  selectedIds =
32
49
  opts.selectedPluginIds.length > 0
33
50
  ? opts.selectedPluginIds
34
51
  : await prompter.selectPlugins(KNOWN_PLUGINS);
52
+ addGha = await prompter.confirm('Add a GitHub Actions workflow?', opts.gha);
53
+ installBrowsers = await prompter.confirm('Install Playwright browsers?', opts.browsers);
54
+ installOsDeps =
55
+ process.platform === 'linux'
56
+ ? await prompter.confirm('Install Playwright operating system dependencies (requires sudo)?', false)
57
+ : false;
35
58
  }
36
59
  finally {
37
60
  prompter.close();
38
61
  }
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.
62
+ // 3. Relocate the tests folder if the user renamed it (repoints config + tsconfig + eslint globs).
63
+ if (testsDir !== 'tests') {
64
+ relocateTestsDir(targetDir, testsDir);
65
+ }
66
+ // 4. Write the base package.json from the core manifest (records testsDir so `add` places plugin
67
+ // examples in the right folder later).
68
+ writeBasePackageJson(targetDir, name, meta, coreManifestPath, testsDir);
69
+ // 5. Optional GitHub Actions workflow for the scaffolded project.
70
+ if (addGha) {
71
+ writeGithubWorkflow(targetDir);
72
+ }
73
+ // 6. git init + husky hooks so commit hygiene (lint-staged + commitlint) activates on install.
42
74
  await initGit(targetDir);
43
75
  writeHuskyHooks(targetDir);
44
- // 5. Install core deps, then plugins (install + inject), then browsers.
76
+ // 7. Install core deps, then plugins (install + inject), then browsers / OS dependencies.
45
77
  if (opts.install) {
46
78
  log.step('Installing dependencies');
47
79
  await run('npm', ['install'], { cwd: targetDir });
48
80
  }
49
81
  if (selectedIds.length > 0) {
50
- await addPlugins({ clientDir: targetDir, pluginIds: selectedIds, install: opts.install });
82
+ await addPlugins({
83
+ clientDir: targetDir,
84
+ pluginIds: selectedIds,
85
+ install: opts.install,
86
+ testsDir,
87
+ });
51
88
  }
52
- if (opts.browsers) {
89
+ if (installBrowsers) {
53
90
  const core = loadCoreManifest(coreManifestPath);
54
91
  log.step(`Installing Playwright browsers: ${core.browsers.join(', ')}`);
55
92
  await run('npx', ['playwright', 'install', ...core.browsers], { cwd: targetDir }).catch(err => log.warn(`playwright install skipped: ${err instanceof Error ? err.message : String(err)}`));
56
93
  }
57
- printNextSteps(targetDir, name);
94
+ if (installOsDeps) {
95
+ log.step('Installing Playwright operating system dependencies');
96
+ await run('npx', ['playwright', 'install-deps'], { cwd: targetDir }).catch(err => log.warn(`install-deps skipped: ${err instanceof Error ? err.message : String(err)}`));
97
+ }
98
+ printNextSteps(targetDir, name, testsDir);
99
+ }
100
+ /** Normalize a tests-folder answer to a safe relative dir; empty/invalid falls back to 'tests'. */
101
+ function sanitizeDir(input) {
102
+ const cleaned = input
103
+ .trim()
104
+ .replace(/^[./]+/, '')
105
+ .replace(/\/+$/, '');
106
+ return cleaned === '' || cleaned.includes('..') ? 'tests' : cleaned;
107
+ }
108
+ /** Rename tests/ → <testsDir>/ and repoint the Playwright config, tsconfig alias, and eslint glob. */
109
+ function relocateTestsDir(targetDir, testsDir) {
110
+ const from = path.join(targetDir, 'tests');
111
+ const to = path.join(targetDir, testsDir);
112
+ if (exists(from)) {
113
+ ensureDir(path.dirname(to));
114
+ fs.renameSync(from, to);
115
+ }
116
+ patchFile(path.join(targetDir, 'playwright.config.ts'), s => s.replaceAll('./tests', `./${testsDir}`));
117
+ patchFile(path.join(targetDir, 'tsconfig.json'), s => s.replace('"tests/*"', `"${testsDir}/*"`));
118
+ patchFile(path.join(targetDir, 'eslint.config.js'), s => s.replace("'tests/**/*.ts'", `'${testsDir}/**/*.ts'`));
119
+ }
120
+ function patchFile(file, replacer) {
121
+ if (exists(file)) {
122
+ fs.writeFileSync(file, replacer(fs.readFileSync(file, 'utf8')));
123
+ }
124
+ }
125
+ /** Split a comma-separated keywords answer into a trimmed, empty-free list. */
126
+ function parseKeywords(input) {
127
+ return input
128
+ .split(',')
129
+ .map(keyword => keyword.trim())
130
+ .filter(Boolean);
131
+ }
132
+ /** A sensible default `author` from the user's git identity (`Name <email>`), or '' if unset. */
133
+ function defaultAuthor() {
134
+ const name = gitConfig('user.name');
135
+ const email = gitConfig('user.email');
136
+ return name ? (email ? `${name} <${email}>` : name) : '';
137
+ }
138
+ /** Read a global git config value, or '' when git isn't available / the key is unset. */
139
+ function gitConfig(key) {
140
+ try {
141
+ return execFileSync('git', ['config', '--get', key], {
142
+ encoding: 'utf8',
143
+ stdio: ['ignore', 'pipe', 'ignore'],
144
+ }).trim();
145
+ }
146
+ catch {
147
+ return '';
148
+ }
58
149
  }
59
- function writeBasePackageJson(targetDir, name, coreManifestPath) {
150
+ function writeBasePackageJson(targetDir, name, meta, coreManifestPath, testsDir) {
60
151
  const core = loadCoreManifest(coreManifestPath);
61
- writeJson(path.join(targetDir, 'package.json'), {
152
+ // Build in npm-conventional order; optional metadata is included only when the user provided it.
153
+ const pkg = {
62
154
  name,
63
- version: '0.1.0',
155
+ version: meta.version || '0.1.0',
64
156
  private: true,
65
157
  type: 'module',
66
- scripts: sortObject(core.scripts),
67
- devDependencies: sortObject(core.devDependencies),
68
- ...(core.packageJson ?? {}),
69
- });
158
+ };
159
+ if (meta.description) {
160
+ pkg.description = meta.description;
161
+ }
162
+ if (meta.author) {
163
+ pkg.author = meta.author;
164
+ }
165
+ pkg.license = meta.license || 'MIT';
166
+ if (meta.keywords.length > 0) {
167
+ pkg.keywords = meta.keywords;
168
+ }
169
+ if (meta.repository) {
170
+ pkg.repository = { type: 'git', url: meta.repository };
171
+ }
172
+ pkg.scripts = sortObject(core.scripts);
173
+ pkg.devDependencies = sortObject(core.devDependencies);
174
+ Object.assign(pkg, core.packageJson ?? {});
175
+ pkg.pwtap = { testsDir };
176
+ writeJson(path.join(targetDir, 'package.json'), pkg);
177
+ }
178
+ /** Standard Playwright CI — mirrors the workflow `npm init playwright` generates. */
179
+ function writeGithubWorkflow(targetDir) {
180
+ const dir = path.join(targetDir, '.github', 'workflows');
181
+ fs.mkdirSync(dir, { recursive: true });
182
+ fs.writeFileSync(path.join(dir, 'playwright.yml'), GITHUB_WORKFLOW);
70
183
  }
71
184
  async function initGit(targetDir) {
72
185
  // git init so husky's `prepare` can wire hooks during npm install (husky needs a .git dir).
@@ -97,7 +210,7 @@ function writeHuskyHooks(targetDir) {
97
210
  }
98
211
  }
99
212
  }
100
- function printNextSteps(targetDir, name) {
213
+ function printNextSteps(targetDir, name, testsDir) {
101
214
  const rel = path.relative(process.cwd(), targetDir) || '.';
102
215
  log.done(`Created ${name}`);
103
216
  log.info([
@@ -106,9 +219,36 @@ function printNextSteps(targetDir, name) {
106
219
  ` cd ${rel}`,
107
220
  ' cp env/environments.example.json env/environments.json # set BASE_URL / API_BASE_URL',
108
221
  ' cp testData/users.example.json testData/users.json # add login sessions (optional)',
109
- ' npm test # runs chromium + api',
222
+ ` npm test # chromium + api (in ${testsDir}/)`,
110
223
  '',
111
- 'Add a plugin later: npx create-pwtap add <maestro|appium|...>',
224
+ 'Add a plugin later: npx create-pwtap add <maestro|appium|ai-judge>',
112
225
  ].join('\n'));
113
226
  }
227
+ const GITHUB_WORKFLOW = `name: Playwright Tests
228
+ on:
229
+ push:
230
+ branches: [main, master]
231
+ pull_request:
232
+ jobs:
233
+ test:
234
+ timeout-minutes: 60
235
+ runs-on: ubuntu-latest
236
+ steps:
237
+ - uses: actions/checkout@v4
238
+ - uses: actions/setup-node@v4
239
+ with:
240
+ node-version: 20
241
+ - name: Install dependencies
242
+ run: npm ci
243
+ - name: Install Playwright browsers
244
+ run: npx playwright install --with-deps
245
+ - name: Run tests
246
+ run: npm test
247
+ - uses: actions/upload-artifact@v4
248
+ if: \${{ !cancelled() }}
249
+ with:
250
+ name: playwright-report
251
+ path: playwright-report/
252
+ retention-days: 30
253
+ `;
114
254
  //# 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":"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,EAAE,QAAQ,GAAG,OAAO;IACnF,MAAM,QAAQ,GACZ,QAAQ,KAAK,OAAO;QAClB,CAAC,CAAC,CAAC,CAAC,QAAQ;QACZ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,wFAAwF;AACxF,SAAS,aAAa,CAAC,IAAY,EAAE,QAAgB;IACnD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACvF,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"}
@@ -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":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAuB,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,uFAAuF;AACvF,SAAS,UAAU,CAAC,SAAmB;IACrC,OAAO,SAAS;SACb,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;SAChF,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,kGAAkG;AAClG,SAAS,cAAc,CAAC,SAAiB,EAAE,CAAiB,EAAE,QAAgB;IAC5E,sBAAsB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACrC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC7B,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAEvB,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QACzC,GAAG,CAAC,IAAI,CACN,sDAAsD,CAAC,CAAC,IAAI,4BAA4B;YACtF,iBAAiB,CAAC,CAAC,OAAO,EAAE,UAAU,wCAAwC,CACjF,CAAC;IACJ,CAAC;IACD,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QACzC,GAAG,CAAC,IAAI,CACN,kFAAkF,CAAC,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAC9G,CAAC;IACJ,CAAC;AACH,CAAC;AAED,qEAAqE;AACrE,KAAK,UAAU,SAAS,CAAC,SAAiB,EAAE,CAAiB;IAC3D,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACtD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAClF,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAqC,CAAC;QAC7F,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,GAAG,CAAC,CAAC,IAAI,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACxF,CAAC;IACJ,CAAC;AACH,CAAC;AAUD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAC/B,SAAS,EACT,SAAS,EACT,OAAO,EACP,QAAQ,GAAG,OAAO,GACP;IACX,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,oBAAoB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvF,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,+BAA+B,GAAG,+BAA+B,CAAC,CAAC;YAC5E,SAAS;QACX,CAAC;QACD,cAAc,CAAC,SAAS,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;QACvC,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;IAC3B,CAAC;IACD,qFAAqF;IACrF,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAClC,SAAS,EACT,SAAS,EACT,SAAS,GAAG,IAAI,GACF;IACd,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,+BAA+B,GAAG,iCAAiC,CAAC,CAAC;YAC9E,SAAS;QACX,CAAC;QACD,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC5B,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC5B,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC9B,uBAAuB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC"}
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.3.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