pageqa 0.6.0 → 0.7.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/dist/bsk/tools.js CHANGED
@@ -6,6 +6,11 @@ import { debugLog, info, timer } from "../log.js";
6
6
  *
7
7
  * bsk 连接一个已运行的真实浏览器,每个命令都需要 --session <id>。
8
8
  * 所有命令以 --quiet 抑制进度输出,仅返回结构化/可读结果。
9
+ *
10
+ * 分两层:
11
+ * - `createBskOps`(操作层):每次浏览器操作 = 一条 bsk 命令,返回可读结果。
12
+ * - `createBskTools`(工具层):把操作层包成 agent 可调用的工具,并上报每次执行为录制提供素材。
13
+ * 回放(replay.ts)直接用操作层,因此「录制时怎么操作」与「回放时怎么操作」是同一条命令路径。
9
14
  */
10
15
  const BSK_TIMEOUT_MS = 60_000;
11
16
  function bsk(args) {
@@ -159,11 +164,124 @@ function paramsOf(properties, required = []) {
159
164
  required,
160
165
  };
161
166
  }
167
+ export function createBskOps(session, jevClient) {
168
+ const quiet = ["--session", session, "--quiet"];
169
+ let snapshotText = "";
170
+ return {
171
+ session,
172
+ lastSnapshot: () => snapshotText,
173
+ navigate(url) {
174
+ const out = bsk([
175
+ "navigate",
176
+ url,
177
+ ...quiet,
178
+ "--wait-until",
179
+ "domcontentloaded",
180
+ ]);
181
+ return `已导航到 ${url}\n${out}`;
182
+ },
183
+ snapshot() {
184
+ const out = bsk(["snapshot", ...quiet]);
185
+ snapshotText = out;
186
+ // 快照体积直接决定上下文压力(长流程易因上下文超限被中断)
187
+ debugLog("[bsk] snapshot 字符数=" + out.length);
188
+ return out;
189
+ },
190
+ click(target) {
191
+ const out = bsk(["click", target, ...quiet]);
192
+ return `已点击 ${target}\n${out}`;
193
+ },
194
+ fill(target, value) {
195
+ const out = bsk(["fill", target, "--value", value, ...quiet]);
196
+ return `已在 ${target} 填入文本\n${out}`;
197
+ },
198
+ upload(target, file) {
199
+ if (!existsSync(file)) {
200
+ throw new Error(`待上传文件不存在:${file}`);
201
+ }
202
+ const args = ["upload"];
203
+ if (target)
204
+ args.push(target);
205
+ args.push("--file", file, ...quiet);
206
+ const out = bsk(args);
207
+ return `已上传文件 ${file}\n${out}`;
208
+ },
209
+ hover(target) {
210
+ const out = bsk(["hover", target, ...quiet]);
211
+ return `已悬停 ${target}\n${out}`;
212
+ },
213
+ scroll(target) {
214
+ // scroll-to 同时支持 @eN 引用与 CSS 选择器。
215
+ // (早期实现用 evaluate + querySelector,遇到 @eN 会静默返回 element-not-found。)
216
+ const out = bsk(["scroll-to", target, ...quiet]);
217
+ return `已滚动到 ${target}\n${out}`;
218
+ },
219
+ wait(ms) {
220
+ // wait-ms 是 daemon 端 sleep,不接受 --session
221
+ bsk(["wait-ms", String(ms)]);
222
+ return `已等待 ${ms}ms`;
223
+ },
224
+ async assertText(expectation) {
225
+ const snap = bsk(["snapshot", ...quiet]);
226
+ snapshotText = snap;
227
+ const evidence = (verdict, why) => `断言「${expectation}」:${verdict}。${why}`;
228
+ // 防御:快照为空或明显不是已加载页面 → 断言不成立。
229
+ // 浏览器页面还没打开时,bsk 返回的是空串/about:blank/错误信息,
230
+ // 此时不应信任 Jev 或直接判定「成立」(空页面不可能包含断言文本)。
231
+ const snapLen = snap.trim().length;
232
+ const SNAP_MIN_LEN = 30;
233
+ if (snapLen < SNAP_MIN_LEN) {
234
+ return evidence("不成立", `证据:页面快照为空或过短(${snapLen} 字符),页面可能尚未打开或未导航`);
235
+ }
236
+ // 当 Jev 客户端可用时,使用语义判断替代字符串包含匹配
237
+ if (jevClient?.enabled) {
238
+ try {
239
+ const prob = await jevClient.assertText(snap, expectation);
240
+ const pass = prob >= jevClient.threshold;
241
+ const verdict = pass ? "成立" : "不成立";
242
+ const why = pass
243
+ ? `语义匹配度 ${(prob * 100).toFixed(1)}%,超过阈值 ${(jevClient.threshold * 100).toFixed(0)}%`
244
+ : `语义匹配度 ${(prob * 100).toFixed(1)}%,未达到阈值 ${(jevClient.threshold * 100).toFixed(0)}%`;
245
+ return evidence(verdict, why);
246
+ }
247
+ catch (err) {
248
+ // Jev 调用失败:回退到原有的字符串包含逻辑。
249
+ // 必须记录失败原因(超时/鉴权/网络等),否则用户只看到「Jev 不可用,已回退」,
250
+ // 却无法从 --debug 日志判断到底是哪一类故障。
251
+ debugLog("[bsk] Jev 断言失败,回退到字符串匹配:" +
252
+ (err instanceof Error ? err.message : String(err)));
253
+ return stringAssert(snap, expectation) + "(Jev 不可用,已回退)";
254
+ }
255
+ }
256
+ // 默认:字符串包含匹配
257
+ return stringAssert(snap, expectation);
258
+ },
259
+ };
260
+ }
261
+ /** 字符串包含匹配(默认断言路径,也是 Jev 不可用时的回退)。 */
262
+ function stringAssert(snapshotText, expectation) {
263
+ const hit = snapshotText.includes(expectation);
264
+ return `断言「${expectation}」:${hit ? "成立" : "不成立"}。${hit ? `页面中包含「${expectation}」` : `页面中未找到「${expectation}」`}`;
265
+ }
162
266
  /** 构造一组浏览器操作工具,供 page-test agent 调用。 */
