openspec-playwright 0.3.76 → 0.3.77

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 CHANGED
@@ -195,7 +195,7 @@ Browser exploration is provided out of the box by Playwright MCP and `openspec-p
195
195
  2. Installs the E2E command for each detected editor (`/opsx:e2e` for Claude Code, `/opsx-e2e` for OpenCode, Cline, Cursor, Pi, Oh My Pi, and DeepSeek Harness; Cursor also gets an Agent Skill)
196
196
  3. Generates `tests/playwright/seed.spec.ts`, `auth.setup.ts`, `credentials.yaml`, `app-knowledge.md`, `pages/BasePage.ts`
197
197
  4. Generates `playwright.config.ts` with automatic dev script and port detection (Vite/Next/Nuxt/Astro, `.env`, and `--port`)
198
- 5. Detects a frontend signal (framework dependency or frontend dev command in the located `package.json`); with none found, prints guidance in the Summary — run `openspec-pw init` in the app directory (monorepo), or use Playwright's `request` fixture for API-only projects
198
+ 5. Detects a frontend signal (layered detection: framework config files → framework dependencies → frontend dev commands, plus monorepo workspace member detection so a pnpm/npm workspace with the frontend in `apps/*` is recognized); with none found, prints guidance in the Summary — run `openspec-pw init` in the app directory (monorepo), or use Playwright's `request` fixture for API-only projects
199
199
 
200
200
  > **Note**: After running `openspec-pw init`, manually install Playwright browsers: `npx playwright install --with-deps`
201
201
 
package/README.zh-CN.md CHANGED
@@ -183,7 +183,7 @@ openspec-pw uninstall # 移除项目中的集成
183
183
  1. 检测项目中的受支持编辑器(Claude Code 和/或 OpenCode 和/或 Cline 和/或 Cursor 和/或 Pi 和/或 Oh My Pi 和/或 DeepSeek Harness;Pi、Oh My Pi 与 DeepSeek Harness 也会通过全局配置目录 `~/.pi/agent/` / `~/.omp/agent/` / `~/.dsh/` 检测)
184
184
  2. 为每个检测到的编辑器安装 E2E 命令(Claude Code 用 `/opsx:e2e`,OpenCode / Cline / Cursor / Pi / Oh My Pi / DeepSeek Harness 用 `/opsx-e2e`;Cursor 另装 Agent Skill)
185
185
  3. 生成 `tests/playwright/seed.spec.ts`、`auth.setup.ts`、`credentials.yaml`、`app-knowledge.md`、`pages/BasePage.ts`
186
- 4. 检测前端信号(定位到的 `package.json` 含前端框架依赖或前端 dev 命令);未检测到时在 Summary 打印引导提示——monorepo 去应用目录运行 `openspec-pw init`,纯 API 项目用 Playwright `request` fixture
186
+ 4. 检测前端信号(分层检测:框架配置文件 前端框架依赖 dev 命令关键词,含 monorepo workspace 成员检测——前端在 `apps/*` 的 pnpm/npm workspace 也能识别);未检测到时在 Summary 打印引导提示——monorepo 去应用目录运行 `openspec-pw init`,纯 API 项目用 Playwright `request` fixture
187
187
 
188
188
  ## 首次配置清单
189
189
 
@@ -2,6 +2,9 @@ export interface PackageJson {
2
2
  scripts?: Record<string, string>;
3
3
  dependencies?: Record<string, string>;
4
4
  devDependencies?: Record<string, string>;
5
+ workspaces?: string[] | {
6
+ packages?: string[];
7
+ };
5
8
  }
6
9
  export interface AppServerDetection {
7
10
  projectRoot: string;
@@ -20,11 +23,19 @@ export declare function findNpmRoot(projectRoot: string, maxDepth?: number): str
20
23
  export declare function chooseDevScript(scripts: Record<string, string>): string | undefined;
21
24
  export declare function parsePort(text: string): number | undefined;
22
25
  /**
23
- * Detect whether the project has frontend code: reads the package.json
24
- * located by findNpmRoot (same source as detectAppServer, so monorepo
25
- * conclusions match a nested app is treated consistently by both).
26
+ * Detect whether the project has frontend code layered signals, specific
27
+ * first, stop on first hit:
28
+ * 1. framework config files at the project/npm root (strongest);
29
+ * 2. framework dependencies in the package.json located by findNpmRoot
30
+ * (same source as detectAppServer, so monorepo conclusions match);
31
+ * 3. dev-script command keywords;
32
+ * 4. monorepo workspace members (bounded scan) — frontend code commonly
33
+ * lives in member packages (e.g. pnpm apps/*) whose root package.json
34
+ * carries no frontend deps at all.
26
35
  * Returns null when no readable package.json is found at the located root —
27
36
  * callers skip the hint in that case (detection skipped, not "no frontend").
37
+ * Deliberately biased toward "frontend": a false positive costs one extra
38
+ * MCP install (--no-mcp skips it); a false negative silently skips the MCP.
28
39
  */
29
40
  export declare function hasFrontendSignal(projectRoot: string): boolean | null;
