├── .gitattributes ├── SimpleApp ├── SimpleApp │ ├── AssemblyInfo.cs │ ├── Models │ │ └── Item.cs │ ├── ViewModels │ │ ├── ItemDetailViewModel.cs │ │ ├── AboutViewModel.cs │ │ ├── ItemsViewModel.cs │ │ └── BaseViewModel.cs │ ├── Services │ │ ├── IDataStore.cs │ │ └── MockDataStore.cs │ ├── Views │ │ ├── MainPage.xaml.cs │ │ ├── AboutPage.xaml.cs │ │ ├── LoginPage.xaml.cs │ │ ├── ItemDetailPage.xaml │ │ ├── LoginPage.xaml │ │ ├── ItemDetailPage.xaml.cs │ │ ├── NewItemPage.xaml.cs │ │ ├── NewItemPage.xaml │ │ ├── ItemsPage.xaml.cs │ │ ├── MainPage.xaml │ │ ├── ItemsPage.xaml │ │ └── AboutPage.xaml │ ├── SimpleApp.csproj │ ├── App.xaml.cs │ └── App.xaml ├── SimpleApp.iOS │ ├── Resources │ │ ├── Default.png │ │ ├── tab_feed.png │ │ ├── Default@2x.png │ │ ├── tab_about.png │ │ ├── tab_feed@2x.png │ │ ├── tab_feed@3x.png │ │ ├── tab_about@2x.png │ │ ├── tab_about@3x.png │ │ ├── xamarin_logo.png │ │ ├── Default-568h@2x.png │ │ ├── Default-Portrait.png │ │ ├── xamarin_logo@2x.png │ │ ├── xamarin_logo@3x.png │ │ ├── Default-Portrait@2x.png │ │ └── LaunchScreen.storyboard │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ ├── Icon20.png │ │ │ ├── Icon29.png │ │ │ ├── Icon40.png │ │ │ ├── Icon58.png │ │ │ ├── Icon60.png │ │ │ ├── Icon76.png │ │ │ ├── Icon80.png │ │ │ ├── Icon87.png │ │ │ ├── Icon1024.png │ │ │ ├── Icon120.png │ │ │ ├── Icon152.png │ │ │ ├── Icon167.png │ │ │ ├── Icon180.png │ │ │ └── Contents.json │ ├── Entitlements.plist │ ├── Main.cs │ ├── AppDelegate.cs │ ├── Info.plist │ ├── Properties │ │ └── AssemblyInfo.cs │ └── SimpleApp.iOS.csproj ├── SimpleApp.Android │ ├── Resources │ │ ├── mipmap-hdpi │ │ │ ├── icon.png │ │ │ └── launcher_foreground.png │ │ ├── mipmap-mdpi │ │ │ ├── icon.png │ │ │ └── launcher_foreground.png │ │ ├── mipmap-xhdpi │ │ │ ├── icon.png │ │ │ └── launcher_foreground.png │ │ ├── mipmap-xxhdpi │ │ │ ├── icon.png │ │ │ └── launcher_foreground.png │ │ ├── mipmap-xxxhdpi │ │ │ ├── icon.png │ │ │ └── launcher_foreground.png │ │ ├── drawable │ │ │ └── xamarin_logo.png │ │ ├── mipmap-anydpi-v26 │ │ │ ├── icon.xml │ │ │ └── icon_round.xml │ │ ├── values │ │ │ ├── colors.xml │ │ │ └── styles.xml │ │ ├── layout │ │ │ ├── Toolbar.xml │ │ │ └── Tabbar.xml │ │ └── AboutResources.txt │ ├── Properties │ │ ├── AndroidManifest.xml │ │ └── AssemblyInfo.cs │ ├── Assets │ │ └── AboutAssets.txt │ ├── MainActivity.cs │ └── SimpleApp.Android.csproj └── SimpleApp.sln ├── SimpleApp.Appium.Core ├── SimpleApp.Appium.Core.csproj ├── TestMainPage_iOS.cs ├── TestMainPage_Droid.cs ├── AppiumTest.cs └── TestMainPage.cs ├── README.md └── .gitignore /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /SimpleApp/SimpleApp/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using Xamarin.Forms.Xaml; 2 | 3 | [assembly: XamlCompilation(XamlCompilationOptions.Compile)] -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Resources/Default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Resources/Default.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Resources/tab_feed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Resources/tab_feed.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Resources/Default@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Resources/Default@2x.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Resources/tab_about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Resources/tab_about.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Resources/tab_feed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Resources/tab_feed@2x.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Resources/tab_feed@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Resources/tab_feed@3x.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Resources/tab_about@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Resources/tab_about@2x.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Resources/tab_about@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Resources/tab_about@3x.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Resources/xamarin_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Resources/xamarin_logo.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Resources/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Resources/Default-568h@2x.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Resources/Default-Portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Resources/Default-Portrait.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Resources/xamarin_logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Resources/xamarin_logo@2x.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Resources/xamarin_logo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Resources/xamarin_logo@3x.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.Android/Resources/mipmap-hdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.Android/Resources/mipmap-hdpi/icon.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.Android/Resources/mipmap-mdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.Android/Resources/mipmap-mdpi/icon.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.Android/Resources/mipmap-xhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.Android/Resources/mipmap-xhdpi/icon.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Resources/Default-Portrait@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Resources/Default-Portrait@2x.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.Android/Resources/mipmap-xxhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.Android/Resources/mipmap-xxhdpi/icon.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.Android/Resources/mipmap-xxxhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.Android/Resources/mipmap-xxxhdpi/icon.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.Android/Resources/drawable/xamarin_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.Android/Resources/drawable/xamarin_logo.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.Android/Resources/mipmap-hdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.Android/Resources/mipmap-hdpi/launcher_foreground.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.Android/Resources/mipmap-mdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.Android/Resources/mipmap-mdpi/launcher_foreground.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.Android/Resources/mipmap-xhdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.Android/Resources/mipmap-xhdpi/launcher_foreground.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.Android/Resources/mipmap-xxhdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.Android/Resources/mipmap-xxhdpi/launcher_foreground.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rogerwcpt/xamarinforms-appium-test/HEAD/SimpleApp/SimpleApp.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Entitlements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /SimpleApp/SimpleApp/Models/Item.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace SimpleApp.Models 4 | { 5 | public class Item 6 | { 7 | public string Id { get; set; } 8 | public string Text { get; set; } 9 | public string Description { get; set; } 10 | } 11 | } -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.Android/Resources/mipmap-anydpi-v26/icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.Android/Resources/mipmap-anydpi-v26/icon_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.Android/Resources/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | #3F51B5 5 | #303F9F 6 | #FF4081 7 | 8 | -------------------------------------------------------------------------------- /SimpleApp/SimpleApp/ViewModels/ItemDetailViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | using SimpleApp.Models; 4 | 5 | namespace SimpleApp.ViewModels 6 | { 7 | public class ItemDetailViewModel : BaseViewModel 8 | { 9 | public Item Item { get; set; } 10 | public ItemDetailViewModel(Item item = null) 11 | { 12 | Title = item?.Text; 13 | Item = item; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.Android/Resources/layout/Toolbar.xml: -------------------------------------------------------------------------------- 1 | 9 | 10 | -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.Android/Properties/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /SimpleApp/SimpleApp/Services/IDataStore.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Threading.Tasks; 4 | 5 | namespace SimpleApp.Services 6 | { 7 | public interface IDataStore 8 | { 9 | Task AddItemAsync(T item); 10 | Task UpdateItemAsync(T item); 11 | Task DeleteItemAsync(string id); 12 | Task GetItemAsync(string id); 13 | Task> GetItemsAsync(bool forceRefresh = false); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /SimpleApp/SimpleApp/ViewModels/AboutViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Input; 3 | 4 | using Xamarin.Forms; 5 | 6 | namespace SimpleApp.ViewModels 7 | { 8 | public class AboutViewModel : BaseViewModel 9 | { 10 | public AboutViewModel() 11 | { 12 | Title = "About"; 13 | 14 | OpenWebCommand = new Command(() => Device.OpenUri(new Uri("https://xamarin.com/platform"))); 15 | } 16 | 17 | public ICommand OpenWebCommand { get; } 18 | } 19 | } -------------------------------------------------------------------------------- /SimpleApp/SimpleApp/Views/MainPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel; 3 | using Xamarin.Forms; 4 | using Xamarin.Forms.Xaml; 5 | 6 | namespace SimpleApp.Views 7 | { 8 | // Learn more about making custom code visible in the Xamarin.Forms previewer 9 | // by visiting https://aka.ms/xamarinforms-previewer 10 | [DesignTimeVisible(false)] 11 | public partial class MainPage : TabbedPage 12 | { 13 | public MainPage() 14 | { 15 | InitializeComponent(); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /SimpleApp/SimpleApp/Views/AboutPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel; 3 | using Xamarin.Forms; 4 | using Xamarin.Forms.Xaml; 5 | 6 | namespace SimpleApp.Views 7 | { 8 | // Learn more about making custom code visible in the Xamarin.Forms previewer 9 | // by visiting https://aka.ms/xamarinforms-previewer 10 | [DesignTimeVisible(false)] 11 | public partial class AboutPage : ContentPage 12 | { 13 | public AboutPage() 14 | { 15 | InitializeComponent(); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /SimpleApp.Appium.Core/SimpleApp.Appium.Core.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp2.1 5 | 6 | false 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.iOS/Main.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | 5 | using Foundation; 6 | using UIKit; 7 | 8 | namespace SimpleApp.iOS 9 | { 10 | public class Application 11 | { 12 | // This is the main entry point of the application. 13 | static void Main(string[] args) 14 | { 15 | // if you want to use a different Application Delegate class from "AppDelegate" 16 | // you can specify it here. 17 | UIApplication.Main(args, null, "AppDelegate"); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.Android/Resources/layout/Tabbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | -------------------------------------------------------------------------------- /SimpleApp/SimpleApp/Views/LoginPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using Xamarin.Forms; 8 | using Xamarin.Forms.Xaml; 9 | 10 | namespace SimpleApp.Views 11 | { 12 | [XamlCompilation(XamlCompilationOptions.Compile)] 13 | public partial class LoginPage : ContentPage 14 | { 15 | public LoginPage() 16 | { 17 | InitializeComponent(); 18 | } 19 | 20 | private void LoginButton_Clicked(object sender, EventArgs e) 21 | { 22 | StatusLabel.Text = "Logging in " + DateTime.Now.ToString("HH:mm:ss"); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /SimpleApp/SimpleApp.Android/Assets/AboutAssets.txt: -------------------------------------------------------------------------------- 1 | Any raw assets you want to be deployed with your application can be placed in 2 | this directory (and child directories) and given a Build Action of "AndroidAsset". 3 | 4 | These files will be deployed with you package and will be accessible using Android's 5 | AssetManager, like this: 6 | 7 | public class ReadAsset : Activity 8 | { 9 | protected override void OnCreate (Bundle bundle) 10 | { 11 | base.OnCreate (bundle); 12 | 13 | InputStream input = Assets.Open ("my_asset.txt"); 14 | } 15 | } 16 | 17 | Additionally, some Android functions will automatically load asset files: 18 | 19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); 20 | -------------------------------------------------------------------------------- /SimpleApp/SimpleApp/SimpleApp.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard2.0 5 | 6 | 7 | 8 | pdbonly 9 | true 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | MSBuild:UpdateDesignTimeXaml 20 | 21 | 22 | -------------------------------------------------------------------------------- /SimpleApp/SimpleApp/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Xamarin.Forms; 3 | using Xamarin.Forms.Xaml; 4 | using SimpleApp.Services; 5 | using SimpleApp.Views; 6 | 7 | namespace SimpleApp 8 | { 9 | public partial class App : Application 10 | { 11 | 12 | public App() 13 | { 14 | InitializeComponent(); 15 | 16 | DependencyService.Register(); 17 | MainPage = new MainPage(); 18 | } 19 | 20 | protected override void OnStart() 21 | { 22 | // Handle when your app starts 23 | } 24 | 25 | protected override void OnSleep() 26 | { 27 | // Handle when your app sleeps 28 | } 29 | 30 | protected override void OnResume() 31 | { 32 | // Handle when your app resumes 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /SimpleApp/SimpleApp/Views/ItemDetailPage.xaml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 16 | 17 | -------------------------------------------------------------------------------- /SimpleApp/SimpleApp/App.xaml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | #2196F3 13 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Xamarin Forms with Appium UI Test Automation 2 | 3 | Using C# and Appium, this project attempts to automate UI testing of a Xamarin Forms App, with a single test code base in mind. 4 | The beauty of using C# is that you can use the same Visual Studio IDE and obviuosly the power of C# in your UI Tests. 5 | 6 | ## Roadmap ## 7 | 8 | - Compare this with a Java based Appium Test against the same Simple App 9 | - Compare with a Xamarin based UI Test 10 | 11 | ## Steps ## 12 | 13 | - See [Appium Getting Started Guid](http://appium.io/docs/en/about-appium/getting-started/) 14 | - Install Appium Doctor 15 | ``` 16 | npm install appium-doctor -g 17 | ``` 18 | - Make sure all the tests pass from appium-doctor 19 | - run Appium 20 | - Deploy the applications for Android and iOS as per usual from the IDE 21 | - Take note of your installed Similator/Emulator names and update the InitAppiumOptions method in TestLoginPage_iOS and TestLoginPage_Droid respectively 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /SimpleApp/SimpleApp/Views/LoginPage.xaml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 |