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

Unified Diff: ios/showcase/toolbar/sc_toolbar_egtest.mm

Issue 2936773003: [ios clean] Toolbar accessibility and showcase egtests (Closed)
Patch Set: Rename A11y string Created 3 years, 6 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/toolbar/sc_toolbar_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/toolbar/sc_toolbar_egtest.mm
diff --git a/ios/showcase/toolbar/sc_toolbar_egtest.mm b/ios/showcase/toolbar/sc_toolbar_egtest.mm
new file mode 100644
index 0000000000000000000000000000000000000000..d5808b3d72ef1777ea34580132b055c6847c7457
--- /dev/null
+++ b/ios/showcase/toolbar/sc_toolbar_egtest.mm
@@ -0,0 +1,214 @@
+// 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>
+
+#include "components/strings/grit/components_strings.h"
+#import "ios/chrome/browser/ui/uikit_ui_util.h"
+#include "ios/chrome/grit/ios_strings.h"
+#import "ios/chrome/test/earl_grey/accessibility_util.h"
+#import "ios/showcase/test/showcase_eg_utils.h"
+#import "ios/showcase/test/showcase_test_case.h"
+#include "ui/base/l10n/l10n_util.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;
+}
+
+// Tests for the toolbar view controller.
+@interface SCToolbarTestCase : ShowcaseTestCase
+@end
+
+@implementation SCToolbarTestCase
+
+- (void)setUp {
+ [super setUp];
+ Open(@"ToolbarViewController");
+}
+
+- (void)tearDown {
+ Close();
+ if ([UIDevice currentDevice].orientation != UIDeviceOrientationPortrait) {
+ [EarlGrey rotateDeviceToOrientation:UIDeviceOrientationPortrait
+ errorOrNil:nil];
+ }
+ [super tearDown];
+}
+
+// Tests if the Toolbar buttons have the right accessibility labels and
+// commands.
+- (void)testVerifyToolbarButtonsLabelAndAction {
+ // Buttons displayed in both Regular and Compact SizeClasses.
+ // Back Button.
+ [[EarlGrey
+ selectElementWithMatcher:grey_accessibilityLabel(
+ l10n_util::GetNSString(IDS_ACCNAME_BACK))]
+ performAction:grey_tap()];
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(@"goBack")]
+ assertWithMatcher:grey_notNil()];
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(
+ @"protocol_alerter_done")]
+ performAction:grey_tap()];
+
+ // Forward Button.
+ [[EarlGrey
+ selectElementWithMatcher:grey_accessibilityLabel(
+ l10n_util::GetNSString(IDS_ACCNAME_FORWARD))]
+ performAction:grey_tap()];
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(@"goForward")]
+ assertWithMatcher:grey_notNil()];
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(
+ @"protocol_alerter_done")]
+ performAction:grey_tap()];
+
+ // ShowTabStrip Button.
+ [[EarlGrey
+ selectElementWithMatcher:grey_accessibilityLabel(l10n_util::GetNSString(
+ IDS_IOS_TOOLBAR_SHOW_TABS))]
+ performAction:grey_tap()];
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(@"showTabStrip")]
+ assertWithMatcher:grey_notNil()];
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(
+ @"protocol_alerter_done")]
+ performAction:grey_tap()];
+
+ // Menu Button.
+ [[EarlGrey
+ selectElementWithMatcher:grey_accessibilityLabel(l10n_util::GetNSString(
+ IDS_IOS_TOOLBAR_SETTINGS))]
+ performAction:grey_tap()];
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(@"showToolsMenu")]
+ assertWithMatcher:grey_notNil()];
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(
+ @"protocol_alerter_done")]
+ performAction:grey_tap()];
+
+ // Buttons displayed only in Regular SizeClass.
+ if (!IsCompact()) {
+ // Share Button.
+ [[EarlGrey
+ selectElementWithMatcher:grey_accessibilityLabel(l10n_util::GetNSString(
+ IDS_IOS_TOOLS_MENU_SHARE))]
+ assertWithMatcher:grey_notNil()];
+
+ // Reload Button.
+ [[EarlGrey
+ selectElementWithMatcher:grey_accessibilityLabel(l10n_util::GetNSString(
+ IDS_IOS_ACCNAME_RELOAD))]
+ performAction:grey_tap()];
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(@"reloadPage")]
+ assertWithMatcher:grey_notNil()];
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(
+ @"protocol_alerter_done")]
+ performAction:grey_tap()];
+
+ // Stop Button.
+ [[EarlGrey
+ selectElementWithMatcher:grey_accessibilityLabel(l10n_util::GetNSString(
+ IDS_IOS_ACCNAME_STOP))]
+ performAction:grey_tap()];
+ [[EarlGrey
+ selectElementWithMatcher:grey_accessibilityLabel(@"stopLoadingPage")]
+ assertWithMatcher:grey_notNil()];
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(
+ @"protocol_alerter_done")]
+ performAction:grey_tap()];
+ }
+}
+
+// Tests that the Menu will be closed on rotation from portrait to landscape and
+// viceversa.
+- (void)testRotation {
+ // TODO(crbug.com/652464): Enable the test for iPad when rotation bug is
+ // fixed.
+ if (IsIPadIdiom()) {
+ EARL_GREY_TEST_DISABLED(@"Disabled for iPad due to device rotation bug.");
+ }
+
+ // Rotate from portrait to landscape.
+ if ([EarlGrey rotateDeviceToOrientation:UIDeviceOrientationLandscapeRight
+ errorOrNil:nil]) {
+ [[EarlGrey
+ selectElementWithMatcher:grey_accessibilityLabel(@"closeToolsMenu")]
+ assertWithMatcher:grey_notNil()];
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(
+ @"protocol_alerter_done")]
+ performAction:grey_tap()];
+
+ // If successful rotate back from landscape to portrait.
+ if ([EarlGrey rotateDeviceToOrientation:UIDeviceOrientationPortrait
+ errorOrNil:nil]) {
+ [[EarlGrey
+ selectElementWithMatcher:grey_accessibilityLabel(@"closeToolsMenu")]
+ assertWithMatcher:grey_notNil()];
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(
+ @"protocol_alerter_done")]
+ performAction:grey_tap()];
+ }
+ }
+}
+
+// Tests that the Regular SizeClass buttons appear when a rotation causes a
+// SizeClass change from Compact to Regular. E.g. iPhone Plus rotation from
+// portrait to landscape and viceversa.
+- (void)testRotationSizeClassChange {
+ // TODO(crbug.com/652464): Enable the test for iPad when rotation bug is
+ // fixed.
+ if (IsIPadIdiom()) {
+ EARL_GREY_TEST_DISABLED(@"Disabled for iPad due to device rotation bug.");
+ }
+
+ // If currently on compact rotate to check if SizeClass changes to regular.
+ if (IsCompact()) {
+ if ([EarlGrey rotateDeviceToOrientation:UIDeviceOrientationLandscapeRight
+ errorOrNil:nil]) {
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(
+ @"protocol_alerter_done")]
+ performAction:grey_tap()];
+ // If SizeClass is not compact after rotation, confirm that some
+ // ToolbarButtons are now visible.
+ if (!IsCompact()) {
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(
+ l10n_util::GetNSString(
+ IDS_IOS_TOOLS_MENU_SHARE))]
+ assertWithMatcher:grey_notNil()];
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(
+ l10n_util::GetNSString(
+ IDS_IOS_ACCNAME_RELOAD))]
+ assertWithMatcher:grey_notNil()];
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(
+ l10n_util::GetNSString(
+ IDS_IOS_ACCNAME_STOP))]
+ assertWithMatcher:grey_notNil()];
+ // Going back to Compact Width.
+ if ([EarlGrey rotateDeviceToOrientation:UIDeviceOrientationPortrait
+ errorOrNil:nil]) {
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(
+ @"protocol_alerter_done")]
+ performAction:grey_tap()];
+ [[EarlGrey
+ selectElementWithMatcher:grey_accessibilityLabel(
+ l10n_util::GetNSString(
+ IDS_IOS_TOOLS_MENU_SHARE))]
+ assertWithMatcher:grey_nil()];
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(
+ l10n_util::GetNSString(
+ IDS_IOS_ACCNAME_RELOAD))]
+ assertWithMatcher:grey_nil()];
+ [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(
+ l10n_util::GetNSString(
+ IDS_IOS_ACCNAME_STOP))]
+ assertWithMatcher:grey_nil()];
+ }
+ }
+ }
+ }
+}
+
+@end
« no previous file with comments | « ios/showcase/toolbar/sc_toolbar_coordinator.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698