163
267
  export function createBskTools(opts) {
164
- const s = opts.session;
165
- const jevClient = opts.jevClient;
166
- const quiet = ["--session", s, "--quiet"];
268
+ const ops = createBskOps(opts.session, opts.jevClient);
269
+ /**
270
+ * 统一包装一次工具执行:拿到结果后上报给录制器,失败时先上报再抛出
271
+ * (抛出让 pi-agent-core 把该工具标记为错误,模型会据此重试)。
272
+ */
273
+ const exec = async (name, params, fn) => {
274
+ const before = ops.lastSnapshot();
275
+ try {
276
+ const text = await fn();
277
+ opts.onExec?.({ name, params, ok: true, lastSnapshot: before });
278
+ return ok(text);
279
+ }
280
+ catch (err) {
281
+ opts.onExec?.({ name, params, ok: false, lastSnapshot: before });
282
+ throw err;
283
+ }
284
+ };
167
285
  const navigate = {
168
286
  name: "navigate",
169
287
  label: "Navigate",
@@ -173,14 +291,7 @@ export function createBskTools(opts) {
173
291
  ]),
174
292
  execute: async (_id, params) => {
175
293
  const p = params;
176
- const out = bsk([
177
- "navigate",
178
- p.url,
179
- ...quiet,
180
- "--wait-until",
181
- "domcontentloaded",
182
- ]);
183
- return ok(`已导航到 ${p.url}\n${out}`);
294
+ return exec("navigate", { url: p.url }, () => ops.navigate(p.url));
184
295
  },
185
296
  };
