fix: resolve conflicts

This commit is contained in:
徐聪
2024-07-19 15:11:16 +08:00
36 changed files with 2018 additions and 337 deletions

View File

@@ -0,0 +1,59 @@
package uitest
import (
"testing"
"github.com/httprunner/httprunner/v4/hrp"
"github.com/httprunner/httprunner/v4/hrp/pkg/uixt"
)
func TestAndroidDouyinE2E(t *testing.T) {
testCase := &hrp.TestCase{
Config: hrp.NewConfig("直播_抖音_端到端时延_android").
WithVariables(map[string]interface{}{
"device": "${ENV(SerialNumber)}",
"ups": "${ENV(LIVEUPLIST)}",
}).
SetAndroid(uixt.WithSerialNumber("$device"), uixt.WithAdbLogOn(true)),
TestSteps: []hrp.IStep{
hrp.NewStep("启动抖音").
Android().
AppTerminate("com.ss.android.ugc.aweme").
AppLaunch("com.ss.android.ugc.aweme").
Home().
SwipeToTapApp(
"抖音",
uixt.WithMaxRetryTimes(5),
uixt.WithTapOffset(0, -50),
).
Sleep(20).
Validate().
AssertOCRExists("推荐", "进入抖音失败"),
hrp.NewStep("点击放大镜").
Android().
TapXY(0.9, 0.08).
Sleep(5),
hrp.NewStep("输入账号名称").
Android().
Input("$ups").
Sleep(5),
hrp.NewStep("点击搜索").
Android().
TapByOCR("搜索").
Sleep(5),
hrp.NewStep("端到端采集").Loop(5).
Android().
TapByOCR(
"直播中",
uixt.WithIgnoreNotFoundError(true),
uixt.WithIndex(-1),
).
EndToEndDelay(uixt.WithInterval(5), uixt.WithTimeout(120)).
TapByUITypes(uixt.WithScreenShotUITypes("close")),
},
}
if err := testCase.Dump2JSON("android_e2e_delay_test.json"); err != nil {
t.Fatal(err)
}
}

View File

@@ -0,0 +1,146 @@
{
"config": {
"name": "直播_抖音_端到端时延_android",
"variables": {
"device": "${ENV(SerialNumber)}",
"ups": "${ENV(LIVEUPLIST)}"
},
"android": [
{
"serial": "$device",
"log_on": true
}
]
},
"teststeps": [
{
"name": "启动抖音",
"android": {
"actions": [
{
"method": "app_terminate",
"params": "com.ss.android.ugc.aweme"
},
{
"method": "app_launch",
"params": "com.ss.android.ugc.aweme"
},
{
"method": "home"
},
{
"method": "swipe_to_tap_app",
"params": "抖音",
"options": {
"max_retry_times": 5,
"offset": [
0,
-50
]
}
},
{
"method": "sleep",
"params": 20
}
]
},
"validate": [
{
"check": "ui_ocr",
"assert": "exists",
"expect": "推荐",
"msg": "进入抖音失败"
}
]
},
{
"name": "点击放大镜",
"android": {
"actions": [
{
"method": "tap_xy",
"params": [
0.9,
0.08
],
"options": {
}
},
{
"method": "sleep",
"params": 5
}
]
}
},
{
"name": "输入账号名称",
"android": {
"actions": [
{
"method": "input",
"params": "$ups",
"options": {
}
},
{
"method": "sleep",
"params": 5
}
]
}
},
{
"name": "点击搜索",
"android": {
"actions": [
{
"method": "tap_ocr",
"params": "搜索",
"options": {
}
},
{
"method": "sleep",
"params": 5
}
]
}
},
{
"name": "端到端采集",
"android": {
"actions": [
{
"method": "tap_ocr",
"params": "直播中",
"options": {
"ignore_NotFoundError": true,
"index": -1
}
},
{
"method": "live_e2e",
"options": {
"interval": 5,
"timeout": 120
}
},
{
"method": "tap_cv",
"options": {
"screenshot_with_ui_types": [
"close"
]
}
}
]
},
"loops": 5
}
]
}

View File

@@ -0,0 +1,66 @@
{
"config": {
"name": "直播_抖音_关注天窗_android",
"variables": {
"device": "${ENV(SerialNumber)}",
"ups": "${ENV(LIVEUPLIST)}"
},
"android": [
{
"serial": "$device",
"log_on": true,
"close_popup": true
}
]
},
"teststeps": [
{
"name": "启动抖音",
"android": {
"actions": [
{
"method": "app_terminate",
"params": "com.ss.android.ugc.aweme"
},
{
"method": "app_launch",
"params": "com.ss.android.ugc.aweme"
}
]
}
},
{
"name": "处理青少年弹窗",
"android": {
"actions": [
{
"method": "tap_ocr",
"params": "我知道了",
"ignore_NotFoundError": true
}
]
},
"validate": [
{
"check": "ui_ocr",
"assert": "exists",
"expect": "推荐",
"msg": "进入抖音失败"
}
]
},
{
"name": "点击关注",
"android": {
"actions": [
{
"method": "tap_ocr",
"params": "关注",
"index": -1,
"identifier": "click_live_new"
}
]
}
}
]
}

View File

