package integration;
import com.codeborne.selenide.ex.JavaScriptErrorsFound;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import java.util.logging.Level;
import static com.codeborne.selenide.Selectors.byText;
import static com.codeborne.selenide.Selenide.*;
import static com.codeborne.selenide.WebDriverRunner.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.junit.Assume.assumeFalse;
import static org.openqa.selenium.logging.LogType.BROWSER;
public class BrowserLogsTest extends IntegrationTest {
@Before
public void setUp() {
getWebDriverLogs(BROWSER); // clear logs
openFile("page_with_js_errors.html");
}
@Test
public void canCheckJavaScriptErrors() {
assumeFalse(isFirefox() || isChrome()); // window.onerror does not work in Firefox for unknown reason :(
assertNoJavascriptErrors();
$(byText("Generate JS Error")).click();
assertEquals(1, getJavascriptErrors().size());
String jsError = getJavascriptErrors().get(0);
assertTrue(jsError, jsError.contains("ReferenceError"));
assertTrue(jsError, jsError.contains("$"));
assertTrue(jsError, jsError.contains("/page_with_js_errors.html"));
}
@Test
public void canAssertNoJavaScriptErrors() {
assumeFalse(isFirefox()); // window.onerror does not work in Firefox for unknown reason :(
$(byText("Generate JS Error")).click();
try {
assertNoJavascriptErrors();
fail("Expected JavaScriptErrorsFound");
}
catch (JavaScriptErrorsFound expected) {
assertEquals(1, expected.getJsErrors().size());
assertTrue(expected.getJsErrors().get(0).contains("ReferenceError"));
}
}
@Test
public void canGetWebDriverBrowserConsoleLogEntry() {
$(byText("Generate JS Error")).click();
List<String> webDriverLogs = getWebDriverLogs(BROWSER, Level.ALL);
assumeFalse(isHtmlUnit() || isPhantomjs() || isFirefox() || isSafari() || isChrome());
assertEquals("Expected 1 log, but received: " + webDriverLogs, 1, webDriverLogs.size());
String logEntry = webDriverLogs.get(0);
assertTrue(logEntry, logEntry.contains("ReferenceError"));
assertTrue(logEntry, logEntry.contains("$"));
assertTrue(logEntry, logEntry.contains("/page_with_js_errors.html"));
}
}