# 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 方法可以获取到截图加密串,但无法解开 - 真机调试: - 描述:测试人员希望可以不通过安装开发者工具,或者具有开发者权限的账号即可测试 - 原因:目前实现机制是基于开发者工具,真机调试也只能借助于开发者工具的真机调试功能。体验较差,后期再寻找执行方法。