Skip to content

Commit

Permalink
chore(e2e): 修改包名、命令、readme
Browse files Browse the repository at this point in the history
re #80
  • Loading branch information
fanniehuang committed Mar 2, 2021
1 parent ede2596 commit eb278a6
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 146 deletions.
136 changes: 94 additions & 42 deletions packages/wxa-cli/README.md
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启动程序,开始调试开发

4 changes: 2 additions & 2 deletions packages/wxa-cli/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "@wxa/cli2",
"name": "@wxa/cli2-apple",
"version": "2.2.16",
"description": "cli for wxa development",
"main": "dist/wxa.js",
Expand All @@ -16,7 +16,7 @@
"author": "iveswen",
"license": "MIT",
"bin": {
"wxa2": "bin/wxa.js"
"wxa2-apple": "bin/wxa.js"
},
"repository": "https://github.com/wxajs/wxa.git",
"homepage": "https://wxajs.github.io/wxa/",
Expand Down
102 changes: 0 additions & 102 deletions packages/wxa-cli/src/tester/readMe.md

This file was deleted.

0 comments on commit eb278a6

Please sign in to comment.