summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.iOS.UITests/Legacy-PlatformHelpers.cs
diff options
context:
space:
mode:
authorJason Smith <jason.smith@xamarin.com>2016-03-22 13:02:25 -0700
committerJason Smith <jason.smith@xamarin.com>2016-03-22 16:13:41 -0700
commit17fdde66d94155fc62a034fa6658995bef6fd6e5 (patch)
treeb5e5073a2a7b15cdbe826faa5c763e270a505729 /Xamarin.Forms.iOS.UITests/Legacy-PlatformHelpers.cs
downloadxamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.tar.gz
xamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.tar.bz2
xamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.zip
Initial import
Diffstat (limited to 'Xamarin.Forms.iOS.UITests/Legacy-PlatformHelpers.cs')
-rw-r--r--Xamarin.Forms.iOS.UITests/Legacy-PlatformHelpers.cs135
1 files changed, 135 insertions, 0 deletions
diff --git a/Xamarin.Forms.iOS.UITests/Legacy-PlatformHelpers.cs b/Xamarin.Forms.iOS.UITests/Legacy-PlatformHelpers.cs
new file mode 100644
index 00000000..410f50ef
--- /dev/null
+++ b/Xamarin.Forms.iOS.UITests/Legacy-PlatformHelpers.cs
@@ -0,0 +1,135 @@
+using System;
+using Xamarin.UITest;
+using Xamarin.UITest.iOS;
+using Xamarin.UITest.Queries;
+using NUnit.Framework;
+using System.Threading;
+
+namespace Xamarin.Forms.UITests
+{
+
+ public static class PlatformHelpers
+ {
+
+ public static string GetTextForQuery (this IApp app, Func<AppQuery, AppQuery> query)
+ {
+ AppResult[] elements = app.Query (query);
+ if (elements.Length > 1) {
+ // Test cloud doesn't support Assert.Fail
+ Assert.False (true, "Query returned more than one result");
+ }
+ return elements [0].Label;
+ }
+
+ public static bool ScrollDownForElement (this IApp app, Func<AppQuery, AppQuery> query, int scrollNumberLimit)
+ {
+ var desiredElement = app.Query (query);
+ var tabBarElement = app.Query (q => q.Raw ("TabBar"));
+ // Check for elements under a TabbedBar
+ // If the element exists and is under the tabbed bar scroll down once
+ if (
+ tabBarElement.Length > 0 &&
+ desiredElement.Length > 0 &&
+ (Math.Abs(desiredElement[0].Rect.Y - tabBarElement[0].Rect.Y) <= 75)
+ )
+ {
+ app.ScrollDown ();
+ return true;
+ }
+
+ // Check if element exists before scrolling
+ if (app.Query (query).Length > 0)
+ return true;
+
+ int scrollNumber = 0;
+ while (app.Query (query).Length == 0) {
+ app.ScrollDown ();
+ scrollNumber++;
+ if (scrollNumber > scrollNumberLimit)
+ return false;
+ }
+
+ // Avoid hidden elements under a tabbed controller
+ app.ScrollDown ();
+ Thread.Sleep (1000);
+
+ return true;
+ }
+
+ public static bool ScrollUpForElement (this IApp app, Func<AppQuery, AppQuery> query, int scrollNumberLimit)
+ {
+ int scrollNumber = 0;
+ while (app.Query (query).Length == 0) {
+ app.ScrollUp ();
+ scrollNumber++;
+ if (scrollNumber > scrollNumberLimit)
+ return false;
+ }
+
+ app.ScrollUp ();
+
+ return true;
+ }
+
+ public static bool DragFromToForElement (this iOSApp app, int scrollNumberLimit, Func<AppQuery, AppQuery> query, float xStart, float yStart, float xEnd, float yEnd)
+ {
+ int numberOfScrolls = 0;
+ // Element exists
+ if (app.Query (query).Length > 0)
+ return true;
+
+ while (app.Query (query).Length == 0) {
+ DragFromTo (app, xStart, yStart, xEnd, yEnd);
+ if (numberOfScrolls > scrollNumberLimit) {
+ return false;
+ }
+ numberOfScrolls++;
+ }
+ // Element found
+ return true;
+ }
+
+ public static void SwipeBackNavigation (this iOSApp app)
+ {
+ app.PanCoordinates (0, 125, 75, 125, TimeSpan.FromSeconds (5));
+ }
+
+ public static void DragFromTo (this iOSApp app, float xStart, float yStart, float xEnd, float yEnd, Speed speed = Speed.Fast)
+ {
+ if (speed == Speed.Slow)
+ app.PanCoordinates (xStart, yStart, xEnd, yEnd, TimeSpan.FromMilliseconds (3000));
+ else
+ app.PanCoordinates (xStart, yStart, xEnd, yEnd, TimeSpan.FromMilliseconds (1000));
+
+ }
+
+ public static void KeyboardIsPresent (this iOSApp app)
+ {
+ // TODO : Add keyboard detection
+ // app.WaitForElement (q => q.Raw ("KBKeyplaneView"));
+ Assert.Inconclusive ("Keyboard should be shown");
+ }
+
+ public static void KeyboardIsDismissed (this iOSApp app)
+ {
+ // TODO : Add keyboard detection
+ // app.WaitForNoElement (q => q.Raw ("KBKeyplaneView"));
+ Assert.Inconclusive ("Keyboard should be dismissed");
+ }
+
+ public static int IndexForElementWithText (this iOSApp app, Func<AppQuery, AppQuery> query, string text)
+ {
+ var elements = app.Query (query);
+ int index = 0;
+ for (int i = 0; i < elements.Length; i++) {
+ string labelText = elements[i].Label;
+ if (labelText == (text)) {
+ index = i;
+ break;
+ }
+ index++;
+ }
+ return index == elements.Length ? -1 : index;
+ }
+ }
+}