diff --git a/commafeed-server/src/test/java/com/commafeed/e2e/ReadingIT.java b/commafeed-server/src/test/java/com/commafeed/e2e/ReadingIT.java index fa99d241..7791a909 100644 --- a/commafeed-server/src/test/java/com/commafeed/e2e/ReadingIT.java +++ b/commafeed-server/src/test/java/com/commafeed/e2e/ReadingIT.java @@ -3,9 +3,10 @@ package com.commafeed.e2e; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.concurrent.TimeUnit; -import java.util.regex.Pattern; import org.apache.commons.io.IOUtils; +import org.apache.hc.core5.http.HttpStatus; +import org.awaitility.Awaitility; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -14,6 +15,7 @@ import org.mockserver.integration.ClientAndServer; import org.mockserver.model.HttpRequest; import org.mockserver.model.HttpResponse; +import com.commafeed.frontend.model.Entries; import com.microsoft.playwright.Browser; import com.microsoft.playwright.Locator; import com.microsoft.playwright.Page; @@ -22,6 +24,7 @@ import com.microsoft.playwright.assertions.PlaywrightAssertions; import com.microsoft.playwright.options.AriaRole; import io.quarkus.test.junit.QuarkusTest; +import io.restassured.RestAssured; @QuarkusTest class ReadingIT { @@ -40,11 +43,15 @@ class ReadingIT { .respond(HttpResponse.response() .withBody(IOUtils.toString(getClass().getResource("/feed/rss.xml"), StandardCharsets.UTF_8)) .withDelay(TimeUnit.MILLISECONDS, 100)); + + RestAssured.authentication = RestAssured.preemptive().basic("admin", "admin"); } @AfterEach void cleanup() { playwright.close(); + + RestAssured.reset(); } @Test @@ -66,22 +73,32 @@ class ReadingIT { main.getByRole(AriaRole.BUTTON, new Locator.GetByRoleOptions().setName("Next")).click(); main.getByRole(AriaRole.BUTTON, new Locator.GetByRoleOptions().setName("Subscribe").setExact(true)).click(); - // click on subscription - sidebar.getByText(Pattern.compile("CommaFeed test feed\\d+")).click(); + // click on subscription, "2" is actually the unread count + sidebar.getByText("CommaFeed test feed2").click(); // we have two unread entries - PlaywrightAssertions.assertThat(main.locator(".mantine-Paper-root")).hasCount(2); + PlaywrightAssertions.assertThat(main.getByRole(AriaRole.ARTICLE)).hasCount(2); // click on first entry main.getByText("Item 1").click(); PlaywrightAssertions.assertThat(main.getByText("Item 1 description")).hasCount(1); PlaywrightAssertions.assertThat(main.getByText("Item 2 description")).hasCount(0); - // click on subscription - sidebar.getByText(Pattern.compile("CommaFeed test feed\\d+")).click(); + // wait for the entry to be marked as read since the UI is updated immediately while the entry is marked as read in the background + Awaitility.await() + .atMost(15, TimeUnit.SECONDS) + .until(() -> RestAssured.given() + .get("rest/category/entries?id=all&readType=unread") + .then() + .statusCode(HttpStatus.SC_OK) + .extract() + .as(Entries.class), e -> e.getEntries().size() == 1); + + // click on subscription, "1" is actually the unread count + sidebar.getByText("CommaFeed test feed1").click(); // only one unread entry now - PlaywrightAssertions.assertThat(main.locator(".mantine-Paper-root")).hasCount(1); + PlaywrightAssertions.assertThat(main.getByRole(AriaRole.ARTICLE)).hasCount(1); // click on second entry main.getByText("Item 2").click(); diff --git a/commafeed-server/src/test/java/com/commafeed/integration/WebSocketIT.java b/commafeed-server/src/test/java/com/commafeed/integration/WebSocketIT.java index bfeb64ea..0e4b9397 100644 --- a/commafeed-server/src/test/java/com/commafeed/integration/WebSocketIT.java +++ b/commafeed-server/src/test/java/com/commafeed/integration/WebSocketIT.java @@ -13,6 +13,7 @@ import java.util.stream.Collectors; import org.apache.hc.core5.http.HttpStatus; import org.awaitility.Awaitility; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -41,6 +42,11 @@ class WebSocketIT extends BaseIT { RestAssured.authentication = RestAssured.preemptive().basic("admin", "admin"); } + @AfterEach + void tearDown() { + RestAssured.reset(); + } + @Test void sessionClosedIfNotLoggedIn() throws DeploymentException, IOException { AtomicBoolean connected = new AtomicBoolean(); diff --git a/commafeed-server/src/test/java/com/commafeed/integration/rest/AdminIT.java b/commafeed-server/src/test/java/com/commafeed/integration/rest/AdminIT.java index ceeef49f..403af391 100644 --- a/commafeed-server/src/test/java/com/commafeed/integration/rest/AdminIT.java +++ b/commafeed-server/src/test/java/com/commafeed/integration/rest/AdminIT.java @@ -3,6 +3,7 @@ package com.commafeed.integration.rest; import java.util.List; import org.apache.hc.core5.http.HttpStatus; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; @@ -25,6 +26,11 @@ class AdminIT extends BaseIT { RestAssured.authentication = RestAssured.preemptive().basic("admin", "admin"); } + @AfterEach + void cleanup() { + RestAssured.reset(); + } + @Nested class Users { @Test diff --git a/commafeed-server/src/test/java/com/commafeed/integration/rest/FeedIT.java b/commafeed-server/src/test/java/com/commafeed/integration/rest/FeedIT.java index 074fa33b..c17e6b0d 100644 --- a/commafeed-server/src/test/java/com/commafeed/integration/rest/FeedIT.java +++ b/commafeed-server/src/test/java/com/commafeed/integration/rest/FeedIT.java @@ -11,6 +11,7 @@ import java.util.Objects; import org.apache.commons.io.IOUtils; import org.apache.hc.core5.http.HttpStatus; import org.awaitility.Awaitility; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; @@ -38,6 +39,11 @@ class FeedIT extends BaseIT { RestAssured.authentication = RestAssured.preemptive().basic("admin", "admin"); } + @AfterEach + void cleanup() { + RestAssured.reset(); + } + @Nested class Fetch { @Test diff --git a/commafeed-server/src/test/java/com/commafeed/integration/rest/FeverIT.java b/commafeed-server/src/test/java/com/commafeed/integration/rest/FeverIT.java index 533e034b..595f70f5 100644 --- a/commafeed-server/src/test/java/com/commafeed/integration/rest/FeverIT.java +++ b/commafeed-server/src/test/java/com/commafeed/integration/rest/FeverIT.java @@ -1,6 +1,7 @@ package com.commafeed.integration.rest; import org.apache.hc.core5.http.HttpStatus; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -37,6 +38,11 @@ class FeverIT extends BaseIT { this.userId = user.getId(); } + @AfterEach + void cleanup() { + RestAssured.reset(); + } + @Test void invalidApiKey() { FeverResponse response = fetch("feeds", "invalid-key"); diff --git a/commafeed-server/src/test/java/com/commafeed/integration/rest/UserIT.java b/commafeed-server/src/test/java/com/commafeed/integration/rest/UserIT.java index 2e7b6cb4..13d09399 100644 --- a/commafeed-server/src/test/java/com/commafeed/integration/rest/UserIT.java +++ b/commafeed-server/src/test/java/com/commafeed/integration/rest/UserIT.java @@ -2,6 +2,7 @@ package com.commafeed.integration.rest; import java.util.List; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -29,6 +30,11 @@ class UserIT extends BaseIT { mailbox.clear(); } + @AfterEach + void cleanup() { + RestAssured.reset(); + } + @Test void resetPassword() { PasswordResetRequest req = new PasswordResetRequest(); diff --git a/commafeed-server/src/test/java/com/commafeed/integration/servlet/CustomCodeIT.java b/commafeed-server/src/test/java/com/commafeed/integration/servlet/CustomCodeIT.java index de6947e1..0d0484f9 100644 --- a/commafeed-server/src/test/java/com/commafeed/integration/servlet/CustomCodeIT.java +++ b/commafeed-server/src/test/java/com/commafeed/integration/servlet/CustomCodeIT.java @@ -2,6 +2,7 @@ package com.commafeed.integration.servlet; import org.apache.hc.core5.http.HttpStatus; import org.hamcrest.CoreMatchers; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -20,6 +21,11 @@ class CustomCodeIT extends BaseIT { RestAssured.authentication = RestAssured.preemptive().basic("admin", "admin"); } + @AfterEach + void cleanup() { + RestAssured.reset(); + } + @Test void test() { // get settings diff --git a/commafeed-server/src/test/java/com/commafeed/integration/servlet/NextUnreadIT.java b/commafeed-server/src/test/java/com/commafeed/integration/servlet/NextUnreadIT.java index 661275fd..26437f0b 100644 --- a/commafeed-server/src/test/java/com/commafeed/integration/servlet/NextUnreadIT.java +++ b/commafeed-server/src/test/java/com/commafeed/integration/servlet/NextUnreadIT.java @@ -1,6 +1,7 @@ package com.commafeed.integration.servlet; import org.apache.hc.core5.http.HttpStatus; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -18,6 +19,11 @@ class NextUnreadIT extends BaseIT { RestAssured.authentication = RestAssured.preemptive().basic("admin", "admin"); } + @AfterEach + void cleanup() { + RestAssured.reset(); + } + @Test void test() { subscribeAndWaitForEntries(getFeedUrl());