package com.epam.jdi.uitests.testing.career.parallel.tests;
import com.epam.commons.Timer;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
import java.util.HashMap;
import java.util.Map;
import static com.epam.jdi.uitests.web.selenium.driver.WebDriverUtils.killAllRunWebDrivers;
import static java.lang.String.format;
import static java.lang.System.setProperty;
import static java.lang.Thread.currentThread;
import static java.util.concurrent.TimeUnit.SECONDS;
public class SeleniumParallelSimpleTests {
private Map<Long, WebDriver> threadsDrivers = new HashMap<>();
private WebDriver registerNewdriver(long threadId) {
WebDriver driver = getNewDriver();
threadsDrivers.put(threadId, driver);
return driver;
}
private WebDriver getDriver() {
long threadId = currentThread().getId();
return threadsDrivers.containsKey(threadId)
? threadsDrivers.get(threadId)
: registerNewdriver(threadId);
}
@BeforeSuite(alwaysRun = true)
public static void setUp() throws Exception {
killAllRunWebDrivers();
setProperty("webdriver.chrome.driver", "C:\\Selenium\\chromedriver.exe");
}
public WebDriver getNewDriver() {
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, SECONDS);
return driver;
}
private void seleniumScenario(int num) {
System.out.println(format("Start test %s; Thread: %s", num, Thread.currentThread().getId()));
WebDriver driver = getDriver();
driver.get("http://www.epam.com");
System.out.println(format("Site opened: %s; Thread: %s", num, Thread.currentThread().getId()));
Timer t = new Timer();
for(int i = 1; i<=5; i++) {
driver.findElements(By.cssSelector(".tile-menu>li>a")).get(i).click();
System.out.println("Click " + i + " done");
try {Thread.sleep(1000);
} catch (Exception ignore) {}
}
}
@Test
public void simpleParallelTest() {
seleniumScenario(1);
}
@Test
public void simpleParallelTest2() {
seleniumScenario(2);
}
@Test
public void simpleParallelTest3() {
seleniumScenario(3);
}
@Test
public void simpleParallelTest4() {
seleniumScenario(4);
}
@Test
public void simpleParallelTest5() {
seleniumScenario(5);
}
@Test
public void simpleParallelTest6() {
seleniumScenario(6);
}
@AfterSuite(alwaysRun = true)
public static void jdiTearDown() {
killAllRunWebDrivers();
}
}