Run the sample native app C# test

Step 1: Setup environment

Requirements

  • .NET 9.0
  • NUnit framework
  • Appium client
  • Access key
    • You can generate an Access key using the following instruction – Access key
  • Billing unit
    • The billing unit is your team’s unique identifier, or just the word “personal” in the case of an individual account.
      More information can be found here.

Step 2: Upload and install an App

Before running tests, several preparations are required:

  • Upload the app (only once).
  • Find and take a Device
  • Install the App

All of these actions can be performed automatically via API.
For more details, please refer to the Upload and Install document.

Step 3: Run sample test

After setup up the environment and installing the native App, you can run your first test

using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium.Appium.Android;
using OpenQA.Selenium.Support.UI;
using System;

namespace AppiumTests
{
    public class AndroidNativeTest
    {
        // Constants
        const string ProjectName = "<TEAM_CODE>";
        const string AccessKey = "mobitru_ak_......";
        const string AppiumHost = "app.mobitru.com";

        const string DeviceUdid = "38210DLJH0023E";
        const string AppPackage = "com.epam.mobitru";
        const string AppActivity = ".MainActivity";
        const int DefaultImplicitTimeoutSec = 3;
        const int DefaultWaitTimeoutSec = 10;
        const string AppUserName = "testuser@mobitru.com";
        const string AppUserPassword = "password1";

        private AndroidDriver driver;

        [SetUp]
        public void Setup()
        {
            var appiumOptions = new AppiumOptions();

            appiumOptions.AutomationName = "UIAutomator2";
            appiumOptions.AddAdditionalAppiumOption("udid", DeviceUdid);
            appiumOptions.AddAdditionalAppiumOption("appPackage", AppPackage);
            appiumOptions.AddAdditionalAppiumOption("appActivity", AppActivity);
            appiumOptions.AddAdditionalAppiumOption("noReset", true);
            var appiumHubUrl = $"""https://{ProjectName}:{AccessKey}@{AppiumHost}/wd/hub""";

            driver = new AndroidDriver(new Uri($"{appiumHubUrl}"), appiumOptions);
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(DefaultImplicitTimeoutSec);
        }

        [Test]
        public void TestAppiumDemo()
        {
            // enter details
            driver.FindElement(By.XPath("//*[@resource-id='com.epam.mobitru:id/login_email']//android.widget.EditText"))
            .SendKeys(AppUserName);

            driver.FindElement(By.XPath("//*[@resource-id='com.epam.mobitru:id/login_password']//android.widget.EditText"))
           .SendKeys(AppUserPassword);

            // submit login screen
            driver.FindElement(By.XPath("//*[@resource-id='com.epam.mobitru:id/login_signin']")).Click();

            // wait for next screen
            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(DefaultWaitTimeoutSec));
            By categoryElement = By.XPath("//*[@resource-id='com.epam.mobitru:id/category']");
            wait.Until(d => d.FindElement(categoryElement).Displayed);
        }

        [TearDown]
        public void TearDown()
        {
            driver?.Quit();
        }
    }
}
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium.Appium.iOS;
using OpenQA.Selenium.Support.UI;
using System;

namespace AppiumTests
{
    public class IOsNativeTest
    {
        // Constants
        const string ProjectName = "<TEAM_CODE>";
        const string AccessKey = "mobitru_ak_......";
        const string AppiumHost = "app.mobitru.com";

        const string DeviceUdid = "00008101-001608482602001E";
        const string AppBundleId = "com.epam.mobitru.demoapp";
        const int DefaultImplicitTimeoutSec = 3;
        const int DefaultWaitTimeoutSec = 10;
        const string AppUserName = "testuser@mobitru.com";
        const string AppUserPassword = "password1";

        private IOSDriver driver;

        [SetUp]
        public void Setup()
        {
            var appiumOptions = new AppiumOptions();

            appiumOptions.AutomationName = "XCUITest";
            appiumOptions.AddAdditionalAppiumOption("udid", DeviceUdid);
            appiumOptions.AddAdditionalAppiumOption("bundleId", AppBundleId);
            var appiumHubUrl = $"""https://{ProjectName}:{AccessKey}@{AppiumHost}/wd/hub""";

            driver = new IOSDriver(new Uri($"{appiumHubUrl}"), appiumOptions);
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(DefaultImplicitTimeoutSec);
        }

        [Test]
        public void TestAppiumDemo()
        {
            // enter details
            driver.FindElement(By.XPath("//XCUIElementTypeTextField[starts-with(@name,'Login')]"))
            .SendKeys(AppUserName);

            driver.FindElement(By.XPath("//XCUIElementTypeSecureTextField[starts-with(@name,'Password')]"))
           .SendKeys(AppUserPassword);

            // submit login screen
            driver.FindElement(By.XPath("//XCUIElementTypeButton[starts-with(@name,'Sign in')]")).Click();

            // wait for next screen
            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(DefaultWaitTimeoutSec));
            By productHeaderElement = By.XPath("//*[starts-with(@name,'productHeaderViewLabel')]");
            wait.Until(d => d.FindElement(productHeaderElement).Displayed);
        }

        [TearDown]
        public void TearDown()
        {
            driver?.Quit();
        }
    }
}

Scroll to Top