private static RestClient Client(BrowserStackSetting options)
 {
     return(new RestClient(options.AutomateSessions)
     {
         Authenticator = new HttpBasicAuthenticator(options.BrowserStackUser, options.BrowserStackKey)
     });
 }
 private static void CheckBrowserStackLogin(BrowserStackSetting options)
 {
     if (options.BrowserStackUser == null || options.BrowserStackKey == null)
     {
         throw new Exception("Please enter browserstack credentials");
     }
 }
        public static IWebDriver Init(BrowserStackSetting options, EnvironmentConfig executionConfig)
        {
            CheckBrowserStackLogin(options);

            var chromeOption = new ChromeOptions
            {
                AcceptInsecureCertificates = true
            };

            AddAdditionalCapability(chromeOption, "browser", options.Browser);
            AddAdditionalCapability(chromeOption, "browser_version", options.BrowserVersion);
            AddAdditionalCapability(chromeOption, "os", options.Os);
            AddAdditionalCapability(chromeOption, "os_version", options.Osversion);
            AddAdditionalCapability(chromeOption, "resolution", options.Resolution);
            AddAdditionalCapability(chromeOption, "browserstack.user", options.BrowserStackUser);
            AddAdditionalCapability(chromeOption, "browserstack.key", options.BrowserStackKey);
            AddAdditionalCapability(chromeOption, "build", $"dfc.acceptance.{executionConfig.EnvironmentName.ToUpper()}.{options.BuildNumber}");
            AddAdditionalCapability(chromeOption, "project", options.Project);
            AddAdditionalCapability(chromeOption, "browserstack.debug", "true");
            AddAdditionalCapability(chromeOption, "name", options.Name);
            AddAdditionalCapability(chromeOption, "browserstack.networkLogs", options.EnableNetworkLogs);
            AddAdditionalCapability(chromeOption, "browserstack.timezone", options.TimeZone);
            AddAdditionalCapability(chromeOption, "browserstack.console", "info");

            return(new RemoteWebDriver(new Uri(options.ServerName), chromeOption));
        }
        public static void MarkTestAsFailed(BrowserStackSetting options, string sessionId, string message)
        {
            var client = Client(options);

            var request = Request(sessionId);

            request.AddJsonBody(JSonBody(message));

            var response = client.Put(request);

            if (response.StatusCode != HttpStatusCode.OK)
            {
                NUnit.Framework.TestContext.Progress.WriteLine($"{response.StatusCode} - {response.Content}");

                throw new Exception(response.Content, response.ErrorException);
            }
        }