• 简体中文
  • 像人一样看懂界面用自然语言完成 E2E 测试

    Midscene.js 帮助开发者将 AI 引入 E2E 测试,提供基于视觉的 GUI Agent 与可扩展的测试框架,覆盖 Web、移动端和桌面应用。

    15k+Github Stars
    #2Github 趋势榜第2名
    编写测试

    用自然语言描述步骤与预期

    @midscene/test + yaml 格式的用例

    beforeEach:
      - gotoUrl: https://your-shop.example
    
    cases:
      - name: "筛选 100 美元以下的耳机"
        steps:
          - aiAct: "搜索耳机,然后将结果筛选为价格低于 100 美元"
          - aiWaitFor: "筛选后的搜索结果已显示"
          - aiAssert: "搜索结果中有商品,且每件商品价格都低于 100 美元"

    Vitest + JavaScript

    import { test } from 'vitest';
    import { PlaywrightAgent } from '@midscene/web/playwright';
    
    // 省略模型配置、page 初始化与资源清理
    test("筛选 100 美元以下的耳机", async () => {
      const agent = new PlaywrightAgent(page);
      await agent.aiAct("搜索耳机,然后将结果筛选为价格低于 100 美元");
      await agent.aiWaitFor("筛选后的搜索结果已显示");
      await agent.aiAssert("搜索结果中有商品,且每件商品价格都低于 100 美元");
    }, 180_000);
    跨端支持

    一套 API,覆盖不同平台

    @midscene/test

    用 YAML 组织用例 用 TypeScript 扩展

    用自然语言组织测试用例

    在 YAML 中组合界面操作、断言与业务节点,专注描述测试流程。

    把业务能力封装为可复用节点

    用 TypeScript 实现数据准备、接口调用与清理,供不同用例复用。

    自动生成 Node 说明书

    将已注册节点与参数定义导出为 Markdown,让开发者和 AI Agent 了解项目能力,共同编写与维护用例。

    了解 Midscene Test
    YAML 用例
    TypeScript 扩展节点
    Node Spec
    # cases/users.yaml
    # 示例:准备用户数据,再通过界面搜索并验证。需先配置模型与 Web 运行环境,并替换示例网址。
    
    beforeEach:
      - user.create: { name: Alice }
      - gotoUrl: https://your-app.example/users
    
    cases:
      - name: 搜索新建用户
        steps:
          - aiAct: 搜索用户名 Alice
          - aiAssert: 搜索结果中显示用户 Alice

    用自然语言,写下你的第一个 E2E 测试