I've set up NUnit tests that runs on BrowserStack (set up from this example https://github.com/browserstack/nunit-browserstack )
Base class:
namespace Bloc.TestProject
{
public class BrowserStackNUnitTest
{
protected IWebDriver driver;
protected string profile;
protected string environment;
private Local browserStackLocal;
public BrowserStackNUnitTest(string profile, string environment)
{
this.profile = profile;
this.environment = environment;
}
[SetUp]
public void Init()
{
...
Browserstack tests:
namespace Bloc.TestProject
{
[TestFixture("parallel", "chrome")]
[TestFixture("parallel", "ie11")]
[TestFixture("parallel", "iphoneX")]
[TestFixture("parallel", "ipad")]
[TestFixture("parallel", "samsungGalaxyS8")]
[Parallelizable(ParallelScope.Fixtures)]
public class OnTimeOnlineBooking : BrowserStackNUnitTest
{
WebDriverWait wait;
public OnTimeOnlineBooking(string profile, string environment) : base(profile, environment)
{
}
... my tests ...
Local tests:
namespace Bloc.TestProject
{
[TestFixture(typeof(PhantomJSDriver))]
public class LocalBrowserTest<TWebDriver> where TWebDriver : IWebDriver, new()
{
private IWebDriver driver;
[SetUp]
public void CreateDriver()
{
this.driver = new TWebDriver();
}
[TearDown]
public void Cleanup()
{
driver.Quit();
}
... my tests ...
Is there any way I can structure my tests so that I can run a test and it'll run both locally and on browserstack without having to duplicate the test code?