tests: use assertThrows instead of try-catch (#1038)
This commit is contained in:
+9
-17
@@ -248,27 +248,19 @@ public class TestBrowserContextAddCookies extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldNotSetACookieWithBlankPageURL() {
|
||||
try {
|
||||
context.addCookies(asList(
|
||||
new Cookie("example-cookie", "best").setUrl(server.EMPTY_PAGE),
|
||||
new Cookie("example-cookie-blank", "best").setUrl("about:blank")
|
||||
));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Blank page can not have cookie \"example-cookie-blank\""));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> context.addCookies(asList(
|
||||
new Cookie("example-cookie", "best").setUrl(server.EMPTY_PAGE),
|
||||
new Cookie("example-cookie-blank", "best").setUrl("about:blank")
|
||||
)));
|
||||
assertTrue(e.getMessage().contains("Blank page can not have cookie \"example-cookie-blank\""));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldNotSetACookieOnADataURLPage() {
|
||||
try {
|
||||
context.addCookies(asList(
|
||||
new Cookie("example-cookie", "best").setUrl("data:,Hello%2C%20World!")
|
||||
));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Data URL page can not have cookie \"example-cookie\""));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> context.addCookies(asList(
|
||||
new Cookie("example-cookie", "best").setUrl("data:,Hello%2C%20World!")
|
||||
)));
|
||||
assertTrue(e.getMessage().contains("Data URL page can not have cookie \"example-cookie\""));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -116,22 +116,18 @@ public class TestBrowserContextBasic extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldNotAllowDeviceScaleFactorWithNullViewport() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
browser.newContext(new Browser.NewContextOptions().setDeviceScaleFactor(1.0).setViewportSize(null));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("\"deviceScaleFactor\" option is not supported with null \"viewport\""));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("\"deviceScaleFactor\" option is not supported with null \"viewport\""));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldNotAllowIsMobileWithNullViewport() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
browser.newContext(new Browser.NewContextOptions().setIsMobile(true).setViewportSize(null));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("\"isMobile\" option is not supported with null \"viewport\""));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("\"isMobile\" option is not supported with null \"viewport\""));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -143,12 +139,10 @@ public class TestBrowserContextBasic extends TestBase {
|
||||
@Test
|
||||
void closeShouldAbortFutureEvent() {
|
||||
BrowserContext context = browser.newContext();
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
context.waitForPage(() -> context.close());
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Context closed"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Context closed"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -211,15 +205,11 @@ public class TestBrowserContextBasic extends TestBase {
|
||||
BrowserContext context = browser.newContext(new Browser.NewContextOptions().setJavaScriptEnabled(false));
|
||||
Page page = context.newPage();
|
||||
page.navigate("data:text/html, <script>var something = 'forbidden'</script>");
|
||||
try {
|
||||
page.evaluate("something");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
if (isWebKit())
|
||||
assertTrue(e.getMessage().contains("Can\'t find variable: something"));
|
||||
else
|
||||
assertTrue(e.getMessage().contains("something is not defined"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.evaluate("something"));
|
||||
if (isWebKit())
|
||||
assertTrue(e.getMessage().contains("Can\'t find variable: something"));
|
||||
else
|
||||
assertTrue(e.getMessage().contains("something is not defined"));
|
||||
context.close();
|
||||
}
|
||||
|
||||
@@ -244,11 +234,7 @@ public class TestBrowserContextBasic extends TestBase {
|
||||
void shouldWorkWithOfflineOption() {
|
||||
BrowserContext context = browser.newContext(new Browser.NewContextOptions().setOffline(true));
|
||||
Page page = context.newPage();
|
||||
try {
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
}
|
||||
assertThrows(PlaywrightException.class, () -> page.navigate(server.EMPTY_PAGE));
|
||||
|
||||
context.setOffline(false);
|
||||
Response response = page.navigate(server.EMPTY_PAGE);
|
||||
|
||||
+6
-18
@@ -58,28 +58,16 @@ public class TestBrowserContextExposeFunction extends TestBase {
|
||||
void shouldThrowForDuplicateRegistrations() {
|
||||
context.exposeFunction("foo", args -> null);
|
||||
context.exposeFunction("bar", args -> null);
|
||||
try {
|
||||
context.exposeFunction("foo", args -> null);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Function \"foo\" has been already registered"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> context.exposeFunction("foo", args -> null));
|
||||
assertTrue(e.getMessage().contains("Function \"foo\" has been already registered"));
|
||||
|
||||
Page page = context.newPage();
|
||||
try {
|
||||
page.exposeFunction("foo", args -> null);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Function \"foo\" has been already registered in the browser context"));
|
||||
}
|
||||
e = assertThrows(PlaywrightException.class, () -> page.exposeFunction("foo", args -> null));
|
||||
assertTrue(e.getMessage().contains("Function \"foo\" has been already registered in the browser context"));
|
||||
|
||||
page.exposeFunction("baz", args -> null);
|
||||
try {
|
||||
context.exposeFunction("baz", args -> null);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Function \"baz\" has been already registered in one of the pages"));
|
||||
}
|
||||
e = assertThrows(PlaywrightException.class, () -> context.exposeFunction("baz", args -> null));
|
||||
assertTrue(e.getMessage().contains("Function \"baz\" has been already registered in one of the pages"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -51,24 +51,16 @@ public class TestBrowserContextFetch extends TestBase {
|
||||
@Test
|
||||
void shouldThrowOnNetworkError() {
|
||||
server.setRoute("/test", exchange -> exchange.getResponseBody().close());
|
||||
try {
|
||||
context.request().get(server.PREFIX + "/test");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("socket hang up"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> context.request().get(server.PREFIX + "/test"));
|
||||
assertTrue(e.getMessage().contains("socket hang up"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldThrowOnNetworkErrorAfterRedirect() {
|
||||
server.setRedirect("/redirect", "/test");
|
||||
server.setRoute("/test", exchange -> exchange.getResponseBody().close());
|
||||
try {
|
||||
context.request().get(server.PREFIX + "/redirect");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("socket hang up"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> context.request().get(server.PREFIX + "/redirect"));
|
||||
assertTrue(e.getMessage().contains("socket hang up"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -80,12 +72,8 @@ public class TestBrowserContextFetch extends TestBase {
|
||||
writer.write("<title>A");
|
||||
}
|
||||
});
|
||||
try {
|
||||
context.request().get(server.PREFIX + "/test");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("aborted"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> context.request().get(server.PREFIX + "/test"));
|
||||
assertTrue(e.getMessage().contains("aborted"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -98,12 +86,8 @@ public class TestBrowserContextFetch extends TestBase {
|
||||
writer.write("<title>A");
|
||||
}
|
||||
});
|
||||
try {
|
||||
context.request().get(server.PREFIX + "/redirect");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("aborted"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> context.request().get(server.PREFIX + "/redirect"));
|
||||
assertTrue(e.getMessage().contains("aborted"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -134,12 +118,10 @@ public class TestBrowserContextFetch extends TestBase {
|
||||
|
||||
@Test
|
||||
void getShouldSupportFailOnStatusCode() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
context.request().get(server.PREFIX + "/does-not-exist.html", RequestOptions.create().setFailOnStatusCode(true));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("404 Not Found"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("404 Not Found"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -385,29 +367,20 @@ public class TestBrowserContextFetch extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldThrowOnInvalidHeaderValue() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
context.request().get(server.EMPTY_PAGE, RequestOptions.create()
|
||||
.setHeader("foo", "недопустимое значение"));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Invalid character in header content"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Invalid character in header content"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldThrowOnNonHttpSProtocol() {
|
||||
try {
|
||||
context.request().get("data:text/plain,test");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Protocol \"data:\" not supported"), e.getMessage());
|
||||
}
|
||||
try {
|
||||
context.request().get("file:///tmp/foo");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Protocol \"file:\" not supported"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> context.request().get("data:text/plain,test"));
|
||||
assertTrue(e.getMessage().contains("Protocol \"data:\" not supported"), e.getMessage());
|
||||
|
||||
e = assertThrows(PlaywrightException.class, () -> context.request().get("file:///tmp/foo"));
|
||||
assertTrue(e.getMessage().contains("Protocol \"file:\" not supported"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -417,12 +390,10 @@ public class TestBrowserContextFetch extends TestBase {
|
||||
exchange.sendResponseHeaders(200, 4096);
|
||||
});
|
||||
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
context.request().get(server.PREFIX + "/slow", RequestOptions.create().setTimeout(100));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Request timed out after 100ms"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Request timed out after 100ms"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -453,12 +424,8 @@ public class TestBrowserContextFetch extends TestBase {
|
||||
});
|
||||
|
||||
context.setDefaultTimeout(100);
|
||||
try {
|
||||
context.request().get(server.PREFIX + "/redirect");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Request timed out after 100ms"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> context.request().get(server.PREFIX + "/redirect"));
|
||||
assertTrue(e.getMessage().contains("Request timed out after 100ms"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -466,12 +433,8 @@ public class TestBrowserContextFetch extends TestBase {
|
||||
APIResponse response = context.request().get(server.PREFIX + "/simple.json");
|
||||
assertEquals("{\"foo\": \"bar\"}\n", response.text());
|
||||
response.dispose();
|
||||
try {
|
||||
response.body();
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Response has been disposed"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> response.body());
|
||||
assertTrue(e.getMessage().contains("Response has been disposed"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -479,13 +442,9 @@ public class TestBrowserContextFetch extends TestBase {
|
||||
APIResponse response = context.request().get(server.PREFIX + "/simple.json");
|
||||
assertEquals("{\"foo\": \"bar\"}\n", response.text());
|
||||
context.close();
|
||||
try {
|
||||
response.body();
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Response has been disposed") ||
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> response.body());
|
||||
assertTrue(e.getMessage().contains("Response has been disposed") ||
|
||||
e.getMessage().contains("Target page, context or browser has been closed"), e.getMessage());
|
||||
}
|
||||
}
|
||||
@Test
|
||||
void shouldOverrideRequestParameters() throws ExecutionException, InterruptedException {
|
||||
@@ -615,16 +574,13 @@ public class TestBrowserContextFetch extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldThrowWhenDataPassedForUnsupportedRequest() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
context.request().fetch(server.EMPTY_PAGE, RequestOptions.create()
|
||||
.setMethod("GET").setData("bar"));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Method GET does not accept post data"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Method GET does not accept post data"), e.getMessage());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void contextRequestShouldExportSameStorageStateAsContext() {
|
||||
server.setRoute("/setcookie.html", exchange -> {
|
||||
@@ -666,18 +622,10 @@ public class TestBrowserContextFetch extends TestBase {
|
||||
return null;
|
||||
});
|
||||
page.evaluate("() => setTimeout(closeContext, 1000);");
|
||||
try {
|
||||
context.request().get(server.EMPTY_PAGE);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Request context disposed"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> context.request().get(server.EMPTY_PAGE));
|
||||
assertTrue(e.getMessage().contains("Request context disposed"), e.getMessage());
|
||||
|
||||
try {
|
||||
context.request().post(server.EMPTY_PAGE);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Target page, context or browser has been closed"), e.getMessage());
|
||||
}
|
||||
e = assertThrows(PlaywrightException.class, () -> context.request().post(server.EMPTY_PAGE));
|
||||
assertTrue(e.getMessage().contains("Target page, context or browser has been closed"), e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,11 +79,7 @@ public class TestBrowserContextHar extends TestBase {
|
||||
Path path = Paths.get("src/test/resources/har-fulfill.har");
|
||||
context.routeFromHAR(path);
|
||||
Page page = context.newPage();
|
||||
try {
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
}
|
||||
assertThrows(PlaywrightException.class, () -> page.navigate(server.EMPTY_PAGE));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -350,11 +346,7 @@ public class TestBrowserContextHar extends TestBase {
|
||||
assertEquals("2", page2.evaluate(fetchFunction, "2"));
|
||||
assertEquals("3", page2.evaluate(fetchFunction, "3"));
|
||||
assertEquals("3", page2.evaluate(fetchFunction, "3"));
|
||||
try {
|
||||
page2.evaluate(fetchFunction, "4");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
}
|
||||
assertThrows(PlaywrightException.class, () -> page2.evaluate(fetchFunction, "4"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -47,9 +47,9 @@ public class TestBrowserContextProxy extends TestBase {
|
||||
@EnabledIf(value="isChromiumWindows", disabledReason="Platform-specific")
|
||||
void shouldThrowForMissingGlobalProxyOnChromiumWindows() {
|
||||
try (Browser browser = browserType.launch(createLaunchOptions())) {
|
||||
browser.newContext(new Browser.NewContextOptions().setProxy("localhost:" + server.PORT));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
browser.newContext(new Browser.NewContextOptions().setProxy("localhost:" + server.PORT));
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Browser needs to be launched with the global proxy"));
|
||||
}
|
||||
}
|
||||
@@ -179,23 +179,9 @@ public class TestBrowserContextProxy extends TestBase {
|
||||
page.navigate("http://0.non.existent.domain.for.the.test/target.html");
|
||||
assertEquals("Served by the proxy", page.title());
|
||||
|
||||
try {
|
||||
page.navigate("http://1.non.existent.domain.for.the.test/target.html");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException exception) {
|
||||
}
|
||||
|
||||
try {
|
||||
page.navigate("http://2.non.existent.domain.for.the.test/target.html");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
}
|
||||
|
||||
try {
|
||||
page.navigate("http://foo.is.the.another.test/target.html");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
}
|
||||
assertThrows(PlaywrightException.class, () -> page.navigate("http://1.non.existent.domain.for.the.test/target.html"));
|
||||
assertThrows(PlaywrightException.class, () -> page.navigate("http://2.non.existent.domain.for.the.test/target.html"));
|
||||
assertThrows(PlaywrightException.class, () -> page.navigate("http://foo.is.the.another.test/target.html"));
|
||||
|
||||
page.navigate("http://3.non.existent.domain.for.the.test/target.html");
|
||||
assertEquals("Served by the proxy", page.title());
|
||||
|
||||
@@ -169,12 +169,8 @@ public class TestBrowserContextRoute extends TestBase {
|
||||
throw new RuntimeException("My Exception");
|
||||
});
|
||||
|
||||
try {
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
fail("did not throw");
|
||||
} catch (RuntimeException e) {
|
||||
assertTrue(e.getMessage().contains("My Exception"), e.getMessage());
|
||||
}
|
||||
RuntimeException e = assertThrows(RuntimeException.class, () -> page.navigate(server.EMPTY_PAGE));
|
||||
assertTrue(e.getMessage().contains("My Exception"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -187,12 +183,8 @@ public class TestBrowserContextRoute extends TestBase {
|
||||
// Fulfilling with dsiposed response will lead to a server-side exception.
|
||||
route.fulfill(new Route.FulfillOptions().setResponse(response));
|
||||
});
|
||||
try {
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
fail("did not throw");
|
||||
} catch (RuntimeException e) {
|
||||
assertTrue(e.getMessage().contains("Fetch response has been disposed"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.navigate(server.EMPTY_PAGE));
|
||||
assertTrue(e.getMessage().contains("Fetch response has been disposed"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -201,12 +193,8 @@ public class TestBrowserContextRoute extends TestBase {
|
||||
page.route("**/*", route -> {
|
||||
route.resume(new Route.ResumeOptions().setUrl("file:///tmp"));
|
||||
});
|
||||
try {
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
fail("did not throw");
|
||||
} catch (RuntimeException e) {
|
||||
assertTrue(e.getMessage().contains("New URL must have same protocol as overridden URL"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.navigate(server.EMPTY_PAGE));
|
||||
assertTrue(e.getMessage().contains("New URL must have same protocol as overridden URL"), e.getMessage());
|
||||
}
|
||||
|
||||
|
||||
@@ -260,12 +248,7 @@ public class TestBrowserContextRoute extends TestBase {
|
||||
route.fallback();
|
||||
});
|
||||
|
||||
try {
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertNotNull(e);
|
||||
}
|
||||
assertThrows(PlaywrightException.class, () -> page.navigate(server.EMPTY_PAGE));
|
||||
assertFalse(failed[0]);
|
||||
}
|
||||
|
||||
|
||||
@@ -38,12 +38,8 @@ public class TestBrowserContextStrict extends TestBase {
|
||||
@Test
|
||||
void shouldFailPageTextContentInStrictMode() {
|
||||
page.setContent("<span>span1</span><div><span>target</span></div>");
|
||||
try {
|
||||
page.textContent("span");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("strict mode violation"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.textContent("span"));
|
||||
assertTrue(e.getMessage().contains("strict mode violation"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -43,11 +43,7 @@ public class TestBrowserTypeBasic extends TestBase {
|
||||
@Test
|
||||
@DisabledIf(value="com.microsoft.playwright.TestBase#isChromium", disabledReason="Non-chromium behavior")
|
||||
void shouldThrowWhenTryingToConnectWithNotChromium() {
|
||||
try {
|
||||
browserType.connectOverCDP("foo");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Connecting over CDP is only supported in Chromium."));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> browserType.connectOverCDP("foo"));
|
||||
assertTrue(e.getMessage().contains("Connecting over CDP is only supported in Chromium."));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -192,12 +192,8 @@ public class TestBrowserTypeConnect extends TestBase {
|
||||
|
||||
remote.kill();
|
||||
assertEquals(1, disconnected1[0]);
|
||||
try {
|
||||
// Tickle connection so that it gets a chance to dispatch disconnect event.
|
||||
page2.title();
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
}
|
||||
// Tickle connection so that it gets a chance to dispatch disconnect event.
|
||||
assertThrows(PlaywrightException.class, () -> page2.title());
|
||||
assertEquals(1, disconnected2[0]);
|
||||
}
|
||||
|
||||
@@ -262,12 +258,8 @@ public class TestBrowserTypeConnect extends TestBase {
|
||||
}
|
||||
}
|
||||
assertFalse(browser.isConnected());
|
||||
try {
|
||||
page.waitForNavigation(() -> {});
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Page closed") || e.getMessage().contains("Browser has been closed"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.waitForNavigation(() -> {}));
|
||||
assertTrue(e.getMessage().contains("Page closed") || e.getMessage().contains("Browser has been closed"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -277,12 +269,10 @@ public class TestBrowserTypeConnect extends TestBase {
|
||||
|
||||
server.setRoute("/one-style.css", r -> {});
|
||||
page.onRequest(r -> remote.close());
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.navigate(server.PREFIX + "/one-style.html", new Page.NavigateOptions().setTimeout(60000));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Browser has been closed"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Browser has been closed"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -408,12 +398,8 @@ public class TestBrowserTypeConnect extends TestBase {
|
||||
Path savedAsPath = tempDir.resolve("my-video.webm");
|
||||
page.video().saveAs(savedAsPath);
|
||||
assertTrue(Files.exists(savedAsPath));
|
||||
try {
|
||||
page.video().path();
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Path is not available when using browserType.connect(). Use saveAs() to save a local copy."));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.video().path());
|
||||
assertTrue(e.getMessage().contains("Path is not available when using browserType.connect(). Use saveAs() to save a local copy."));
|
||||
}
|
||||
|
||||
|
||||
@@ -435,12 +421,8 @@ public class TestBrowserTypeConnect extends TestBase {
|
||||
download.saveAs(nestedPath);
|
||||
assertTrue(Files.exists(nestedPath));
|
||||
assertEquals("Hello world", new String(Files.readAllBytes(nestedPath), StandardCharsets.UTF_8));
|
||||
try {
|
||||
download.path();
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Path is not available when using browserType.connect(). Use download.saveAs() to save a local copy."));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> download.path());
|
||||
assertTrue(e.getMessage().contains("Path is not available when using browserType.connect(). Use download.saveAs() to save a local copy."));
|
||||
page.close();
|
||||
}
|
||||
|
||||
@@ -459,12 +441,8 @@ public class TestBrowserTypeConnect extends TestBase {
|
||||
Download download = page.waitForDownload(() -> page.click("a"));
|
||||
Path userPath = tempDir.resolve("download.txt");
|
||||
download.delete();
|
||||
try {
|
||||
download.saveAs(userPath);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Target page, context or browser has been closed"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> download.saveAs(userPath));
|
||||
assertTrue(e.getMessage().contains("Target page, context or browser has been closed"));
|
||||
page.close();
|
||||
}
|
||||
|
||||
|
||||
@@ -80,12 +80,10 @@ public class TestChromiumTracing extends TestBase {
|
||||
browser.startTracing(page, new Browser.StartTracingOptions()
|
||||
.setPath(outputTraceFile));
|
||||
Page newPage = browser.newPage();
|
||||
try {
|
||||
assertThrows(PlaywrightException.class, () -> {
|
||||
browser.startTracing(newPage, new Browser.StartTracingOptions()
|
||||
.setPath(outputTraceFile));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
}
|
||||
});
|
||||
newPage.close();
|
||||
browser.stopTracing();
|
||||
}
|
||||
|
||||
@@ -564,12 +564,10 @@ public class TestClick extends TestBase {
|
||||
page.evaluate("addButton()");
|
||||
ElementHandle handle = page.querySelector("button");
|
||||
page.evaluate("stopButton(true)");
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
handle.click(new ElementHandle.ClickOptions().setForce(true));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Element is not attached to the DOM"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Element is not attached to the DOM"));
|
||||
assertEquals(null, page.evaluate("window.clicked"));
|
||||
}
|
||||
|
||||
|
||||
@@ -192,12 +192,10 @@ public class TestDefaultBrowserContext2 extends TestBase {
|
||||
BrowserType.LaunchPersistentContextOptions options = new BrowserType.LaunchPersistentContextOptions()
|
||||
.setArgs(asList(server.EMPTY_PAGE));
|
||||
Path userDataDir = Files.createTempDirectory("user-data-dir-");
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
browserType.launchPersistentContext(userDataDir, options);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("can not specify page"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("can not specify page"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -116,13 +116,9 @@ public class TestDownload extends TestBase {
|
||||
Download download = page.waitForDownload(() -> page.click("a"));
|
||||
assertEquals(server.PREFIX + "/downloadWithFilename", download.url());
|
||||
assertEquals("file.txt", download.suggestedFilename());
|
||||
try {
|
||||
download.path();
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(download.failure().contains("acceptDownloads"));
|
||||
assertTrue(e.getMessage().contains("acceptDownloads: true"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> download.path());
|
||||
assertTrue(download.failure().contains("acceptDownloads"));
|
||||
assertTrue(e.getMessage().contains("acceptDownloads: true"));
|
||||
}
|
||||
}
|
||||
@Test
|
||||
@@ -243,12 +239,8 @@ public class TestDownload extends TestBase {
|
||||
Download download = page.waitForDownload(() -> page.click("a"));
|
||||
|
||||
Path userPath = Files.createTempFile("download-", ".txt");
|
||||
try {
|
||||
download.saveAs(userPath);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Pass { acceptDownloads: true } when you are creating your browser context"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> download.saveAs(userPath));
|
||||
assertTrue(e.getMessage().contains("Pass { acceptDownloads: true } when you are creating your browser context"));
|
||||
page.close();
|
||||
}
|
||||
|
||||
@@ -260,12 +252,8 @@ public class TestDownload extends TestBase {
|
||||
|
||||
Path userPath = Files.createTempFile("download-", ".txt");
|
||||
download.delete();
|
||||
try {
|
||||
download.saveAs(userPath);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Target page, context or browser has been closed"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> download.saveAs(userPath));
|
||||
assertTrue(e.getMessage().contains("Target page, context or browser has been closed"), e.getMessage());
|
||||
page.close();
|
||||
}
|
||||
|
||||
|
||||
+11
-30
@@ -57,19 +57,12 @@ public class TestElementHandleConvenience extends TestBase {
|
||||
ElementHandle handle = page.querySelector("#input");
|
||||
assertEquals("input value", handle.inputValue());
|
||||
|
||||
try {
|
||||
page.inputValue("#inner");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Node is not an <input>, <textarea> or <select> element"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.inputValue("#inner"));
|
||||
assertTrue(e.getMessage().contains("Node is not an <input>, <textarea> or <select> element"), e.getMessage());
|
||||
|
||||
ElementHandle handle2 = page.querySelector("#inner");
|
||||
try {
|
||||
handle2.inputValue();
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Node is not an <input>, <textarea> or <select> element"), e.getMessage());
|
||||
}
|
||||
e = assertThrows(PlaywrightException.class, () -> handle2.inputValue());
|
||||
assertTrue(e.getMessage().contains("Node is not an <input>, <textarea> or <select> element"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -91,19 +84,11 @@ public class TestElementHandleConvenience extends TestBase {
|
||||
@Test
|
||||
void innerTextShouldThrow() {
|
||||
page.setContent("<svg>text</svg>");
|
||||
try {
|
||||
page.innerText("svg");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Node is not an HTMLElement"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.innerText("svg"));
|
||||
assertTrue(e.getMessage().contains("Node is not an HTMLElement"), e.getMessage());
|
||||
ElementHandle handle = page.querySelector("svg");
|
||||
try {
|
||||
handle.innerText();
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Node is not an HTMLElement"), e.getMessage());
|
||||
}
|
||||
e = assertThrows(PlaywrightException.class, () -> handle.innerText());
|
||||
assertTrue(e.getMessage().contains("Node is not an HTMLElement"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -267,11 +252,7 @@ public class TestElementHandleConvenience extends TestBase {
|
||||
handle.evaluate("input => input.checked = false");
|
||||
assertFalse(handle.isChecked());
|
||||
assertFalse(page.isChecked("input"));
|
||||
try {
|
||||
page.isChecked("div");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Not a checkbox or radio button"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.isChecked("div"));
|
||||
assertTrue(e.getMessage().contains("Not a checkbox or radio button"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,12 +47,10 @@ public class TestElementHandleSelectText extends TestBase {
|
||||
page.navigate(server.PREFIX + "/input/textarea.html");
|
||||
ElementHandle textarea = page.querySelector("textarea");
|
||||
textarea.evaluate("e => e.style.display = 'none'");
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
textarea.selectText(new ElementHandle.SelectTextOptions().setTimeout(3000));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("element is not visible"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("element is not visible"));
|
||||
}
|
||||
|
||||
// @Test
|
||||
|
||||
+8
-19
@@ -20,8 +20,7 @@ import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.condition.DisabledIf;
|
||||
|
||||
import static com.microsoft.playwright.options.ElementState.*;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.junit.jupiter.api.Assertions.fail;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
public class TestElementHandleWaitForElementState extends TestBase {
|
||||
|
||||
@@ -51,12 +50,10 @@ public class TestElementHandleWaitForElementState extends TestBase {
|
||||
void shouldTimeoutWaitingForVisible() {
|
||||
page.setContent("<div style='display:none'>content</div>");
|
||||
ElementHandle div = page.querySelector("div");
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
div.waitForElementState(VISIBLE, new ElementHandle.WaitForElementStateOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (TimeoutError e) {
|
||||
assertTrue(e.getMessage().contains("Timeout 1000ms exceeded"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Timeout 1000ms exceeded"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -64,12 +61,8 @@ public class TestElementHandleWaitForElementState extends TestBase {
|
||||
page.setContent("<div style='display:none'>content</div>");
|
||||
ElementHandle div = page.querySelector("div");
|
||||
div.evaluate("div => div.remove()");
|
||||
try {
|
||||
div.waitForElementState(VISIBLE);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Element is not attached to the DOM"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> div.waitForElementState(VISIBLE));
|
||||
assertTrue(e.getMessage().contains("Element is not attached to the DOM"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -111,12 +104,8 @@ public class TestElementHandleWaitForElementState extends TestBase {
|
||||
page.setContent("<button disabled>Target</button>");
|
||||
ElementHandle button = page.querySelector("button");
|
||||
button.evaluate("button => button.remove()");
|
||||
try {
|
||||
button.waitForElementState(ENABLED);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Element is not attached to the DOM"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> button.waitForElementState(ENABLED));
|
||||
assertTrue(e.getMessage().contains("Element is not attached to the DOM"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -119,12 +119,10 @@ public class TestEvalOnSelector extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldThrowErrorIfNoElementIsFound() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.evalOnSelector("section", "e => e.id");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("failed to find element matching selector \"section\""));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("failed to find element matching selector \"section\""));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -166,23 +164,20 @@ public class TestEvalOnSelector extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldThrowOnMultipleCaptures() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.evalOnSelector("*css=div >> *css=span", "e => e.outerHTML");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Only one of the selectors can capture using * modifier"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Only one of the selectors can capture using * modifier"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldThrowOnMalformedCapture() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.evalOnSelector("*=div", "e => e.outerHTML");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Unknown engine \"\" while parsing selector *=div"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Unknown engine \"\" while parsing selector *=div"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldWorkWithSpacesInCssAttributes() {
|
||||
page.setContent("<div><input placeholder='Select date'></div>");
|
||||
|
||||
@@ -21,8 +21,7 @@ import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.condition.EnabledIf;
|
||||
|
||||
import static com.microsoft.playwright.Utils.mapOf;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.junit.jupiter.api.Assertions.fail;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
public class TestFirefoxLauncher extends TestBase {
|
||||
|
||||
@@ -47,11 +46,7 @@ public class TestFirefoxLauncher extends TestBase {
|
||||
"network.proxy.http_port", 3333));
|
||||
launchBrowser(options);
|
||||
Page page = browser.newPage();
|
||||
try {
|
||||
page.navigate("http://example.com");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("NS_ERROR_PROXY_CONNECTION_REFUSED"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.navigate("http://example.com"));
|
||||
assertTrue(e.getMessage().contains("NS_ERROR_PROXY_CONNECTION_REFUSED"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -146,12 +146,8 @@ public class TestGlobalFetch extends TestBase {
|
||||
APIResponse response = request.get(server.PREFIX + "/simple.json");
|
||||
assertEquals("{\"foo\": \"bar\"}\n", response.text());
|
||||
request.dispose();
|
||||
try {
|
||||
response.body();
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Response has been disposed"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> response.body());
|
||||
assertTrue(e.getMessage().contains("Response has been disposed"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -168,12 +164,8 @@ public class TestGlobalFetch extends TestBase {
|
||||
void shouldSupportGlobalTimeoutOption() {
|
||||
APIRequestContext request = playwright.request().newContext(new APIRequest.NewContextOptions().setTimeout(1));
|
||||
server.setRoute("/empty.html", exchange -> {});
|
||||
try {
|
||||
request.get(server.EMPTY_PAGE);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Request timed out after 1ms"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> request.get(server.EMPTY_PAGE));
|
||||
assertTrue(e.getMessage().contains("Request timed out after 1ms"), e.getMessage());
|
||||
}
|
||||
|
||||
|
||||
@@ -265,12 +257,8 @@ public class TestGlobalFetch extends TestBase {
|
||||
assertEquals(0, body.length);
|
||||
assertEquals("", response.text());
|
||||
request.dispose();
|
||||
try {
|
||||
response.body();
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Response has been disposed"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> response.body());
|
||||
assertTrue(e.getMessage().contains("Response has been disposed"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -63,14 +63,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void containsTextWRegexFail() {
|
||||
page.setContent("<div id=node>Text content</div>");
|
||||
Locator locator = page.locator("#node");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).containsText(Pattern.compile("ex2"), new LocatorAssertions.ContainsTextOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("ex2", e.getExpected().getStringRepresentation());
|
||||
assertEquals("Text content", e.getActual().getValue());
|
||||
assertTrue(e.getMessage().contains("Locator expected to contain regex"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("ex2", e.getExpected().getStringRepresentation());
|
||||
assertEquals("Text content", e.getActual().getValue());
|
||||
assertTrue(e.getMessage().contains("Locator expected to contain regex"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -112,14 +110,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void hasTextWRegexFail() {
|
||||
page.setContent("<div id=node>Text content</div>");
|
||||
Locator locator = page.locator("#node");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).hasText(Pattern.compile("Text 2"), new LocatorAssertions.HasTextOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("Text 2", e.getExpected().getStringRepresentation());
|
||||
assertEquals("Text content", e.getActual().getValue());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have text matching regex"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("Text 2", e.getExpected().getStringRepresentation());
|
||||
assertEquals("Text content", e.getActual().getValue());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have text matching regex"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -139,14 +135,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
page.setContent("<div id=node>Text content</div>");
|
||||
Locator locator = page.locator("#node");
|
||||
// Should normalize whitespace.
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).hasText("Text", new LocatorAssertions.HasTextOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("Text", e.getExpected().getStringRepresentation());
|
||||
assertEquals("Text content", e.getActual().getValue());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have text"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("Text", e.getExpected().getStringRepresentation());
|
||||
assertEquals("Text content", e.getActual().getValue());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have text"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -195,14 +189,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
page.setContent("<div></div>");
|
||||
Locator locator = page.locator("p");
|
||||
// Should normalize whitespace.
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).not().hasText(new String[] {}, new LocatorAssertions.HasTextOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("[]", e.getExpected().getStringRepresentation());
|
||||
assertEquals("null", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected not to have text"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("[]", e.getExpected().getStringRepresentation());
|
||||
assertEquals("null", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected not to have text"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -223,16 +215,14 @@ public class TestLocatorAssertions extends TestBase {
|
||||
page.evaluate("setTimeout(() => {\n" +
|
||||
" div.innerHTML = \"<p>Text 1</p><p>Text 2</p>\";\n" +
|
||||
"}, 100);");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
// Should normalize whitespace.
|
||||
assertThat(locator).hasText(new String[] {"Text 1", "Text 3", "Extra"}, new LocatorAssertions.HasTextOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("[Text 1, Text 3, Extra]", e.getExpected().getStringRepresentation());
|
||||
assertEquals("[Text 1, Text 3]", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have text: [Text 1, Text 3, Extra]"), e.getMessage());
|
||||
assertTrue(e.getMessage().contains("Received: [Text 1, Text 3]"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("[Text 1, Text 3, Extra]", e.getExpected().getStringRepresentation());
|
||||
assertEquals("[Text 1, Text 3]", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have text: [Text 1, Text 3, Extra]"), e.getMessage());
|
||||
assertTrue(e.getMessage().contains("Received: [Text 1, Text 3]"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -247,15 +237,13 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void hasTextWRegExArrayFail() {
|
||||
page.setContent("<div>Text 1</div><div>Text 3</div>");
|
||||
Locator locator = page.locator("div");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
// Should normalize whitespace.
|
||||
assertThat(locator).hasText(new Pattern[] {Pattern.compile( "Text 1"), Pattern.compile("Text \\d"), Pattern.compile("Extra")}, new LocatorAssertions.HasTextOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("[Text 1, Text \\d, Extra]", e.getExpected().getStringRepresentation());
|
||||
assertEquals("[Text 1, Text 3]", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have text"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("[Text 1, Text \\d, Extra]", e.getExpected().getStringRepresentation());
|
||||
assertEquals("[Text 1, Text 3]", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have text"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -269,14 +257,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void hasAttributeTextFail() {
|
||||
page.setContent("<div id=node>Text content</div>");
|
||||
Locator locator = page.locator("#node");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).hasAttribute("id", "foo", new LocatorAssertions.HasAttributeOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("foo", e.getExpected().getStringRepresentation());
|
||||
assertEquals("node", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have attribute 'id': foo\nReceived: node"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("foo", e.getExpected().getStringRepresentation());
|
||||
assertEquals("node", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have attribute 'id': foo\nReceived: node"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -290,14 +276,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void hasAttributeRegExpFail() {
|
||||
page.setContent("<div id=node>Text content</div>");
|
||||
Locator locator = page.locator("#node");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).hasAttribute("id", Pattern.compile(".Nod.."), new LocatorAssertions.HasAttributeOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals(".Nod..", e.getExpected().getStringRepresentation());
|
||||
assertEquals("node", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have attribute 'id' matching regex: .Nod..\nReceived: node"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals(".Nod..", e.getExpected().getStringRepresentation());
|
||||
assertEquals("node", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have attribute 'id' matching regex: .Nod..\nReceived: node"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -311,14 +295,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void hasClassTextFail() {
|
||||
page.setContent("<div class=\"bar baz\"></div>");
|
||||
Locator locator = page.locator("div");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).hasClass("foo bar baz", new LocatorAssertions.HasClassOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("foo bar baz", e.getExpected().getStringRepresentation());
|
||||
assertEquals("bar baz", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have class"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("foo bar baz", e.getExpected().getStringRepresentation());
|
||||
assertEquals("bar baz", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have class"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -332,14 +314,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void hasClassRegExpFail() {
|
||||
page.setContent("<div class=\"bar baz\"></div>");
|
||||
Locator locator = page.locator("div");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).hasClass(Pattern.compile("foo Z.*"), new LocatorAssertions.HasClassOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("foo Z.*", e.getExpected().getStringRepresentation());
|
||||
assertEquals("bar baz", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have class matching regex"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("foo Z.*", e.getExpected().getStringRepresentation());
|
||||
assertEquals("bar baz", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have class matching regex"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -353,14 +333,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void hasClassTextArrayFail() {
|
||||
page.setContent("<div class=\"foo\"></div><div class=\"bar\"></div><div class=\"baz\"></div>");
|
||||
Locator locator = page.locator("div");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).hasClass(new String[] {"foo", "bar", "missing"}, new LocatorAssertions.HasClassOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("[foo, bar, missing]", e.getExpected().getStringRepresentation());
|
||||
assertEquals("[foo, bar, baz]", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have class"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("[foo, bar, missing]", e.getExpected().getStringRepresentation());
|
||||
assertEquals("[foo, bar, baz]", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have class"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -374,14 +352,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void hasClassRegExpArrayFail() {
|
||||
page.setContent("<div class=\"foo\"></div><div class=\"bar\"></div><div class=\"baz\"></div>");
|
||||
Locator locator = page.locator("div");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).hasClass(new Pattern[] {Pattern.compile("fo.*"), Pattern.compile(".ar"), Pattern.compile("baz"), Pattern.compile("extra")}, new LocatorAssertions.HasClassOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("[fo.*, .ar, baz, extra]", e.getExpected().getStringRepresentation());
|
||||
assertEquals("[foo, bar, baz]", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have class matching regex"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("[fo.*, .ar, baz, extra]", e.getExpected().getStringRepresentation());
|
||||
assertEquals("[foo, bar, baz]", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have class matching regex"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -395,14 +371,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void hasCountFail() {
|
||||
page.setContent("<select><option>One</option><option>Two</option></select>");
|
||||
Locator locator = page.locator("option");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).hasCount(1, new LocatorAssertions.HasCountOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("1", e.getExpected().getStringRepresentation());
|
||||
assertEquals("2", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have count"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("1", e.getExpected().getStringRepresentation());
|
||||
assertEquals("2", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have count"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -424,14 +398,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void hasCSSFail() {
|
||||
page.setContent("<div id=node style='color: rgb(255, 0, 0)'>Text content</div>");
|
||||
Locator locator = page.locator("#node");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).hasCSS("color", "red", new LocatorAssertions.HasCSSOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("red", e.getExpected().getStringRepresentation());
|
||||
assertEquals("rgb(255, 0, 0)", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have CSS property 'color'"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("red", e.getExpected().getStringRepresentation());
|
||||
assertEquals("rgb(255, 0, 0)", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have CSS property 'color'"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -445,14 +417,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void hasCSSRegExFail() {
|
||||
page.setContent("<div id=node style='color: rgb(255, 0, 0)'>Text content</div>");
|
||||
Locator locator = page.locator("#node");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).hasCSS("color", Pattern.compile("red"), new LocatorAssertions.HasCSSOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("red", e.getExpected().getStringRepresentation());
|
||||
assertEquals("rgb(255, 0, 0)", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have CSS property 'color' matching regex"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("red", e.getExpected().getStringRepresentation());
|
||||
assertEquals("rgb(255, 0, 0)", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have CSS property 'color' matching regex"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -466,14 +436,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void hasIdFail() {
|
||||
page.setContent("<div id=node>Text content</div>");
|
||||
Locator locator = page.locator("#node");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).hasId("foo", new LocatorAssertions.HasIdOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("foo", e.getExpected().getStringRepresentation());
|
||||
assertEquals("node", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have ID"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("foo", e.getExpected().getStringRepresentation());
|
||||
assertEquals("node", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have ID"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -489,14 +457,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
page.setContent("<div id=node>Text content</div>");
|
||||
Locator locator = page.locator("#node");
|
||||
page.evalOnSelector("div", "e => e.foo = 2021");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).hasJSProperty("foo", 1, new LocatorAssertions.HasJSPropertyOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("1", e.getExpected().getStringRepresentation());
|
||||
assertEquals("2021", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have JavaScript property 'foo'"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("1", e.getExpected().getStringRepresentation());
|
||||
assertEquals("2021", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have JavaScript property 'foo'"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -504,28 +470,24 @@ public class TestLocatorAssertions extends TestBase {
|
||||
page.setContent("<div id=node>Text content</div>");
|
||||
Locator locator = page.locator("#node");
|
||||
page.evalOnSelector("div", "e => e.foo = { a: 1, b: 'string' }");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).hasJSProperty("foo", mapOf("a", 2), new LocatorAssertions.HasJSPropertyOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("{a=2}", e.getExpected().getStringRepresentation());
|
||||
assertEquals("{a=1, b=string}", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have JavaScript property 'foo'"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("{a=2}", e.getExpected().getStringRepresentation());
|
||||
assertEquals("{a=1, b=string}", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have JavaScript property 'foo'"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void hasJSPropertyStringFail() {
|
||||
page.setContent("<div id=node>Text content</div>");
|
||||
Locator locator = page.locator("#node");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).hasJSProperty("id", "foo", new LocatorAssertions.HasJSPropertyOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("foo", e.getExpected().getStringRepresentation());
|
||||
assertEquals("node", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have JavaScript property 'id'"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("foo", e.getExpected().getStringRepresentation());
|
||||
assertEquals("node", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have JavaScript property 'id'"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -541,14 +503,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
page.setContent("<input id=node></input>");
|
||||
Locator locator = page.locator("#node");
|
||||
locator.fill("Text content");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).hasValue("Text2", new LocatorAssertions.HasValueOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("Text2", e.getExpected().getStringRepresentation());
|
||||
assertEquals("Text content", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have value"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("Text2", e.getExpected().getStringRepresentation());
|
||||
assertEquals("Text content", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have value"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -572,14 +532,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
page.setContent("<input id=node></input>");
|
||||
Locator locator = page.locator("#node");
|
||||
locator.fill("Text content");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).hasValue(Pattern.compile("Text2"), new LocatorAssertions.HasValueOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("Text2", e.getExpected().getStringRepresentation());
|
||||
assertEquals("Text content", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have value matching regex"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("Text2", e.getExpected().getStringRepresentation());
|
||||
assertEquals("Text content", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have value matching regex"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -615,14 +573,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
" </select>");
|
||||
Locator locator = page.locator("select");
|
||||
locator.selectOption(new String[] {"RR", "GG"});
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).hasValues(new String[]{"R", "G"}, new LocatorAssertions.HasValuesOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("[R, G]", e.getExpected().getStringRepresentation());
|
||||
assertEquals("[RR, GG]", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have values"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("[R, G]", e.getExpected().getStringRepresentation());
|
||||
assertEquals("[RR, GG]", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have values"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -646,14 +602,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
" </select>");
|
||||
Locator locator = page.locator("select");
|
||||
locator.selectOption(new String[] {"B"}, new Locator.SelectOptionOptions().setTimeout(1000));
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).hasValues(new Pattern[]{ Pattern.compile("R"), Pattern.compile("G")});
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("[R, G]", e.getExpected().getStringRepresentation());
|
||||
assertEquals("[B]", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have values matching regex"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("[R, G]", e.getExpected().getStringRepresentation());
|
||||
assertEquals("[B]", e.getActual().getStringRepresentation());
|
||||
assertTrue(e.getMessage().contains("Locator expected to have values matching regex"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -665,24 +619,20 @@ public class TestLocatorAssertions extends TestBase {
|
||||
" </select>");
|
||||
Locator locator = page.locator("select");
|
||||
locator.selectOption(new String[] {"B"});
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
assertThat(locator).hasValues(new Pattern[]{ Pattern.compile("R"), Pattern.compile("G")});
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Not a select element with a multiple attribute"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Not a select element with a multiple attribute"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void hasValuesFailsWhenNotASelectElement() {
|
||||
page.setContent("<input value=\"foo\" />");
|
||||
Locator locator = page.locator("input");
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
assertThat(locator).hasValues(new Pattern[]{ Pattern.compile("R"), Pattern.compile("G")}, new LocatorAssertions.HasValuesOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Not a select element with a multiple attribute"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Not a select element with a multiple attribute"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -696,28 +646,24 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void isCheckedFail() {
|
||||
page.setContent("<input type=checkbox></input>");
|
||||
Locator locator = page.locator("input");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).isChecked(new LocatorAssertions.IsCheckedOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected to be checked"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected to be checked"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void notIsCheckedFail() {
|
||||
page.setContent("<input type=checkbox checked></input>");
|
||||
Locator locator = page.locator("input");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).not().isChecked(new LocatorAssertions.IsCheckedOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected not to be checked"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected not to be checked"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -738,28 +684,24 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void isDisabledFail() {
|
||||
page.setContent("<button>Text</button>");
|
||||
Locator locator = page.locator("button");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).isDisabled(new LocatorAssertions.IsDisabledOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected to be disabled"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected to be disabled"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void notIsDisabledFail() {
|
||||
page.setContent("<button disabled>Text</button>");
|
||||
Locator locator = page.locator("button");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).not().isDisabled(new LocatorAssertions.IsDisabledOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected not to be disabled"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected not to be disabled"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -773,28 +715,24 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void isEditableFail() {
|
||||
page.setContent("<input disabled></input>");
|
||||
Locator locator = page.locator("input");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).isEditable(new LocatorAssertions.IsEditableOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected to be editable"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected to be editable"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void notIsEditableFail() {
|
||||
page.setContent("<input></input>");
|
||||
Locator locator = page.locator("input");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).not().isEditable(new LocatorAssertions.IsEditableOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected not to be editable"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected not to be editable"), e.getMessage());
|
||||
}
|
||||
|
||||
|
||||
@@ -809,28 +747,24 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void isEmptyFail() {
|
||||
page.setContent("<input value=text></input>");
|
||||
Locator locator = page.locator("input");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).isEmpty(new LocatorAssertions.IsEmptyOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected to be empty"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected to be empty"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void notIsEmptyFail() {
|
||||
page.setContent("<input></input>");
|
||||
Locator locator = page.locator("input");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).not().isEmpty(new LocatorAssertions.IsEmptyOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected not to be empty"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected not to be empty"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -844,28 +778,24 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void isEnabledFail() {
|
||||
page.setContent("<button disabled>Text</button>");
|
||||
Locator locator = page.locator("button");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).isEnabled(new LocatorAssertions.IsEnabledOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected to be enabled"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected to be enabled"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void notIsEnabledFail() {
|
||||
page.setContent("<button>Text</button>");
|
||||
Locator locator = page.locator("button");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).not().isEnabled(new LocatorAssertions.IsEnabledOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected not to be enabled"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected not to be enabled"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -880,14 +810,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void isFocusedFail() {
|
||||
page.setContent("<input></input>");
|
||||
Locator locator = page.locator("input");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).isFocused(new LocatorAssertions.IsFocusedOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected to be focused"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected to be focused"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -895,14 +823,12 @@ public class TestLocatorAssertions extends TestBase {
|
||||
page.setContent("<input></input>");
|
||||
Locator locator = page.locator("input");
|
||||
locator.focus();
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).not().isFocused(new LocatorAssertions.IsFocusedOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected not to be focused"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected not to be focused"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -916,28 +842,24 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void isHiddenFail() {
|
||||
page.setContent("<button></button>");
|
||||
Locator locator = page.locator("button");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).isHidden(new LocatorAssertions.IsHiddenOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected to be hidden"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected to be hidden"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void notIsHiddenFail() {
|
||||
page.setContent("<button style='display: none'></button>");
|
||||
Locator locator = page.locator("button");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).not().isHidden(new LocatorAssertions.IsHiddenOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected not to be hidden"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected not to be hidden"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -951,28 +873,24 @@ public class TestLocatorAssertions extends TestBase {
|
||||
void isVisibleFail() {
|
||||
page.setContent("<input style='display: none'></input>");
|
||||
Locator locator = page.locator("input");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).isVisible(new LocatorAssertions.IsVisibleOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected to be visible"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected to be visible"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void notIsVisibleFail() {
|
||||
page.setContent("<input></input>");
|
||||
Locator locator = page.locator("input");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(locator).not().isVisible(new LocatorAssertions.IsVisibleOptions().setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected not to be visible"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertNull(e.getExpected());
|
||||
assertNull(e.getActual());
|
||||
assertTrue(e.getMessage().contains("Locator expected not to be visible"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -61,19 +61,13 @@ public class TestLocatorConvenience extends TestBase {
|
||||
Locator locator = page.locator("#input");
|
||||
assertEquals("input value", locator.inputValue());
|
||||
|
||||
try {
|
||||
page.inputValue("#inner");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Node is not an <input>, <textarea> or <select> element"), e.getMessage());
|
||||
}
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.inputValue("#inner"));
|
||||
assertTrue(e.getMessage().contains("Node is not an <input>, <textarea> or <select> element"), e.getMessage());
|
||||
e = assertThrows(PlaywrightException.class, () -> {
|
||||
Locator locator2 = page.locator("#inner");
|
||||
locator2.inputValue();
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Node is not an <input>, <textarea> or <select> element"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Node is not an <input>, <textarea> or <select> element"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -95,19 +89,12 @@ public class TestLocatorConvenience extends TestBase {
|
||||
@Test
|
||||
void innerTextShouldThrow() {
|
||||
page.setContent("<svg>text</svg>");
|
||||
try {
|
||||
page.innerText("svg");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Node is not an HTMLElement"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.innerText("svg"));
|
||||
assertTrue(e.getMessage().contains("Node is not an HTMLElement"), e.getMessage());
|
||||
|
||||
Locator locator = page.locator("svg");
|
||||
try {
|
||||
locator.innerText();
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Node is not an HTMLElement"), e.getMessage());
|
||||
}
|
||||
e = assertThrows(PlaywrightException.class, () -> locator.innerText());
|
||||
assertTrue(e.getMessage().contains("Node is not an HTMLElement"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -184,12 +171,8 @@ public class TestLocatorConvenience extends TestBase {
|
||||
element.evaluate("input => input.checked = false");
|
||||
assertFalse(element.isChecked());
|
||||
assertFalse(page.isChecked("input"));
|
||||
try {
|
||||
page.isChecked("div");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Not a checkbox or radio button"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.isChecked("div"));
|
||||
assertTrue(e.getMessage().contains("Not a checkbox or radio button"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -99,12 +99,10 @@ public class TestLocatorFrame extends TestBase {
|
||||
@Test
|
||||
void shouldWaitForFrame() {
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.frameLocator("iframe").locator("span").click(new Locator.ClickOptions().setTimeout(300));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("waiting for frame \"iframe\""), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("waiting for frame \"iframe\""), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -206,13 +204,9 @@ public class TestLocatorFrame extends TestBase {
|
||||
routeIframe(page);
|
||||
page.setContent("<div></div>");
|
||||
Locator button = page.frameLocator("div").locator("button");
|
||||
try {
|
||||
button.waitFor();
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("<div></div>"), e.getMessage());
|
||||
assertTrue(e.getMessage().contains("<iframe> was expected"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> button.waitFor());
|
||||
assertTrue(e.getMessage().contains("<div></div>"), e.getMessage());
|
||||
assertTrue(e.getMessage().contains("<iframe> was expected"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -231,12 +225,8 @@ public class TestLocatorFrame extends TestBase {
|
||||
routeAmbiguous(page);
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
Locator button = page.locator("body").frameLocator("iframe").locator("button");
|
||||
try {
|
||||
button.waitFor();
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Error: strict mode violation: \"body >> iframe\" resolved to 3 elements"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> button.waitFor());
|
||||
assertTrue(e.getMessage().contains("Error: strict mode violation: \"body >> iframe\" resolved to 3 elements"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -60,12 +60,10 @@ public class TestLocatorMisc extends TestBase{
|
||||
page.locator("button", new Page.LocatorOptions().setHas(page.locator("text=Драматург")))
|
||||
};
|
||||
for (Locator locator: locators) {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
locator.click(new Locator.ClickOptions().setTimeout(100));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Драматург"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Драматург"), e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,12 +67,8 @@ public class TestNetworkResponse extends TestBase {
|
||||
assertNotNull(redirectedFrom);
|
||||
Response redirected = redirectedFrom.response();
|
||||
assertEquals(302, redirected.status());
|
||||
try {
|
||||
redirected.text();
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Response body is unavailable for redirect responses"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> redirected.text());
|
||||
assertTrue(e.getMessage().contains("Response body is unavailable for redirect responses"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -35,14 +35,12 @@ public class TestPageAssertions extends TestBase {
|
||||
@Test
|
||||
void hasURLTextFail() {
|
||||
page.navigate("data:text/html,<div>B</div>");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(page).hasURL("foo", new PageAssertions.HasURLOptions().setTimeout(1_000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("foo", e.getExpected().getValue());
|
||||
assertEquals("data:text/html,<div>B</div>", e.getActual().getValue());
|
||||
assertTrue(e.getMessage().contains("Page URL expected to be"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("foo", e.getExpected().getValue());
|
||||
assertEquals("data:text/html,<div>B</div>", e.getActual().getValue());
|
||||
assertTrue(e.getMessage().contains("Page URL expected to be"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -69,14 +67,12 @@ public class TestPageAssertions extends TestBase {
|
||||
@Test
|
||||
void hasURLRegexFail() {
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(page).hasURL(Pattern.compile(".*foo.*"), new PageAssertions.HasURLOptions().setTimeout(1_000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals(".*foo.*", e.getExpected().getStringRepresentation());
|
||||
assertEquals(server.EMPTY_PAGE, e.getActual().getValue());
|
||||
assertTrue(e.getMessage().contains("Page URL expected to match regex"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals(".*foo.*", e.getExpected().getStringRepresentation());
|
||||
assertEquals(server.EMPTY_PAGE, e.getActual().getValue());
|
||||
assertTrue(e.getMessage().contains("Page URL expected to match regex"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -100,14 +96,12 @@ public class TestPageAssertions extends TestBase {
|
||||
@Test
|
||||
void hasTitleTextFail() {
|
||||
page.navigate(server.PREFIX + "/title.html");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(page).hasTitle("foo", new PageAssertions.HasTitleOptions().setTimeout(1_000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("foo", e.getExpected().getValue());
|
||||
assertEquals("Woof-Woof", e.getActual().getValue());
|
||||
assertTrue(e.getMessage().contains("Page title expected to be: foo\nReceived: Woof-Woof"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("foo", e.getExpected().getValue());
|
||||
assertEquals("Woof-Woof", e.getActual().getValue());
|
||||
assertTrue(e.getMessage().contains("Page title expected to be: foo\nReceived: Woof-Woof"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -119,14 +113,12 @@ public class TestPageAssertions extends TestBase {
|
||||
@Test
|
||||
void hasTitleRegexFail() {
|
||||
page.navigate(server.PREFIX + "/title.html");
|
||||
try {
|
||||
AssertionFailedError e = assertThrows(AssertionFailedError.class, () -> {
|
||||
assertThat(page).hasTitle(Pattern.compile("^foo[AB]"), new PageAssertions.HasTitleOptions().setTimeout(1_000));
|
||||
fail("did not throw");
|
||||
} catch (AssertionFailedError e) {
|
||||
assertEquals("^foo[AB]", e.getExpected().getStringRepresentation());
|
||||
assertEquals("Woof-Woof", e.getActual().getValue());
|
||||
assertTrue(e.getMessage().contains("Page title expected to match regex: ^foo[AB]\nReceived: Woof-Woof"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertEquals("^foo[AB]", e.getExpected().getStringRepresentation());
|
||||
assertEquals("Woof-Woof", e.getActual().getValue());
|
||||
assertTrue(e.getMessage().contains("Page title expected to match regex: ^foo[AB]\nReceived: Woof-Woof"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -157,15 +157,13 @@ public class TestPageEvaluate extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldThrowWhenEvaluationTriggersReload() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.evaluate("() => {\n" +
|
||||
" location.reload();\n" +
|
||||
" return new Promise(() => { });\n" +
|
||||
"}");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("navigation"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("navigation"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -208,32 +206,20 @@ public class TestPageEvaluate extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldRejectPromiseWithException() {
|
||||
try {
|
||||
page.evaluate("() => not_existing_object.property");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("not_existing_object"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.evaluate("() => not_existing_object.property"));
|
||||
assertTrue(e.getMessage().contains("not_existing_object"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldSupportThrownStringsAsErrorMessages() {
|
||||
try {
|
||||
page.evaluate("() => { throw 'qwerty'; }");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("qwerty"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.evaluate("() => { throw 'qwerty'; }"));
|
||||
assertTrue(e.getMessage().contains("qwerty"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldSupportThrownNumbersAsErrorMessages() {
|
||||
try {
|
||||
page.evaluate("() => { throw 100500; }");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("100500"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.evaluate("() => { throw 100500; }"));
|
||||
assertTrue(e.getMessage().contains("100500"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -357,14 +343,12 @@ public class TestPageEvaluate extends TestBase {
|
||||
@Test
|
||||
void shouldBeAbleToThrowATrickyError() {
|
||||
String errorText = "My error";
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.evaluate("errorText => {\n" +
|
||||
" throw new Error(errorText);\n" +
|
||||
"}", errorText);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains(errorText));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains(errorText));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -399,12 +383,8 @@ public class TestPageEvaluate extends TestBase {
|
||||
ElementHandle element = page.querySelector("section");
|
||||
assertNotNull(element);
|
||||
element.dispose();
|
||||
try {
|
||||
page.evaluate("e => e.textContent", element);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("JSHandle is disposed"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.evaluate("e => e.textContent", element));
|
||||
assertTrue(e.getMessage().contains("JSHandle is disposed"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -418,7 +398,7 @@ public class TestPageEvaluate extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldThrowANiceErrorAfterANavigation() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.waitForNavigation(() -> {
|
||||
page.evaluate("() => {\n" +
|
||||
" const promise = new Promise(f => window['__resolve'] = f);\n" +
|
||||
@@ -427,9 +407,8 @@ public class TestPageEvaluate extends TestBase {
|
||||
" return promise;\n" +
|
||||
"}");
|
||||
});
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("navigation"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("navigation"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -478,14 +457,12 @@ public class TestPageEvaluate extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldThrowErrorWithDetailedInformationOnExceptionInsidePromise() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.evaluate("() => new Promise(() => {\n" +
|
||||
" throw new Error('Error in promise');\n" +
|
||||
"})");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Error in promise"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Error in promise"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -523,7 +500,7 @@ public class TestPageEvaluate extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldRespectUseStrictExpression() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.evaluate("() => {\n" +
|
||||
" 'use strict';\n" +
|
||||
" // @ts-ignore\n" +
|
||||
@@ -531,10 +508,8 @@ public class TestPageEvaluate extends TestBase {
|
||||
" // @ts-ignore\n" +
|
||||
" return variableY;\n" +
|
||||
"}");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("variableY"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("variableY"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -544,12 +519,8 @@ public class TestPageEvaluate extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldNotLeakHandles() {
|
||||
try {
|
||||
page.evaluate("handles.length");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains(" handles"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.evaluate("handles.length"));
|
||||
assertTrue(e.getMessage().contains(" handles"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -196,12 +196,10 @@ public class TestPageExposeFunction extends TestBase {
|
||||
@Test
|
||||
void shouldThrowForDuplicateRegistrations() {
|
||||
page.exposeFunction("foo", args -> null);
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.exposeFunction("foo", args -> null);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Function \"foo\" has been already registered"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Function \"foo\" has been already registered"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -218,14 +216,12 @@ public class TestPageExposeFunction extends TestBase {
|
||||
assertEquals(17, page.evaluate("async function() {\n" +
|
||||
" return window['logme'](undefined, undefined, undefined);\n" +
|
||||
"}"));
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.evaluate("async function() {\n" +
|
||||
" return window['logme'](1, 2);\n" +
|
||||
"}");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("exposeBindingHandle supports a single argument, 2 received"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("exposeBindingHandle supports a single argument, 2 received"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -43,12 +43,8 @@ public class TestPageFill extends TestBase {
|
||||
page.navigate(server.PREFIX + "/input/textarea.html");
|
||||
for (String type : new String[]{"button", "checkbox", "file", "image", "radio", "reset", "submit"}) {
|
||||
page.evalOnSelector("input", "(input, type) => input.setAttribute('type', type)", type);
|
||||
try {
|
||||
page.fill("input", "");
|
||||
fail("fill should throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("input of type \"" + type + "\" cannot be filled"), "type = " + type + e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.fill("input", ""));
|
||||
assertTrue(e.getMessage().contains("input of type \"" + type + "\" cannot be filled"), "type = " + type + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,24 +58,14 @@ public class TestPageFill extends TestBase {
|
||||
@Test
|
||||
void shouldThrowOnIncorrectRangeValue() {
|
||||
page.setContent("<input type=range min=0 max=100 value=50>");
|
||||
try {
|
||||
page.fill("input", "foo");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Malformed value"), e.getMessage());
|
||||
}
|
||||
try {
|
||||
page.fill("input", "200");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Malformed value"), e.getMessage());
|
||||
}
|
||||
try {
|
||||
page.fill("input", "15.43");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Malformed value"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.fill("input", "foo"));
|
||||
assertTrue(e.getMessage().contains("Malformed value"), e.getMessage());
|
||||
|
||||
e = assertThrows(PlaywrightException.class, () -> page.fill("input", "200"));
|
||||
assertTrue(e.getMessage().contains("Malformed value"), e.getMessage());
|
||||
|
||||
e = assertThrows(PlaywrightException.class, () -> page.fill("input", "15.43"));
|
||||
assertTrue(e.getMessage().contains("Malformed value"), e.getMessage());
|
||||
}
|
||||
|
||||
|
||||
@@ -105,12 +91,8 @@ public class TestPageFill extends TestBase {
|
||||
@DisabledIf(value="com.microsoft.playwright.TestBase#isWebKit", disabledReason="skip")
|
||||
void shouldThrowOnIncorrectDate() {
|
||||
page.setContent("<input type=date>");
|
||||
try {
|
||||
page.fill("input", "2020-13-05");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Malformed value"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.fill("input", "2020-13-05"));
|
||||
assertTrue(e.getMessage().contains("Malformed value"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -124,12 +106,8 @@ public class TestPageFill extends TestBase {
|
||||
@DisabledIf(value="com.microsoft.playwright.TestBase#isWebKit", disabledReason="skip")
|
||||
void shouldThrowOnIncorrectTime() {
|
||||
page.setContent("<input type=time>");
|
||||
try {
|
||||
page.fill("input", "25:05");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Malformed value"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.fill("input", "25:05"));
|
||||
assertTrue(e.getMessage().contains("Malformed value"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -143,12 +121,8 @@ public class TestPageFill extends TestBase {
|
||||
@EnabledIf(value="com.microsoft.playwright.TestBase#isChromium", disabledReason="skip")
|
||||
void shouldThrowOnIncorrectDatetimeLocal() {
|
||||
page.setContent("<input type=datetime-local>");
|
||||
try {
|
||||
page.fill("input", "abc");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Malformed value"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.fill("input", "abc"));
|
||||
assertTrue(e.getMessage().contains("Malformed value"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -188,12 +162,8 @@ public class TestPageFill extends TestBase {
|
||||
@Test
|
||||
void shouldThrowWhenElementIsNotAnInputTextareaOrContenteditable() {
|
||||
page.navigate(server.PREFIX + "/input/textarea.html");
|
||||
try {
|
||||
page.fill("body", "");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Element is not an <input>"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.fill("body", ""));
|
||||
assertTrue(e.getMessage().contains("Element is not an <input>"));
|
||||
}
|
||||
|
||||
void shouldThrowIfPassedANonStringValue() {
|
||||
@@ -252,12 +222,8 @@ public class TestPageFill extends TestBase {
|
||||
@Test
|
||||
void shouldNotBeAbleToFillTextIntoTheInputTypeNumber() {
|
||||
page.setContent("<input id='input' type='number'></input>");
|
||||
try {
|
||||
page.fill("input", "abc");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Cannot type text into input[type=number]"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.fill("input", "abc"));
|
||||
assertTrue(e.getMessage().contains("Cannot type text into input[type=number]"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -295,24 +295,14 @@ public class TestPageKeyboard extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldThrowOnUnknownKeys() {
|
||||
try {
|
||||
page.keyboard().press("NotARealKey");
|
||||
fail("did not throw");
|
||||
} catch (Exception e) {
|
||||
assertTrue(e.getMessage().contains("Unknown key: \"NotARealKey\""), "Expecting Exception: " + e.getMessage() + " contain: Unknown key: \"NotARealKey\"");
|
||||
}
|
||||
try {
|
||||
page.keyboard().press("ё");
|
||||
fail("did not throw");
|
||||
} catch (Exception e) {
|
||||
assertTrue(e.getMessage().contains("Unknown key: \"ё\""), "Expecting Exception: " + e.getMessage() + " contain: Unknown key: \"ё\"");
|
||||
}
|
||||
try {
|
||||
page.keyboard().press("😊");
|
||||
fail("did not throw");
|
||||
} catch (Exception e) {
|
||||
assertTrue(e.getMessage().contains("Unknown key: \"😊\""), "Expecting Exception: " + e.getMessage() + " contain: Unknown key: \"😊\"");
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.keyboard().press("NotARealKey"));
|
||||
assertTrue(e.getMessage().contains("Unknown key: \"NotARealKey\""), "Expecting Exception: " + e.getMessage() + " contain: Unknown key: \"NotARealKey\"");
|
||||
|
||||
e = assertThrows(PlaywrightException.class, () -> page.keyboard().press("ё"));
|
||||
assertTrue(e.getMessage().contains("Unknown key: \"ё\""), "Expecting Exception: " + e.getMessage() + " contain: Unknown key: \"ё\"");
|
||||
|
||||
e = assertThrows(PlaywrightException.class, () -> page.keyboard().press("😊"));
|
||||
assertTrue(e.getMessage().contains("Unknown key: \"😊\""), "Expecting Exception: " + e.getMessage() + " contain: Unknown key: \"😊\"");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -52,34 +52,28 @@ public class TestPageLocatorQuery extends TestBase {
|
||||
@Test
|
||||
void shouldThrowOnCaptureWNth() {
|
||||
page.setContent("<section><div><p>A</p></div></section>");
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.locator("*css=div >> p").nth(1).click();
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Can't query n-th element"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Can't query n-th element"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldThrowOnDueToStrictness() {
|
||||
page.setContent("<div>A</div><div>B</div>");
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.locator("div").isVisible();
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("strict mode violation"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("strict mode violation"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldThrowOnDueToStrictness2() {
|
||||
page.setContent("<select><option>One</option><option>Two</option></select>");
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.locator("option").evaluate("e => {}");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("strict mode violation"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("strict mode violation"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -132,17 +132,13 @@ public class TestPageNavigate extends TestBase {
|
||||
exchange.sendResponseHeaders(204, -1);
|
||||
exchange.getResponseBody().close();
|
||||
});
|
||||
try {
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
if (isChromium())
|
||||
assertTrue(e.getMessage().contains("net::ERR_ABORTED"));
|
||||
else if (isWebKit())
|
||||
assertTrue(e.getMessage().contains("Aborted: 204 No Content"));
|
||||
else
|
||||
assertTrue(e.getMessage().contains("NS_BINDING_ABORTED"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.navigate(server.EMPTY_PAGE));
|
||||
if (isChromium())
|
||||
assertTrue(e.getMessage().contains("net::ERR_ABORTED"));
|
||||
else if (isWebKit())
|
||||
assertTrue(e.getMessage().contains("Aborted: 204 No Content"));
|
||||
else
|
||||
assertTrue(e.getMessage().contains("NS_BINDING_ABORTED"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -72,13 +72,9 @@ public class TestPageRequestContinue extends TestBase {
|
||||
route.resume();
|
||||
done[0] = true;
|
||||
});
|
||||
try {
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Navigation failed because page was closed") ||
|
||||
e.getMessage().contains("frame was detached"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.navigate(server.EMPTY_PAGE));
|
||||
assertTrue(e.getMessage().contains("Navigation failed because page was closed") ||
|
||||
e.getMessage().contains("frame was detached"), e.getMessage());
|
||||
assertTrue(done[0]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,12 +106,7 @@ public class TestPageRequestFallback extends TestBase {
|
||||
page.route("**/empty.html", route -> {
|
||||
route.fallback();
|
||||
});
|
||||
try {
|
||||
Response response = page.navigate(server.EMPTY_PAGE);
|
||||
fail("did not throw");
|
||||
assertEquals("fulfilled", response.text());
|
||||
} catch (PlaywrightException e) {
|
||||
}
|
||||
assertThrows(PlaywrightException.class, () -> page.navigate(server.EMPTY_PAGE));
|
||||
assertFalse(failed[0]);
|
||||
}
|
||||
|
||||
|
||||
@@ -251,10 +251,7 @@ public class TestPageRoute extends TestBase {
|
||||
page.route("**/*", route -> route.abort("internetdisconnected"));
|
||||
Request[] failedRequest = {null};
|
||||
page.onRequestFailed(r -> failedRequest[0] = r);
|
||||
try {
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
} catch (PlaywrightException e) {
|
||||
}
|
||||
assertThrows(PlaywrightException.class, () -> page.navigate(server.EMPTY_PAGE));
|
||||
assertNotNull(failedRequest[0]);
|
||||
if (isWebKit()) {
|
||||
assertEquals("Blocked by Web Inspector", failedRequest[0].failure());
|
||||
@@ -277,17 +274,13 @@ public class TestPageRoute extends TestBase {
|
||||
@Test
|
||||
void shouldFailNavigationWhenAbortingMainResource() {
|
||||
page.route("**/*", route -> route.abort());
|
||||
try {
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
if (isWebKit())
|
||||
assertTrue(e.getMessage().contains("Blocked by Web Inspector"), e.getMessage());
|
||||
else if (isFirefox())
|
||||
assertTrue(e.getMessage().contains("NS_ERROR_FAILURE"));
|
||||
else
|
||||
assertTrue(e.getMessage().contains("net::ERR_FAILED"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.navigate(server.EMPTY_PAGE));
|
||||
if (isWebKit())
|
||||
assertTrue(e.getMessage().contains("Blocked by Web Inspector"), e.getMessage());
|
||||
else if (isFirefox())
|
||||
assertTrue(e.getMessage().contains("NS_ERROR_FAILURE"));
|
||||
else
|
||||
assertTrue(e.getMessage().contains("net::ERR_FAILED"));
|
||||
}
|
||||
|
||||
|
||||
@@ -484,12 +477,8 @@ public class TestPageRoute extends TestBase {
|
||||
page.waitForRequest("**", () -> page.evalOnSelector("iframe", "(frame, url) => frame.src = url", server.EMPTY_PAGE));
|
||||
// Delete frame to cause request to be canceled.
|
||||
page.evalOnSelector("iframe", "frame => frame.remove()");
|
||||
try {
|
||||
route[0].resume();
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Route is already handled!"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> route[0].resume());
|
||||
assertTrue(e.getMessage().contains("Route is already handled!"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -555,20 +544,18 @@ public class TestPageRoute extends TestBase {
|
||||
}
|
||||
{
|
||||
// Should be rejected
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.evaluate("async () => {\n" +
|
||||
" const response = await fetch('https://example.com/cars?reject', { mode: 'cors' });\n" +
|
||||
" return response.json();\n" +
|
||||
"}");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
if (isChromium()) {
|
||||
assertTrue(e.getMessage().contains("Failed"), e.getMessage());
|
||||
} else if (isWebKit()) {
|
||||
assertTrue(e.getMessage().contains("TypeError"), e.getMessage());
|
||||
} else if (isFirefox()) {
|
||||
assertTrue(e.getMessage().contains("NetworkError"), e.getMessage());
|
||||
}
|
||||
});
|
||||
if (isChromium()) {
|
||||
assertTrue(e.getMessage().contains("Failed"), e.getMessage());
|
||||
} else if (isWebKit()) {
|
||||
assertTrue(e.getMessage().contains("TypeError"), e.getMessage());
|
||||
} else if (isFirefox()) {
|
||||
assertTrue(e.getMessage().contains("NetworkError"), e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -633,7 +620,7 @@ public class TestPageRoute extends TestBase {
|
||||
.setHeaders(mapOf("Access-Control-Allow-Origin", server.PREFIX))
|
||||
.setBody("[\"electric\",\"gas\"]"));
|
||||
});
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.evaluate("async () => {\n" +
|
||||
" const response = await fetch('https://example.com/cars', {\n" +
|
||||
" method: 'POST',\n" +
|
||||
@@ -644,9 +631,7 @@ public class TestPageRoute extends TestBase {
|
||||
" });\n" +
|
||||
" return response.json();\n" +
|
||||
"}");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -79,12 +79,11 @@ public class TestPageSelectOption extends TestBase {
|
||||
void shouldNotSelectSingleOptionWhenSomeAttributesDoNotMatch() {
|
||||
page.navigate(server.PREFIX + "/input/select.html");
|
||||
page.evalOnSelector("select", "s => s.value = undefined");
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.selectOption("select", new SelectOption()
|
||||
.setValue("green").setLabel("Brown"), new Page.SelectOptionOptions().setTimeout(300));
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Timeout"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Timeout"));
|
||||
assertEquals("", page.evaluate("() => document.querySelector('select').value"));
|
||||
}
|
||||
|
||||
@@ -137,12 +136,8 @@ public class TestPageSelectOption extends TestBase {
|
||||
@Test
|
||||
void shouldThrowWhenElementIsNotASelect() {
|
||||
page.navigate(server.PREFIX + "/input/select.html");
|
||||
try {
|
||||
page.selectOption("body", "");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Element is not a <select> element"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.selectOption("body", ""));
|
||||
assertTrue(e.getMessage().contains("Element is not a <select> element"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -181,12 +176,10 @@ public class TestPageSelectOption extends TestBase {
|
||||
void shouldNotAllowNullItems() {
|
||||
page.navigate(server.PREFIX + "/input/select.html");
|
||||
page.evaluate("() => window['makeMultiple']()");
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.selectOption("select", new String[]{"blue", null, "black","magenta"});
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("options.get(1): expected object, got null"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("options.get(1): expected object, got null"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -70,11 +70,9 @@ public class TestPageSetContent extends TestBase {
|
||||
String imgPath = "/img.png";
|
||||
// stall for image
|
||||
server.setRoute(imgPath, exchange -> {});
|
||||
try {
|
||||
assertThrows(PlaywrightException.class, () -> {
|
||||
page.setContent("<img src='" + server.PREFIX + imgPath + "'></img>", new Page.SetContentOptions().setTimeout(100));
|
||||
fail("did not throw");
|
||||
} catch (TimeoutError e) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -83,12 +81,10 @@ public class TestPageSetContent extends TestBase {
|
||||
String imgPath = "/img.png";
|
||||
// stall for image
|
||||
server.setRoute(imgPath, exchange -> {});
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.setContent("<img src='" + server.PREFIX + imgPath + "'></img>");
|
||||
fail("did not throw");
|
||||
} catch (TimeoutError e) {
|
||||
assertTrue(e.getMessage().contains("Timeout 100ms exceeded."), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Timeout 100ms exceeded."), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -70,11 +70,9 @@ public class TestPageSetExtraHttpHeaders extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldThrowForNonStringHeaderValues() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
browser.newContext(new Browser.NewContextOptions().setExtraHTTPHeaders(mapOf("foo", null)));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("expected string, got undefined"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("expected string, got undefined"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,34 +217,28 @@ public class TestPageSetInputFiles extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldRespectTimeout() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.waitForFileChooser(new Page.WaitForFileChooserOptions().setTimeout(1), () -> {});
|
||||
fail("did not throw");
|
||||
} catch (TimeoutError e) {
|
||||
assertTrue(e.getMessage().contains("Timeout 1ms exceeded"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Timeout 1ms exceeded"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldRespectDefaultTimeoutWhenThereIsNoCustomTimeout() {
|
||||
page.setDefaultTimeout(1);
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.waitForFileChooser(() -> {});
|
||||
fail("did not throw");
|
||||
} catch (TimeoutError e) {
|
||||
assertTrue(e.getMessage().contains("Timeout 1ms exceeded"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Timeout 1ms exceeded"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldPrioritizeExactTimeoutOverDefaultTimeout() {
|
||||
page.setDefaultTimeout(0);
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.waitForFileChooser(new Page.WaitForFileChooserOptions().setTimeout(1), () -> {});
|
||||
fail("did not throw");
|
||||
} catch (TimeoutError e) {
|
||||
assertTrue(e.getMessage().contains("Timeout 1ms exceeded"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Timeout 1ms exceeded"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -340,13 +334,12 @@ public class TestPageSetInputFiles extends TestBase {
|
||||
void shouldNotAcceptMultipleFilesForSingleFileInput() {
|
||||
page.setContent("<input type=file>");
|
||||
FileChooser fileChooser = page.waitForFileChooser(() -> page.click("input"));
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
fileChooser.setFiles(new Path[]{FILE_TO_UPLOAD, Paths.get("src/test/resources/pptr.png")});
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Non-multiple file input can only accept single file"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Non-multiple file input can only accept single file"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldEmitInputAndChangeEvents() {
|
||||
List<Object> events = new ArrayList<>();
|
||||
|
||||
@@ -4,74 +4,61 @@ import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.junit.jupiter.api.Assertions.fail;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
public class TestPageStrict extends TestBase {
|
||||
@Test
|
||||
void shouldFailPageTextContentInStrictMode() {
|
||||
page.setContent("<span>span1</span><div><span>target</span></div>");
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.textContent("span", new Page.TextContentOptions().setStrict(true));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("strict mode violation"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("strict mode violation"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldFailPageGetAttributeInStrictMode() {
|
||||
page.setContent("<span>span1</span><div><span>target</span></div>");
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.getAttribute("span", "id", new Page.GetAttributeOptions().setStrict(true));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("strict mode violation"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("strict mode violation"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldFailPageFillInStrictMode() {
|
||||
page.setContent("<input></input><div><input></input></div>");
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.fill("input", "text", new Page.FillOptions().setStrict(true));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("strict mode violation"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("strict mode violation"));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void shouldFailPageInStrictMode() {
|
||||
page.setContent("<span>span1</span><div><span>target</span></div>");
|
||||
try {
|
||||
ElementHandle error = page.querySelector("span", new Page.QuerySelectorOptions().setStrict(true));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("strict mode violation"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.querySelector("span", new Page.QuerySelectorOptions().setStrict(true));
|
||||
});
|
||||
assertTrue(e.getMessage().contains("strict mode violation"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldFailPageWaitForSelectorInStrictMode() {
|
||||
page.setContent("<span>span1</span><div><span>target</span></div>");
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.waitForSelector("span", new Page.WaitForSelectorOptions().setStrict(true));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("strict mode violation"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("strict mode violation"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldFailPageDispatchEventInStrictMode() {
|
||||
page.setContent("<span></span><div><span></span></div>");
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.dispatchEvent("span", "click", new HashMap<>(), new Page.DispatchEventOptions().setStrict(true));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("strict mode violation"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("strict mode violation"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,14 +44,12 @@ public class TestPageWaitForNavigation extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldRespectTimeout() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.waitForNavigation(
|
||||
new Page.WaitForNavigationOptions().setUrl("**/frame.html").setTimeout(5000),
|
||||
() -> page.navigate(server.EMPTY_PAGE));
|
||||
fail("did not throw");
|
||||
} catch (TimeoutError e) {
|
||||
assertTrue(e.getMessage().contains("Timeout 5000ms exceeded"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Timeout 5000ms exceeded"));
|
||||
}
|
||||
|
||||
// Skipped in sync API.
|
||||
@@ -92,14 +90,12 @@ public class TestPageWaitForNavigation extends TestBase {
|
||||
void shouldWorkWithClickingOnLinksWhichDoNotCommitNavigation() throws InterruptedException {
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
page.setContent("<a href='" + httpsServer.EMPTY_PAGE + "'>foobar</a>");
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.waitForNavigation(() -> page.click("a"));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
// TODO: figure out why it is inconsistent on Linux WebKit.
|
||||
List<String> possibleErrorMessages = expectedSSLError(browserType.name());
|
||||
assertTrue(checkSSLErrorMessage(e.getMessage(), possibleErrorMessages), "Unexpected exception: '" + e.getMessage() + "' check message(s): " + String.join(",", possibleErrorMessages));
|
||||
}
|
||||
});
|
||||
// TODO: figure out why it is inconsistent on Linux WebKit.
|
||||
List<String> possibleErrorMessages = expectedSSLError(browserType.name());
|
||||
assertTrue(checkSSLErrorMessage(e.getMessage(), possibleErrorMessages), "Unexpected exception: '" + e.getMessage() + "' check message(s): " + String.join(",", possibleErrorMessages));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -239,7 +235,7 @@ public class TestPageWaitForNavigation extends TestBase {
|
||||
page.navigate(server.PREFIX + "/frames/one-frame.html");
|
||||
Frame frame = page.frames().get(1);
|
||||
server.setRoute("/empty.html", exchange -> {});
|
||||
try {
|
||||
PlaywrightException ex = assertThrows(PlaywrightException.class, () -> {
|
||||
frame.waitForNavigation(() -> {
|
||||
Future<Server.Request> req = server.futureRequest("/empty.html");
|
||||
page.evalOnSelector("iframe", "frame => { frame.contentWindow.location.href = '/empty.html'; }");
|
||||
@@ -250,35 +246,29 @@ public class TestPageWaitForNavigation extends TestBase {
|
||||
}
|
||||
page.evaluate("setTimeout(() => document.querySelector('iframe').remove());");
|
||||
});
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("frame was detached"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertTrue(ex.getMessage().contains("frame was detached"), ex.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldThrowOnInvalidUrlMatcherTypeInPage() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
Page.WaitForNavigationOptions options = new Page.WaitForNavigationOptions();
|
||||
options.url = new Object();
|
||||
page.waitForNavigation(options, () -> {});
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Url must be String, Pattern or Predicate<String>"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Url must be String, Pattern or Predicate<String>"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldThrowOnInvalidUrlMatcherTypeInFrame() {
|
||||
page.navigate(server.PREFIX + "/frames/one-frame.html");
|
||||
Frame frame = page.frames().get(1);
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
Frame.WaitForNavigationOptions options = new Frame.WaitForNavigationOptions();
|
||||
options.url = new Object();
|
||||
frame.waitForNavigation(options, () -> {});
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Url must be String, Pattern or Predicate<String>"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Url must be String, Pattern or Predicate<String>"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,23 +52,19 @@ public class TestPageWaitForRequest extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldRespectTimeout() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.waitForRequest(url -> false, new Page.WaitForRequestOptions().setTimeout(1), () -> {});
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Timeout"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Timeout"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldRespectDefaultTimeout() {
|
||||
page.setDefaultTimeout(1);
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.waitForRequest(request -> false, () -> {});
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Timeout"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Timeout"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -63,12 +63,10 @@ public class TestPageWaitForResponse extends TestBase {
|
||||
@Test
|
||||
void shouldRespectDefaultTimeout() {
|
||||
page.setDefaultTimeout(1);
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.waitForResponse(response -> false, () -> {});
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Timeout"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Timeout"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -37,12 +37,10 @@ public class TestPageWaitForUrl extends TestBase {
|
||||
@Test
|
||||
void shouldRespectTimeout() {
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
try {
|
||||
TimeoutError e = assertThrows(TimeoutError.class, () -> {
|
||||
page.waitForURL("**/frame.html", new Page.WaitForURLOptions().setTimeout(2500));
|
||||
fail("did not throw");
|
||||
} catch (TimeoutError e) {
|
||||
assertTrue(e.getMessage().contains("Timeout 2500ms exceeded"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Timeout 2500ms exceeded"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -50,16 +50,8 @@ public class TestPdf extends TestBase {
|
||||
|
||||
@Test
|
||||
@DisabledIf(value="com.microsoft.playwright.TestBase#isChromium", disabledReason="skip")
|
||||
void shouldOnlyHavePdfInChromium() {
|
||||
try {
|
||||
page.pdf();
|
||||
if (isChromium()) {
|
||||
return;
|
||||
}
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertFalse(e.getMessage().contains("did not throw"));
|
||||
}
|
||||
void shouldThrowInNonChromium() {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.pdf());
|
||||
assertTrue(e.getMessage().contains("Page.pdf only supported in headless Chromium"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -41,13 +41,9 @@ public class TestPlaywrightCreate {
|
||||
Playwright.CreateOptions options = new Playwright.CreateOptions().setEnv(env);
|
||||
|
||||
try (Playwright playwright = PlaywrightImpl.createImpl(options, true)) {
|
||||
try {
|
||||
getBrowserTypeFromEnv(playwright).launch();
|
||||
fail("Did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Looks like Playwright Test or Playwright was just installed or updated") ||
|
||||
e.getMessage().contains("Looks like Playwright was just installed or updated."), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> getBrowserTypeFromEnv(playwright).launch());
|
||||
assertTrue(e.getMessage().contains("Looks like Playwright Test or Playwright was just installed or updated") ||
|
||||
e.getMessage().contains("Looks like Playwright was just installed or updated."), e.getMessage());
|
||||
|
||||
try (DirectoryStream<Path> ds = Files.newDirectoryStream(browsersDir)) {
|
||||
for (Path child : ds) {
|
||||
|
||||
@@ -29,12 +29,8 @@ public class TestQuerySelector extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldThrowForNonStringSelector() {
|
||||
try {
|
||||
page.querySelector(null);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("selector: expected string, got undefined"));
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.querySelector(null));
|
||||
assertTrue(e.getMessage().contains("selector: expected string, got undefined"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -176,46 +176,22 @@ public class TestSelectorsMisc extends TestBase {
|
||||
|
||||
assertEquals("id5,id6,id3", page.evalOnSelectorAll("div:right-of(#id0) + div:above(#id8)", "els => els.map(e => e.id).join(',')"));
|
||||
|
||||
try {
|
||||
ElementHandle error = page.querySelector(":near(50)");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("\"near\" engine expects a selector list and optional maximum distance in pixels"), e.getMessage());
|
||||
}
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> page.querySelector(":near(50)"));
|
||||
assertTrue(e.getMessage().contains("\"near\" engine expects a selector list and optional maximum distance in pixels"), e.getMessage());
|
||||
|
||||
try {
|
||||
ElementHandle error1 = page.querySelector("div >> left-of=abc");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Malformed selector: left-of=abc"));
|
||||
}
|
||||
e = assertThrows(PlaywrightException.class, () -> page.querySelector("div >> left-of=abc"));
|
||||
assertTrue(e.getMessage().contains("Malformed selector: left-of=abc"));
|
||||
|
||||
try {
|
||||
ElementHandle error2 = page.querySelector("left-of=\"div\"");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("\"left-of\" selector cannot be first"), e.getMessage());
|
||||
}
|
||||
e = assertThrows(PlaywrightException.class, () -> page.querySelector("left-of=\"div\""));
|
||||
assertTrue(e.getMessage().contains("\"left-of\" selector cannot be first"), e.getMessage());
|
||||
|
||||
try {
|
||||
ElementHandle error3 = page.querySelector("div >> left-of=33");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Malformed selector: left-of=33"));
|
||||
}
|
||||
e = assertThrows(PlaywrightException.class, () -> page.querySelector("div >> left-of=33"));
|
||||
assertTrue(e.getMessage().contains("Malformed selector: left-of=33"));
|
||||
|
||||
try {
|
||||
ElementHandle error4 = page.querySelector("div >> left-of='span','foo'");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Malformed selector: left-of='span','foo'"));
|
||||
}
|
||||
e = assertThrows(PlaywrightException.class, () -> page.querySelector("div >> left-of='span','foo'"));
|
||||
assertTrue(e.getMessage().contains("Malformed selector: left-of='span','foo'"));
|
||||
|
||||
try {
|
||||
ElementHandle error5 = page.querySelector("div >> left-of='span',3,4");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Malformed selector: left-of='span',3,4"));
|
||||
}
|
||||
e = assertThrows(PlaywrightException.class, () -> page.querySelector("div >> left-of='span',3,4"));
|
||||
assertTrue(e.getMessage().contains("Malformed selector: left-of='span',3,4"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,13 +53,11 @@ public class TestSelectorsRegister extends TestBase {
|
||||
assertEquals("DIV", page.evalOnSelector("tag2=DIV", "e => e.nodeName"));
|
||||
assertEquals("SPAN", page.evalOnSelector("tag2=SPAN", "e => e.nodeName"));
|
||||
assertEquals(2, page.evalOnSelectorAll("tag2=DIV", "es => es.length"));
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
// Selector names are case-sensitive.
|
||||
page.querySelector("tAG=DIV");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Unknown engine \"tAG\" while parsing selector tAG=DIV"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Unknown engine \"tAG\" while parsing selector tAG=DIV"));
|
||||
context.close();
|
||||
}
|
||||
|
||||
@@ -105,12 +103,10 @@ public class TestSelectorsRegister extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldHandleErrors() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.querySelector("neverregister=ignored");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Unknown engine \"neverregister\" while parsing selector neverregister=ignored"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Unknown engine \"neverregister\" while parsing selector neverregister=ignored"));
|
||||
String createDummySelector = "{\n" +
|
||||
" create(root, target) {\n" +
|
||||
" return target.nodeName;\n" +
|
||||
@@ -122,26 +118,20 @@ public class TestSelectorsRegister extends TestBase {
|
||||
" return Array.from(root.querySelectorAll(\"dummy\"));\n" +
|
||||
" }\n" +
|
||||
"}";
|
||||
try {
|
||||
e = assertThrows(PlaywrightException.class, () -> {
|
||||
playwright.selectors().register("$", createDummySelector);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Selector engine name may only contain [a-zA-Z0-9_] characters"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Selector engine name may only contain [a-zA-Z0-9_] characters"));
|
||||
// Selector names are case-sensitive.
|
||||
playwright.selectors().register("dummy", createDummySelector);
|
||||
playwright.selectors().register("duMMy", createDummySelector);
|
||||
try {
|
||||
e = assertThrows(PlaywrightException.class, () -> {
|
||||
playwright.selectors().register("dummy", createDummySelector);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("\"dummy\" selector engine has been already registered"));
|
||||
}
|
||||
try {
|
||||
});
|
||||
assertTrue(e.getMessage().contains("\"dummy\" selector engine has been already registered"));
|
||||
e = assertThrows(PlaywrightException.class, () -> {
|
||||
playwright.selectors().register("css", createDummySelector);
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("\"css\" is a predefined selector engine"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("\"css\" is a predefined selector engine"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,15 +74,13 @@ public class TestWaitForFunction extends TestBase {
|
||||
int[] counter = { 0 };
|
||||
page.onConsoleMessage(message -> ++counter[0]);
|
||||
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
JSHandle result = page.waitForFunction("() => {\n" +
|
||||
" window['counter'] = (window['counter'] || 0) + 1;\n" +
|
||||
" console.log(window['counter']);\n" +
|
||||
"}", null, new Page.WaitForFunctionOptions().setPollingInterval(1).setTimeout(1000));
|
||||
fail("did not throw");
|
||||
} catch (TimeoutError e) {
|
||||
assertTrue(e.getMessage().contains("Timeout 1000ms exceeded"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Timeout 1000ms exceeded"));
|
||||
|
||||
int savedCounter = counter[0];
|
||||
page.waitForTimeout(2000); // Give it some time to produce more logs.
|
||||
@@ -101,37 +99,31 @@ public class TestWaitForFunction extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldFailWithPredicateThrowingOnFirstCall() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.waitForFunction("() => { throw new Error('oh my'); }");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("oh my"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("oh my"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldFailWithPredicateThrowingSometimes() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.waitForFunction("() => {\n" +
|
||||
" window['counter'] = (window['counter'] || 0) + 1;\n" +
|
||||
" if (window['counter'] === 3)\n" +
|
||||
" throw new Error('Bad counter!');\n" +
|
||||
" return window['counter'] === 5 ? 'result' : false;\n" +
|
||||
"}");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Bad counter!"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Bad counter!"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldFailWithReferenceErrorOnWrongPage() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.waitForFunction("() => globalVar === 123");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("globalVar"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("globalVar"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -149,12 +141,10 @@ public class TestWaitForFunction extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldThrowNegativePollingInterval() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.waitForFunction("() => !!document.body", null, new Page.WaitForFunctionOptions().setPollingInterval(-10));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Cannot poll with non-positive interval"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Cannot poll with non-positive interval"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -177,23 +167,19 @@ public class TestWaitForFunction extends TestBase {
|
||||
|
||||
@Test
|
||||
void shouldRespectTimeout() {
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.waitForFunction("false", null, new Page.WaitForFunctionOptions().setTimeout(10));
|
||||
fail("did not throw");
|
||||
} catch (TimeoutError e) {
|
||||
assertTrue(e.getMessage().contains("Timeout 10ms exceeded"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Timeout 10ms exceeded"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldRespectDefaultTimeout() {
|
||||
page.setDefaultTimeout(1);
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.waitForFunction("false");
|
||||
fail("did not throw");
|
||||
} catch (TimeoutError e) {
|
||||
assertTrue(e.getMessage().contains("Timeout 1ms exceeded"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Timeout 1ms exceeded"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -269,33 +255,29 @@ public class TestWaitForFunction extends TestBase {
|
||||
messages.add(msg.text());
|
||||
}
|
||||
});
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.waitForFunction("() => {\n" +
|
||||
" console.log('waitForFunction1');\n" +
|
||||
" throw new Error('waitForFunction1');\n" +
|
||||
"}");
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("waitForFunction1"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("waitForFunction1"));
|
||||
page.reload();
|
||||
try {
|
||||
e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.waitForFunction("() => {\n" +
|
||||
" console.log('waitForFunction2');\n" +
|
||||
" throw new Error('waitForFunction2');\n" +
|
||||
"}");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("waitForFunction2"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("waitForFunction2"));
|
||||
page.reload();
|
||||
try {
|
||||
e = assertThrows(PlaywrightException.class, () -> {
|
||||
page.waitForFunction("() => {\n" +
|
||||
" console.log('waitForFunction3');\n" +
|
||||
" throw new Error('waitForFunction3');\n" +
|
||||
"}");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("waitForFunction3"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("waitForFunction3"));
|
||||
assertEquals(asList("waitForFunction1", "waitForFunction2", "waitForFunction3"), messages);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -182,12 +182,10 @@ public class TestWebSocket extends TestBase {
|
||||
"}", webSocketServer.getPort());
|
||||
});
|
||||
ws.waitForFrameReceived(() -> {});
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
ws.waitForFrameSent(() -> page.evaluate("window.ws.close()"));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException exception) {
|
||||
assertTrue(exception.getMessage().contains("Socket closed"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Socket closed"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -198,12 +196,10 @@ public class TestWebSocket extends TestBase {
|
||||
"}", webSocketServer.getPort());
|
||||
});
|
||||
ws.waitForFrameReceived(() -> {});
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
ws.waitForFrameSent(() -> page.close());
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException exception) {
|
||||
assertTrue(exception.getMessage().contains("Page closed"));
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Page closed"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -258,13 +254,11 @@ public class TestWebSocket extends TestBase {
|
||||
"}", webSocketServer.getPort());
|
||||
});
|
||||
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
ws.waitForFrameReceived(new WebSocket.WaitForFrameReceivedOptions()
|
||||
.setPredicate(webSocketFrame -> false).setTimeout(1), () -> {});
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Timeout"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Timeout"), e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -276,12 +270,10 @@ public class TestWebSocket extends TestBase {
|
||||
"}", webSocketServer.getPort());
|
||||
});
|
||||
|
||||
try {
|
||||
PlaywrightException e = assertThrows(PlaywrightException.class, () -> {
|
||||
ws.waitForFrameSent(new WebSocket.WaitForFrameSentOptions()
|
||||
.setPredicate(webSocketFrame -> false).setTimeout(1), () -> page.evaluate("ws.send('outgoing');"));
|
||||
fail("did not throw");
|
||||
} catch (PlaywrightException e) {
|
||||
assertTrue(e.getMessage().contains("Timeout"), e.getMessage());
|
||||
}
|
||||
});
|
||||
assertTrue(e.getMessage().contains("Timeout"), e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user