pageqa 0.2.2 → 0.4.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 +96 -9
- package/dist/agent.d.ts +2 -1
- package/dist/agent.js +79 -1
- package/dist/agent.js.map +1 -1
- package/dist/bsk/tools.js +45 -1
- package/dist/bsk/tools.js.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/report.d.ts +43 -0
- package/dist/report.js +73 -4
- package/dist/report.js.map +1 -1
- package/dist/vars.d.ts +20 -0
- package/dist/vars.js +70 -0
- package/dist/vars.js.map +1 -0
- package/examples/element-plus-upload.md +13 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
<https://github.com/user-attachments/assets/d5315f93-7e02-4445-a7cf-506b3bfcaa2d>
|
|
6
6
|
|
|
7
|
-
- 运行时:**Node.js + TypeScript
|
|
7
|
+
- 运行时:**Node.js + TypeScript**,以 npm 包分发、CLI 入口;仓库开发使用 **pnpm**(锁文件为 `pnpm-lock.yaml`)。
|
|
8
8
|
- 浏览器驱动:**browserskill(`bsk`)**,连接一个已运行的真实浏览器(Chrome/Edge),支持公开页与登录态页面。
|
|
9
9
|
- 自然语言驱动:**pi-agent-core** 状态化 agent,把自然语言意图解析为浏览器操作步骤并自动编排;LLM 后端通过可配置的 OpenAI 兼容端点接入(base URL / API Key / 模型均可配置)。
|
|
10
10
|
|
|
@@ -30,6 +30,14 @@ bsk session start # 可选:手动创建 session(不传 --session 时 page
|
|
|
30
30
|
|
|
31
31
|
> 提示:本工具的 `--session <id>` 即来自 `bsk session start` 返回的 `session_id`;不传时 CLI 会自动新建一个(前提已有浏览器连接)。
|
|
32
32
|
|
|
33
|
+
> **重点提示:要执行「文件上传」用例,必须先给 bsk 浏览器扩展开启「允许访问文件网址(Allow access to file URLs)」,否则上传一定失败。**
|
|
34
|
+
>
|
|
35
|
+
> 开启方式(Edge / Chrome):打开 `edge://extensions`(或 `chrome://extensions`)→ 找到 BrowserSkill 扩展 → 点「详细信息」→ 打开「允许访问文件网址」开关 → 回到扩展卡片点一次「重新加载」(必要时重启浏览器)。
|
|
36
|
+
>
|
|
37
|
+
> 未开启时的典型报错:`the upload trigger did not activate a file input`,以及 `the browser could not attach the staged file to the input ... {"code":-32000,"message":"Not allowed"}`。
|
|
38
|
+
>
|
|
39
|
+
> 这是浏览器级设置,**pageqa 与 bsk 都无法自动开启**(Agent Window 也无法打开 `edge://` 页面),必须人工开一次;开启后本机所有上传用例都可用。
|
|
40
|
+
|
|
33
41
|
### 2. LLM 后端(可配置 OpenAI 兼容端点)
|
|
34
42
|
|
|
35
43
|
自然语言解析依赖一个 OpenAI 兼容的 LLM 端点。端点地址、密钥与模型均可通过配置文件或环境变量设置:
|
|
@@ -118,17 +126,17 @@ bsk session start # 可选:手动创建 session(不传 --session 时 page
|
|
|
118
126
|
|
|
119
127
|
## 安装
|
|
120
128
|
|
|
121
|
-
|
|
129
|
+
本地开发(仓库使用 pnpm,请先安装:`npm install -g pnpm`):
|
|
122
130
|
|
|
123
131
|
```bash
|
|
124
|
-
|
|
125
|
-
|
|
132
|
+
pnpm install --frozen-lockfile
|
|
133
|
+
pnpm run build
|
|
126
134
|
```
|
|
127
135
|
|
|
128
136
|
全局安装(发布后):
|
|
129
137
|
|
|
130
138
|
```bash
|
|
131
|
-
npm install -g pageqa
|
|
139
|
+
npm install -g pageqa # 或 pnpm add -g pageqa
|
|
132
140
|
pageqa --init-config # 在用户目录创建配置文件 ~/.pageqa/config.json
|
|
133
141
|
```
|
|
134
142
|
|
|
@@ -155,6 +163,40 @@ pageqa --suite "打开 https://example.com 并断言标题包含 Example"
|
|
|
155
163
|
|
|
156
164
|
脚本(`.md`/`.txt`)中用 `## 场景名` 分隔多个独立测试场景,CLI 会逐个运行、分别给出结论,并汇总整体 PASS/FAIL 与总退出码(任一场景失败则整体失败)。
|
|
157
165
|
|
|
166
|
+
### Token 消耗
|
|
167
|
+
|
|
168
|
+
每次运行结束后,报告**末尾**会给出本次运行的 LLM token 消耗(多场景套件在每个场景与末尾合计处各输出一行):
|
|
169
|
+
|
|
170
|
+
```text
|
|
171
|
+
---
|
|
172
|
+
Token 消耗: 输入 446 / 输出 136 / 缓存读 6720 / 缓存写 0 / 合计 7302(LLM 调用 4 次)
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
- 数据来自各轮 assistant 消息的 `usage`(含自动续跑的轮次),`输入/输出/缓存读/缓存写` 为分项,`合计` 取端点返回的 `totalTokens`。
|
|
176
|
+
- JSON 报告(`--json`)中为 `usage` 字段:`{ input, output, cacheRead, cacheWrite, reasoning, total, calls }`。
|
|
177
|
+
- 若 LLM 端点未返回 usage(合计为 0),会在同一行标注「端点未返回 usage」,避免把 0 误读成真实消耗。
|
|
178
|
+
|
|
179
|
+
### 脚本占位符(运行时变量)
|
|
180
|
+
|
|
181
|
+
脚本里可以写 `${timestamp}` 之类的占位符,CLI 在读取脚本时按本机当前时间展开。同一次运行内所有占位符共用同一时刻,所以「名称 + 时间戳」这类用例既不会重名,也不必每次手工改时间戳:
|
|
182
|
+
|
|
183
|
+
```md
|
|
184
|
+
## P1 创建产品
|
|
185
|
+
|
|
186
|
+
打开 https://example.com/product
|
|
187
|
+
点击「新增」,填写产品名称 `自动化测试产品${timestamp}`
|
|
188
|
+
断言页面包含 `自动化测试产品${timestamp}`
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
| 占位符 | 展开结果 |
|
|
192
|
+
| --- | --- |
|
|
193
|
+
| `${timestamp}` | `yyyyMMddHHmm`,如 `202609191146` |
|
|
194
|
+
| `${date}` / `${time}` | `yyyyMMdd` / `HHmmss` |
|
|
195
|
+
| `${datetime}` | `yyyyMMddHHmmss` |
|
|
196
|
+
| `${timestamp:<格式>}` | 自定义格式,支持 `yyyy` `yy` `MM` `dd` `HH` `mm` `ss` `SSS`,如 `${timestamp:yyyy-MM-dd HH:mm}` |
|
|
197
|
+
|
|
198
|
+
未识别的占位符(如 `${PATH}`)原样保留,不会被替换。完整示例:`examples/plm-product-bom.md`。
|
|
199
|
+
|
|
158
200
|
### CLI 选项
|
|
159
201
|
|
|
160
202
|
| 选项 | 说明 |
|
|
@@ -168,12 +210,38 @@ pageqa --suite "打开 https://example.com 并断言标题包含 Example"
|
|
|
168
210
|
|
|
169
211
|
退出码:`0` 全部断言通过;`1` 任一断言失败/错误/无法执行。可直接接入 CI。
|
|
170
212
|
|
|
213
|
+
### 文件上传
|
|
214
|
+
|
|
215
|
+
脚本里直接写「点击某个上传按钮上传本地文件 `<绝对路径>`」,agent 会调用 `upload` 工具完成(可运行 `examples/element-plus-upload.md` 体验):
|
|
216
|
+
|
|
217
|
+
```md
|
|
218
|
+
## U1 点击 Click to upload 上传图片
|
|
219
|
+
|
|
220
|
+
打开 https://element-plus.org/zh-CN/component/upload
|
|
221
|
+
点击示例中的「Click to upload」按钮并上传本地文件 D:\Downloads\example.png
|
|
222
|
+
等待 2 秒,让上传列表完成渲染
|
|
223
|
+
断言页面中已出现上传的文件名 example.png
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
pageqa examples/element-plus-upload.md
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
要点(踩过的坑):
|
|
231
|
+
|
|
232
|
+
- **先开扩展权限**:见「前置 → 1. 安装并配置 browserskill」中的重点提示。未开启时上传必然失败,报 `Not allowed`。
|
|
233
|
+
- `target` 传**触发文件选择器的元素**(按钮的 `@eN` 或 CSS 选择器);不要传隐藏的 `input[type=file]`——它没有可见几何,bsk 会拒绝点击并报 `target element has no visible geometry`。省略 `target` 时由 bsk 自动在页面中查找文件输入框。
|
|
234
|
+
- **不要先 `click` 上传按钮再调用上传**:原生系统文件选择框无法被自动化操作,单独 click 会把流程挂住。`upload` 会自己点击触发元素并接管文件选择器。
|
|
235
|
+
- 路径必须是**本机绝对路径且文件真实存在**:`upload` 会先校验,不存在直接报错,不会默默跳过。
|
|
236
|
+
- 像 `el-upload` 这类「点击按钮 → 页面 JS 触发隐藏 input」的组件,首次尝试可能返回 `did not activate a file input`(时序问题,不是权限问题);此时重试一次即可成功。
|
|
237
|
+
- 上传动作成功不等于用例通过:**真伪仍由页面断言决定**。若站点把文件提交到外部接口而接口不可用(例如 element-plus 文档示例提交到 `run.mocky.io`,本机证书校验失败),组件会在上传失败后移除该文件,此时「断言文件出现在列表中」会如实报 FAIL——这是被测页面的真实行为,不是工具问题。
|
|
238
|
+
|
|
171
239
|
## 工作原理
|
|
172
240
|
|
|
173
241
|
```
|
|
174
242
|
自然语言意图
|
|
175
243
|
└─> pi-agent-core Agent(LLM: pi-ai 自定义 provider -> 可配置 OpenAI 兼容端点)
|
|
176
|
-
└─> bsk 工具:navigate / snapshot / click / fill / hover / scroll / wait / assert_text
|
|
244
|
+
└─> bsk 工具:navigate / snapshot / click / fill / upload / hover / scroll / wait / assert_text
|
|
177
245
|
└─> 真实浏览器(bsk 连接)
|
|
178
246
|
└─> 结论与证据 -> 报告(文本/JSON)+ 退出码
|
|
179
247
|
```
|
|
@@ -183,13 +251,17 @@ pageqa --suite "打开 https://example.com 并断言标题包含 Example"
|
|
|
183
251
|
- `navigate(url)` 打开网页
|
|
184
252
|
- `snapshot()` 读取页面 aria 树与可见文本(标题、段落、链接、按钮等)
|
|
185
253
|
- `click(target)` / `fill(target, value)` / `hover(target)` 元素交互(target 用 `@eN` 引用或 CSS 选择器)
|
|
254
|
+
- `upload(target, file)` 上传本地文件(target 为触发文件选择器的元素,省略则由 bsk 自动查找文件输入框)
|
|
186
255
|
- `scroll(target)` / `wait(ms)` 滚动与等待
|
|
187
256
|
- `assert_text(expectation)` 断言页面是否包含指定文本,返回「成立/不成立」与证据
|
|
188
257
|
|
|
258
|
+
**长流程保护(自动续跑)**:一轮对话结束后,如果 agent 自报的进度没跑满(`步骤完成:k/n` 且 `k < n`),或者用例里写了断言但报告只解析到一部分,pageqa 会自动补一次「继续执行剩余步骤」的提示并继续跑,最多 5 轮;续跑后进度与断言数都没有推进就停止。这样可以避免模型做完一两步就自行收尾、却让报告看起来正常的情况。
|
|
259
|
+
|
|
189
260
|
## 验证
|
|
190
261
|
|
|
191
262
|
```bash
|
|
192
|
-
|
|
263
|
+
pnpm test # 端到端冒烟:需 bsk daemon 已连接浏览器 + LLM 端点可用
|
|
264
|
+
pnpm run test:unit # 仅单元测试:不依赖浏览器与 LLM
|
|
193
265
|
```
|
|
194
266
|
|
|
195
267
|
冒烟测试覆盖:A1 打开+标题断言、A2 元素交互与断言、A3 失败可读原因与退出码、A4 文本/JSON 报告。需 bsk daemon 连接浏览器且 LLM 端点可用。
|
|
@@ -202,7 +274,18 @@ pageqa examples/smoke.md --json
|
|
|
202
274
|
|
|
203
275
|
## CI 集成
|
|
204
276
|
|
|
205
|
-
|
|
277
|
+
**`.github/workflows/ci.yml`**:在 `master`/`main` 的 push 与 PR 上运行,流程为 pnpm 冻结锁文件安装(`pnpm install --frozen-lockfile`)→ `pnpm run build` → `pnpm run test:unit`。
|
|
278
|
+
|
|
279
|
+
端到端冒烟(`examples/smoke.md`)需要 bsk daemon、已连接的真实浏览器与可用的 LLM 端点,GitHub 托管 runner 上不具备这些条件,因此不在仓库 CI 中运行。若要在自己的 CI 里跑端到端,用环境变量注入 LLM 端点(`PAGEQA_LLM_BASE_URL` / `PAGEQA_LLM_API_KEY` / `PAGEQA_LLM_MODEL`,建议放仓库 Secrets):
|
|
280
|
+
|
|
281
|
+
```bash
|
|
282
|
+
pnpm run build
|
|
283
|
+
node dist/index.js --json examples/smoke.md
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
任一断言失败会返回非零退出码,可直接作为 CI 门禁。
|
|
287
|
+
|
|
288
|
+
**`.github/workflows/release.yml`**:推送 `v*` tag 时触发,`check` job 先冻结锁文件安装并构建,随后通过 npm **OIDC 可信发布**(依赖 `id-token: write`,无需 `NPM_TOKEN`)发布到 npm 并自动创建 GitHub Release。发布产物附带 SLSA provenance 证明,因此 `package.json` 中的 `repository` 字段必须与仓库地址一致,不可删除。
|
|
206
289
|
|
|
207
290
|
## 目录
|
|
208
291
|
|
|
@@ -211,7 +294,11 @@ src/
|
|
|
211
294
|
index.ts CLI 入口
|
|
212
295
|
agent.ts 编排器(pi-agent-core Agent + bsk 工具 + 报告)
|
|
213
296
|
llm.ts LLM 后端(pi-ai 自定义 provider -> 可配置 OpenAI 兼容端点)
|
|
214
|
-
bsk/tools.ts browserskill
|
|
297
|
+
bsk/tools.ts browserskill 工具层(含 upload 文件上传)
|
|
215
298
|
report.ts 报告解析与渲染
|
|
299
|
+
examples/
|
|
300
|
+
smoke.md 示例套件(A1–A3)
|
|
301
|
+
github-star.md GitHub Star 用例
|
|
302
|
+
element-plus-upload.md 文件上传用例(点击 Click to upload 上传本地图片)
|
|
216
303
|
tests/smoke.test.mjs 端到端验证
|
|
217
304
|
```
|
package/dist/agent.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type TestReport } from "./report.js";
|
|
1
|
+
import { type TestReport, type TokenUsage } from "./report.js";
|
|
2
2
|
export interface AgentOptions {
|
|
3
3
|
session?: string;
|
|
4
4
|
systemPrompt?: string;
|
|
@@ -9,6 +9,7 @@ export interface AgentRunResult {
|
|
|
9
9
|
text: string;
|
|
10
10
|
json: string;
|
|
11
11
|
transcript: string;
|
|
12
|
+
usage: TokenUsage;
|
|
12
13
|
}
|
|
13
14
|
interface Scenario {
|
|
14
15
|
name: string;
|
package/dist/agent.js
CHANGED
|
@@ -3,7 +3,7 @@ import { createLlmBackend } from "./llm.js";
|
|
|
3
3
|
import { createBskTools, ensureSession, ensureBskReady } from "./bsk/tools.js";
|
|
4
4
|
import { JevClient } from "./jev.js";
|
|
5
5
|
import { loadConfig } from "./config.js";
|
|
6
|
-
import { buildReport } from "./report.js";
|
|
6
|
+
import { addUsage, buildReport, countAssertions, emptyUsage, formatUsage, mergeUsage, parseAssertions, parseProgress, } from "./report.js";
|
|
7
7
|
const DEFAULT_SYSTEM_PROMPT = [
|
|
8
8
|
"你是「页面测试 agent」。你根据用户的自然语言测试意图,驱动浏览器完成端到端测试。",
|
|
9
9
|
"",
|
|
@@ -11,6 +11,7 @@ const DEFAULT_SYSTEM_PROMPT = [
|
|
|
11
11
|
"- navigate(url): 打开网页",
|
|
12
12
|
"- snapshot(): 读取页面 aria 树与可见文本(标题、段落、链接、按钮等),并定位元素",
|
|
13
13
|
"- click(target) / fill(target, value) / hover(target): 元素交互,target 用 @eN 引用或 CSS 选择器",
|
|
14
|
+
"- upload(target, file): 上传本地文件到文件输入框/上传区域,target 传触发上传的元素(或省略由工具自动查找)",
|
|
14
15
|
"- scroll(target) / wait(ms): 滚动与等待",
|
|
15
16
|
"- assert_text(expectation): 断言页面是否包含某文本,返回「成立/不成立」与证据",
|
|
16
17
|
"",
|
|
@@ -27,6 +28,7 @@ const DEFAULT_SYSTEM_PROMPT = [
|
|
|
27
28
|
"- 结尾必须单独输出一行进度声明,格式固定:`步骤完成:<已完成步骤数>/<总步骤数>`。",
|
|
28
29
|
" 例如共 7 个步骤且全部完成时输出 `步骤完成:7/7`;只完成 4 步则输出 `步骤完成:4/7`。",
|
|
29
30
|
"- 若某步骤确实无法完成(元素找不到、操作被拒绝等),明确说明该步骤失败及原因,然后继续或终止,但仍要如实输出进度声明。",
|
|
31
|
+
"- 只要还有未执行的步骤,就继续调用工具执行下一步,不要中途停下等待用户输入;只有全部步骤都执行(或已明确失败)后才输出进度声明并收尾。",
|
|
30
32
|
"- 工具调用失败(如 click 找不到元素、超时)不等于该步骤失败:必须先重新 snapshot 定位元素后重试;同一操作连续两次失败才可判定该步骤失败。",
|
|
31
33
|
"",
|
|
32
34
|
"硬性约束(违反即视为测试失败):",
|
|
@@ -34,6 +36,7 @@ const DEFAULT_SYSTEM_PROMPT = [
|
|
|
34
36
|
"- 严禁在尚未 snapshot 确认页面内容的情况下就断言;若 snapshot 返回内容为空或明显不是目标页面,应报告「不成立」并说明原因,而不是编造结论。",
|
|
35
37
|
"- 严禁在步骤未执行完的情况下给出「测试通过」结论;宁可报告某步骤失败,也不要静默省略步骤。",
|
|
36
38
|
"- 不要编造未观察到的内容;若元素不存在、导航失败或页面未打开,明确说明。",
|
|
39
|
+
"- 涉及文件上传时必须用 upload 工具:原生系统文件选择框无法被自动化点击,直接 click 上传按钮会卡住流程。",
|
|
37
40
|
"",
|
|
38
41
|
"只输出测试结论与证据,不要输出多余解释。",
|
|
39
42
|
].join("\n");
|
|
@@ -44,6 +47,33 @@ const CONTEXT_CHAR_LIMIT = 40_000;
|
|
|
44
47
|
const KEEP_RECENT_MESSAGES = 12;
|
|
45
48
|
const MAX_OLD_TOOL_CHARS = 1_500;
|
|
46
49
|
const TRIMMED_MARK = "(较早的快照已省略";
|
|
50
|
+
// 长流程最常见的失败模式:模型做完一两步就自行收尾(不再调用工具、直接给结论),
|
|
51
|
+
// 后面的步骤根本没执行。这里按 agent 自报的进度/已解析断言数补「继续执行」提示,
|
|
52
|
+
// 直到跑满、确实没有进展或达到次数上限为止。
|
|
53
|
+
const MAX_CONTINUATIONS = 5;
|
|
54
|
+
/** 构造续跑提示:只要求接着做,不重复已完成步骤,并再次强调进度声明格式。 */
|
|
55
|
+
function continuePrompt(progress) {
|
|
56
|
+
const tail = "不要重复已完成的步骤;每完成一步记「第 k 步完成:<结果>」,全部步骤执行完后必须单独输出一行「步骤完成:<已完成数>/<总数>」。";
|
|
57
|
+
if (progress) {
|
|
58
|
+
return (`进度检查:你自报的进度是 ${progress.done}/${progress.total},仍有步骤未执行。` +
|
|
59
|
+
`请从第 ${progress.done + 1} 步开始继续执行剩余步骤,` +
|
|
60
|
+
tail);
|
|
61
|
+
}
|
|
62
|
+
return ("进度检查:你没有输出进度声明「步骤完成:<已完成数>/<总数>」,且用例中的断言/步骤尚未全部执行。" +
|
|
63
|
+
"请继续执行剩余步骤," +
|
|
64
|
+
tail +
|
|
65
|
+
"若确实有步骤无法完成,也要如实输出实际进度。");
|
|
66
|
+
}
|
|
67
|
+
/** 汇总 agent 全部 assistant 消息的 usage(包含每一轮与每次续跑)。 */
|
|
68
|
+
function collectUsage(messages) {
|
|
69
|
+
let acc = emptyUsage();
|
|
70
|
+
for (const m of messages) {
|
|
71
|
+
if (m.role !== "assistant")
|
|
72
|
+
continue;
|
|
73
|
+
acc = addUsage(acc, m.usage);
|
|
74
|
+
}
|
|
75
|
+
return acc;
|
|
76
|
+
}
|
|
47
77
|
/** 粗略估算消息文本总字符数。 */
|
|
48
78
|
function estimateChars(messages) {
|
|
49
79
|
let n = 0;
|
|
@@ -159,6 +189,41 @@ export async function runAgent(input, opts = {}) {
|
|
|
159
189
|
await agent.prompt(input);
|
|
160
190
|
log("[runAgent] prompt 完成,等待 idle...");
|
|
161
191
|
await agent.waitForIdle();
|
|
192
|
+
// 续跑:只在「有明确证据表明还没执行完」时才追问,避免正常用例被多余打扰。
|
|
193
|
+
// 证据 = agent 自报进度未满,或用例中断言数还没跑够。
|
|
194
|
+
const expectedAssertions = countAssertions(input);
|
|
195
|
+
let lastSignature = null;
|
|
196
|
+
for (let round = 0; round < MAX_CONTINUATIONS; round++) {
|
|
197
|
+
if (agent.state.errorMessage)
|
|
198
|
+
break;
|
|
199
|
+
const transcriptSoFar = events.join("");
|
|
200
|
+
const progress = parseProgress(transcriptSoFar);
|
|
201
|
+
const parsed = parseAssertions(transcriptSoFar).length;
|
|
202
|
+
const incomplete = progress
|
|
203
|
+
? progress.done < progress.total
|
|
204
|
+
: expectedAssertions > 0 && parsed < expectedAssertions;
|
|
205
|
+
if (!incomplete)
|
|
206
|
+
break;
|
|
207
|
+
const signature = (progress ? `${progress.done}/${progress.total}` : "-") + "|" + parsed;
|
|
208
|
+
if (round > 0 && signature === lastSignature) {
|
|
209
|
+
log("[runAgent] 续跑后进度未推进(" + signature + "),停止续跑");
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
lastSignature = signature;
|
|
213
|
+
const note = "[continue] 第 " +
|
|
214
|
+
(round + 1) +
|
|
215
|
+
" 次续跑(进度 " +
|
|
216
|
+
(progress ? `${progress.done}/${progress.total}` : "未声明") +
|
|
217
|
+
",断言 " +
|
|
218
|
+
parsed +
|
|
219
|
+
"/" +
|
|
220
|
+
expectedAssertions +
|
|
221
|
+
")\n";
|
|
222
|
+
events.push(note);
|
|
223
|
+
log("[runAgent] " + note.trim());
|
|
224
|
+
await agent.prompt(continuePrompt(progress));
|
|
225
|
+
await agent.waitForIdle();
|
|
226
|
+
}
|
|
162
227
|
log("[runAgent] idle 完成,耗时=" + (Date.now() - t0) + "ms");
|
|
163
228
|
// 循环可能因模型报错/上下文超限而提前结束;此时绝不能当成「正常跑完」。
|
|
164
229
|
const agentError = agent.state.errorMessage;
|
|
@@ -179,11 +244,16 @@ export async function runAgent(input, opts = {}) {
|
|
|
179
244
|
});
|
|
180
245
|
}
|
|
181
246
|
log("[runAgent] 断言数=" + report.assertions.length + ",状态=" + report.status);
|
|
247
|
+
// token 消耗:从每条 assistant 消息的 usage 汇总,渲染在报告末尾。
|
|
248
|
+
const usage = collectUsage(agent.state.messages);
|
|
249
|
+
report.usage = usage;
|
|
250
|
+
log("[runAgent] " + formatUsage(usage));
|
|
182
251
|
return {
|
|
183
252
|
report,
|
|
184
253
|
text: renderText(report),
|
|
185
254
|
json: JSON.stringify(report, null, 2),
|
|
186
255
|
transcript,
|
|
256
|
+
usage,
|
|
187
257
|
};
|
|
188
258
|
}
|
|
189
259
|
/** 把一个脚本拆分为多个场景(按 `## ` 二级标题分隔)。无标题则整体作为一个场景。 */
|
|
@@ -229,6 +299,7 @@ export async function runSuite(script, opts = {}) {
|
|
|
229
299
|
const overall = results.every((r) => r.report.status === "pass")
|
|
230
300
|
? "pass"
|
|
231
301
|
: "fail";
|
|
302
|
+
const usage = results.reduce((acc, r) => mergeUsage(acc, r.usage), emptyUsage());
|
|
232
303
|
const summary = {
|
|
233
304
|
status: overall,
|
|
234
305
|
assertions: results.flatMap((r, i) => r.report.assertions.map((a) => ({
|
|
@@ -246,12 +317,14 @@ export async function runSuite(script, opts = {}) {
|
|
|
246
317
|
"\n" +
|
|
247
318
|
r.transcript.trim())
|
|
248
319
|
.join("\n\n"),
|
|
320
|
+
usage,
|
|
249
321
|
};
|
|
250
322
|
return {
|
|
251
323
|
report: summary,
|
|
252
324
|
text: renderSuiteText(summary, results, scenarios),
|
|
253
325
|
json: JSON.stringify(summary, null, 2),
|
|
254
326
|
transcript: summary.transcript,
|
|
327
|
+
usage,
|
|
255
328
|
};
|
|
256
329
|
}
|
|
257
330
|
function verdictTag(v) {
|
|
@@ -272,6 +345,8 @@ function renderText(r) {
|
|
|
272
345
|
lines.push("摘要: " + r.summary);
|
|
273
346
|
lines.push("---");
|
|
274
347
|
lines.push(r.transcript.trim());
|
|
348
|
+
lines.push("---");
|
|
349
|
+
lines.push(formatUsage(r.usage));
|
|
275
350
|
return lines.join("\n");
|
|
276
351
|
}
|
|
277
352
|
function renderSuiteText(summary, results, scenarios) {
|
|
@@ -292,9 +367,12 @@ function renderSuiteText(summary, results, scenarios) {
|
|
|
292
367
|
lines.push(assertionLine(a));
|
|
293
368
|
if (r.report.summary)
|
|
294
369
|
lines.push(" 摘要: " + r.report.summary);
|
|
370
|
+
lines.push(" " + formatUsage(r.usage));
|
|
295
371
|
});
|
|
296
372
|
lines.push("");
|
|
297
373
|
lines.push("汇总: " + summary.summary);
|
|
374
|
+
lines.push("---");
|
|
375
|
+
lines.push(formatUsage(summary.usage));
|
|
298
376
|
return lines.join("\n");
|
|
299
377
|
}
|
|
300
378
|
//# sourceMappingURL=agent.js.map
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/bsk/tools.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { execFileSync, spawn } from "node:child_process";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
2
3
|
/**
|
|
3
4
|
* browserskill(`bsk`)工具层:把 bsk CLI 命令包装成 pi-agent-core 的 AgentTool。
|
|
4
5
|
*
|
|
@@ -193,6 +194,39 @@ export function createBskTools(opts) {
|
|
|
193
194
|
return ok(`已在 ${p.target} 填入文本\n${out}`);
|
|
194
195
|
},
|
|
195
196
|
};
|
|
197
|
+
const upload = {
|
|
198
|
+
name: "upload",
|
|
199
|
+
label: "Upload",
|
|
200
|
+
description: "上传本地文件到页面的文件输入框或上传区域(如 el-upload 的「Click to upload」按钮)。" +
|
|
201
|
+
"target 传触发文件选择器的元素(@eN 或 CSS 选择器),也可直接传隐藏的 <input type=\"file\">;" +
|
|
202
|
+
"不传 target 时 bsk 自动在页面中查找文件输入框。" +
|
|
203
|
+
"注意:原生文件选择框无法被自动化点击,因此不要先 click 触发按钮再调用本工具," +
|
|
204
|
+
"直接调用 upload 并指定该按钮为 target 即可。",
|
|
205
|
+
// SAFETY: 结构匹配 AgentTool["parameters"]
|
|
206
|
+
parameters: {
|
|
207
|
+
type: "object",
|
|
208
|
+
properties: {
|
|
209
|
+
target: {
|
|
210
|
+
type: "string",
|
|
211
|
+
description: "触发文件选择器的元素(@eN 引用或 CSS 选择器),或 file input 本身",
|
|
212
|
+
},
|
|
213
|
+
file: { type: "string", description: "待上传的本地文件绝对路径" },
|
|
214
|
+
},
|
|
215
|
+
required: ["file"],
|
|
216
|
+
},
|
|
217
|
+
execute: async (_id, params) => {
|
|
218
|
+
const p = params;
|
|
219
|
+
if (!existsSync(p.file)) {
|
|
220
|
+
throw new Error(`待上传文件不存在:${p.file}`);
|
|
221
|
+
}
|
|
222
|
+
const args = ["upload"];
|
|
223
|
+
if (p.target)
|
|
224
|
+
args.push(p.target);
|
|
225
|
+
args.push("--file", p.file, ...quiet);
|
|
226
|
+
const out = bsk(args);
|
|
227
|
+
return ok(`已上传文件 ${p.file}\n${out}`);
|
|
228
|
+
},
|
|
229
|
+
};
|
|
196
230
|
const hover = {
|
|
197
231
|
name: "hover",
|
|
198
232
|
label: "Hover",
|
|
@@ -301,7 +335,17 @@ export function createBskTools(opts) {
|
|
|
301
335
|
return ok(`断言「${p.expectation}」:${verdict}。${evidence}`);
|
|
302
336
|
},
|
|
303
337
|
};
|
|
304
|
-
return [
|
|
338
|
+
return [
|
|
339
|
+
navigate,
|
|
340
|
+
snapshot,
|
|
341
|
+
click,
|
|
342
|
+
fill,
|
|
343
|
+
upload,
|
|
344
|
+
hover,
|
|
345
|
+
scroll,
|
|
346
|
+
wait,
|
|
347
|
+
assertText,
|
|
348
|
+
];
|
|
305
349
|
}
|
|
306
350
|
/** 创建一个 bsk session;若已提供且仍在活跃列表中则复用,否则新建。 */
|
|
307
351
|
export function ensureSession(existing) {
|
package/dist/bsk/tools.js.map
CHANGED
|
@@ -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
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { readFileSync } from "node:fs";
|
|
3
3
|
import { runAgent, runSuite } from "./agent.js";
|
|
4
4
|
import { ensureConfigDir, CONFIG_PATH, loadConfig } from "./config.js";
|
|
5
|
+
import { expandVars, VAR_HELP } from "./vars.js";
|
|
5
6
|
function parseArgs(argv) {
|
|
6
7
|
const args = {
|
|
7
8
|
json: false,
|
|
@@ -59,6 +60,9 @@ const HELP = `pageqa - 自然语言驱动的页面测试工具(pi-agent-core +
|
|
|
59
60
|
--debug 显示调试日志(LLM 思考、工具调用耗时、Jev 请求详情)
|
|
60
61
|
-h, --help 显示帮助
|
|
61
62
|
|
|
63
|
+
脚本占位符:
|
|
64
|
+
${VAR_HELP}
|
|
65
|
+
|
|
62
66
|
配置:
|
|
63
67
|
- 首次运行会在用户目录自动创建配置文件:~/.pageqa/config.json
|
|
64
68
|
(Windows: %USERPROFILE%\\.pageqa\\config.json)
|
|
@@ -86,13 +90,13 @@ function readInput(input) {
|
|
|
86
90
|
if (!input.includes("\n") &&
|
|
87
91
|
(input.endsWith(".md") || input.endsWith(".txt"))) {
|
|
88
92
|
try {
|
|
89
|
-
return readFileSync(input, "utf8");
|
|
93
|
+
return expandVars(readFileSync(input, "utf8"));
|
|
90
94
|
}
|
|
91
95
|
catch {
|
|
92
96
|
// 不是文件:视为内联文本
|
|
93
97
|
}
|
|
94
98
|
}
|
|
95
|
-
return input;
|
|
99
|
+
return expandVars(input);
|
|
96
100
|
}
|
|
97
101
|
async function main() {
|
|
98
102
|
const args = parseArgs(process.argv.slice(2));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/report.d.ts
CHANGED
|
@@ -3,12 +3,46 @@ export interface AssertionResult {
|
|
|
3
3
|
verdict: "pass" | "fail";
|
|
4
4
|
evidence?: string;
|
|
5
5
|
}
|
|
6
|
+
/** 一次运行的 LLM token 用量汇总(跨多轮对话累加)。 */
|
|
7
|
+
export interface TokenUsage {
|
|
8
|
+
input: number;
|
|
9
|
+
output: number;
|
|
10
|
+
cacheRead: number;
|
|
11
|
+
cacheWrite: number;
|
|
12
|
+
reasoning: number;
|
|
13
|
+
/** 端点给出的 totalTokens 之和(缺失时按 input+output+缓存 计算)。 */
|
|
14
|
+
total: number;
|
|
15
|
+
/** LLM 调用次数(assistant 消息条数)。 */
|
|
16
|
+
calls: number;
|
|
17
|
+
}
|
|
6
18
|
export interface TestReport {
|
|
7
19
|
status: "pass" | "fail";
|
|
8
20
|
assertions: AssertionResult[];
|
|
9
21
|
summary?: string;
|
|
10
22
|
transcript: string;
|
|
23
|
+
/** token 消耗,渲染在报告末尾;旧结构仍可用(可选字段)。 */
|
|
24
|
+
usage?: TokenUsage;
|
|
25
|
+
}
|
|
26
|
+
/** 单次 LLM 调用的原始用量(pi-ai 的 `Usage`,字段允许缺失)。 */
|
|
27
|
+
export interface RawUsage {
|
|
28
|
+
input?: number;
|
|
29
|
+
output?: number;
|
|
30
|
+
cacheRead?: number;
|
|
31
|
+
cacheWrite?: number;
|
|
32
|
+
reasoning?: number;
|
|
33
|
+
totalTokens?: number;
|
|
11
34
|
}
|
|
35
|
+
/** 尚未发生 LLM 调用时的零用量。 */
|
|
36
|
+
export declare function emptyUsage(): TokenUsage;
|
|
37
|
+
/** 累加一次 LLM 调用的用量。 */
|
|
38
|
+
export declare function addUsage(acc: TokenUsage, usage: RawUsage): TokenUsage;
|
|
39
|
+
/** 合并两份用量(多场景套件汇总用)。 */
|
|
40
|
+
export declare function mergeUsage(a: TokenUsage, b: TokenUsage): TokenUsage;
|
|
41
|
+
/**
|
|
42
|
+
* 渲染成一行文本(报告末行)。
|
|
43
|
+
* 端点未返回 usage 时如实标注,避免把「0 token」误读成真实消耗。
|
|
44
|
+
*/
|
|
45
|
+
export declare function formatUsage(usage?: TokenUsage): string;
|
|
12
46
|
/**
|
|
13
47
|
* 从 agent 的结论文本中解析断言结果。agent 会以「成立/不成立」给出每个断言,
|
|
14
48
|
* 并用「断言「X」:成立。证据...」句式。无法解析时降级为基于 PASS/FAIL 关键字的整体判断。
|
|
@@ -16,3 +50,12 @@ export interface TestReport {
|
|
|
16
50
|
export declare function buildReport(input: string, transcript: string): TestReport;
|
|
17
51
|
/** 统计用例(自然语言测试步骤)中的断言数量,用于校验执行完整性。 */
|
|
18
52
|
export declare function countAssertions(script: string): number;
|
|
53
|
+
/**
|
|
54
|
+
* 解析 agent 的进度声明「步骤完成:M/N」。
|
|
55
|
+
* 取最后一次声明:续跑时 agent 会输出多条进度,只有最后一条代表当前状态。
|
|
56
|
+
*/
|
|
57
|
+
export declare function parseProgress(text: string): {
|
|
58
|
+
done: number;
|
|
59
|
+
total: number;
|
|
60
|
+
} | null;
|
|
61
|
+
export declare function parseAssertions(text: string): AssertionResult[];
|
package/dist/report.js
CHANGED
|
@@ -1,3 +1,67 @@
|
|
|
1
|
+
/** 尚未发生 LLM 调用时的零用量。 */
|
|
2
|
+
export function emptyUsage() {
|
|
3
|
+
return {
|
|
4
|
+
input: 0,
|
|
5
|
+
output: 0,
|
|
6
|
+
cacheRead: 0,
|
|
7
|
+
cacheWrite: 0,
|
|
8
|
+
reasoning: 0,
|
|
9
|
+
total: 0,
|
|
10
|
+
calls: 0,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
/** 累加一次 LLM 调用的用量。 */
|
|
14
|
+
export function addUsage(acc, usage) {
|
|
15
|
+
const input = usage.input ?? 0;
|
|
16
|
+
const output = usage.output ?? 0;
|
|
17
|
+
const cacheRead = usage.cacheRead ?? 0;
|
|
18
|
+
const cacheWrite = usage.cacheWrite ?? 0;
|
|
19
|
+
return {
|
|
20
|
+
input: acc.input + input,
|
|
21
|
+
output: acc.output + output,
|
|
22
|
+
cacheRead: acc.cacheRead + cacheRead,
|
|
23
|
+
cacheWrite: acc.cacheWrite + cacheWrite,
|
|
24
|
+
reasoning: acc.reasoning + (usage.reasoning ?? 0),
|
|
25
|
+
total: acc.total + (usage.totalTokens ?? input + output + cacheRead + cacheWrite),
|
|
26
|
+
calls: acc.calls + 1,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** 合并两份用量(多场景套件汇总用)。 */
|
|
30
|
+
export function mergeUsage(a, b) {
|
|
31
|
+
return {
|
|
32
|
+
input: a.input + b.input,
|
|
33
|
+
output: a.output + b.output,
|
|
34
|
+
cacheRead: a.cacheRead + b.cacheRead,
|
|
35
|
+
cacheWrite: a.cacheWrite + b.cacheWrite,
|
|
36
|
+
reasoning: a.reasoning + b.reasoning,
|
|
37
|
+
total: a.total + b.total,
|
|
38
|
+
calls: a.calls + b.calls,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 渲染成一行文本(报告末行)。
|
|
43
|
+
* 端点未返回 usage 时如实标注,避免把「0 token」误读成真实消耗。
|
|
44
|
+
*/
|
|
45
|
+
export function formatUsage(usage) {
|
|
46
|
+
if (!usage)
|
|
47
|
+
return "Token 消耗: 不可用(未采集到用量)";
|
|
48
|
+
const line = "Token 消耗: 输入 " +
|
|
49
|
+
usage.input +
|
|
50
|
+
" / 输出 " +
|
|
51
|
+
usage.output +
|
|
52
|
+
" / 缓存读 " +
|
|
53
|
+
usage.cacheRead +
|
|
54
|
+
" / 缓存写 " +
|
|
55
|
+
usage.cacheWrite +
|
|
56
|
+
" / 合计 " +
|
|
57
|
+
usage.total +
|
|
58
|
+
"(LLM 调用 " +
|
|
59
|
+
usage.calls +
|
|
60
|
+
" 次)";
|
|
61
|
+
return usage.calls > 0 && usage.total === 0
|
|
62
|
+
? line + "(端点未返回 usage)"
|
|
63
|
+
: line;
|
|
64
|
+
}
|
|
1
65
|
/**
|
|
2
66
|
* 从 agent 的结论文本中解析断言结果。agent 会以「成立/不成立」给出每个断言,
|
|
3
67
|
* 并用「断言「X」:成立。证据...」句式。无法解析时降级为基于 PASS/FAIL 关键字的整体判断。
|
|
@@ -41,9 +105,14 @@ export function buildReport(input, transcript) {
|
|
|
41
105
|
export function countAssertions(script) {
|
|
42
106
|
return (script.match(/断言/g) ?? []).length;
|
|
43
107
|
}
|
|
44
|
-
/**
|
|
45
|
-
|
|
46
|
-
|
|
108
|
+
/**
|
|
109
|
+
* 解析 agent 的进度声明「步骤完成:M/N」。
|
|
110
|
+
* 取最后一次声明:续跑时 agent 会输出多条进度,只有最后一条代表当前状态。
|
|
111
|
+
*/
|
|
112
|
+
export function parseProgress(text) {
|
|
113
|
+
const re = /步骤完成\s*[::]\s*(\d+)\s*[//]\s*(\d+)/g;
|
|
114
|
+
const matches = [...text.matchAll(re)];
|
|
115
|
+
const m = matches.at(-1);
|
|
47
116
|
if (!m)
|
|
48
117
|
return null;
|
|
49
118
|
const done = Number(m[1]);
|
|
@@ -52,7 +121,7 @@ function parseProgress(text) {
|
|
|
52
121
|
return null;
|
|
53
122
|
return { done, total };
|
|
54
123
|
}
|
|
55
|
-
function parseAssertions(text) {
|
|
124
|
+
export function parseAssertions(text) {
|
|
56
125
|
const results = [];
|
|
57
126
|
// 预处理:
|
|
58
127
|
// 1) 去掉 markdown 加粗标记(agent 常输出「…:**成立**」)
|
package/dist/report.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"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"}
|
package/dist/vars.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 脚本运行时变量:读取测试脚本时把 `${...}` 占位符替换为本次运行的实际取值,
|
|
3
|
+
* 避免用例名称里的时间戳被写死(例如反复运行会撞名)。
|
|
4
|
+
*
|
|
5
|
+
* 支持 `${名称}` 与 `${名称:<格式>}` 两种写法:
|
|
6
|
+
* - timestamp -> yyyyMMddHHmm(默认格式)
|
|
7
|
+
* - date -> yyyyMMdd
|
|
8
|
+
* - time -> HHmmss
|
|
9
|
+
* - datetime -> yyyyMMddHHmmss
|
|
10
|
+
* 自定义格式支持 yyyy / yy / MM / dd / HH / mm / ss / SSS 组合,例如
|
|
11
|
+
* `${timestamp:yyyy-MM-dd HH:mm}`。
|
|
12
|
+
*
|
|
13
|
+
* 未识别的名称或格式原样保留,因此脚本里写 `${PATH}` 之类的字面量不会被误替换。
|
|
14
|
+
*/
|
|
15
|
+
/** 按本机本地时间格式化,支持 yyyy/yy/MM/dd/HH/mm/ss/SSS。 */
|
|
16
|
+
export declare function formatLocalTime(date: Date, pattern: string): string;
|
|
17
|
+
/** 展开脚本中的运行时变量占位符;同一脚本共用同一时刻,保证各处取值一致。 */
|
|
18
|
+
export declare function expandVars(script: string, now?: Date): string;
|
|
19
|
+
/** 供 `--help`/文档展示的占位符清单(读取脚本时按运行时本地时间展开)。 */
|
|
20
|
+
export declare const VAR_HELP: string;
|
package/dist/vars.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 脚本运行时变量:读取测试脚本时把 `${...}` 占位符替换为本次运行的实际取值,
|
|
3
|
+
* 避免用例名称里的时间戳被写死(例如反复运行会撞名)。
|
|
4
|
+
*
|
|
5
|
+
* 支持 `${名称}` 与 `${名称:<格式>}` 两种写法:
|
|
6
|
+
* - timestamp -> yyyyMMddHHmm(默认格式)
|
|
7
|
+
* - date -> yyyyMMdd
|
|
8
|
+
* - time -> HHmmss
|
|
9
|
+
* - datetime -> yyyyMMddHHmmss
|
|
10
|
+
* 自定义格式支持 yyyy / yy / MM / dd / HH / mm / ss / SSS 组合,例如
|
|
11
|
+
* `${timestamp:yyyy-MM-dd HH:mm}`。
|
|
12
|
+
*
|
|
13
|
+
* 未识别的名称或格式原样保留,因此脚本里写 `${PATH}` 之类的字面量不会被误替换。
|
|
14
|
+
*/
|
|
15
|
+
const PRESETS = {
|
|
16
|
+
timestamp: "yyyyMMddHHmm",
|
|
17
|
+
date: "yyyyMMdd",
|
|
18
|
+
time: "HHmmss",
|
|
19
|
+
datetime: "yyyyMMddHHmmss",
|
|
20
|
+
};
|
|
21
|
+
const PLACEHOLDER = /\$\{([A-Za-z_][A-Za-z0-9_]*)(?::([^}]*))?\}/g;
|
|
22
|
+
function pad(n, len) {
|
|
23
|
+
return String(n).padStart(len, "0");
|
|
24
|
+
}
|
|
25
|
+
/** 按本机本地时间格式化,支持 yyyy/yy/MM/dd/HH/mm/ss/SSS。 */
|
|
26
|
+
export function formatLocalTime(date, pattern) {
|
|
27
|
+
return pattern.replace(/yyyy|yy|MM|dd|HH|mm|ss|SSS/g, (token) => {
|
|
28
|
+
switch (token) {
|
|
29
|
+
case "yyyy":
|
|
30
|
+
return pad(date.getFullYear(), 4);
|
|
31
|
+
case "yy":
|
|
32
|
+
return pad(date.getFullYear() % 100, 2);
|
|
33
|
+
case "MM":
|
|
34
|
+
return pad(date.getMonth() + 1, 2);
|
|
35
|
+
case "dd":
|
|
36
|
+
return pad(date.getDate(), 2);
|
|
37
|
+
case "HH":
|
|
38
|
+
return pad(date.getHours(), 2);
|
|
39
|
+
case "mm":
|
|
40
|
+
return pad(date.getMinutes(), 2);
|
|
41
|
+
case "ss":
|
|
42
|
+
return pad(date.getSeconds(), 2);
|
|
43
|
+
case "SSS":
|
|
44
|
+
return pad(date.getMilliseconds(), 3);
|
|
45
|
+
default:
|
|
46
|
+
return token;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/** 展开脚本中的运行时变量占位符;同一脚本共用同一时刻,保证各处取值一致。 */
|
|
51
|
+
export function expandVars(script, now = new Date()) {
|
|
52
|
+
return script.replace(PLACEHOLDER, (whole, name, pattern) => {
|
|
53
|
+
const preset = Object.prototype.hasOwnProperty.call(PRESETS, name)
|
|
54
|
+
? PRESETS[name]
|
|
55
|
+
: undefined;
|
|
56
|
+
if (preset === undefined)
|
|
57
|
+
return whole;
|
|
58
|
+
const fmt = pattern?.trim();
|
|
59
|
+
return formatLocalTime(now, fmt ? fmt : preset);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/** 供 `--help`/文档展示的占位符清单(读取脚本时按运行时本地时间展开)。 */
|
|
63
|
+
export const VAR_HELP = [
|
|
64
|
+
" ${timestamp} yyyyMMddHHmm(如 202609191146)",
|
|
65
|
+
" ${date} / ${time} yyyyMMdd / HHmmss",
|
|
66
|
+
" ${datetime} yyyyMMddHHmmss",
|
|
67
|
+
" ${timestamp:<格式>} 自定义格式,支持 yyyy/yy/MM/dd/HH/mm/ss/SSS",
|
|
68
|
+
" 例:${timestamp:yyyy-MM-dd HH:mm}",
|
|
69
|
+
].join("\n");
|
|
70
|
+
//# sourceMappingURL=vars.js.map
|
package/dist/vars.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vars.js","sourceRoot":"","sources":["../src/vars.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,OAAO,GAA2B;IACtC,SAAS,EAAE,cAAc;IACzB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,gBAAgB;CAC3B,CAAC;AAEF,MAAM,WAAW,GAAG,8CAA8C,CAAC;AAEnE,SAAS,GAAG,CAAC,CAAS,EAAE,GAAW;IACjC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,eAAe,CAAC,IAAU,EAAE,OAAe;IACzD,OAAO,OAAO,CAAC,OAAO,CAAC,6BAA6B,EAAE,CAAC,KAAK,EAAE,EAAE;QAC9D,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,MAAM;gBACT,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;YACpC,KAAK,IAAI;gBACP,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1C,KAAK,IAAI;gBACP,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACrC,KAAK,IAAI;gBACP,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YAChC,KAAK,IAAI;gBACP,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YACjC,KAAK,IAAI;gBACP,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;YACnC,KAAK,IAAI;gBACP,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;YACnC,KAAK,KAAK;gBACR,OAAO,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC;YACxC;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,MAAY,IAAI,IAAI,EAAE;IAC/D,OAAO,MAAM,CAAC,OAAO,CACnB,WAAW,EACX,CAAC,KAAa,EAAE,IAAY,EAAE,OAAgB,EAAE,EAAE;QAChD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;YAChE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;YACf,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACvC,MAAM,GAAG,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5B,OAAO,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC,CACF,CAAC;AACJ,CAAC;AAED,8CAA8C;AAC9C,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,6DAA6D;IAC7D,kDAAkD;IAClD,+CAA+C;IAC/C,kEAAkE;IAClE,gEAAgE;CACjE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Element Plus 上传组件用例:点击 Click to upload 上传本地图片
|
|
2
|
+
|
|
3
|
+
> 本文件是 pageqa 的自然语言测试脚本。`# ` 标题与本节说明会被忽略,只有 `## ` 场景下的内容会被执行。
|
|
4
|
+
> 前置:bsk daemon 已连接一个真实浏览器;本地文件 `D:\Downloads\二维码.png` 存在。
|
|
5
|
+
|
|
6
|
+
## U1 点击 Click to upload 上传文件并校验文件出现在上传列表
|
|
7
|
+
|
|
8
|
+
打开 https://element-plus.org/zh-CN/component/upload
|
|
9
|
+
读取页面内容,确认已进入 Element Plus 的 Upload 上传组件文档页
|
|
10
|
+
在「基础用法」示例中定位显示「Click to upload」的上传触发按钮
|
|
11
|
+
点击该「Click to upload」按钮并上传本地文件 D:\Downloads\二维码.png(用 upload 工具把该按钮作为触发元素,不要单独 click,否则会弹出无法自动化的系统文件选择框)
|
|
12
|
+
等待 2 秒,让上传列表完成渲染
|
|
13
|
+
断言页面中已出现上传的文件名 二维码.png
|