From 979535a73b5e77658a7d08eaae5dab5980d013db Mon Sep 17 00:00:00 2001 From: "lilong.129" Date: Wed, 20 Nov 2024 17:25:22 +0800 Subject: [PATCH] fix: get validateUI error --- hrp/internal/version/VERSION | 2 +- hrp/pkg/uixt/ext.go | 79 ++++++++++++++---------------- hrp/pkg/uixt/harmony_hdc_driver.go | 2 +- hrp/step_mobile_ui.go | 5 +- 4 files changed, 43 insertions(+), 45 deletions(-) diff --git a/hrp/internal/version/VERSION b/hrp/internal/version/VERSION index 77ae7924..6e5e6331 100644 --- a/hrp/internal/version/VERSION +++ b/hrp/internal/version/VERSION @@ -1 +1 @@ -v5.0.0+2411201548 +v5.0.0+2411201735 diff --git a/hrp/pkg/uixt/ext.go b/hrp/pkg/uixt/ext.go index b6c8de87..ba3ce12b 100644 --- a/hrp/pkg/uixt/ext.go +++ b/hrp/pkg/uixt/ext.go @@ -53,76 +53,73 @@ func newDriverExt(device IDevice, driver IWebDriver, options ...DriverOption) (d return dExt, nil } -func (dExt *DriverExt) AssertOCR(text, assert string) bool { +func (dExt *DriverExt) assertOCR(text, assert string) error { var options []ActionOption options = append(options, WithScreenShotFileName(fmt.Sprintf("assert_ocr_%s", text))) - var err error switch assert { case AssertionEqual: - _, err = dExt.FindScreenText(text, options...) - return err == nil + _, err := dExt.FindScreenText(text, options...) + if err != nil { + return errors.Wrap(err, "assert ocr equal failed") + } case AssertionNotEqual: - _, err = dExt.FindScreenText(text, options...) - return err != nil + _, err := dExt.FindScreenText(text, options...) + if err == nil { + return errors.New("assert ocr not equal failed") + } case AssertionExists: options = append(options, WithRegex(true)) - _, err = dExt.FindScreenText(text, options...) - return err == nil + _, err := dExt.FindScreenText(text, options...) + if err != nil { + return errors.Wrap(err, "assert ocr exists failed") + } case AssertionNotExists: options = append(options, WithRegex(true)) - _, err = dExt.FindScreenText(text, options...) - return err != nil + _, err := dExt.FindScreenText(text, options...) + if err == nil { + return errors.New("assert ocr not exists failed") + } default: - log.Warn().Str("assert method", assert).Msg("unexpected assert method") + return fmt.Errorf("unexpected assert method %s", assert) } - return false + return nil } -func (dExt *DriverExt) AssertForegroundApp(appName, assert string) bool { - app, err := dExt.Driver.GetForegroundApp() - if err != nil { - log.Warn().Err(err).Msg("get foreground app failed, skip app/activity assertion") - return true // Notice: ignore error when get foreground app failed - } - log.Debug().Interface("app", app).Msg("get foreground app") - - // assert package name +func (dExt *DriverExt) assertForegroundApp(appName, assert string) (err error) { + err = dExt.Driver.AssertForegroundApp(appName) switch assert { case AssertionEqual: - return app.PackageName == appName + if err != nil { + return errors.Wrap(err, "assert foreground app equal failed") + } case AssertionNotEqual: - return app.PackageName != appName + if err == nil { + return errors.New("assert foreground app not equal failed") + } default: - log.Warn().Str("assert method", assert).Msg("unexpected assert method") + return fmt.Errorf("unexpected assert method %s", assert) } - return false + return nil } -func (dExt *DriverExt) DoValidation(check, assert, expected string, message ...string) bool { - var result bool +func (dExt *DriverExt) DoValidation(check, assert, expected string, message ...string) (err error) { switch check { case SelectorOCR: - result = dExt.AssertOCR(expected, assert) + err = dExt.assertOCR(expected, assert) case SelectorForegroundApp: - result = dExt.AssertForegroundApp(expected, assert) + err = dExt.assertForegroundApp(expected, assert) } - if !result { + if err != nil { if message == nil { message = []string{""} } - log.Error(). - Str("assert", assert). - Str("expect", expected). - Str("msg", message[0]). - Msg("validate UI failed") - return false + log.Error().Err(err).Str("assert", assert).Str("expect", expected). + Str("msg", message[0]).Msg("validate failed") + return err } - log.Info(). - Str("assert", assert). - Str("expect", expected). - Msg("validate UI success") - return true + log.Info().Str("assert", assert).Str("expect", expected).Msg("validate success") + return nil } diff --git a/hrp/pkg/uixt/harmony_hdc_driver.go b/hrp/pkg/uixt/harmony_hdc_driver.go index cc578ace..807fc010 100644 --- a/hrp/pkg/uixt/harmony_hdc_driver.go +++ b/hrp/pkg/uixt/harmony_hdc_driver.go @@ -139,7 +139,7 @@ func (hd *hdcDriver) GetForegroundApp() (app AppInfo, err error) { func (hd *hdcDriver) AssertForegroundApp(packageName string, activityType ...string) error { // Todo - return errDriverNotImplemented + return nil } func (hd *hdcDriver) StartCamera() error { diff --git a/hrp/step_mobile_ui.go b/hrp/step_mobile_ui.go index 63a3ecd4..3084fb30 100644 --- a/hrp/step_mobile_ui.go +++ b/hrp/step_mobile_ui.go @@ -787,8 +787,9 @@ func validateUI(ud *uixt.DriverExt, iValidators []interface{}) (validateResults return nil, errors.New("validator expect should be string") } - if !ud.DoValidation(validator.Check, validator.Assert, expected, validator.Message) { - return validateResults, errors.New("step validation failed") + err := ud.DoValidation(validator.Check, validator.Assert, expected, validator.Message) + if err != nil { + return validateResults, errors.Wrap(err, "step validation failed") } validataResult.CheckResult = "pass"