From 270180603cd446ab155af83958aa27f4bb785508 Mon Sep 17 00:00:00 2001 From: "lilong.129" Date: Sat, 23 Nov 2024 21:24:33 +0800 Subject: [PATCH] feat: add AssertForegroundApp for ios --- hrp/internal/version/VERSION | 2 +- hrp/pkg/uixt/ios_driver.go | 25 +++++++++++++++++++++---- hrp/pkg/uixt/ios_stub_driver.go | 2 +- hrp/pkg/uixt/ios_test.go | 9 +++++++++ 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/hrp/internal/version/VERSION b/hrp/internal/version/VERSION index aa5638c8..fdbd252f 100644 --- a/hrp/internal/version/VERSION +++ b/hrp/internal/version/VERSION @@ -1 +1 @@ -v5.0.0+2411232055 +v5.0.0+2411232149 diff --git a/hrp/pkg/uixt/ios_driver.go b/hrp/pkg/uixt/ios_driver.go index 45841a25..e8856903 100644 --- a/hrp/pkg/uixt/ios_driver.go +++ b/hrp/pkg/uixt/ios_driver.go @@ -457,10 +457,11 @@ func (wd *wdaDriver) GetForegroundApp() (appInfo AppInfo, err error) { } for _, app := range apps { if app.CFBundleIdentifier == activeAppInfo.BundleId { - appInfo.BundleId = app.CFBundleIdentifier + appInfo.Name = app.CFBundleDisplayName appInfo.AppName = app.CFBundleName - appInfo.VersionName = app.CFBundleShortVersionString + appInfo.BundleId = app.CFBundleIdentifier appInfo.PackageName = app.CFBundleIdentifier + appInfo.VersionName = app.CFBundleShortVersionString versionCode, err := strconv.Atoi(app.CFBundleVersion) if err == nil { appInfo.VersionCode = versionCode @@ -472,9 +473,25 @@ func (wd *wdaDriver) GetForegroundApp() (appInfo AppInfo, err error) { } func (wd *wdaDriver) AssertForegroundApp(bundleId string, viewControllerType ...string) error { - log.Warn().Str("bundleId", bundleId). + log.Debug().Str("bundleId", bundleId). Strs("viewControllerType", viewControllerType). - Msg("ios view controller assertion not implemented, skip") + Msg("assert ios foreground bundleId") + + app, err := wd.GetForegroundApp() + if err != nil { + log.Warn().Err(err).Msg("get foreground app failed, skip bundleId assertion") + return nil // Notice: ignore error when get foreground app failed + } + + // assert package + if app.BundleId != bundleId { + log.Error(). + Interface("foreground_app", app.AppBaseInfo). + Str("expected_package", bundleId). + Msg("assert package failed") + return errors.Wrap(code.MobileUIAssertForegroundAppError, + "assert foreground package failed") + } return nil } diff --git a/hrp/pkg/uixt/ios_stub_driver.go b/hrp/pkg/uixt/ios_stub_driver.go index 11d8a277..026b17eb 100644 --- a/hrp/pkg/uixt/ios_stub_driver.go +++ b/hrp/pkg/uixt/ios_stub_driver.go @@ -30,7 +30,7 @@ func newStubIOSDriver(bightInsightAddr, serverAddr string, dev *IOSDevice, readT driver.serverPrefix = serverAddr driver.timeout = timeout driver.Driver.client = &http.Client{ - Timeout: time.Second * 20, // 设置超时时间为 10 秒 + Timeout: time.Second * 10, // 设置超时时间为 10 秒 } return driver, nil } diff --git a/hrp/pkg/uixt/ios_test.go b/hrp/pkg/uixt/ios_test.go index 8c0262ae..07906f58 100644 --- a/hrp/pkg/uixt/ios_test.go +++ b/hrp/pkg/uixt/ios_test.go @@ -435,6 +435,15 @@ func Test_remoteWD_Source(t *testing.T) { fmt.Println(source) } +func TestGetForegroundApp(t *testing.T) { + setup(t) + app, err := driver.GetForegroundApp() + if err != nil { + t.Fatal(err) + } + t.Log(app) +} + func Test_remoteWD_AccessibleSource(t *testing.T) { setup(t)