简介

Tiga 是一个基于 puppeteerminiprogram-automator 实现的高阶 SDK,它封装了一系列统一的 API 来操控 Chromium / 小程序开发者工具,实现一套脚本用例跑通浏览器和小程序两端的目的。

Tiga 主要为了解决三种场景

  1. 跨端项目的自动化测试;

    由于浏览器和微信小程序的底层架构差异:浏览器应用程序允许同时存在若干个标签页,每个标签独立一个页面实例;而在微信小程序中没有标签的概念,每个页面都是一个页面实例,多个页面共用一个逻辑线程。这会给 API 的统一带来较大的麻烦,完美 Cover 两端的所有场景往往是非常困难的。

    Tiga 的 API 设计考虑以常见的自动化测试场景为出发点,优先解决单标签 Web 应用和小程序的自动化场景,无可避免地对某些关键 API 作出妥协和牺牲(如浏览器环境的 App.goto() 方法),同时也对部分高频 API 在 AppPage 两个层级都进行实现,最大限度地覆盖跨端项目的场景。

  2. 小程序复杂的请求拦截;

    熟悉 miniprogram-automator 小程序官方自动化 SDK 的应该都知道,目前实现请求拦截只能通过 miniProgram.mockWxMethod 方法来覆盖 wx.request 接口的调用结果,这种方式无法实现动态拦截(因为 miniProgram.mockWxMethod 的参数会被序列化),且无法拦截 WebSocket 请求。

    Tiga 引入了 AnyProxy 来启动本地代理服务,通过代理来完成请求拦截,这使得小程序自动化的请求处理非常灵活自由。

    Tiga 的请求拦截采用的渐进式方案,简单场景可以选择不开启代理服务,通过 Http Rule 机制即可实现响应数据覆写。

  3. 测试用例脚本复用;

    有 UI 自动化测试相关经验的同学应该深有体会,测试用例的编写往往是繁杂且枯燥的,Tiga 为了解决用例脚本复用的问题,实现了一套模板化架构,开发者可以结合自身场景把可复用的测试流程抽象出一套自定义用例模板,后续仅需要填充相应的配置即可完成自动化测试,轻松实现 配置即用例。除此之外,Tiga 也会参考通用场景提供预置的用例模板,供开发者开箱即用。

    详情请参考 Tiga 模板化 这一章。

基础架构

Tiga 基础架构

优秀案例

Tiga 可以配合 Jest 等测试框架轻松完成跨端项目的自动化测试。

  1. 官方案例

  2. 京喜自动化容灾演习

    京喜首页已经开始使用 Tiga 来实现自动化容灾演习,详情请参考 jx-taro-automator 项目

注意,如果使用了 jest 等测试框架,可能会导致证书安装的流程被劫持,可以在项目根目录执行:node ./node_modules/@jd/tiga/lib/check-cert.js 手动安装证书。

  1. Tiga API 单元测试

    Tiga 针对几乎每一个 API 都做了单元测试,可以通过参考测试用例的代码来帮助入门:Tiga API 单元测试代码

相关资源