# weappRunner
**Repository Path**: tanjunyi/weapp-runner
## Basic Information
- **Project Name**: weappRunner
- **Description**: 小程序自动化测试工具
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2020-11-06
- **Last Updated**: 2023-05-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# weappRunner
## 基础架构
渲染线程:
- React
- mobx
- antd
主线程:
- electron
通信:
- IPC
### 进度:
| 任务 | 说明 | 进度 |
| ------------ | -------- | ----------------------------------- |
| react | 基础建设 | √ |
| mobx | 基础建设 | √ |
| less | 基础建设 | √ |
| antd | 基础建设 | √ |
| react-router | 基础建设 | √ |
| electron | 基础建设 | √ |
| ipc | 基础建设 | √ |
| canvas | 基础建设 | √ |
## 图形方面设计:
封装图形操作底层库
- 图形渲染层 rect circle ..
- 原生事件层 move ,keyup, keydown ,hover
- 组件:
- Button(click, longpress)
- Input(change)
- Scroll(ScrollTo, ScrollHeight, swipe)
- 路由(Navigate,redirect,switchTab)
-
- 获取元素 XML+style 结构
- 条件判断
- IF
- WaiteFor
## 开发者工具能力
- 清空 cookie
- 获取当前页面路径
## 通信方面
- 封装消息中间件
- 时间总线 EventBus,线程通信 IPC
- createRect, deleteCircle
## 代码生成/代码导出
- ~~1,通过 ast 生成~~
- 2,通过模版引擎生成
## 后期项目规划:
- 1,socket 版本,提供远程查看进度的能力
- 2,模版可以导出成代码,代码也可以导入生成模型
- ~~3,预览小程序界面~~
## 开发进度记录:
第一周迭代日程:
| 序号 | 任务 |时间 |状态 |
| ---- | ---- | ---- |---- |
| 1 | 线条自动弯曲,使用直线代替斜线 |2020-11-02 |已完成|
| 2 | 拖动粘连,即拖动的时候线条也要变化 |2020-11-03 |已完成|
| 3 | 点击 panner 元素时新增对应类型的元素 |2020-11-04 |已完成|
| 4 | 生成模板代码美化 |2020-11-04 |已完成|
| 5 | 控制脚本的执行,暂停,动态新增脚本 |2020-11-05 |已完成|
| 6 | 引入 mobx,将配置信息全局化 |2020-11-07 |已完成|
| 7 | 引入 less |2020-11-07 |已完成|
| 8 | 引入 antd |2020-11-07 |已完成|
| 9 | 项目一期整合 |2020-11-07 |已完成|
| 10 | 创建项目配置 |2020-11-07 |已完成|
| 11 | 项目本地化保存 |2020-11-08 |开发中|
第二周迭代日程:
| 序号 | 任务 |时间 |状态 |
| ---- | ---- | ---- |---- |
| 1 | 整理路由,基础框架(设置/测试脚本/报告) |2020-11-09 |已完成|
| 2 | 从项目创建->绘图->自动生成代码数据打通 |2020-11-09 |已完成|
| 3 | 箭头修改,按照 45 度调整方向 |2020-11-10 |已完成|
| 4 | 元素通过 id/文本反向查找 |2020-11-11 |已完成|
| 5 | 验证 launch 返回的对象 |2020-11-1 |已完成|
| 6 | 验证 xml+style 重绘页面 |2020-11-12 |已取消|
| 7 | 重置窗口大小 |2020-11-12 |已完成|
| 8 | 梳理图形渲染依赖关系 |2020-11-13 |已完成|
| 9 | 重构绘图部分逻辑 |2020-11-16 |已完成|
| 10 | 编写工具栏面板 |2020-11-14 |开发中|
| 11 | 创建元素 |2020-11-14 |开发中|
第三周迭代日程:
| 序号 | 任务 |时间 |状态 |
| ---- | ---- | ---- |---- |
| 1 | 开发工具栏 |2020-11-18 |已完成|
| 2 | 整体流程打通 |2020-11-19 |已完成|
| 3 | 展示搜索结果元素类型 |2020-11-22 |已完成|
| 4 | 添加元素详情 |2020-11-22 |开发中|
| 5 | 工具栏 tab 分组 |2020-11-22 |开发中|
| 6 | 滚动联调 |2020-11-22 |已完成|
| 7 | 滚动到元素的位置 |2020-11-22 |已完成|
第四周迭代日程:
| 1 | 验证功能联调 |2020-11-26 |已完成|
| 2 | 通过 class 返回多个元素选择 |2020-11-28 |已完成|
| 3 | 元素单一性 |2020-11-28 |已完成|
| 4 | 测试脚本/测试用例开发 |2020-11-28 |已完成|
| 5 | 操作记录展示 |2020-11-29 |已完成|
第五周迭代日程:
| 1 | 测试脚本/测试用例编辑 |2020-12-03 |已完成|
| 2 | 导航栏/工具栏开发/滚动定位 |2020-12-05 |已完成|
| 3 | 整体页面布局重构 |2020-12-05 |已完成|
| 4 | 保存功能开发 |2020-12-06 |已完成|
| 5 | 删除页面/执行联调 |2020-12-07 |已完成|
第六周迭代日程:
| 1 | 页面路径支持修改 |2020-12-12 |已完成|
| 2 | test 脚本执行 |2020-12-12 |已完成|
| 3 | 页面路径自动切换 |2020-12-13 |已完成|
| 4 | 执行延迟,执行结果展示 |2020-12-13 |已完成|
| 5 | 生成 js 代码 |2020-12-13 |开发中|
第七周迭代日程:
| 1 | 支持代码导出 |2020-12-20 |已完成|
| 2 | 调试导出的 jest 文件 |2020-12-21 |已完成|
## 待开发
- 执行结果快照
- 工具栏必填性验证
- 功能接入 Jenkins
- 提供复制粘贴功能
- 获取开发者工具抛出的异常
##
Automator 模块提供了启动及连接开发者工具的方法。开发者可以对连接地址、端口号、项目路径等作出设置。归根结底是对于 cli 的包装。详见:Automator
```
路由方法。控制小程序的跳转
系统信息。与 API 的 wx.getSystemInfo 等价
转调、mock 以及恢复微信 API 对象 wx 上的方法
在 APP 对象上注入方法、向小程序暴露方法
截图、滚动等方法
测试真机、截图、测试账号、关闭等方法
打印事件、报错事件
```
模块提供了控制小程序页面的方法。提供以下几类支持
```
页面路径方法
页面元素选取方法
页面元素/逻辑钩子方法
页面数组方法
页面行为方法
页面方法调用代理
```
Element 模块提供了控制小程序页面元素的方法。提供以下几类支持,详见:Element
```
元素本身属性获取方法
元素子代与后继选择器方法
元素事件触发方法
元素数据访问方法
元素方法访问代理方法
```
## 遗留问题:
- 无法截图:
- 描述:创建小程序时需要对开发者工具截图,运行过程中也需要对错误页面截图。
- 原因:小程序官方关闭了该方法,通过工具库 => MiniProgram => screenshot 方法可以获取到截图加密串,但无法解开
- 真机调试:
- 描述:测试人员希望可以不通过安装开发者工具,或者具有开发者权限的账号即可测试
- 原因:目前实现机制是基于开发者工具,真机调试也只能借助于开发者工具的真机调试功能。体验较差,后期再寻找执行方法。