package jp.vmi.selenium.selenese;
import java.io.File;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.junit.Ignore;
import org.junit.Test;
import org.openqa.selenium.TakesScreenshot;
import jp.vmi.selenium.selenese.log.CookieFilter;
import jp.vmi.selenium.selenese.log.CookieFilter.FilterType;
import jp.vmi.selenium.selenese.result.Error;
import jp.vmi.selenium.selenese.result.Failure;
import jp.vmi.selenium.selenese.result.Success;
import jp.vmi.selenium.selenese.result.Warning;
import jp.vmi.selenium.testutils.DriverDependentTestCaseTestBase;
import static jp.vmi.selenium.webdriver.WebDriverManager.*;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import static org.junit.Assume.*;
/**
* Driver dependent test.
*/
@SuppressWarnings("javadoc")
public class DriverDependentTest extends DriverDependentTestCaseTestBase {
@Test
public void testSimple() {
assumeNot(HTMLUNIT); // don't work this test on HtmlUnitDriver.
execute("simple");
assertThat(result, is(instanceOf(Success.class)));
assertThat(xmlResult, containsString("Command#4"));
}
@Test
public void testLocatorFail() {
execute("error");
assertThat(result, is(instanceOf(Failure.class)));
assertThat(result.getMessage(), containsString("Element name=no_such_name not found"));
}
@Test
public void testAssertFail() {
assumeNot(HTMLUNIT); // don't work this test on HtmlUnitDriver.
execute("assertFail");
assertThat(result, is(instanceOf(Failure.class)));
assertThat(result.getMessage(), containsString("Result: [selenium] / Expected: [no such text]"));
}
@Test
public void capture() {
assumeThat(driver, is(instanceOf(TakesScreenshot.class)));
File pngFile = new File(screenshotDir.getRoot(), "test.png");
if (pngFile.exists())
pngFile.delete();
execute("capture");
assertThat(result, is(instanceOf(Success.class)));
assertThat("Captured File: " + pngFile, pngFile.exists(), is(true));
}
@Test
public void ignoreScreenshotCommand() {
assumeThat(driver, is(instanceOf(TakesScreenshot.class)));
runner.setIgnoredScreenshotCommand(true);
execute("capture");
assertThat(result, is(instanceOf(Success.class)));
assertThat(FileUtils.listFiles(screenshotDir.getRoot(), new String[] { "png" }, true), is(empty()));
}
@Ignore
@Test
public void basicAuth() {
assumeNot(HTMLUNIT, IE);
execute("basicAuth");
runner.setOverridingBaseURL("http://user:pass@" + wsr.getServerNameString() + "/");
assertThat(result.isSuccess(), is(true));
}
@Test
public void highlight() {
assumeNot(HTMLUNIT); // don't work this test on HtmlUnitDriver.
runner.setHighlight(true);
runner.setOverridingBaseURL(wsr.getBaseURL());
execute("highlight");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void locator() {
// don't work this test-case on SafariDriver and HtmlUnitDriver.
assumeNot(HTMLUNIT, SAFARI);
execute("locator");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void iframe() {
// don't work this test-case on SafariDriver and HtmlUnitDriver.
assumeNot(HTMLUNIT, SAFARI);
execute("iframe");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void sendkeys() {
assumeNot(HTMLUNIT, FIREFOX);
execute("sendkeys");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void clickableImage() {
assumeNot(HTMLUNIT, FIREFOX);
execute("clickable_image_test");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void rollup() {
assumeNot(HTMLUNIT);
runner.getRollupRules().load(getClass().getResourceAsStream("/rollup/user-extention-rollup.js"));
execute("rollup");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void cookie() {
execute("cookie");
assertThat(result, is(instanceOf(Warning.class)));
List<String> actual = getSystemOut(new Filter() {
private boolean fetch = false;
@Override
public String filter(String line) {
if (!fetch && line.contains("deleteAllVisibleCookies")) {
fetch = true;
} else if (fetch && line.contains("- Cookie:")) {
return line
.replaceFirst("^\\[[^\\]]+\\]\\s+", "") // suppress timestamp.
.replaceFirst("domain=\\*", "domain=localhost"); // fixup safari driver's bug.
}
return null;
}
});
assertThat(actual, is(equalTo(Arrays.asList(
"[INFO] - Cookie: [add] key1=[value1] (domain=localhost, path=/, expire=*)",
"[INFO] - Cookie: [add] key2=[value2] (domain=localhost, path=/, expire=*)",
"[INFO] - Cookie: [add] key3=[value3] (domain=localhost, path=/, expire=*)",
"[ERROR] - Cookie: key1=[value1] (domain=localhost, path=/, expire=*)",
"[ERROR] - Cookie: key2=[value2] (domain=localhost, path=/, expire=*)",
"[ERROR] - Cookie: key3=[value3] (domain=localhost, path=/, expire=*)",
"[INFO] - Cookie: [mod] key2=[VALUE_TWO] (domain=localhost, path=/, expire=*)",
"[INFO] - Cookie: [del] key3 (domain=localhost, path=/)"))));
testSuites.clear();
execute("cookie2");
assertThat(result, is(instanceOf(Success.class)));
List<String> actual2 = getSystemOut(new Filter() {
@Override
public String filter(String line) {
if (line.contains("- Cookie:")) {
return line
.replaceFirst("^\\[[^\\]]+\\]\\s+", "") // suppress timestamp.
.replaceFirst("domain=\\*", "domain=localhost"); // fixup safari driver's bug.
}
return null;
}
});
assertThat(actual2, is(equalTo(Arrays.asList(
"[INFO] - Cookie: key1=[value1] (domain=localhost, path=/, expire=*)",
"[INFO] - Cookie: key2=[VALUE_TWO] (domain=localhost, path=/, expire=*)",
"[INFO] - Cookie: [del] key1 (domain=localhost, path=/)",
"[INFO] - Cookie: [del] key2 (domain=localhost, path=/)"))));
}
@Test
public void cookieFilter() {
runner.setCookieFilter(new CookieFilter(FilterType.SKIP, "key2"));
execute("cookie");
assertThat(result, is(instanceOf(Warning.class)));
List<String> actual = getSystemOut(new Filter() {
private boolean fetch = false;
@Override
public String filter(String line) {
if (!fetch && line.contains("deleteAllVisibleCookies")) {
fetch = true;
} else if (fetch && line.contains("- Cookie:")) {
return line
.replaceFirst("^\\[[^\\]]+\\]\\s+", "") // suppress timestamp.
.replaceFirst("domain=\\*", "domain=localhost"); // fixup safari driver's bug.
}
return null;
}
});
assertThat(actual, is(equalTo(Arrays.asList(
"[INFO] - Cookie: [add] key1=[value1] (domain=localhost, path=/, expire=*)",
"[INFO] - Cookie: [add] key3=[value3] (domain=localhost, path=/, expire=*)",
"[ERROR] - Cookie: key1=[value1] (domain=localhost, path=/, expire=*)",
"[ERROR] - Cookie: key3=[value3] (domain=localhost, path=/, expire=*)",
"[INFO] - Cookie: [del] key3 (domain=localhost, path=/)"))));
testSuites.clear();
runner.setCookieFilter(new CookieFilter(FilterType.PASS, "key1"));
execute("cookie2");
assertThat(result, is(instanceOf(Success.class)));
List<String> actual2 = getSystemOut(new Filter() {
@Override
public String filter(String line) {
if (line.contains("- Cookie:")) {
return line
.replaceFirst("^\\[[^\\]]+\\]\\s+", "") // suppress timestamp.
.replaceFirst("domain=\\*", "domain=localhost"); // fixup safari driver's bug.
}
return null;
}
});
assertThat(actual2, is(equalTo(Arrays.asList(
"[INFO] - Cookie: key1=[value1] (domain=localhost, path=/, expire=*)",
"[INFO] - Cookie: [del] key1 (domain=localhost, path=/)"))));
}
@Test
public void issue48() {
assumeNot(SAFARI); // FIXME don't work this test on SafariDriver.
execute("issue48");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void issue49_50() {
execute("issue49+50");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void issue55() {
assumeNot(HTMLUNIT); // don't work this test on HtmlUnitDriver.
execute("issue55");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void issue76() {
assumeNot(SAFARI); // FIXME don't work this test on SafariDriver.
execute("issue76");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void issue77() {
execute("issue77");
assertThat(result, is(instanceOf(Failure.class)));
assertThat(result.getMessage(), containsString("Element css=select[name='not_found'] not found"));
}
@Test
public void issue87() {
execute("verifyCssCount");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void issue93() {
execute("issue93");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void issue99() {
assumeNot(HTMLUNIT, PHANTOMJS);
execute("issue99");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void issue114() {
execute("issue114_2");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void mouseEvent() {
assumeNot(HTMLUNIT, FIREFOX);
execute("testsuite_mouse");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void issue179() {
assumeNot(HTMLUNIT, FIREFOX);
execute("testcase_issue179");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void issue190() {
// FIXME Don't work with FirefoxDriver of Selenium 3.3.1.
assumeNot(FIREFOX);
runner.setTimeout(3000);
execute("testcase_issue190");
assertThat(result, is(instanceOf(Error.class)));
}
@Test
public void issue191() {
execute("testcase_issue191");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void issue195() {
assumeNot(HTMLUNIT);
execute("testcase_issue195");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void dialogOverride() {
assumeNot(HTMLUNIT);
execute("testcase_dialog_override");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void test197() {
execute("testcase_issue197");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void test197_03() {
execute("testcase_issue197_03");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void test197_04() {
execute("testcase_issue197_04");
assertThat(result, is(instanceOf(Error.class)));
}
@Test
public void test203_01() {
assumeNot(HTMLUNIT);
execute("testcase_issue203_01");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void test203_02() {
assumeNot(HTMLUNIT, FIREFOX);
execute("testcase_issue203_02");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void test206() {
assumeNot(HTMLUNIT);
execute("testcase_issue206");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void test220() {
execute("testcase_issue220");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void setAndGetCookies() {
execute("testcase_cookie");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void elements() {
execute("testcase_elements");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void selenium3() {
assumeNot(FIREFOX);
execute("testcase_selenium3");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
@Ignore("Don't work on any drivers.")
public void dnd() {
assumeNot(HTMLUNIT, FIREFOX);
execute("testcase_dnd");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void test223() {
execute("testcase_issue223");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void test224() {
assumeNot(HTMLUNIT);
execute("testcase_issue224");
assertThat(result, is(instanceOf(Success.class)));
}
@Test
public void test227() {
execute("testcase_issue227");
assertThat(result, is(instanceOf(Success.class)));
}
}