30
41
  export declare function detectAppServer(projectRoot: string, env?: NodeJS.ProcessEnv): AppServerDetection;
@@ -158,24 +158,178 @@ const FRONTEND_FRAMEWORK_DEPS = [
158
158
  // Frontend dev-command keywords — substring match on scripts.dev (command
159
159
  // text is naturally matched by inclusion).
160
160
  const FRONTEND_DEV_COMMAND_KEYWORDS = ["vite", "next", "nuxt", "svelte-kit", "astro"];
161
+ // Framework config files — the strongest zero-ambiguity signal: presence at
162
+ // a project/npm root means "frontend" even when dependencies live elsewhere
163
+ // (monorepo roots commonly hold no frontend deps at all).
164
+ const FRONTEND_CONFIG_FILES = [
165
+ "vite.config.js", "vite.config.ts", "vite.config.mjs",
166
+ "next.config.js", "next.config.ts", "next.config.mjs",
167
+ "nuxt.config.js", "nuxt.config.ts", "nuxt.config.mjs",
168
+ "angular.json",
169
+ "svelte.config.js", "svelte.config.ts",
170
+ "astro.config.js", "astro.config.mjs", "astro.config.ts",
171
+ "vue.config.js", "vue.config.ts",
172
+ "remix.config.js", "remix.config.ts",
173
+ ];
174
+ // Workspace-scan bounds (spec: frontend-signal-detection): never walk deeper
175
+ // than 3 directory levels and never inspect more than 50 member package.jsons
176
+ // — guards against unbounded scans on huge repos.
177
+ const WORKSPACE_SCAN_MAX_DEPTH = 3;
178
+ const WORKSPACE_SCAN_MAX_MEMBERS = 50;
179
+ function hasFrontendConfigFile(dir) {
180
+ return FRONTEND_CONFIG_FILES.some((file) => existsSync(join(dir, file)));
181
+ }
182
+ function packageHasFrontendDeps(pkg) {
183
+ return FRONTEND_FRAMEWORK_DEPS.some((name) => dependencyExists(pkg, name));
184
+ }
161
185
  /**
162
- * Detect whether the project has frontend code: reads the package.json
163
- * located by findNpmRoot (same source as detectAppServer, so monorepo
164
- * conclusions match a nested app is treated consistently by both).
186
+ * Workspace member globs for a detected monorepo, or null when the project
187
+ * is not a detectable workspace. An empty array means "workspace but no
188
+ * member globs discoverable" (marker files only) the caller falls back to
189
+ * a bounded tree scan. Reads pnpm-workspace.yaml naively (list items only)
190
+ * and package.json workspaces (array or {packages} form); turbo/nx/lerna/
191
+ * rush markers carry no member list at all.
192
+ */
193
+ function workspaceGlobPatterns(root, pkg) {
194
+ const pnpmYaml = join(root, "pnpm-workspace.yaml");
195
+ let isWorkspace = false;
196
+ if (existsSync(pnpmYaml)) {
197
+ isWorkspace = true;
198
+ try {
199
+ const patterns = readFileSync(pnpmYaml, "utf-8")
200
+ .split(/\r?\n/)
201
+ .filter((line) => /^\s*-/.test(line))
202
+ .map((line) => line.replace(/^\s*-\s*/, "").trim().replace(/^['"]|['"]$/g, ""))
203
+ .filter((pattern) => pattern.length > 0);
204
+ if (patterns.length > 0)
205
+ return patterns;
206
+ }
207
+ catch {
208
+ // unreadable → fall through to the other markers
209
+ }
210
+ }
211
+ if (Array.isArray(pkg.workspaces))
212
+ return pkg.workspaces;
213
+ const wsPackages = pkg.workspaces?.packages;
214
+ if (Array.isArray(wsPackages))
215
+ return wsPackages;
216
+ for (const marker of ["turbo.json", "nx.json", "lerna.json", "rush.json"]) {
217
+ if (existsSync(join(root, marker)))
218
+ return [];
219
+ }
220
+ return isWorkspace ? [] : null;
221
+ }
222
+ /**
223
+ * Expand member globs ("apps/*", "packages/**", "apps/web") into candidate
224
+ * member directories. Supports only the simple forms — an exact path, or a
225
+ * star-wildcard in the last segment. Anything else (leading/middle wildcards)
226
+ * returns null so the caller falls back to a bounded tree scan.
227
+ */
228
+ function resolveMemberDirs(root, patterns) {
229
+ const dirs = [];
230
+ for (const raw of patterns) {
231
+ const pattern = raw.replace(/^\.\//, "").replace(/\/+$/, "");
232
+ if (pattern === "")
233
+ continue;
234
+ const segments = pattern.split("/");
235
+ const last = segments.length - 1;
236
+ if (segments.some((seg, i) => i !== last && seg.includes("*")))
237
+ return null;
238
+ if (segments[last].includes("*")) {
239
+ const baseDir = join(root, ...segments.slice(0, last));
240
+ if (!existsSync(baseDir))
241
+ continue;
242
+ try {
243
+ for (const entry of readdirSync(baseDir, { withFileTypes: true })) {
244
+ if (!entry.isDirectory() || entry.name.startsWith(".") || entry.name === "node_modules")
245
+ continue;
246
+ dirs.push(join(baseDir, entry.name));
247
+ }
248
+ }
249
+ catch {
250
+ // unreadable base directory — skip this pattern
251
+ }
252
+ }
253
+ else {
254
+ dirs.push(join(root, ...segments)); // exact member path
255
+ }
256
+ }
257
+ return dirs;
258
+ }
259
+ /**
260
+ * Bounded scan of member candidate dirs for frontend deps or config files.
261
+ * Each seed gets `budget` directory levels below it; at most
262
+ * WORKSPACE_SCAN_MAX_MEMBERS member package.jsons are inspected. Skips
263
+ * node_modules and dot-directories (same convention as findNpmRoot).
264
+ */
265
+ function hasFrontendInDirs(seeds, budget) {
266
+ let checked = 0;
267
+ const visit = (dir, remaining) => {
268
+ if (remaining < 0 || checked >= WORKSPACE_SCAN_MAX_MEMBERS)
269
+ return false;
270
+ const pkg = readPackageJson(join(dir, "package.json"));
271
+ if (pkg)
272
+ checked++;
273
+ if ((pkg !== null && packageHasFrontendDeps(pkg)) || hasFrontendConfigFile(dir))
274
+ return true;
275
+ if (remaining === 0)
276
+ return false;
277
+ let entries;
278
+ try {
279
+ entries = readdirSync(dir, { withFileTypes: true });
280
+ }
281
+ catch {
282
+ return false;
283
+ }
284
+ for (const entry of entries) {
285
+ if (!entry.isDirectory() || entry.name.startsWith(".") || entry.name === "node_modules")
286
+ continue;
287
+ if (visit(join(dir, entry.name), remaining - 1))
288
+ return true;
289
+ }
290
+ return false;
291
+ };
292
+ for (const seed of seeds) {
293
+ if (visit(seed, budget))
294
+ return true;
295
+ }
296
+ return false;
297
+ }
298
+ /**
299
+ * Detect whether the project has frontend code — layered signals, specific
300
+ * first, stop on first hit:
301
+ * 1. framework config files at the project/npm root (strongest);
302
+ * 2. framework dependencies in the package.json located by findNpmRoot
303
+ * (same source as detectAppServer, so monorepo conclusions match);
304
+ * 3. dev-script command keywords;
305
+ * 4. monorepo workspace members (bounded scan) — frontend code commonly
306
+ * lives in member packages (e.g. pnpm apps/*) whose root package.json
307
+ * carries no frontend deps at all.
165
308
  * Returns null when no readable package.json is found at the located root —
166
309
  * callers skip the hint in that case (detection skipped, not "no frontend").
310
+ * Deliberately biased toward "frontend": a false positive costs one extra
311
+ * MCP install (--no-mcp skips it); a false negative silently skips the MCP.
167
312
  */
168
313
  export function hasFrontendSignal(projectRoot) {
169
314
  const npmRoot = findNpmRoot(projectRoot);
170
315
  const pkg = readPackageJson(join(npmRoot, "package.json"));
171
316
  if (!pkg)
172
317
  return null;
173
- for (const name of FRONTEND_FRAMEWORK_DEPS) {
174
- if (dependencyExists(pkg, name))
175
- return true;
176
- }
318
+ if (hasFrontendConfigFile(projectRoot) || (npmRoot !== projectRoot && hasFrontendConfigFile(npmRoot)))
319
+ return true;
320
+ if (packageHasFrontendDeps(pkg))
321
+ return true;
177
322
  const dev = pkg.scripts?.dev ?? "";
178
- return FRONTEND_DEV_COMMAND_KEYWORDS.some((kw) => dev.includes(kw));
323
+ if (FRONTEND_DEV_COMMAND_KEYWORDS.some((kw) => dev.includes(kw)))
324
+ return true;
325
+ const patterns = workspaceGlobPatterns(projectRoot, pkg);
326
+ if (patterns === null)
327
+ return false;
328
+ const memberDirs = resolveMemberDirs(projectRoot, patterns);
329
+ if (memberDirs !== null && memberDirs.length > 0) {
330
+ return hasFrontendInDirs(memberDirs, WORKSPACE_SCAN_MAX_DEPTH - 1);
331
+ }
332
+ return hasFrontendInDirs([projectRoot], WORKSPACE_SCAN_MAX_DEPTH);
179
333
  }
180
334
  export function detectAppServer(projectRoot, env = process.env) {
181
335
  const npmRoot = findNpmRoot(projectRoot);
@@ -1 +1 @@
1
- {"version":3,"file":"app-detect.js","sourceRoot":"","sources":["../../src/shared/app-detect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-detect.js","sourceRoot":"","sources":["../../src/shared/app-detect.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openspec-playwright",
3
- "version": "0.3.76",
3
+ "version": "0.3.77",
4
4
  "description": "OpenSpec + Playwright E2E verification setup tool for Claude Code, OpenCode, Cline, and Cursor",
5
5
  "type": "module",
6
6
  "bin": {