forked from nikolay-advolodkin/dot-net-sauce
-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathRestApiForVdc.cs
85 lines (75 loc) · 3.52 KB
/
RestApiForVdc.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
using System;
using NUnit.Framework;
using NUnit.Framework.Interfaces;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Remote;
using RestSharp;
using RestSharp.Authenticators;
namespace Selenium3.Nunit.Scripts.SimpleExamples
{
[TestFixture]
[Category("SimpleTest")]
public class RestApiForVdc
{
IWebDriver _driver;
//TODO please supply your Sauce Labs user name in an environment variable
private string sauceUserName = Environment.GetEnvironmentVariable(
"SAUCE_USERNAME", EnvironmentVariableTarget.User);
//TODO please supply your own Sauce Labs access Key in an environment variable
private string sauceAccessKey = Environment.GetEnvironmentVariable(
"SAUCE_ACCESS_KEY", EnvironmentVariableTarget.User);
//TODO make sure that you are setting the session Id so that you can use it
//in your API requests
private SessionId sessionId;
[Test]
public void ShouldPass()
{
ChromeOptions options = new ChromeOptions();
options.AddAdditionalCapability(CapabilityType.Version, "latest", true);
options.AddAdditionalCapability(CapabilityType.Platform, "Windows 10", true);
options.AddAdditionalCapability("username", sauceUserName, true);
options.AddAdditionalCapability("accessKey", sauceAccessKey, true);
options.AddAdditionalCapability("name", TestContext.CurrentContext.Test.Name, true);
_driver = new RemoteWebDriver(new Uri("https://ondemand.saucelabs.com/wd/hub"), options.ToCapabilities(),
TimeSpan.FromSeconds(600));
_driver.Navigate().GoToUrl("https://www.google.com");
sessionId = ((RemoteWebDriver)_driver).SessionId;
Assert.Pass();
}
[Test]
public void ShouldFail()
{
ChromeOptions options = new ChromeOptions();
options.AddAdditionalCapability(CapabilityType.Version, "latest", true);
options.AddAdditionalCapability(CapabilityType.Platform, "Windows 10", true);
options.AddAdditionalCapability("username", sauceUserName, true);
options.AddAdditionalCapability("accessKey", sauceAccessKey, true);
options.AddAdditionalCapability("name", TestContext.CurrentContext.Test.Name, true);
_driver = new RemoteWebDriver(new Uri("https://ondemand.saucelabs.com/wd/hub"), options.ToCapabilities(),
TimeSpan.FromSeconds(600));
_driver.Navigate().GoToUrl("https://www.google.com");
sessionId = ((RemoteWebDriver)_driver).SessionId;
Assert.Fail();
}
[TearDown]
public void CleanUpAfterEveryTestMethod()
{
//End your session and stop your resources first
_driver?.Quit();
//How to set a test status using REST API
var isPassed = TestContext.CurrentContext.Result.Outcome.Status == TestStatus.Passed;
var client = new RestClient
{
Authenticator = new HttpBasicAuthenticator(sauceUserName, sauceAccessKey),
BaseUrl = new Uri("https://saucelabs.com/rest/v1")
};
//https://saucelabs.com/rest/v1/USERNAME/jobs/JOB_ID
var request = new RestRequest($"{sauceUserName}/jobs/{sessionId}",
Method.PUT)
{ RequestFormat = DataFormat.Json };
request.AddJsonBody(new { passed = isPassed });
client.Execute(request);
}
}
}