Extensability- Extend Common Services
Learn how to extend BELLATRIX common services.
Example
using Bellatrix.Mobile.IOS.GettingStarted.CommonServicesExtensions;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace Bellatrix.Mobile.IOS.GettingStarted
{
[TestClass]
[IOS(Constants.IOSNativeAppPath,
Constants.IOSDefaultVersion,
Constants.IOSDefaultDeviceName,
Lifecycle.RestartEveryTime)]
public class ExtendExistingCommonServicesTests : IOSTest
{
[TestMethod]
public void ButtonClicked_When_CallClickMethod()
{
App.AppService.LoginToApp("bellatrix", "topSecret");
var button = App.ElementCreateService.CreateByName<Button>("ComputeSumButton");
button.Click();
}
}
}
Explanations
public static class AppServiceExtensions
{
public static void LoginToApp(this IOSAppService appService, string userName, string password)
{
var elementCreateService = new ElementCreateService();
var userNameField = elementCreateService.CreateById<TextField>("IntegerA");
var passwordField = elementCreateService.CreateById<Password>("IntegerB");
var loginButton = elementCreateService.CreateById<Button>("ComputeSumButton");
userNameField.SetText(userName);
passwordField.SetPassword(password);
loginButton.Click();
}
}
One way to extend the BELLATRIX common services is to create an extension method for the additional action.
- Place it in a static class like this one.
- Create a static method for the action.
- Pass the common service as a parameter with the keyword ‘this’.
- Access the native driver via WrappedDriver.
Later to use the method in your tests, add a using statement containing this class’s namespace.
using Bellatrix.Mobile.IOS.GettingStarted.CommonServicesExtensions;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace Bellatrix.Mobile.IOS.GettingStarted
To use the additional method you created, add a using statement to the extension methods’ namespace.
App.AppService.LoginToApp("bellatrix", "topSecret");
Use newly added login method which is not part of the original implementation of the common service.