| OLD | NEW |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import <EarlGrey/EarlGrey.h> | 5 #import <EarlGrey/EarlGrey.h> |
| 6 | 6 |
| 7 #import "base/mac/foundation_util.h" | 7 #import "base/mac/foundation_util.h" |
| 8 #include "components/strings/grit/components_strings.h" | 8 #include "components/strings/grit/components_strings.h" |
| 9 #import "ios/chrome/browser/ui/autofill/autofill_edit_accessory_view.h" | 9 #import "ios/chrome/browser/ui/autofill/autofill_edit_accessory_view.h" |
| 10 #import "ios/chrome/browser/ui/payments/payment_request_edit_view_controller.h" | 10 #import "ios/chrome/browser/ui/payments/payment_request_edit_view_controller.h" |
| 11 #include "ios/chrome/browser/ui/ui_util.h" | 11 #include "ios/chrome/browser/ui/ui_util.h" |
| 12 #include "ios/chrome/grit/ios_strings.h" |
| 12 #import "ios/showcase/test/showcase_eg_utils.h" | 13 #import "ios/showcase/test/showcase_eg_utils.h" |
| 13 #import "ios/showcase/test/showcase_test_case.h" | 14 #import "ios/showcase/test/showcase_test_case.h" |
| 14 #include "ui/base/l10n/l10n_util.h" | 15 #include "ui/base/l10n/l10n_util.h" |
| 15 | 16 |
| 16 #if !defined(__has_feature) || !__has_feature(objc_arc) | 17 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 17 #error "This file requires ARC support." | 18 #error "This file requires ARC support." |
| 18 #endif | 19 #endif |
| 19 | 20 |
| 20 @interface UIWindow (Hidden) | 21 @interface UIWindow (Hidden) |
| 21 - (UIResponder*)firstResponder; | 22 - (UIResponder*)firstResponder; |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 assertWithMatcher:grey_notNil()]; | 102 assertWithMatcher:grey_notNil()]; |
| 102 [[EarlGrey selectElementWithMatcher:grey_accessibilityID(@"Name_textField")] | 103 [[EarlGrey selectElementWithMatcher:grey_accessibilityID(@"Name_textField")] |
| 103 assertWithMatcher:grey_text(@"John Doe")]; | 104 assertWithMatcher:grey_text(@"John Doe")]; |
| 104 | 105 |
| 105 [[EarlGrey | 106 [[EarlGrey |
| 106 selectElementWithMatcher:grey_allOf(grey_accessibilityLabel(@"Country*"), | 107 selectElementWithMatcher:grey_allOf(grey_accessibilityLabel(@"Country*"), |
| 107 grey_accessibilityValue(@"Canada"), | 108 grey_accessibilityValue(@"Canada"), |
| 108 nil)] | 109 nil)] |
| 109 assertWithMatcher:grey_notNil()]; | 110 assertWithMatcher:grey_notNil()]; |
| 110 | 111 |
| 112 [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(@"Province*")] |
| 113 assertWithMatcher:grey_notNil()]; |
| 114 [[EarlGrey |
| 115 selectElementWithMatcher:grey_accessibilityID(@"Province_textField")] |
| 116 assertWithMatcher:grey_text(@"Quebec")]; |
| 117 |
| 111 [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(@"Address*")] | 118 [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(@"Address*")] |
| 112 assertWithMatcher:grey_notNil()]; | 119 assertWithMatcher:grey_notNil()]; |
| 113 [[EarlGrey | 120 [[EarlGrey |
| 114 selectElementWithMatcher:grey_accessibilityID(@"Address_textField")] | 121 selectElementWithMatcher:grey_accessibilityID(@"Address_textField")] |
| 115 assertWithMatcher:grey_text(@"")]; | 122 assertWithMatcher:grey_text(@"")]; |
| 116 | 123 |
| 117 [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(@"Postal Code")] | 124 [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(@"Postal Code")] |
| 118 assertWithMatcher:grey_notNil()]; | 125 assertWithMatcher:grey_notNil()]; |
| 119 [[EarlGrey | 126 [[EarlGrey |
| 120 selectElementWithMatcher:grey_accessibilityID(@"Postal Code_textField")] | 127 selectElementWithMatcher:grey_accessibilityID(@"Postal Code_textField")] |
| 121 assertWithMatcher:grey_text(@"")]; | 128 assertWithMatcher:grey_text(@"")]; |
| 129 |
| 130 [[EarlGrey |
| 131 selectElementWithMatcher:grey_allOf(grey_accessibilityLabel(@"Save"), |
| 132 grey_accessibilityValue( |
| 133 l10n_util::GetNSString( |
| 134 IDS_IOS_SETTING_ON)), |
| 135 nil)] |
| 136 assertWithMatcher:grey_notNil()]; |
| 137 } |
| 138 |
| 139 // Tests if the expected input view for the province field is displaying, when |
| 140 // the field is focused, and that the expected row is selected. |
| 141 - (void)testVerifyProvinceFieldInputView { |
| 142 // Tap the province textfield. |
| 143 [[EarlGrey |
| 144 selectElementWithMatcher:grey_accessibilityID(@"Province_textField")] |
| 145 performAction:grey_tap()]; |
| 146 |
| 147 // Assert that a UIPicker view is displaying and the expected row is selected. |
| 148 [[EarlGrey |
| 149 selectElementWithMatcher:grey_accessibilityID(@"Province_pickerView")] |
| 150 assertWithMatcher:grey_pickerColumnSetToValue(0, @"Quebec")]; |
| 122 } | 151 } |
| 123 | 152 |
| 124 // Tests if tapping the selector field notifies the delegate. | 153 // Tests if tapping the selector field notifies the delegate. |
| 125 - (void)testVerifyTappingSelectorFieldNotifiesDelegate { | 154 - (void)testVerifyTappingSelectorFieldNotifiesDelegate { |
| 126 // Tap the selector field. | 155 // Tap the selector field. |
| 127 [[EarlGrey | 156 [[EarlGrey |
| 128 selectElementWithMatcher:grey_allOf(grey_accessibilityLabel(@"Country*"), | 157 selectElementWithMatcher:grey_allOf(grey_accessibilityLabel(@"Country*"), |
| 129 grey_accessibilityValue(@"Canada"), | 158 grey_accessibilityValue(@"Canada"), |
| 130 nil)] performAction:grey_tap()]; | 159 nil)] performAction:grey_tap()]; |
| 131 | 160 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 // Assert the name textfield is focused. | 215 // Assert the name textfield is focused. |
| 187 AssertTextFieldWithAccessibilityIDIsFirstResponder(@"Name_textField"); | 216 AssertTextFieldWithAccessibilityIDIsFirstResponder(@"Name_textField"); |
| 188 | 217 |
| 189 // Assert the input accessory view's previous button is disabled. | 218 // Assert the input accessory view's previous button is disabled. |
| 190 [[EarlGrey selectElementWithMatcher:InputAccessoryViewPreviousButton()] | 219 [[EarlGrey selectElementWithMatcher:InputAccessoryViewPreviousButton()] |
| 191 assertWithMatcher:grey_not(grey_enabled())]; | 220 assertWithMatcher:grey_not(grey_enabled())]; |
| 192 // Assert the input accessory view's next button is enabled and tap it. | 221 // Assert the input accessory view's next button is enabled and tap it. |
| 193 [[[EarlGrey selectElementWithMatcher:InputAccessoryViewNextButton()] | 222 [[[EarlGrey selectElementWithMatcher:InputAccessoryViewNextButton()] |
| 194 assertWithMatcher:grey_enabled()] performAction:grey_tap()]; | 223 assertWithMatcher:grey_enabled()] performAction:grey_tap()]; |
| 195 | 224 |
| 225 // Assert the province textfield is focused. |
| 226 AssertTextFieldWithAccessibilityIDIsFirstResponder(@"Province_textField"); |
| 227 |
| 228 // Assert the input accessory view's previous button is enabled. |
| 229 [[EarlGrey selectElementWithMatcher:InputAccessoryViewPreviousButton()] |
| 230 assertWithMatcher:grey_enabled()]; |
| 231 // Assert the input accessory view's next button is enabled and tap it. |
| 232 [[[EarlGrey selectElementWithMatcher:InputAccessoryViewNextButton()] |
| 233 assertWithMatcher:grey_enabled()] performAction:grey_tap()]; |
| 234 |
| 196 // Assert the address textfield is focused. | 235 // Assert the address textfield is focused. |
| 197 AssertTextFieldWithAccessibilityIDIsFirstResponder(@"Address_textField"); | 236 AssertTextFieldWithAccessibilityIDIsFirstResponder(@"Address_textField"); |
| 198 | 237 |
| 199 // Assert the input accessory view's previous button is enabled. | 238 // Assert the input accessory view's previous button is enabled. |
| 200 [[EarlGrey selectElementWithMatcher:InputAccessoryViewPreviousButton()] | 239 [[EarlGrey selectElementWithMatcher:InputAccessoryViewPreviousButton()] |
| 201 assertWithMatcher:grey_enabled()]; | 240 assertWithMatcher:grey_enabled()]; |
| 202 // Assert the input accessory view's next button is enabled and tap it. | 241 // Assert the input accessory view's next button is enabled and tap it. |
| 203 [[[EarlGrey selectElementWithMatcher:InputAccessoryViewNextButton()] | 242 [[[EarlGrey selectElementWithMatcher:InputAccessoryViewNextButton()] |
| 204 assertWithMatcher:grey_enabled()] performAction:grey_tap()]; | 243 assertWithMatcher:grey_enabled()] performAction:grey_tap()]; |
| 205 | 244 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 232 assertWithMatcher:grey_enabled()]; | 271 assertWithMatcher:grey_enabled()]; |
| 233 // Assert the input accessory view's previous button is enabled and tap it. | 272 // Assert the input accessory view's previous button is enabled and tap it. |
| 234 [[[EarlGrey selectElementWithMatcher:InputAccessoryViewPreviousButton()] | 273 [[[EarlGrey selectElementWithMatcher:InputAccessoryViewPreviousButton()] |
| 235 assertWithMatcher:grey_enabled()] performAction:grey_tap()]; | 274 assertWithMatcher:grey_enabled()] performAction:grey_tap()]; |
| 236 | 275 |
| 237 // Assert the error message disappeared because an address was typed in. | 276 // Assert the error message disappeared because an address was typed in. |
| 238 [[EarlGrey selectElementWithMatcher:grey_accessibilityID( | 277 [[EarlGrey selectElementWithMatcher:grey_accessibilityID( |
| 239 kWarningMessageAccessibilityID)] | 278 kWarningMessageAccessibilityID)] |
| 240 assertWithMatcher:grey_notVisible()]; | 279 assertWithMatcher:grey_notVisible()]; |
| 241 | 280 |
| 242 // Assert the name textfield is focused. | 281 // Assert the province textfield is focused. |
| 243 AssertTextFieldWithAccessibilityIDIsFirstResponder(@"Name_textField"); | 282 AssertTextFieldWithAccessibilityIDIsFirstResponder(@"Province_textField"); |
| 244 | 283 |
| 245 // Assert the input accessory view's previous button is disabled. | 284 // Assert the input accessory view's previous button is enabled. |
| 246 [[EarlGrey selectElementWithMatcher:InputAccessoryViewPreviousButton()] | 285 [[EarlGrey selectElementWithMatcher:InputAccessoryViewPreviousButton()] |
| 247 assertWithMatcher:grey_not(grey_enabled())]; | 286 assertWithMatcher:grey_enabled()]; |
| 248 // Assert the input accessory view's next button is enabled. | 287 // Assert the input accessory view's next button is enabled. |
| 249 [[EarlGrey selectElementWithMatcher:InputAccessoryViewNextButton()] | 288 [[EarlGrey selectElementWithMatcher:InputAccessoryViewNextButton()] |
| 250 assertWithMatcher:grey_enabled()]; | 289 assertWithMatcher:grey_enabled()]; |
| 251 } | 290 } |
| 252 | 291 |
| 253 // Tests tapping the return key on every textfield causes the next textfield to | 292 // Tests tapping the return key on every textfield causes the next textfield to |
| 254 // get focus except for the last textfield in which case causes the focus to go | 293 // get focus except for the last textfield in which case causes the focus to go |
| 255 // away from the textfield. | 294 // away from the textfield. |
| 256 - (void)testNavigationByTappingReturn { | 295 - (void)testNavigationByTappingReturn { |
| 257 // Tap the name textfield. | 296 // Tap the name textfield. |
| 258 [[EarlGrey selectElementWithMatcher:grey_accessibilityID(@"Name_textField")] | 297 [[EarlGrey selectElementWithMatcher:grey_accessibilityID(@"Name_textField")] |
| 259 performAction:grey_tap()]; | 298 performAction:grey_tap()]; |
| 260 | 299 |
| 261 // Assert the name textfield is focused. | 300 // Assert the name textfield is focused. |
| 262 AssertTextFieldWithAccessibilityIDIsFirstResponder(@"Name_textField"); | 301 AssertTextFieldWithAccessibilityIDIsFirstResponder(@"Name_textField"); |
| 263 | 302 |
| 264 // Press the return key on the name textfield. | 303 // Press the return key on the name textfield. |
| 265 [[EarlGrey selectElementWithMatcher:grey_accessibilityID(@"Name_textField")] | 304 [[EarlGrey selectElementWithMatcher:grey_accessibilityID(@"Name_textField")] |
| 266 performAction:grey_typeText(@"\n")]; | 305 performAction:grey_typeText(@"\n")]; |
| 267 | 306 |
| 307 // Assert the province textfield is focused. |
| 308 AssertTextFieldWithAccessibilityIDIsFirstResponder(@"Province_textField"); |
| 309 |
| 310 // The standard keyboard does not display for the province field. Instead, tap |
| 311 // the address textfield. |
| 312 [[EarlGrey |
| 313 selectElementWithMatcher:grey_accessibilityID(@"Address_textField")] |
| 314 performAction:grey_tap()]; |
| 315 |
| 268 // Assert the address textfield is focused. | 316 // Assert the address textfield is focused. |
| 269 AssertTextFieldWithAccessibilityIDIsFirstResponder(@"Address_textField"); | 317 AssertTextFieldWithAccessibilityIDIsFirstResponder(@"Address_textField"); |
| 270 | 318 |
| 271 // Press the return key on the address textfield. | 319 // Press the return key on the address textfield. |
| 272 [[EarlGrey | 320 [[EarlGrey |
| 273 selectElementWithMatcher:grey_accessibilityID(@"Address_textField")] | 321 selectElementWithMatcher:grey_accessibilityID(@"Address_textField")] |
| 274 performAction:grey_typeText(@"\n")]; | 322 performAction:grey_typeText(@"\n")]; |
| 275 | 323 |
| 276 // Assert the postal code textfield is focused. | 324 // Assert the postal code textfield is focused. |
| 277 AssertTextFieldWithAccessibilityIDIsFirstResponder(@"Postal Code_textField"); | 325 AssertTextFieldWithAccessibilityIDIsFirstResponder(@"Postal Code_textField"); |
| 278 | 326 |
| 279 // Press the return key on the postal code textfield. | 327 // Press the return key on the postal code textfield. |
| 280 [[EarlGrey | 328 [[EarlGrey |
| 281 selectElementWithMatcher:grey_accessibilityID(@"Postal Code_textField")] | 329 selectElementWithMatcher:grey_accessibilityID(@"Postal Code_textField")] |
| 282 performAction:grey_typeText(@"\n")]; | 330 performAction:grey_typeText(@"\n")]; |
| 283 | 331 |
| 284 // Expect non of the textfields to be focused. | 332 // Expect non of the textfields to be focused. |
| 285 UIResponder* firstResponder = | 333 UIResponder* firstResponder = |
| 286 [[UIApplication sharedApplication].keyWindow firstResponder]; | 334 [[UIApplication sharedApplication].keyWindow firstResponder]; |
| 287 GREYAssertFalse([firstResponder isKindOfClass:[UITextField class]], | 335 GREYAssertFalse([firstResponder isKindOfClass:[UITextField class]], |
| 288 @"Expected first responder not to be of kind %@.", | 336 @"Expected first responder not to be of kind %@.", |
| 289 [UITextField class]); | 337 [UITextField class]); |
| 290 } | 338 } |
| 291 | 339 |
| 292 @end | 340 @end |
| OLD | NEW |