package integration.grid;
import com.codeborne.selenide.Configuration;
import com.codeborne.selenide.WebDriverRunner;
import integration.IntegrationTest;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.grid.selenium.GridLauncherV3;
import static com.codeborne.selenide.CollectionCondition.size;
import static com.codeborne.selenide.Selenide.$$;
import static com.codeborne.selenide.Selenide.close;
import static org.junit.Assume.assumeFalse;
import static org.openqa.selenium.net.PortProber.findFreePort;
public class SeleniumGridTest extends IntegrationTest {
@Before
public void setUp() throws Exception {
assumeFalse(WebDriverRunner.isPhantomjs()); // for unknown reason, node registration doesn't work with PhantomJS yet.
close();
int hubPort = findFreePort();
GridLauncherV3.main(new String[]{"-port", "" + hubPort});
GridLauncherV3.main(new String[]{"-port", "" + findFreePort(),
"-role", "node",
"-hub", "http://localhost:" + hubPort + "/grid/register"
});
Configuration.remote = "http://localhost:" + hubPort + "/wd/hub";
}
@Test
public void canUseSeleniumGrid() {
openFile("page_with_selects_without_jquery.html");
$$("#radioButtons input").shouldHave(size(4));
}
@After
public void tearDown() {
close();
Configuration.remote = null;
}
}