|
1 | 1 | using Microsoft.Playwright; |
2 | 2 | using System; |
3 | 3 | using System.Threading; |
4 | | -using System.Threading.Tasks; |
5 | | -using System.Collections.Generic; |
6 | 4 | using Newtonsoft.Json; |
| 5 | +using System.Collections; |
7 | 6 |
|
8 | 7 | class PlaywrightParallelTest |
9 | 8 | { |
10 | 9 | public static async Task main(string[] args) |
11 | 10 | { |
12 | 11 | // The following capability variables contains the set of os/browser environments where you want to run your tests. You can choose to alter this list according to your needs. Read more on https://browserstack.com/docs/automate/playwright/browsers-and-os |
13 | 12 | try { |
14 | | - // allowed browsers are `chrome`, `edge`, `playwright-chromium`, `playwright-firefox` and `playwright-webkit` |
15 | | - // browser_version capability is valid only for branded `chrome` and `edge` browsers and you can specify any browser version like `latest`, `latest-beta`, `latest-1` and so on. |
16 | | - var combination1 = SampleTestCase("playwright-chromium", "latest", "osx", "Catalina", "macOS Catalina - Chrome latest", "Parallel-build-2"); |
17 | | - var combination2 = SampleTestCase("chrome", "latest", "osx", "catalina", "Branded Google Chrome on Catalina", "Parallel-build-2"); |
18 | | - var combination3 = SampleTestCase("edge", "latest", "osx", "catalina", "Branded Microsoft Edge on Catalina", "Parallel-build-2"); |
19 | | - var combination4 = SampleTestCase("playwright-firefox", "latest", "osx", "catalina", "Playwright firefox on Catalina", "Parallel-build-2"); |
20 | | - var combination5 = SampleTestCase("playwright-webkit", "latest", "osx", "catalina", "Playwright webkit on Catalina", "Parallel-build-2"); |
21 | | - |
22 | | - //Executing the methods |
23 | | - await Task.WhenAll(combination1, combination2, combination3, combination4, combination5); |
| 13 | + ArrayList capabilitiesList = getCapabilitiesList(); |
| 14 | + Task[] taskList = new Task[capabilitiesList.Count]; |
| 15 | + |
| 16 | + for (int i = 0; i < capabilitiesList.Count; i++) |
| 17 | + { |
| 18 | + string capsJson; |
| 19 | + capsJson = JsonConvert.SerializeObject(capabilitiesList[i]); |
| 20 | + var task = Executetestwithcaps(capsJson); |
| 21 | + taskList[i] = task; |
| 22 | + } |
| 23 | + |
| 24 | + await Task.WhenAll(taskList); |
| 25 | + |
24 | 26 | } catch (Exception e) { |
25 | 27 | Console.WriteLine(e); |
26 | 28 | } |
27 | 29 | } |
28 | | - static async Task SampleTestCase(String browser_name, String browser_version, String os, String os_version, String test_name, String build_name) |
| 30 | + static ArrayList getCapabilitiesList() |
29 | 31 | { |
30 | | - Dictionary<string, string> browserstackOptions = new Dictionary<string, string>(); |
31 | | - string capsJson; |
| 32 | + ArrayList capabilitiesList = new ArrayList(); |
32 | 33 |
|
33 | | - try { |
34 | | - browserstackOptions.Add("build", build_name); |
35 | | - browserstackOptions.Add("name", test_name); |
36 | | - browserstackOptions.Add("os", os); |
37 | | - browserstackOptions.Add("os_version", os_version); |
38 | | - browserstackOptions.Add("browser", browser_name); |
39 | | - browserstackOptions.Add("browser_version", browser_version); |
40 | | - browserstackOptions.Add("browserstack.username", "BROWSERSTACK_USERNAME"); |
41 | | - browserstackOptions.Add("browserstack.accessKey", "BROWSERSTACK_ACCESS_KEY"); |
42 | | - capsJson = JsonConvert.SerializeObject(browserstackOptions); |
43 | | - var task = Executetestwithcaps(capsJson); |
44 | | - await task; |
45 | | - } catch (Exception e) { |
46 | | - Console.WriteLine(e); |
47 | | - } |
| 34 | + Dictionary<string, string> catalinaChromeCap = new Dictionary<string, string>(); |
| 35 | + catalinaChromeCap.Add("browser", "chrome"); // allowed browsers are `chrome`, `edge`, `playwright-chromium`, `playwright-firefox` and `playwright-webkit` |
| 36 | + catalinaChromeCap.Add("browser_version", "latest"); |
| 37 | + catalinaChromeCap.Add("os", "osx"); |
| 38 | + catalinaChromeCap.Add("os_version", "catalina"); |
| 39 | + catalinaChromeCap.Add("name", "Branded Google Chrome on Catalina"); |
| 40 | + catalinaChromeCap.Add("build", "playwright-dotnet-2"); |
| 41 | + catalinaChromeCap.Add("browserstack.username", "BROWSERSTACK_USERNAME"); |
| 42 | + catalinaChromeCap.Add("browserstack.accessKey", "BROWSERSTACK_ACCESS_KEY"); |
| 43 | + capabilitiesList.Add(catalinaChromeCap); |
| 44 | + |
| 45 | + Dictionary<string, string> catalinaEdgeCap = new Dictionary<string, string>(); |
| 46 | + catalinaEdgeCap.Add("browser", "edge"); // allowed browsers are `chrome`, `edge`, `playwright-chromium`, `playwright-firefox` and `playwright-webkit` |
| 47 | + catalinaEdgeCap.Add("browser_version", "latest"); |
| 48 | + catalinaEdgeCap.Add("os", "osx"); |
| 49 | + catalinaEdgeCap.Add("os_version", "catalina"); |
| 50 | + catalinaEdgeCap.Add("name", "Branded Microsoft Edge on Catalina"); |
| 51 | + catalinaEdgeCap.Add("build", "playwright-dotnet-2"); |
| 52 | + catalinaEdgeCap.Add("browserstack.username", "BROWSERSTACK_USERNAME"); |
| 53 | + catalinaEdgeCap.Add("browserstack.accessKey", "BROWSERSTACK_ACCESS_KEY"); |
| 54 | + capabilitiesList.Add(catalinaEdgeCap); |
| 55 | + |
| 56 | + Dictionary<string, string> catalinaFirefoxCap = new Dictionary<string, string>(); |
| 57 | + catalinaFirefoxCap.Add("browser", "playwright-firefox"); // allowed browsers are `chrome`, `edge`, `playwright-chromium`, `playwright-firefox` and `playwright-webkit` |
| 58 | + catalinaFirefoxCap.Add("os", "osx"); |
| 59 | + catalinaFirefoxCap.Add("os_version", "catalina"); |
| 60 | + catalinaFirefoxCap.Add("name", "Playwright firefox on Catalina"); |
| 61 | + catalinaFirefoxCap.Add("build", "playwright-dotnet-2"); |
| 62 | + catalinaFirefoxCap.Add("browserstack.username", "BROWSERSTACK_USERNAME"); |
| 63 | + catalinaFirefoxCap.Add("browserstack.accessKey", "BROWSERSTACK_ACCESS_KEY"); |
| 64 | + capabilitiesList.Add(catalinaFirefoxCap); |
| 65 | + |
| 66 | + Dictionary<string, string> catalinaWebkitCap = new Dictionary<string, string>(); |
| 67 | + catalinaWebkitCap.Add("browser", "playwright-webkit"); // allowed browsers are `chrome`, `edge`, `playwright-chromium`, `playwright-firefox` and `playwright-webkit` |
| 68 | + catalinaWebkitCap.Add("os", "osx"); |
| 69 | + catalinaWebkitCap.Add("os_version", "catalina"); |
| 70 | + catalinaWebkitCap.Add("name", "Playwright webkit on Catalina"); |
| 71 | + catalinaWebkitCap.Add("build", "playwright-dotnet-2"); |
| 72 | + catalinaWebkitCap.Add("browserstack.username", "BROWSERSTACK_USERNAME"); |
| 73 | + catalinaWebkitCap.Add("browserstack.accessKey", "BROWSERSTACK_ACCESS_KEY"); |
| 74 | + capabilitiesList.Add(catalinaWebkitCap); |
| 75 | + |
| 76 | + Dictionary<string, string> catalinaChromiumCap = new Dictionary<string, string>(); |
| 77 | + catalinaChromiumCap.Add("browser", "playwright-chromium"); // allowed browsers are `chrome`, `edge`, `playwright-chromium`, `playwright-firefox` and `playwright-webkit` |
| 78 | + catalinaChromiumCap.Add("os", "osx"); |
| 79 | + catalinaChromiumCap.Add("os_version", "catalina"); |
| 80 | + catalinaChromiumCap.Add("name", "Playwright webkit on Catalina"); |
| 81 | + catalinaChromiumCap.Add("build", "playwright-dotnet-2"); |
| 82 | + catalinaChromiumCap.Add("browserstack.username", "BROWSERSTACK_USERNAME"); |
| 83 | + catalinaChromiumCap.Add("browserstack.accessKey", "BROWSERSTACK_ACCESS_KEY"); |
| 84 | + capabilitiesList.Add(catalinaChromiumCap); |
| 85 | + |
| 86 | + return capabilitiesList; |
48 | 87 | } |
49 | 88 |
|
50 | 89 | //Executetestwithcaps function takes capabilities from 'SampleTestCase' function and executes the test |
@@ -72,7 +111,6 @@ public static async Task Executetestwithcaps(string capabilities) |
72 | 111 | } |
73 | 112 | } |
74 | 113 | catch (Exception err) { |
75 | | - Console.WriteLine(err); |
76 | 114 | await MarkTestStatus("failed", err.Message, page); |
77 | 115 | } |
78 | 116 | await browser.CloseAsync(); |
|
0 commit comments