From f2627fab9bba50225c8554d3f6ab33a8c44361cc Mon Sep 17 00:00:00 2001 From: debugtalk Date: Sun, 28 Aug 2022 23:17:12 +0800 Subject: [PATCH] feat: validate image exists --- hrp/internal/uixt/ext.go | 5 +++ hrp/internal/uixt/{ext_ocr.go => ocr.go} | 0 .../uixt/{ext_ocr_test.go => ocr_test.go} | 0 hrp/step.go | 1 + hrp/step_ios_ui.go | 44 ++++++++++++++++--- 5 files changed, 44 insertions(+), 6 deletions(-) rename hrp/internal/uixt/{ext_ocr.go => ocr.go} (100%) rename hrp/internal/uixt/{ext_ocr_test.go => ocr_test.go} (100%) diff --git a/hrp/internal/uixt/ext.go b/hrp/internal/uixt/ext.go index 7c9bb098..5855491e 100644 --- a/hrp/internal/uixt/ext.go +++ b/hrp/internal/uixt/ext.go @@ -352,3 +352,8 @@ func (dExt *DriverExt) IsOCRExist(text string) bool { _, _, _, _, err := dExt.FindTextByOCR(text) return err == nil } + +func (dExt *DriverExt) IsImageExist(text string) bool { + _, _, _, _, err := dExt.FindImageRectInUIKit(text) + return err == nil +} diff --git a/hrp/internal/uixt/ext_ocr.go b/hrp/internal/uixt/ocr.go similarity index 100% rename from hrp/internal/uixt/ext_ocr.go rename to hrp/internal/uixt/ocr.go diff --git a/hrp/internal/uixt/ext_ocr_test.go b/hrp/internal/uixt/ocr_test.go similarity index 100% rename from hrp/internal/uixt/ext_ocr_test.go rename to hrp/internal/uixt/ocr_test.go diff --git a/hrp/step.go b/hrp/step.go index d0b99aa4..709d6647 100644 --- a/hrp/step.go +++ b/hrp/step.go @@ -46,6 +46,7 @@ const ( uiSelectorName string = "ui_name" uiSelectorLabel string = "ui_label" uiSelectorOCR string = "ui_ocr" + uiSelectorImage string = "ui_image" assertionExists string = "exists" assertionNotExists string = "not_exists" ) diff --git a/hrp/step_ios_ui.go b/hrp/step_ios_ui.go index 370234dd..331ff537 100644 --- a/hrp/step_ios_ui.go +++ b/hrp/step_ios_ui.go @@ -269,7 +269,7 @@ func (s *StepIOSValidation) AssertNameExists(expectedName string, msg ...string) if len(msg) > 0 { v.Message = msg[0] } else { - v.Message = fmt.Sprintf("[%s] not found", expectedName) + v.Message = fmt.Sprintf("attribute name [%s] not found", expectedName) } s.step.Validators = append(s.step.Validators, v) return s @@ -284,7 +284,7 @@ func (s *StepIOSValidation) AssertNameNotExists(expectedName string, msg ...stri if len(msg) > 0 { v.Message = msg[0] } else { - v.Message = fmt.Sprintf("[%s] should not exist", expectedName) + v.Message = fmt.Sprintf("attribute name [%s] should not exist", expectedName) } s.step.Validators = append(s.step.Validators, v) return s @@ -299,7 +299,7 @@ func (s *StepIOSValidation) AssertLabelExists(expectedLabel string, msg ...strin if len(msg) > 0 { v.Message = msg[0] } else { - v.Message = fmt.Sprintf("[%s] not found", expectedLabel) + v.Message = fmt.Sprintf("attribute label [%s] not found", expectedLabel) } s.step.Validators = append(s.step.Validators, v) return s @@ -314,7 +314,7 @@ func (s *StepIOSValidation) AssertLabelNotExists(expectedLabel string, msg ...st if len(msg) > 0 { v.Message = msg[0] } else { - v.Message = fmt.Sprintf("[%s] should not exist", expectedLabel) + v.Message = fmt.Sprintf("attribute label [%s] should not exist", expectedLabel) } s.step.Validators = append(s.step.Validators, v) return s @@ -329,7 +329,7 @@ func (s *StepIOSValidation) AssertOCRExists(expectedText string, msg ...string) if len(msg) > 0 { v.Message = msg[0] } else { - v.Message = fmt.Sprintf("[%s] not found", expectedText) + v.Message = fmt.Sprintf("ocr text [%s] not found", expectedText) } s.step.Validators = append(s.step.Validators, v) return s @@ -344,7 +344,37 @@ func (s *StepIOSValidation) AssertOCRNotExists(expectedText string, msg ...strin if len(msg) > 0 { v.Message = msg[0] } else { - v.Message = fmt.Sprintf("[%s] should not exist", expectedText) + v.Message = fmt.Sprintf("ocr text [%s] should not exist", expectedText) + } + s.step.Validators = append(s.step.Validators, v) + return s +} + +func (s *StepIOSValidation) AssertImageExists(expectedImagePath string, msg ...string) *StepIOSValidation { + v := Validator{ + Check: uiSelectorImage, + Assert: assertionExists, + Expect: expectedImagePath, + } + if len(msg) > 0 { + v.Message = msg[0] + } else { + v.Message = fmt.Sprintf("cv image [%s] not found", expectedImagePath) + } + s.step.Validators = append(s.step.Validators, v) + return s +} + +func (s *StepIOSValidation) AssertImageNotExists(expectedImagePath string, msg ...string) *StepIOSValidation { + v := Validator{ + Check: uiSelectorImage, + Assert: assertionNotExists, + Expect: expectedImagePath, + } + if len(msg) > 0 { + v.Message = msg[0] + } else { + v.Message = fmt.Sprintf("cv image [%s] should not exist", expectedImagePath) } s.step.Validators = append(s.step.Validators, v) return s @@ -611,6 +641,8 @@ func (ud *uiDriver) doValidation(iValidators []interface{}) (validateResults []* result = (ud.IsLabelExist(expected) == exists) case uiSelectorOCR: result = (ud.IsOCRExist(expected) == exists) + case uiSelectorImage: + result = (ud.IsImageExist(expected) == exists) } if result {