-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
3 changed files
with
96 additions
and
146 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,57 +1,109 @@ | ||
# @wxa/cli2 | ||
[![NPM version](https://img.shields.io/npm/v/@wxa/cli2/next.svg)](https://www.npmjs.com/package/@wxa/cli2) | ||
![node (scoped with tag, custom registry)](https://img.shields.io/badge/node-%3E%3D%208.15.0-brightgreen.svg?maxAge=2592000) | ||
![NpmLicense](https://img.shields.io/npm/l/@wxa/cli2.svg) | ||
# wxa小程序e2e自动化测试 | ||
* 支持事件 | ||
* bindtap、bindlongpress、bindchange、input、touchstart、touchmove、touchend | ||
* showModal、showActionSheet 回放过程会直接mock掉,界面上不会弹出交互 | ||
* 目前无法支持: | ||
* catchtap、catchlongpress等阻止冒泡事件(自动化element.tap、element.longpress等方法无法阻止冒泡) | ||
* 主动操作返回(因无法监听返回事件,所以录制过程中 *点击物理返回键*、*小程序titlebar返回键*、*ios手势返回*等返回操作,暂无法支持) | ||
* 已知bug: | ||
* 暂无 | ||
* 待优化: | ||
* 不带-r参数时,即回放模式,仅添加元素id(回放测试用例时能找到对应元素),不侵入过多代码(现在会劫持各种tap等事件,植入全局按钮组件) | ||
* 各种未知bug | ||
|
||
[详细的文档](https://wxajs.github.io/wxa/cli/) | ||
2020年3月2日 | ||
# 使用手册 | ||
|
||
[More Detail Documentation](https://wxajs.github.io/wxa/cli/) | ||
### 安装 | ||
1. `npm i -g @wxa/cli2-apple` | ||
2. `npm i -g jest` | ||
3. 项目下安装 `npm i -DE miniprogram-automator looks-same` | ||
|
||
为小程序开发定制的命令行工具。以模块化方式处理项目依赖,通过依赖分析得到整个项目的结构,在优化代码后最终生成目标小程序代码。 | ||
### 测试脚本录制 | ||
* 微信开发者工具,打开对应项目,勾选`不校验合法域名` | ||
* windows系统,wxa.config.js里配置wechatwebdevtools: 微信开发者工具目录 | ||
* 项目目录下执行`wxa2-apple test --e2e -r`,开启录制模式 | ||
* 开始脚本录制,录制完成后脚本会保存在`__wxa_e2e_test__`目录下 | ||
* 脚本都录制完毕后需执行,`wxa2-apple test --e2e --base ` 回放用例并检查录制内容是否正确,且此次回放的截屏会作为后续回放用例的比较基准,用于判断测试是否通过,`--test=test1,test2`可指定要回放的用例,多个用例逗号分隔 | ||
|
||
**插件机制**上面,采用最新webpack设计的[Tapable](https://github.com/webpack/tapable)插件机制,对于熟悉webpack插件开发的人来说,可以快速上手cli的插件开发。 | ||
### 测试脚本回放 | ||
* 开发者工具修改调试基础库 2.7.3以上(src/project.config.json需同步修改libVersion) | ||
* 项目根目录下添加文件`babel.config.js` | ||
|
||
助力**三方开发**。对于三方项目而言,往往需要在使用框架的同时再手写脚本,以保证一个项目能编译到多个小程序。2.0在这方便做了改进,利用依赖分析树针对不同合作方输出不同页面,支持一次性将项目编译到出多个小程序,同时支持监听模式下的一对多(可能会内存占用高,慎用)。 | ||
``` | ||
const path = require('path'); | ||
const existsSync = require('fs').existsSync; | ||
const cwd = process.cwd(); | ||
const babelRuntime = path.join(cwd, 'node_modules', '@babel/runtime/package.json'); | ||
let hasRuntime = existsSync(babelRuntime); | ||
const commonConfigs = { | ||
'plugins': [ | ||
['@babel/plugin-proposal-decorators', {'decoratorsBeforeExport': true}], | ||
['@babel/plugin-proposal-class-properties'], | ||
], | ||
'presets': ['@babel/preset-env'], | ||
## 特性 | ||
- :white_check_mark: **Npm** 直接在项目引入`node_modules`的内容,无需手工复制依赖库。 | ||
- :white_check_mark: **Vue单文件** 组件和页面可以把`js`,`wxss`,`wxml`,`json`写在同一个`.wxa`文件。 | ||
- :white_check_mark: **第三方组件** 在`usingComponents`中直接引入即可。 | ||
- :white_check_mark: **插件机制** 利用插件机制,可以定制自己的文件处理流。 | ||
- :white_check_mark: **编译器** 支持`ES*`, `Sass`, `Stylus`。 | ||
- :white_check_mark: **CLI调用** 无需打开开发者工具,即可预览、上传代码。:airplane: | ||
- :white_check_mark: **三方开发** 一次性编译出多个三方小程序。 | ||
} | ||
if (hasRuntime) { | ||
const pkg = require(babelRuntime); | ||
## TODO | ||
- :ballot_box_with_check: **编译到其他小程序平台** | ||
- :ballot_box_with_check: **小程序原生插件开发** | ||
- :ballot_box_with_check: **Tree-Shaking** | ||
commonConfigs.plugins.unshift(['@babel/plugin-transform-runtime', {'version': pkg.version || '7.2.0'}]); | ||
} | ||
## 安装 | ||
```bash | ||
# 使用npm安装 | ||
npm i -g @wxa/cli2@next | ||
module.exports = { | ||
overrides: [{ | ||
exclude: [/node_modules/, /wxa-cli/], | ||
...commonConfigs | ||
} | ||
,{ | ||
test: /wxa-e2eTest/, | ||
...commonConfigs | ||
}] | ||
} | ||
``` | ||
* `wxa2-apple test --e2e` 进入测试用例回放模式,`--test=test1,test2`指定执行用例,多个用例逗号分隔,操作截屏以时间命名保存在测试用例目录中,带参数`--screenshot`则会与`base_screenshot`的截屏进行diff | ||
|
||
|
||
::: tip 提示 | ||
`@wxa/cli2`运行在node环境中,先安装[node](https://nodejs.org/en/)。 | ||
::: | ||
### 二次开发录制好的测试用例 | ||
通过修改`测试用例/record.js`,可以进行用例二次开发 | ||
record.js是一个数组,每一项Object对应用户一次操作(点击、输入or删除一个字符) | ||
|
||
## 基本用例 | ||
1. 基础编译 | ||
`wxa2 build` | ||
|key|类型|默认值|备注| | ||
| :-----| :---- | :---- | :---- | | ||
| action | Object| 本次操作信息,小程序包装好的事件信息,可<a href="https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html">查看文档</a> | 【type:操作类型,tap touchstart点击,input输入】<br> 【currentTarget.dataset._wxatestuniqueid:触发事件的页面元素id】<br/>| | ||
| screenshotDiff | Boolean| false | 每一步操作截屏,是否要和expect_screenshot进行diff比对。启动命令带--screenshot参数时,忽略该配置,都会截屏diff比对。 | | ||
| coustomExpect | Function| - | 编写自定义期望条件 | | ||
|
||
2. 监听模式 | ||
`wxa2 build --watch` | ||
|
||
3. 指定无效缓存以及打印更详细的构建信息 | ||
`wxa2 build --no-cache --verbose` | ||
|
||
4. 使用模板创建新项目, [template](https://github.com/Genuifx/wxa-templates) | ||
`wxa2 create` | ||
|
||
5. 调用微信开发者工具, windows用户需要在 `wxa.config.js` 设置开发者工具的路径 `wechatwebdevtools` | ||
- `wxa2 cli -a open`: 打开开发者工具 | ||
- `wxa2 cli -a preview`: 预览项目 | ||
- `wxa2 cli -a upload`: 上传项目 | ||
- `wxa2 cli -a login`: 登录微信,`preview`和`upload`都需要登录微信后操作 | ||
# 开发文档 | ||
* wxa下增加.vscode/launch.json文件 | ||
``` | ||
{ | ||
"configurations": [ | ||
{ | ||
"type": "node", | ||
"request": "launch", | ||
"name": "启动程序", | ||
"skipFiles": [ | ||
"<node_internals>/**" | ||
], | ||
"args": ["test", "--e2e", "-r"], | ||
"program": "${workspaceFolder}/packages/wxa-cli/bin/wxa.js", | ||
"cwd": "填入你任意小程序dist目录-绝对路径", | ||
"env": { | ||
"NODE_ENV": "可选,一般为dev或build,根据你的项目写" | ||
}, | ||
"runtimeExecutable": "可选,node位置,我的是/usr/local/opt/nvm/versions/node/v12.13.1/bin/node" | ||
} | ||
] | ||
} | ||
``` | ||
* wxa目录下执行 `npx lerna bootstrap` | ||
* pacakages/wxa-core,执行`npm run dev`,`yarn link` | ||
* 小程序目录执行`yarn link @wxa/core` | ||
* pacakages/wxa-cli,执行`npm run dev` | ||
* vscode启动程序,开始调试开发 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.