@@ -1,27 +1,223 @@
{
"config": {
"name": "播_抖音_滑动场景_随机间隔_android",
"name": "播_抖极_feed卡片_android",
"variables": {
"device": "${ENV(SerialNumber)}"
},
"android": [
{
"serial": "$device"
"serial": "$device",
"log_on": true,
"close_popup": true
}
]
},
"teststeps": [
{
"name": "启动抖音",
"name": "清理android无关进程",
"android": {
"actions": [
{
"method": "app_terminate",
"params": "com.ss.android.ugc.aweme"
},
{
"method": "app_terminate",
"params": "com.ss.android.ugc.aweme.lite"
},
{
"method": "app_terminate",
"params": "com.smile.gifmaker"
},
{
"method": "app_terminate",
"params": "com.kuaishou.nebula"
},
{
"method": "app_terminate",
"params": "com.tencent.mm"
},
{
"method": "app_terminate",
"params": "com.duowan.kiwi"
},
{
"method": "app_terminate",
"params": "air.tv.douyu.android"
},
{
"method": "app_terminate",
"params": "com.xingin.xhs"
},
{
"method": "app_terminate",
"params": "com.taobao.taobao"
},
{
"method": "app_terminate",
"params": "tv.danmaku.bili"
},
{
"method": "app_terminate",
"params": "com.cmcc.cmvideo"
},
{
"method": "app_terminate",
"params": "com.xunmeng.pinduoduo"
},
{
"method": "app_terminate",
"params": "com.cctv.yangshipin.app.androidp"
}
]
}
},
{
"name": "启动抖音极速版",
"android": {
"actions": [
{
"method": "app_terminate",
"params": "com.ss.android.ugc.aweme.lite"
},
{
"method": "app_launch",
"params": "com.ss.android.ugc.aweme"
"params": "com.ss.android.ugc.aweme.lite"
},
{
"method": "sleep",
"params": 10
},
{
"method": "close_popups",
"options": {
"max_retry_times": 2
}
}
]
},
"validate": [
{
"check": "ui_foreground_app",
"assert": "equal",
"expect": "com.ss.android.ugc.aweme.lite",
"msg": "app [com.ss.android.ugc.aweme.lite] should be in foreground"
}
]
},
{
"name": "处理通讯录弹窗",
"android": {
"actions": [
{
"method": "tap_ocr",
"params": "拒绝",
"ignore_NotFoundError": true
}
]
}
},
{
"name": "处理青少年弹窗",
"android": {
"actions": [
{
"method": "sleep",
"params": 5
},
{
"method": "tap_ocr",
"params": "我知道了",
"ignore_NotFoundError": true
}
]
}
},
{
"name": "点击直播标签,进入直播间",
"android": {
"actions": [
{
"method": "swipe_to_tap_texts",
"params": [
"看直播开宝箱",
"最高领",
"点击进入直播间"
],
"identifier": "click_live_new",
"max_retry_times": 40,
"wait_time": 2,
"direction": [
0.5,
0.8,
0.5,
0.2
],
"scope": [
0.1,
0.5,
0.9,
0.9
],
"offset": [
0,
-100
]
}
]
}
},
{
"name": "等待30s",
"android": {
"actions": [
{
"method": "sleep",
"params": 30
}
]
}
},
{
"name": "下滑进入下一个直播间",
"android": {
"actions": [
{
"method": "swipe",
"params": [
0.5,
0.7,
0.5,
0.1
],
"identifier": "slide_in_live_new"
},
{
"method": "sleep",
"params": 30
}
]
}
},
{
"name": "返回主界面,并打开本地时间戳",
"android": {
"actions": [
{
"method": "app_terminate",
"params": "com.ss.android.ugc.aweme.lite"
},
{
"method": "home"
},
{
"method": "swipe_to_tap_app",
"params": "local",
"max_retry_times": 5,
"offset": [
0,
-50
]
},
{
"method": "sleep",
@@ -31,107 +227,10 @@
},
"validate": [
{
"check": "ui_foreground_app",
"assert": "equal",
"expect": "com.ss.android.ugc.aweme",
"msg": "app [com.ss.android.ugc.aweme] should be in foreground"
}
]
},
{
"name": "处理青少年弹窗",
"android": {
"actions": [
{
"method": "tap_ocr",
"params": "我知道了",
"options": {
"ignore_NotFoundError": true
}
}
]
}
},
{
"name": "滑动 Feed 3 次,随机间隔 0-5s",
"android": {
"actions": [
{
"method": "swipe",
"params": "up",
"options": {}
},
{
"method": "sleep_random",
"params": [
0,
5
]
}
]
},
"loops": 3
},
{
"name": "滑动 Feed 1 次,随机间隔 5-10s",
"android": {
"actions": [
{
"method": "swipe",
"params": "up",
"options": {}
},
{
"method": "sleep_random",
"params": [
5,
10
]
}
]
},
"loops": 1
},
{
"name": "滑动 Feed 10 次70% 随机间隔 0-5s30% 随机间隔 5-10s",
"android": {
"actions": [
{
"method": "swipe",
"params": "up",
"options": {}
},
{
"method": "sleep_random",
"params": [
0,
5,
0.7,
5,
10,
0.3
]
}
]
},
"loops": 10
},
{
"name": "exit",
"android": {
"actions": [
{
"method": "app_terminate",
"params": "com.ss.android.ugc.aweme"
}
]
},
"validate": [
{
"check": "ui_foreground_app",
"assert": "not_equal",
"expect": "com.ss.android.ugc.aweme",
"msg": "app [com.ss.android.ugc.aweme] should not be in foreground"
"check": "ui_ocr",
"assert": "exists",
"expect": "17",
"msg": "打开本地时间戳失败"
}
]
}