diff --git a/src/Mobile/eShopOnContainers.Xamarin.Tests.sln b/src/Mobile/eShopOnContainers.Xamarin.Tests.sln
index ec6c4ee63..ba9396937 100644
--- a/src/Mobile/eShopOnContainers.Xamarin.Tests.sln
+++ b/src/Mobile/eShopOnContainers.Xamarin.Tests.sln
@@ -25,6 +25,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunne
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.Windows", "eShopOnContainers\eShopOnContainers.TestRunner.Windows\eShopOnContainers.TestRunner.Windows.csproj", "{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.UITests", "eShopOnContainers\eShopOnContainers.UITests\eShopOnContainers.UITests.csproj", "{E3B18084-842C-4B80-8E4A-A7E588EC3137}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
@@ -491,6 +493,54 @@ Global
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|x86.ActiveCfg = Release|x86
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|x86.Build.0 = Release|x86
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|x86.Deploy.0 = Release|x86
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|x64.Build.0 = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|x86.Build.0 = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|Any CPU.Build.0 = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|ARM.Build.0 = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|iPhone.Build.0 = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|x64.ActiveCfg = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|x64.Build.0 = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|x86.ActiveCfg = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|x86.Build.0 = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|ARM.Build.0 = Debug|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|x64.Build.0 = Debug|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|x86.Build.0 = Debug|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|ARM.ActiveCfg = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|ARM.Build.0 = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|iPhone.Build.0 = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|x64.ActiveCfg = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|x64.Build.0 = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|x86.ActiveCfg = Release|Any CPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -504,5 +554,6 @@ Global
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1} = {71D6317D-AF0F-46FE-91DA-B0556911FC4B}
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3} = {71D6317D-AF0F-46FE-91DA-B0556911FC4B}
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F} = {71D6317D-AF0F-46FE-91DA-B0556911FC4B}
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137} = {71D6317D-AF0F-46FE-91DA-B0556911FC4B}
EndGlobalSection
EndGlobal
diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.UITests/AppInitializer.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.UITests/AppInitializer.cs
new file mode 100644
index 000000000..3dc31f1bc
--- /dev/null
+++ b/src/Mobile/eShopOnContainers/eShopOnContainers.UITests/AppInitializer.cs
@@ -0,0 +1,23 @@
+using Xamarin.UITest;
+
+namespace eShopOnContainers.UITests
+{
+ public class AppInitializer
+ {
+ public static IApp StartApp(Platform platform)
+ {
+ if (platform == Platform.Android)
+ {
+ return ConfigureApp
+ .Android
+ .ApkFile(@"..\..\..\eShopOnContainers.Droid\bin\Release\eShopOnContainers.Droid.apk")
+ .StartApp();
+ }
+
+ return ConfigureApp
+ .iOS
+ .StartApp();
+ }
+ }
+}
+
diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.UITests/Tests.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.UITests/Tests.cs
new file mode 100644
index 000000000..e8a6c07bd
--- /dev/null
+++ b/src/Mobile/eShopOnContainers/eShopOnContainers.UITests/Tests.cs
@@ -0,0 +1,42 @@
+using NUnit.Framework;
+using Xamarin.UITest;
+
+namespace eShopOnContainers.UITests
+{
+ [TestFixture(Platform.Android)]
+ [TestFixture(Platform.iOS)]
+ public class Tests
+ {
+ IApp app;
+ Platform platform;
+
+ public Tests(Platform platform)
+ {
+ this.platform = platform;
+ }
+
+ [SetUp]
+ public void BeforeEachTest()
+ {
+ app = AppInitializer.StartApp(platform);
+ }
+
+ [Test]
+ public void AppLaunches()
+ {
+ app.Screenshot("First screen.");
+ }
+
+ [Test]
+ public void LoginTest()
+ {
+ app.Tap(x => x.Text("[ LOGIN ]"));
+ app.Tap(x => x.Class("WebView").Css("INPUT#Email"));
+ app.EnterText(x => x.Class("WebView").Css("INPUT#Email"), "jdoe@eshop.com");
+ app.Tap(x => x.Class("WebView").Css("INPUT#Password"));
+ app.EnterText(x => x.Class("WebView").Css("INPUT#Password"), "eshopContainers.123");
+ app.Tap(x => x.Class("WebView").Css("BUTTON.btn.btn-default.btn-brand.btn-brand-big"));
+ app.Screenshot("eShopOnContainers Login process");
+ }
+ }
+}
diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.UITests/app.config b/src/Mobile/eShopOnContainers/eShopOnContainers.UITests/app.config
new file mode 100644
index 000000000..8460dd432
--- /dev/null
+++ b/src/Mobile/eShopOnContainers/eShopOnContainers.UITests/app.config
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.UITests/eShopOnContainers.UITests.csproj b/src/Mobile/eShopOnContainers/eShopOnContainers.UITests/eShopOnContainers.UITests.csproj
new file mode 100644
index 000000000..e33fadc36
--- /dev/null
+++ b/src/Mobile/eShopOnContainers/eShopOnContainers.UITests/eShopOnContainers.UITests.csproj
@@ -0,0 +1,75 @@
+
+
+
+ Debug
+ AnyCPU
+ {E3B18084-842C-4B80-8E4A-A7E588EC3137}
+ Library
+ eShopOnContainers.UITests
+ eShopOnContainers.UITests
+ v4.5
+
+
+ true
+ full
+ false
+ bin\Debug
+ DEBUG;
+ prompt
+ 4
+ false
+
+
+ full
+ true
+ bin\Release
+ prompt
+ 4
+ false
+
+
+
+ ..\..\packages\NUnitTestAdapter.2.0.0\lib\nunit.core.dll
+ False
+
+
+ ..\..\packages\NUnitTestAdapter.2.0.0\lib\nunit.core.interfaces.dll
+ False
+
+
+ ..\..\packages\NUnit.2.6.4\lib\nunit.framework.dll
+ True
+
+
+ ..\..\packages\NUnitTestAdapter.2.0.0\lib\nunit.util.dll
+ False
+
+
+ ..\..\packages\NUnitTestAdapter.2.0.0\lib\NUnit.VisualStudio.TestAdapter.dll
+ False
+
+
+
+ ..\..\packages\Xamarin.UITest.2.0.3\lib\Xamarin.UITest.dll
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+ {65116d1c-145b-4693-abda-f0fb6f425191}
+ eShopOnContainers.Core
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.UITests/packages.config b/src/Mobile/eShopOnContainers/eShopOnContainers.UITests/packages.config
new file mode 100644
index 000000000..e65af7b90
--- /dev/null
+++ b/src/Mobile/eShopOnContainers/eShopOnContainers.UITests/packages.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file