Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(27)

Unified Diff: ios/showcase/payments/sc_payments_picker_egtest.mm

Issue 2778343002: [Payment Request] Picker view + showcase integration + egtests (Closed)
Patch Set: Addressed comments Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ios/showcase/payments/sc_payments_picker_coordinator.mm ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/showcase/payments/sc_payments_picker_egtest.mm
diff --git a/ios/showcase/payments/sc_payments_picker_egtest.mm b/ios/showcase/payments/sc_payments_picker_egtest.mm
new file mode 100644
index 0000000000000000000000000000000000000000..fea155dc48df0257c83d61aef787d7cb3eff7f7e
--- /dev/null
+++ b/ios/showcase/payments/sc_payments_picker_egtest.mm
@@ -0,0 +1,321 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import <EarlGrey/EarlGrey.h>
+
+#import "ios/chrome/browser/payments/payment_request_picker_view_controller.h"
+#import "ios/showcase/test/showcase_eg_utils.h"
+#import "ios/showcase/test/showcase_test_case.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+namespace {
+using ::showcase_utils::Open;
+using ::showcase_utils::Close;
+
+// Returns the GREYMatcher for the section with the given title.
+id<GREYMatcher> SectionWithTitle(NSString* title) {
+ return grey_allOf(grey_text(title), grey_kindOfClass([UILabel class]),
+ grey_sufficientlyVisible(), nil);
+}
+
+// Returns the GREYMatcher for the picker row with the given label. |selected|
+// states whether or not the row must be selected.
+id<GREYMatcher> RowWithLabel(NSString* label, BOOL selected) {
+ id<GREYMatcher> matcher = grey_allOf(
+ grey_ancestor(
+ grey_accessibilityID(kPaymentRequestPickerRowAccessibilityID)),
+ grey_text(label), grey_kindOfClass([UILabel class]),
+ grey_sufficientlyVisible(), nil);
+
+ if (selected) {
+ return grey_allOf(
+ matcher,
+ grey_ancestor(grey_accessibilityTrait(UIAccessibilityTraitSelected)),
+ nil);
+ }
+ return matcher;
+}
+
+// Returns the GREYMatcher for the search bar's cancel button.
+id<GREYMatcher> CancelButton() {
+ return grey_allOf(grey_accessibilityLabel(@"Cancel"),
+ grey_accessibilityTrait(UIAccessibilityTraitButton),
+ grey_sufficientlyVisible(), nil);
+}
+
+} // namespace
+
+// Tests for the payment request picker view controller.
+@interface SCPaymentsPickerTestCase : ShowcaseTestCase
+@end
+
+@implementation SCPaymentsPickerTestCase
+
+- (void)setUp {
+ [super setUp];
+ Open(@"PaymentRequestPickerViewController");
+}
+
+- (void)tearDown {
+ Close();
+ [super tearDown];
+}
+
+// Tests if all the expected rows and sections are present and the expected row
+// is selected.
+- (void)testVerifyRowsAndSection {
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"B")]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Belgium", NO)]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Brazil", NO)]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"C")]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Canada", NO)]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Chile", NO)]
+ assertWithMatcher:grey_notNil()];
+
+ // 'China' is selected.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"China", YES)]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"E")]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"España", NO)]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"M")]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"México", NO)]
+ assertWithMatcher:grey_notNil()];
+}
+
+// Tests if filtering works.
+- (void)testVerifyFiltering {
+ // Type 'c' in the search bar.
+ [[EarlGrey
+ selectElementWithMatcher:
+ grey_accessibilityID(kPaymentRequestPickerSearchBarAccessibilityID)]
+ performAction:grey_typeText(@"c")];
+
+ // Section 'B' should not be visible.
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"B")]
+ assertWithMatcher:grey_nil()];
+
+ // 'Belgium' should not be visible.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Belgium", NO)]
+ assertWithMatcher:grey_nil()];
+
+ // 'Brazil' should not be visible.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Brazil", NO)]
+ assertWithMatcher:grey_nil()];
+
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"C")]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Canada", NO)]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Chile", NO)]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"China", YES)]
+ assertWithMatcher:grey_notNil()];
+
+ // Section 'E' should not be visible.
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"E")]
+ assertWithMatcher:grey_nil()];
+
+ // 'España' should not be visible.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"España", NO)]
+ assertWithMatcher:grey_nil()];
+
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"M")]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"México", NO)]
+ assertWithMatcher:grey_notNil()];
+
+ // Type 'hi' in the search bar. So far we have typed "chi".
+ [[EarlGrey
+ selectElementWithMatcher:
+ grey_accessibilityID(kPaymentRequestPickerSearchBarAccessibilityID)]
+ performAction:grey_typeText(@"hi")];
+
+ // Section 'B' should not be visible.
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"B")]
+ assertWithMatcher:grey_nil()];
+
+ // 'Belgium' should not be visible.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Belgium", NO)]
+ assertWithMatcher:grey_nil()];
+
+ // 'Brazil' should not be visible.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Brazil", NO)]
+ assertWithMatcher:grey_nil()];
+
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"C")]
+ assertWithMatcher:grey_notNil()];
+
+ // 'Canada' should not be visible.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Canada", NO)]
+ assertWithMatcher:grey_nil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Chile", NO)]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"China", YES)]
+ assertWithMatcher:grey_notNil()];
+
+ // Section 'E' should not be visible.
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"E")]
+ assertWithMatcher:grey_nil()];
+
+ // 'España' should not be visible.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"España", NO)]
+ assertWithMatcher:grey_nil()];
+
+ // Section 'M' should not be visible.
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"M")]
+ assertWithMatcher:grey_nil()];
+
+ // 'México' should not be visible.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"México", NO)]
+ assertWithMatcher:grey_nil()];
+
+ // Type 'l' in the search bar. So far we have typed "chil".
+ [[EarlGrey
+ selectElementWithMatcher:
+ grey_accessibilityID(kPaymentRequestPickerSearchBarAccessibilityID)]
+ performAction:grey_typeText(@"l")];
+
+ // Section 'B' should not be visible.
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"B")]
+ assertWithMatcher:grey_nil()];
+
+ // 'Belgium' should not be visible.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Belgium", NO)]
+ assertWithMatcher:grey_nil()];
+
+ // 'Brazil' should not be visible.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Brazil", NO)]
+ assertWithMatcher:grey_nil()];
+
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"C")]
+ assertWithMatcher:grey_notNil()];
+
+ // 'Canada' should not be visible.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Canada", NO)]
+ assertWithMatcher:grey_nil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Chile", NO)]
+ assertWithMatcher:grey_notNil()];
+
+ // 'China' should not be visible.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"China", YES)]
+ assertWithMatcher:grey_nil()];
+
+ // Section 'E' should not be visible.
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"E")]
+ assertWithMatcher:grey_nil()];
+
+ // 'España' should not be visible.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"España", NO)]
+ assertWithMatcher:grey_nil()];
+
+ // Section 'M' should not be visible.
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"M")]
+ assertWithMatcher:grey_nil()];
+
+ // 'México' should not be visible.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"México", NO)]
+ assertWithMatcher:grey_nil()];
+
+ // Cancel filtering the text in the search bar.
+ [[EarlGrey selectElementWithMatcher:CancelButton()] performAction:grey_tap()];
+
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"B")]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Belgium", NO)]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Brazil", NO)]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"C")]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Canada", NO)]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Chile", NO)]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"China", YES)]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"E")]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"España", NO)]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:SectionWithTitle(@"M")]
+ assertWithMatcher:grey_notNil()];
+
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"México", NO)]
+ assertWithMatcher:grey_notNil()];
+}
+
+// Tests that tapping a row should make it the selected row.
+- (void)testVerifySelection {
+ // 'China' is selected.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"China", YES)]
+ assertWithMatcher:grey_notNil()];
+
+ // 'Canada' is not selected. Tap it.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Canada", NO)]
+ performAction:grey_tap()];
+
+ // Confirm the delegate is informed.
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(
+ @"protocol_alerter_done")]
+ performAction:grey_tap()];
+
+ // 'China' is not selected anymore.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"China", NO)]
+ assertWithMatcher:grey_notNil()];
+
+ // Now 'Canada' is selected. Tap it again.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Canada", YES)]
+ performAction:grey_tap()];
+
+ // Confirm the delegate is informed.
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(
+ @"protocol_alerter_done")]
+ performAction:grey_tap()];
+
+ // 'China' is still not selected.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"China", NO)]
+ assertWithMatcher:grey_notNil()];
+
+ // 'Canada' is still selected.
+ [[EarlGrey selectElementWithMatcher:RowWithLabel(@"Canada", YES)]
+ assertWithMatcher:grey_notNil()];
+}
+
+@end
« no previous file with comments | « ios/showcase/payments/sc_payments_picker_coordinator.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698