• 简体中文
  • Midscene Test 概览

    Midscene Test(@midscene/test)是面向自然语言的 E2E 测试框架。用 YAML 描述操作和预期,需要精确控制的逻辑交给 TypeScript。开始使用 Midscene Test

    AI 操作与业务操作写在同一个 YAML 里

    YAML 中的每个步骤都调用一个 Node:AI 操作、平台操作或自定义业务操作,组合起来就是一个用例。

    cases/refund.yaml
    beforeEach:  - order.prepare: { status: paid }业务  - gotoUrl: ${shopUrl}/orders/latest业务cases:  - name: 已支付订单支持全额退款    steps:      - aiAct: 申请全额退款并提交AI      - aiAssert: 页面显示退款申请已提交AI      - order.checkRefund: { status: refunding }业务afterEach:  - clearCookies: {}业务

    让人和 AI 共同维护测试用例

    把可复用的业务逻辑封装成自定义 Node。Midscene Test 会生成 Markdown 格式的 Node 说明书(Node Spec),列出每个 Node 及其参数,测试工程师和 AI Agent 无需阅读 TypeScript 就能编写用例。了解如何开发自定义 Node

    1. nodes/order.ts
      defineNode({
        name: 'order.prepare',
        description: "创建测试订单",
        inputSchema: z.strictObject({
          status: z.literal('paid'),
        }),
        async execute({ input }) {
          await orders.create(input);
        },
      });
    2. midscene-node-spec.md
      ### order.prepare
      创建测试订单
      - status: "paid"
    3. case.yaml
      steps:
        - order.prepare:
            status: paid

    测试框架能力

    Midscene Test 同样具备测试框架应有的能力:生命周期钩子与资源清理、失败重试与超时、隔离的并发执行,以及精确到步骤的报告。

    生命周期钩子与资源清理

    通过 setup、fileSetup、beforeAll、beforeEach 及对应的清理钩子,分别在项目、文件和用例层级准备与清理资源。用例失败、超时或按下 Ctrl+C 后,清理流程仍会执行。

    项目生命周期

    失败重试与超时

    失败用例可以重试,每次尝试都会重新执行 beforeEach、步骤和 afterEach。可以设置步骤超时,用 continue-on-error 在步骤失败后继续执行,用 bail 提前停止。

    失败时如何执行

    并发与隔离

    通过 maxConcurrentFiles 并发运行多个 YAML 文件。fileSetup 为每个文件准备独立的页面、Agent 或设备,并发文件之间不共享状态。

    并发与资源隔离

    精确到步骤的报告

    HTML 报告记录每个步骤的截图、输入、输出、错误和 Agent 回放。通过 #runner-step=last-error 链接,可以从 CI 通知或 PR 评论直接打开最近一次失败的步骤;summary.json 和 result.md 则供脚本和 AI Agent 读取。

    输出与报告

    下一步

    从旧版 YAML 运行器迁移

    旧版 tasks/flow YAML 运行器已进入维护状态,仅保留兼容更新和必要修复。新项目和新增用例推荐使用 Midscene Test。已有项目可以继续使用 midscene 命令;如需迁移到 midscene-test,请参阅迁移到 Midscene Test。