package jp.vmi.selenium.selenese; import org.apache.commons.lang3.time.StopWatch; import org.junit.Test; import jp.vmi.selenium.selenese.result.CommandResult; import jp.vmi.selenium.selenese.result.CommandResultList; import jp.vmi.selenium.selenese.result.MaxTimeExceeded; import jp.vmi.selenium.testutils.TestCaseTestBase; import jp.vmi.selenium.webdriver.DriverOptions; import jp.vmi.selenium.webdriver.WebDriverManager; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; /** * Driver independent test. */ @SuppressWarnings("javadoc") public class MaxTimeTest extends TestCaseTestBase { @Override protected void initDriver() { setWebDriverFactory(WebDriverManager.HTMLUNIT, new DriverOptions()); driver = manager.get(); } protected void execute(String scriptName, long maxtime) { StopWatch sw = new StopWatch(); runner.setupMaxTimeTimer(maxtime); sw.start(); execute(scriptName); sw.stop(); assertThat(sw.getTime(), is(lessThanOrEqualTo(maxtime + 10000))); } private CommandResult getLastCommandResult() { CommandResultList list = runner.getCurrentTestCase().getResultList(); return list.get(list.size() - 1); } @Test public void flowControl() throws IllegalArgumentException { execute("maxTimeFlowControl", 1000); assertThat(result, is(instanceOf(MaxTimeExceeded.class))); assertThat(getLastCommandResult().getCommand().getName(), anyOf(is("open"), is("while"), is("endWhile"))); } @Test public void verifyNotText() throws IllegalArgumentException { execute("maxTimeVerifyNotText", 1500); assertThat(result, is(instanceOf(MaxTimeExceeded.class))); assertThat(getLastCommandResult().getCommand().getName(), anyOf(is("open"), is("verifyNotText"), is("label"), is("gotolabel"))); } @Test public void pauseCommand() throws IllegalArgumentException { execute("pause", 2000); assertThat(result, is(instanceOf(MaxTimeExceeded.class))); assertThat(getLastCommandResult().getCommand().getName(), is("pause")); } @Test public void setSpeed() throws IllegalArgumentException { execute("maxTimeSetSpeed", 2000); assertThat(result, is(instanceOf(MaxTimeExceeded.class))); assertThat(getLastCommandResult().getCommand().getName(), is("setSpeed")); } @Test public void waitForCondition() { execute("maxTimeWaitForCondition", 5000); assertThat(result, is(instanceOf(MaxTimeExceeded.class))); assertThat(getLastCommandResult().getCommand().getName(), anyOf(is("open"), is("waitForCondition"))); } @Test public void clickAndWait() { execute("maxTimeClickAndWait", 5000); assertThat(result, is(instanceOf(MaxTimeExceeded.class))); assertThat(getLastCommandResult().getCommand().getName(), anyOf(is("open"), is("clickAndWait"))); } }