-
Notifications
You must be signed in to change notification settings - Fork 0
/
AppInitializer.cs
84 lines (71 loc) · 2.51 KB
/
AppInitializer.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using Xamarin.UITest;
using TechTalk.SpecFlow;
using NUnit.Framework;
using System.Diagnostics;
using System;
namespace BddWithXamarinUITest
{
public static class AppInitializer
{
public static IApp StartApp (Platform platform, string iOSSimulator, bool resetDevice)
{
// TODO: If the iOS or Android app being tested is included in the solution
// then open the Unit Tests window, right click Test Apps, select Add App Project
// and select the app projects that should be tested.
if (platform == Platform.Android) {
if (resetDevice) {
ResetEmulator ();
}
return ConfigureApp
.Android
.ApkFile ("../../binaries/com.xamarin.samples.taskydroidnew.exampleapp.apk")
.EnableLocalScreenshots ()
.StartApp ();
} else if (platform == Platform.iOS) {
if (resetDevice) {
ResetSimulator (iOSSimulator);
}
return ConfigureApp
.iOS
.AppBundle ("../../binaries/TaskyiOS.app")
.EnableLocalScreenshots ()
.DeviceIdentifier(iOSSimulator)
.StartApp ();
}
throw new ArgumentException ("Unsupported platform");
}
static void ResetEmulator()
{
//TODO : Generalize this
//TODO : Make this work on Windows?
if (TestEnvironment.Platform.Equals(TestPlatform.Local))
{
var eraseProcess = Process.Start ("/Users/rob/Library/Developer/Xamarin/android-sdk-macosx/platform-tools/adb", "shell pm uninstall com.xamarin.samples.taskydroid");
eraseProcess.WaitForExit ();
}
}
static void ResetSimulator(string iOSSimulator)
{
if (TestEnvironment.Platform.Equals (TestPlatform.Local)) {
var deviceId = TestHelpers.GetDeviceID (iOSSimulator);
if (string.IsNullOrEmpty (deviceId)) {
throw new ArgumentException ($"No simulator found with device name [{iOSSimulator}]", iOSSimulator);
}
var shutdownProcess = Process.Start ("xcrun", string.Format ("simctl shutdown {0}", deviceId));
shutdownProcess.WaitForExit ();
var eraseProcess = Process.Start ("xcrun", string.Format ("simctl erase {0}", deviceId));
eraseProcess.WaitForExit ();
}
}
public static void InitializeScreens(Platform platform)
{
if (platform == Platform.iOS) {
FeatureContext.Current.Add (ScreenNames.Home, new iOSHomeScreen ());
FeatureContext.Current.Add (ScreenNames.AddTask, new iOSAddTaskScreen ());
} else if (platform == Platform.Android) {
FeatureContext.Current.Add (ScreenNames.Home, new AndroidHomeScreen ());
FeatureContext.Current.Add (ScreenNames.AddTask, new AndroidAddTaskScreen ());
}
}
}
}