服务选项
服务选项是在服务实例化时设置的选项,将用于每个方法调用。
// wdio.conf.(js|ts)
export const config = {
// ...
// =====
// Setup
// =====
services: [
[
"visual",
{
// The options
},
],
],
// ...
};
默认选项
addressBarShadowPadding
- 类型:
number - 必须: 否
- 默认值:
6 - 支持的应用上下文: Web
需要添加到 iOS 和 Android 地址栏的内边距,以便正确裁剪视口。
autoElementScroll
- 类型:
boolean - 必须: 否
- 默认值:
true - 支持的应用上下文: Web, Hybrid App (Webview)
此选项允许你禁用创建元素截图时自动将元素滚动到视图中的功能。
addIOSBezelCorners
- 类型:
boolean - 必须: 否
- 默认值:
false - 支持的应用上下文: Web, Hybrid App (Webview), Native App
为 iOS 设备的截图添加边框角和刘海/灵动岛。
这只能在设备名称能自动确定并匹配以下规范化设备名称列表时完成。规范化将由此模块完成。 iPhone:
- iPhone X:
iphonex - iPhone XS:
iphonexs - iPhone XS Max:
iphonexsmax - iPhone XR:
iphonexr - iPhone 11:
iphone11 - iPhone 11 Pro:
iphone11pro - iPhone 11 Pro Max:
iphone11promax - iPhone 12:
iphone12 - iPhone 12 Mini:
iphone12mini - iPhone 12 Pro:
iphone12pro - iPhone 12 Pro Max:
iphone12promax - iPhone 13:
iphone13 - iPhone 13 Mini:
iphone13mini - iPhone 13 Pro:
iphone13pro - iPhone 13 Pro Max:
iphone13promax - iPhone 14:
iphone14 - iPhone 14 Plus:
iphone14plus - iPhone 14 Pro:
iphone14pro - iPhone 14 Pro Max:
iphone14promaxiPads: - iPad Mini 6th Generation:
ipadmini - iPad Air 4th Generation:
ipadair - iPad Air 5th Generation:
ipadair - iPad Pro (11-inch) 1st Generation:
ipadpro11 - iPad Pro (11-inch) 2nd Generation:
ipadpro11 - iPad Pro (11-inch) 3rd Generation:
ipadpro11 - iPad Pro (12.9-inch) 3rd Generation:
ipadpro129 - iPad Pro (12.9-inch) 4th Generation:
ipadpro129 - iPad Pro (12.9-inch) 5th Generation:
ipadpro129
autoSaveBaseline
- 类型:
boolean - 必须: 否
- 默认值:
true - 支持的应用上下文: Web, Hybrid App (Webview), Native App
如果在比较期间找不到基准图像,则自动将图像复制到基准文件夹。
alwaysSaveActualImage
- 类型:
boolean - 必须: 否
- 默认值:
true - 支持的应用上下文: 所有
当将此选项设置为 false 时,它将:
- 当没有差异时不保存实际图像
- 当
createJsonReportFiles设置为true时不存储 jsonreport 文件。它还会在日志中显示createJsonReportFiles已禁用的警告
这应该能提高性能,因为没有文件写入系统,并且应该确保 actual 文件夹中没有太多噪音。
baselineFolder
- 类型:
string|()=> string - 必须: 否
- 默认值:
.path/to/testfile/__snapshots__/ - 支持的应用上下文: Web, Hybrid App (Webview), Native App
将保存比较期间使用的所有基准图像的目录。如果未设置,将使用默认值,该值会将文件存储在执行视觉测试的规范旁边的 __snapshots__/ 文件夹中。也可以使用返回 string 的函数来设置 baselineFolder 值:
{
baselineFolder: path.join(process.cwd(), 'foo', 'bar', 'baseline')
},
// OR
{
baselineFolder: () => {
// Do some magic here
return path.join(process.cwd(), 'foo', 'bar', 'baseline');
}
}
clearRuntimeFolder
- 类型:
boolean - 必须: 否
- 默认值:
false - 支持的应用上下文: Web, Hybrid App (Webview), Native App
在初始化时删除运行时文件夹(actual 和 diff)
这仅在通过插件选项设置 screenshotPath 时有效,当你在方法中设置文件夹时将不起作用
createJsonReportFiles (新)
- 类型:
boolean - 必须: 否
- 默认值:
false
现在你可以选择将比较结果导出到 JSON 报告文件。通过提供选项 createJsonReportFiles: true,每个比较的图像都会创建一个存储在 actual 文件夹中的报告,与每个 actual 图像结果一起。输出将如下所示:
{
"parent": "check methods",
"test": "should fail comparing with a baseline",
"tag": "examplePageFail",
"instanceData": {
"browser": {
"name": "chrome-headless-shell",
"version": "126.0.6478.183"
},
"platform": {
"name": "mac",
"version": "not-known"
}
},
"commandName": "checkScreen",
"boundingBoxes": {
"diffBoundingBoxes": [
{
"left": 1088,
"top": 717,
"right": 1186,
"bottom": 730
}
//....
],
"ignoredBoxes": [
{
"left": 159,
"top": 652,
"right": 356,
"bottom": 703
}
//...
]
},
"fileData": {
"actualFilePath": "/Users/wdio/visual-testing/.tmp/actual/desktop_chrome-headless-shellexamplePageFail-local-chrome-latest-1366x768.png",
"baselineFilePath": "/Users/wdio/visual-testing/localBaseline/desktop_chrome-headless-shellexamplePageFail-local-chrome-latest-1366x768.png",
"diffFilePath": "/Users/wdio/visual-testing/.tmp/diff/desktop_chrome-headless-shell/examplePageFail-local-chrome-latest-1366x768png",
"fileName": "examplePageFail-local-chrome-latest-1366x768.png",
"size": {
"actual": {
"height": 768,
"width": 1366
},
"baseline": {
"height": 768,
"width": 1366
},
"diff": {
"height": 768,
"width": 1366
}
}
},
"misMatchPercentage": "12.90",
"rawMisMatchPercentage": 12.900729014153246
}
当所有测试执行完毕后,将生成一个包含比较集合的新 JSON 文件,可以在 actual 文件夹的根目录中找到。数据按以下方式分组:
- Jasmine/Mocha 的
describe或 CucumberJS 的Feature - Jasmine/Mocha 的
it或 CucumberJS 的Scenario然后按以下方式排序: commandName,用于比较图像的比较方法名称instanceData,先是浏览器,然后是设备,最后是平台 它将如下所示:
[
{
"description": "check methods",
"data": [
{
"test": "should fail comparing with a baseline",
"data": [
{
"tag": "examplePageFail",
"instanceData": {},
"commandName": "checkScreen",
"framework": "mocha",
"boundingBoxes": {
"diffBoundingBoxes": [],
"ignoredBoxes": []
},
"fileData": {},
"misMatchPercentage": "14.34",
"rawMisMatchPercentage": 14.335403703025868
},
{
"tag": "exampleElementFail",
"instanceData": {},
"commandName": "checkElement",
"framework": "mocha",
"boundingBoxes": {
"diffBoundingBoxes": [],
"ignoredBoxes": []
},
"fileData": {},
"misMatchPercentage": "1.34",
"rawMisMatchPercentage": 1.335403703025868
}
]
}
]
}
]
报告数据将为你提供构建自己的视觉报告的机会,而无需自己完成所有魔术和数据收集。
你需要使用 @wdio/visual-testing 版本 5.2.0 或更高版本
disableBlinkingCursor
- 类型:
boolean - 必须: 否
- 默认值:
false - 支持的应用上下文: Web, Hybrid App (Webview)
启用/禁用应用程序中所有 input、textarea、[contenteditable] 光标的"闪烁"。如果设置为 true,则在截屏前将光标设置为 transparent,完成后重置
disableCSSAnimation
- 类型:
boolean - 必须: 否
- 默认值:
false - 支持的应用上下文: Web, Hybrid App (Webview)
启用/禁用应用程序中的所有 CSS 动画。如果设置为 true,则在截屏前将禁用所有动画,完成后重置