186
297
  const snapshot = {
@@ -188,12 +299,7 @@ export function createBskTools(opts) {
188
299
  label: "Snapshot",
189
300
  description: "读取当前页面的 aria 语义树与可见文本(标题、段落、链接、按钮等)。用于读取内容、标题、文本并定位元素。",
190
301
  parameters: paramsOf({}),
191
- execute: async () => {
192
- const out = bsk(["snapshot", ...quiet]);
193
- // 快照体积直接决定上下文压力(长流程易因上下文超限被中断)
194
- debugLog("[bsk] snapshot 字符数=" + out.length);
195
- return ok(out);
196
- },
302
+ execute: async () => exec("snapshot", {}, () => ops.snapshot()),
197
303
  };
198
304
  const click = {
199
305
  name: "click",
@@ -202,8 +308,7 @@ export function createBskTools(opts) {
202
308
  parameters: paramsOf({ target: { type: "string", description: "@eN 引用或 CSS 选择器" } }, ["target"]),
203
309
  execute: async (_id, params) => {
204
310
  const p = params;
205
- const out = bsk(["click", p.target, ...quiet]);
206
- return ok(`已点击 ${p.target}\n${out}`);
311
+ return exec("click", { target: p.target }, () => ops.click(p.target));
207
312
  },
208
313
  };
209
314
  const fill = {
@@ -216,8 +321,7 @@ export function createBskTools(opts) {
216
321
  }, ["target", "value"]),
217
322
  execute: async (_id, params) => {
218
323
  const p = params;
219
- const out = bsk(["fill", p.target, "--value", p.value, ...quiet]);
220
- return ok(`已在 ${p.target} 填入文本\n${out}`);
324
+ return exec("fill", { target: p.target, value: p.value }, () => ops.fill(p.target, p.value));
221
325
  },
222
326
  };
223
327
  const upload = {
@@ -237,15 +341,7 @@ export function createBskTools(opts) {
237
341
  }, ["file"]),
238
342
  execute: async (_id, params) => {
239
343
  const p = params;
240
- if (!existsSync(p.file)) {
241
- throw new Error(`待上传文件不存在:${p.file}`);
242
- }
243
- const args = ["upload"];
244
- if (p.target)
245
- args.push(p.target);
246
- args.push("--file", p.file, ...quiet);
247
- const out = bsk(args);
248
- return ok(`已上传文件 ${p.file}\n${out}`);
344
+ return exec("upload", p.target ? { target: p.target, file: p.file } : { file: p.file }, () => ops.upload(p.target, p.file));
249
345
  },
250
346
  };
