wetest
工具使用场景/边界
wetest当前能力致力于解决业务绝大部分基础场景的无代码自动化测试(80%场景),未来wetest将进一步深度开发,以达到90%以上的业务场景支持度
场景支持度
场景 | 支持度 |
---|---|
表格场景 | 支持 |
表单场景 | 支持 |
多标签页 | 支持 |
静态页面 | 支持 |
画布场景 | 暂不支持 |
事件支持度
事件 | 支持度 | 未来计划 |
---|---|---|
click | 支持 | – |
auxclick | 支持 | – |
hover | 支持 | – |
input | 支持 | – |
keydown | 支持 | – |
dragAndDrop | 暂不支持 | 下个迭代支持 |
dbclick | 暂不支持 | 下个迭代支持 |
断言支持度
断言 | 支持度 | 未来计划 |
---|---|---|
元素快照 | 支持 | – |
元素截图 | 支持 | – |
url断言 | 支持 | – |
全屏截图 | 支持 | – |
相反断言 | 暂不支持 | 下个迭代支持 |
文本断言 | 暂不支持 | 下个迭代支持 |
环境要求
- node > 16.18.0
工具使用者准备工作(user)
npm i -g playwright
npm i -g @idux/wetest-cli
工具开发者准备工作(developer)
npm i -g pnpm
pnpm install
pnpm build
pnpm dev
cd packages/cli
pnpm link -g
开始(user and developer)
编写工具配置.wetest.js:
通过wetest init 命令生成wetest初始配置,配置说明如下:
wetest init
{
recorder: {
// selector相关的开放配置
selector: {
// 元素埋点标记,当不配置的该项的时候,使用wetest无埋点选择器
buryingPoint: '',
// 不作为选择器的class
excludeClass: [],
// 不作为选择器的包含以下修饰的class,例如xxxx_btn-hover
excludeClassModify: /(-hover|active)/,
// 不作为选择器的属性
excludeAttr: /(id-.*)/,
// 排除指定内容的id,例如id="id-xxx"的ID不会作为有效选择器
excludeIdByVal: /(id-.*)/
}
},
runner: {
// 无头浏览器信息,可以增加firefox、webkit浏览器信息
userAgent: {
chromium: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'
},
// 登录url,用来判断是否过期需要重登录
loginUrl: 'https://github.com/login',
// 不需要等待的请求,这列请求对业务没有影响,但对自动化执行可能会形成阻塞
abortUrl: /(.*sentry_key.*|.*matomo.*)/
}
}
.wetest.js放置在执行wetest命令根目录下,通过-c 参数指定位置
录制用例
输入启动录制命令:wetest record [pageURL] -o [caseDir] -c [.wetest.jsDir]
解释:为要打开的页面,caseDir为录制的用例存放目录
[pageURL] 需要打开进行录制的页面
-o [caseDir] 录制的用例输出存放目录
-c [.wetest.jsDir] 工具配置文件的存放位置,一般在命令执行根目录新建.wetest.js文件
录制命令其他参数:
-b [browser] 启动录制的浏览器,当前支持chrome、firefox、webkit
-c [.wetest.jsDir] 工具配置文件.wetest.js的存放位置
例子:wetest record https://github.com -o tests -c .wetest.js
自动回归用例:
输入启动录制命令:wetest run [caseDir] -c [.wetest.jsDir]
解释:
[caseDir]为录制的用例存放目录
-c [.wetest.jsDir] 工具配置文件的存放位置,一般在命令执行根目录新建.wetest.js文件
回放命令其他参数:
-hl [headless] 是否启动无头浏览器执行用例
-fb [fileGlob] flob语法筛选回放制定的目录用例
-ai [action-interval] 设置每个回放动作的间隔时间
例子:wetest run tests -c .wetest.js -hl
错误报告:
wetest执行完自动化用例后,会在__reporter__生成错误报告(单页web应用),需要在__reporter__下启动服务查看(可用http-server包启动服务)
报告包含了所有自动化用例的执行情况,包括:用例报告、错误报告、用例每一步的执行情况,强烈推荐使用报告中的快速定位错误功能
developer
如何调试
- 对于wetest工具层面层面的调试,在开启pnpm dev后(当然是已经pnpm link -g过了),强烈推荐使用visual studio code中terminal的JavaScript Debug terminal断点调试
- 对于自动化报告应用,是独立的Vue单页应用,按照Vue应用调试即可,需要注意的是,自动化报告应用在构建后会复制到@idux/wetest-wetest上,每次执行完用例后注入报告数据,所以如果报告应用要结合报告数据调试的话,目前只能执行完用例后在__reporter__上启动web服务查看,这点确实比较麻烦一些
项目结构介绍
cli
提供命令行工具,引用了engine的代码
engine
基于playwright二次封装,提供录制和回归的功能
│ assertor.ts // 断言器
│ browserManager.ts // 浏览器管理,管理page和context
│ caseManager.ts // 用例管理器
│ mockProxy.ts // 数据代理器
│ recorder.ts // 录制器
│ runner.ts // 回归器
inject
提供工具栏和事件监听等功能,engine通过playwright的api引入,在启动record时,注入inject代码,挂载工具栏和事件监听
ai-selector
元素选择器,用于定位操作的元素,执行无埋点生成选择器,当然有埋点更佳,维护性会更好一些
share
公共的东西
web
wetest报告源码