package ru.qatools.gridrouter;
import org.junit.Rule;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriverException;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.remote.RemoteWebElement;
import ru.qatools.gridrouter.utils.GridRouterRule;
import java.net.URL;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
import static org.openqa.selenium.Platform.ANY;
import static org.openqa.selenium.remote.DesiredCapabilities.firefox;
/**
* @author Innokenty Shuvalov innokenty@yandex-team.ru
*/
public abstract class ProxyServletTest {
@Rule
public GridRouterRule gridRouter = new GridRouterRule();
private final URL url;
public ProxyServletTest(String user) {
url = GridRouterRule.hubUrl(gridRouter.baseUrl(user));
}
protected final URL getUrl() {
return url;
}
@Test
public void testSpecifyingBrowserVersion() {
DesiredCapabilities caps = firefox();
caps.setVersion("32");
new RemoteWebDriver(getUrl(), caps);
}
@Test
public void testSessionIdDoesNotChange() {
RemoteWebDriver driver = new RemoteWebDriver(getUrl(), firefox());
String sessionId = driver.getSessionId().toString();
driver.getCurrentUrl();
driver.get("some url");
assertThat(driver.getSessionId().toString(), is(equalTo(sessionId)));
driver.getCurrentUrl();
assertThat(driver.getSessionId().toString(), is(equalTo(sessionId)));
}
@Test
public void testSessionIdChangesForANewBrowser() {
RemoteWebDriver driver1 = new RemoteWebDriver(getUrl(), firefox());
String sessionId1 = driver1.getSessionId().toString();
RemoteWebDriver driver2 = new RemoteWebDriver(getUrl(), firefox());
String sessionId2 = driver2.getSessionId().toString();
assertThat(sessionId1, is(not(equalTo(sessionId2))));
}
@Test
public void testQuit() {
RemoteWebDriver driver = new RemoteWebDriver(getUrl(), firefox());
driver.quit();
}
@Test
public void testSendRequestParams() {
RemoteWebDriver driver = new RemoteWebDriver(getUrl(), firefox());
String url = "some url";
driver.getCurrentUrl();
driver.get(url);
assertThat(driver.getCurrentUrl(), is(url));
}
@Test
public void testFindElement() {
RemoteWebDriver driver = new RemoteWebDriver(getUrl(), firefox());
driver.getCurrentUrl();
String selector = "//lol[foo='bar']";
WebElement element = driver.findElement(By.xpath(selector));
assertThat(
((RemoteWebElement) element).getId(),
is(String.valueOf(selector.hashCode()))
);
}
@Test
public void testNullVersion() throws Exception {
String browserName = "other";
try {
new RemoteWebDriver(getUrl(), new DesiredCapabilities(browserName, null, ANY));
} catch (WebDriverException e) {
assertThat(e.getMessage(),
startsWith("Cannot find " + browserName + " capabilities on any available node"));
}
}
}