251
347
  const hover = {
@@ -255,8 +351,7 @@ export function createBskTools(opts) {
255
351
  parameters: paramsOf({ target: { type: "string", description: "@eN 引用或 CSS 选择器" } }, ["target"]),
256
352
  execute: async (_id, params) => {
257
353
  const p = params;
258
- const out = bsk(["hover", p.target, ...quiet]);
259
- return ok(`已悬停 ${p.target}\n${out}`);
354
+ return exec("hover", { target: p.target }, () => ops.hover(p.target));
260
355
  },
261
356
  };
262
357
  const scroll = {
@@ -266,9 +361,7 @@ export function createBskTools(opts) {
266
361
  parameters: paramsOf({ target: { type: "string", description: "@eN 引用或 CSS 选择器" } }, ["target"]),
267
362
  execute: async (_id, params) => {
268
363
  const p = params;
269
- const js = `(() => { const el = document.querySelector(${JSON.stringify(p.target)}); if (el) el.scrollIntoView({block:'center'}); return el ? 'scrolled' : 'element-not-found'; })()`;
270
- const res = bsk(["evaluate", js, ...quiet]);
271
- return ok(res);
364
+ return exec("scroll", { target: p.target }, () => ops.scroll(p.target));
272
365
  },
273
366
  };
274
367
  const wait = {
@@ -279,9 +372,7 @@ export function createBskTools(opts) {
279
372
  execute: async (_id, params) => {
280
373
  const p = params ?? {};
281
374
  const ms = p.ms ?? 1000;
282
- // wait-ms daemon sleep,不接受 --session
283
- bsk(["wait-ms", String(ms)]);
284
- return ok(`已等待 ${ms}ms`);
375
+ return exec("wait", { ms }, () => ops.wait(ms));
285
376
  },
286
377
  };
287
378
  const assertText = {
@@ -293,47 +384,7 @@ export function createBskTools(opts) {
293
384
  }, ["expectation"]),
294
385
  execute: async (_id, params) => {
295
386
  const p = params;
296
- const snap = bsk(["snapshot", ...quiet]);
297
- // 防御:快照为空或明显不是已加载页面 → 断言不成立。
298
- // 浏览器页面还没打开时,bsk 返回的是空串/about:blank/错误信息,
299
- // 此时不应信任 Jev 或直接判定「成立」(空页面不可能包含断言文本)。
300
- const snapLen = snap.trim().length;
301
- const SNAP_MIN_LEN = 30;
302
- if (snapLen < SNAP_MIN_LEN) {
303
- return ok(`断言「${p.expectation}」:不成立。证据:页面快照为空或过短(${snapLen} 字符),页面可能尚未打开或未导航`);
304
- }
305
- // 当 Jev 客户端可用时,使用语义判断替代字符串包含匹配
306
- if (jevClient?.enabled) {
307
- try {
308
- const prob = await jevClient.assertText(snap, p.expectation);
309
- const pass = prob >= jevClient.threshold;
310
- const verdict = pass ? "成立" : "不成立";
311
- const evidence = pass
312
- ? `语义匹配度 ${(prob * 100).toFixed(1)}%,超过阈值 ${(jevClient.threshold * 100).toFixed(0)}%`
313
- : `语义匹配度 ${(prob * 100).toFixed(1)}%,未达到阈值 ${(jevClient.threshold * 100).toFixed(0)}%`;
314
- return ok(`断言「${p.expectation}」:${verdict}。${evidence}`);
315
- }
316
- catch (err) {
317
- // Jev 调用失败:回退到原有的字符串包含逻辑。
318
- // 必须记录失败原因(超时/鉴权/网络等),否则用户只看到「Jev 不可用,已回退」,
319
- // 却无法从 --debug 日志判断到底是哪一类故障。
320
- debugLog("[bsk] Jev 断言失败,回退到字符串匹配:" +
321
- (err instanceof Error ? err.message : String(err)));
322
- const hit = snap.includes(p.expectation);
323
- const verdict = hit ? "成立" : "不成立";
324
- const evidence = hit
325
- ? `页面中包含「${p.expectation}」`
326
- : `页面中未找到「${p.expectation}」`;
327
- return ok(`断言「${p.expectation}」:${verdict}。${evidence}(Jev 不可用,已回退)`);
328
- }
329
- }
330
- // 默认:字符串包含匹配
331
- const hit = snap.includes(p.expectation);
332
- const verdict = hit ? "成立" : "不成立";
333
- const evidence = hit
334
- ? `页面中包含「${p.expectation}」`
335
- : `页面中未找到「${p.expectation}」`;
336
- return ok(`断言「${p.expectation}」:${verdict}。${evidence}`);
387
+ return exec("assert_text", { expectation: p.expectation }, () => ops.assertText(p.expectation));
337
388
  },
338
389
  };
339
390
  return [
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/bsk/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/bsk/tools.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,9 +1,11 @@
1
1
  #!/usr/bin/env node
2
- import { existsSync, readFileSync } from "node:fs";
2
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
3
+ import { basename, dirname, extname, join } from "node:path";
3
4
  import { fileURLToPath } from "node:url";
4
5
  import { runAgent, runSuite } from "./agent.js";
5
6
  import { ensureConfigDir, CONFIG_PATH, loadConfig } from "./config.js";
6
- import { expandVars, VAR_HELP } from "./vars.js";
7
+ import { buildReplayScript, loadReplayScript, runReplayScript, sourceDriftNotice, writeReplayScript, } from "./replay.js";
8
+ import { captureRunVars, expandVars, VAR_HELP } from "./vars.js";
7
9
  import { info, setDebug } from "./log.js";
8
10
  function parseArgs(argv) {
9
11
  const args = {
@@ -12,6 +14,9 @@ function parseArgs(argv) {
12
14
  initConfig: false,
13
15
  help: false,
14
16
  debug: false,
17
+ emitScript: false,
18
+ semantic: false,
19
+ failFast: false,
15
20
  };
16
21
  for (let i = 0; i < argv.length; i++) {
17
22
  const a = argv[i];
@@ -50,13 +55,66 @@ function parseArgs(argv) {
50
55
  case "--debug":
51
56
  args.debug = true;
52
57
  break;
58
+ case "--replay": {
59
+ const v = argv[++i];
60
+ if (v === undefined) {
61
+ args.error = "--replay 需要一个回放脚本路径";
62
+ return args;
63
+ }
64
+ args.replay = v;
65
+ break;
66
+ }
67
+ case "--emit-script": {
68
+ args.emitScript = true;
69
+ // 路径可选:只有「看起来像路径」的后一个 token 才被当作输出路径消费,
70
+ // 否则(如 `pageqa --emit-script examples/smoke.md`)留给用例输入位。
71
+ const next = argv[i + 1];
72
+ if (next && looksLikeScriptPath(next)) {
73
+ args.emitScriptPath = next;
74
+ i++;
75
+ }
76
+ break;
77
+ }
78
+ case "--semantic":
79
+ args.semantic = true;
80
+ break;
81
+ case "--fail-fast":
82
+ args.failFast = true;
83
+ break;
53
84
  default:
54
- if (!a.startsWith("-"))
85
+ if (!a.startsWith("-")) {
86
+ // 只接受一个用例输入。此前是「后者覆盖前者」,`--emit-script ./replay`
87
+ // 这类写法一旦没被识别成输出路径,就会静默把用例换成 `./replay` 去跑,
88
+ // 看起来像正常启动、实际测的是完全无关的文本。这里改为直接报错。
89
+ if (args.input !== undefined) {
90
+ args.error =
91
+ `多余的位置参数:${a}(只接受一个用例输入` +
92
+ `;路径含空格请用引号包裹,输出路径请放在 --emit-script 之后)`;
93
+ return args;
94
+ }
55
95
  args.input = a;
96
+ }
56
97
  }
57
98
  }
58
99
  return args;
59
100
  }
101
+ /**
102
+ * 判断 `--emit-script` 后面的 token 是否应被当作输出路径。
103
+ *
104
+ * 判据是「像不像一个路径」而不是「是不是 .json 结尾」:用户完全可能想写成
105
+ * `--emit-script ./replay`(不带扩展名)。因此:
106
+ * - 以 `-` 开头 → 是下一个选项,不是路径;
107
+ * - 以 .md/.txt 结尾 → 是用例文件,留给输入位(支持 `--emit-script 用例.md` 的写法);
108
+ * - 含空白或中文 → 是内联用例文本,留给输入位;
109
+ * - 其余(`./replay`、`out.json`、`reports/run1`)→ 当作输出路径。
110
+ */
111
+ function looksLikeScriptPath(token) {
112
+ if (token.startsWith("-"))
113
+ return false;
114
+ if (/\.(md|txt)$/i.test(token))
115
+ return false;
116
+ return /^[A-Za-z0-9_./\\-]+$/.test(token);
117
+ }
60
118
  const HELP = `pageqa - 自然语言驱动的页面测试工具(pi-agent-core + browserskill)
61
119
 
62
120
  用法:
@@ -64,6 +122,7 @@ const HELP = `pageqa - 自然语言驱动的页面测试工具(pi-agent-core +
64
122
 
65
123
  <input> 自然语言脚本文件(.md/.txt,路径含空格请用引号包裹),
66
124
  或用引号包裹的内联文本
125
+ 只接受一个用例输入;多给一个会直接报错
67
126
  脚本中可用『## 场景名』分隔多个测试场景,自动批量运行
68
127
  路径中粘贴带来的不可见字符(Bidi/零宽)会被自动清理;
69
128
  若路径以 .md/.txt 结尾但文件不存在,会直接报错而非当作内联文本
@@ -74,11 +133,30 @@ const HELP = `pageqa - 自然语言驱动的页面测试工具(pi-agent-core +
74
133
  并关掉它对应的浏览器窗口(Agent Window)
75
134
  --json 输出 JSON 报告
76
135
  --suite 强制按多场景套件运行(即使只有一个场景)
136
+ --emit-script [path]
137
+ 运行结束后把本次成功的操作序列固化成回放脚本(Replay Script)
138
+ 不给 path 时写到源用例同目录 <用例名>.replay.json
139
+ (内联文本写 ./pageqa.replay.json)
140
+ path 建议写成路径形式(如 ./replay、reports/run1.json),
141
+ 含空白请用引号包裹;紧跟其后的若是 .md/.txt 或含空白的文本,
142
+ 会被当作用例输入而不是输出路径
143
+ 无论 PASS/FAIL 都会生成,便于排查与续写
144
+ --replay <file> 零模型回放已有的回放脚本(详见下方「回放脚本」)
145
+ --semantic 回放时断言改用 Jev 语义判断(默认字符串包含)
77
146
  --init-config 在用户目录创建/重置配置文件
78
147
  --out <file> 将报告写入文件
79
148
  --debug 显示调试日志(bsk 命令、快照体积、上下文裁剪、Jev 请求详情)
80
149
  -h, --help 显示帮助
81
150
 
151
+ 回放脚本(零模型重跑同一用例):
152
+ pageqa --replay <file.replay.json> [--session <id>] [--json] [--semantic] [--fail-fast]
153
+ 按脚本逐步驱动浏览器,**不调用任何大模型**,断言默认走字符串包含
154
+ --semantic 可改用 Jev 语义判断(需已在配置里启用 Jev)
155
+ 元素定位用录制时的语义定位符在当次快照里重新解析,
156
+ 因此页面小幅调整后脚本仍可命中;源用例变更会在 stderr 提示
157
+ --fail-fast 任一失败即停止该场景;默认会跑完剩余步骤,
158
+ 以便一次拿到整条用例的完整健康报告(失败仍会让退出码非零)
159
+
82
160
  进度日志:
83
161
  - 运行进度会带时间戳实时输出到 stderr(bsk daemon 启动、session、每一步工具调用、
84
162
  续跑与最终结论等),stdout 只输出最终报告,两者互不干扰;长流程可据此判断进行到哪一步。
@@ -136,6 +214,53 @@ function cleanInput(raw) {
136
214
  function looksLikeScriptFile(input) {
137
215
  return !/[\r\n]/.test(input) && /\.(md|txt)$/i.test(input);
138
216
  }
217
+ /**
218
+ * 默认的回放脚本落盘位置:贴着源用例(同名 + `.replay.json`),便于和用例一起进 git 评审。
219
+ * 内联文本没有源文件,落到当前工作目录。
220
+ */
221
+ function defaultScriptPath(rawInput, isFile) {
222
+ if (!isFile)
223
+ return "pageqa.replay.json";
224
+ return join(dirname(rawInput), basename(rawInput, extname(rawInput)) + ".replay.json");
225
+ }
226
+ /**
227
+ * 回放模式入口:加载脚本、提示源用例漂移,然后零模型逐步执行。
228
+ * 退出码语义与自然语言模式一致(全部断言通过 0,否则 1),可直接接 CI。
229
+ */
230
+ async function replayMode(args) {
231
+ const path = args.replay;
232
+ let script;
233
+ try {
234
+ script = loadReplayScript(path);
235
+ }
236
+ catch (err) {
237
+ process.stderr.write(`${err instanceof Error ? err.message : String(err)}\n`);
238
+ return 1;
239
+ }
240
+ info("[pageqa] ===== 回放启动 =====");
241
+ const drift = sourceDriftNotice(script);
242
+ if (drift)
243
+ info(`[pageqa] 警告:${drift}`);
244
+ try {
245
+ const result = await runReplayScript(script, {
246
+ session: args.session,
247
+ semantic: args.semantic,
248
+ debug: args.debug,
249
+ scriptPath: path,
250
+ now: new Date(),
251
+ failFast: args.failFast,
252
+ });
253
+ const out = args.json ? result.json : result.text;
254
+ if (args.out)
255
+ writeFileSync(args.out, out + "\n");
256
+ process.stdout.write(out + "\n");
257
+ return result.report.status === "pass" ? 0 : 1;
258
+ }
259
+ catch (err) {
260
+ process.stderr.write(`回放失败: ${err instanceof Error ? err.stack : String(err)}\n`);
261
+ return 1;
262
+ }
263
+ }
139
264
  async function main() {
140
265
  const args = parseArgs(process.argv.slice(2));
141
266
  if (args.error) {
@@ -154,6 +279,19 @@ async function main() {
154
279
  process.stdout.write(`当前生效配置:${JSON.stringify(loadConfig(), null, 2)}\n`);
155
280
  return 0;
156
281
  }
282
+ // ── 回放模式:零模型执行已有脚本(与用例输入互斥)──
283
+ if (args.replay) {
284
+ if (args.input) {
285
+ process.stderr.write("参数错误:--replay 不能与用例输入同时使用\n\n");
286
+ return 1;
287
+ }
288
+ if (args.emitScript) {
289
+ process.stderr.write("参数错误:--emit-script 用于生成回放脚本,不能与 --replay 同时使用\n\n");
290
+ return 1;
291
+ }
292
+ setDebug(args.debug);
293
+ return await replayMode(args);
294
+ }
157
295
  if (!args.input) {
158
296
  process.stdout.write(HELP + "\n");
159
297
  return 1;
@@ -169,23 +307,52 @@ async function main() {
169
307
  ` - 若只想跑内联文本,请不要让文本以 .md/.txt 结尾\n`);
170
308
  return 1;
171
309
  }
172
- const input = isFile
173
- ? expandVars(readFileSync(rawInput, "utf8"))
174
- : expandVars(rawInput);
310
+ const sourceText = isFile ? readFileSync(rawInput, "utf8") : rawInput;
311
+ // 展开占位符与「反查占位符」必须共用同一时刻:
312
+ // 生成回放脚本时才能把模型看到的具体值(202609191146)还原成 ${timestamp}。
313
+ const now = new Date();
314
+ const input = expandVars(sourceText, now);
315
+ const vars = captureRunVars(now);
175
316
  const hasScenarios = /^##\s+/m.test(input);
176
317
  const suiteMode = hasScenarios || args.suite;
318
+ const scriptPath = args.emitScript
319
+ ? (args.emitScriptPath ?? defaultScriptPath(rawInput, isFile))
320
+ : undefined;
177
321
  info("[pageqa] ===== 启动 =====");
178
322
  info(`[pageqa] 已读取${isFile ? `脚本文件 ${rawInput}` : "内联用例"}(${input.length} 字符)`);
179
323
  info(`[pageqa] 运行模式:${suiteMode ? "多场景套件" : "单场景"}` +
180
324
  `${args.session ? `,session=${args.session}` : ""}` +
181
325
  `${args.debug ? ",debug=on(stderr 含调试明细)" : ""}`);
326
+ if (scriptPath) {
327
+ info(`[pageqa] 运行结束将生成回放脚本:${scriptPath}`);
328
+ }
182
329
  try {
183
330
  const result = suiteMode
184
- ? await runSuite(input, { session: args.session, debug: args.debug })
185
- : await runAgent(input, { session: args.session, debug: args.debug });
331
+ ? await runSuite(input, {
332
+ session: args.session,
333
+ debug: args.debug,
334
+ vars,
335
+ scriptPath,
336
+ })
337
+ : await runAgent(input, {
338
+ session: args.session,
339
+ debug: args.debug,
340
+ vars,
341
+ scriptPath,
342
+ });
343
+ if (scriptPath) {
344
+ const script = buildReplayScript(result.recordings, {
345
+ sourcePath: isFile ? rawInput : null,
346
+ sourceText,
347
+ });
348
+ writeReplayScript(scriptPath, script);
349
+ const steps = script.scenarios.reduce((n, s) => n + s.steps.length, 0);
350
+ info(`[pageqa] 回放脚本已生成:${scriptPath}` +
351
+ `(${script.scenarios.length} 个场景,共 ${steps} 步)`);
352
+ info(`[pageqa] 下次可零模型回放:pageqa --replay ${scriptPath}`);
353
+ }
186
354
  const out = args.json ? result.json : result.text;
187
355
  if (args.out) {
188
- const { writeFileSync } = await import("node:fs");
189
356
  writeFileSync(args.out, out + "\n");
190
357
  }
191
358
  process.stdout.write(out + "\n");
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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"}