diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4a71803693a..56909f0104a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -429,6 +429,39 @@ jobs: with: job-name: Account Console IT + forms-integration-tests: + name: Forms IT + runs-on: ubuntu-latest + needs: build + timeout-minutes: 75 + strategy: + matrix: + browser: [chrome, firefox] + fail-fast: false + steps: + - uses: actions/checkout@v3 + + - id: integration-test-setup + name: Integration test setup + uses: ./.github/actions/integration-test-setup + + - name: Run Forms IT + run: | + TESTS=`testsuite/integration-arquillian/tests/base/testsuites/suite.sh forms` + echo "Tests: $TESTS" + ./mvnw test -Dsurefire.rerunFailingTestsCount=${{ env.SUREFIRE_RERUN_FAILING_COUNT }} -nsu -B -Pauth-server-quarkus -Dtest=$TESTS -Dbrowser=${{ matrix.browser }} "-Dwebdriver.chrome.driver=$CHROMEWEBDRIVER/chromedriver" -f testsuite/integration-arquillian/tests/base/pom.xml | misc/log/trimmer.sh + + - name: Upload JVM Heapdumps + if: always() + uses: ./.github/actions/upload-heapdumps + + - uses: ./.github/actions/upload-flaky-tests + name: Upload flaky tests + env: + GH_TOKEN: ${{ github.token }} + with: + job-name: Forms IT + webauthn-integration-tests: name: WebAuthn IT runs-on: ubuntu-latest @@ -548,6 +581,7 @@ jobs: - fips-unit-tests - fips-integration-tests - account-console-integration-tests + - forms-integration-tests - webauthn-integration-tests - sssd-unit-tests - migration-tests diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/BruteForceTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/BruteForceTest.java index cc96529ff4f..697a6130cd2 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/BruteForceTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/BruteForceTest.java @@ -36,6 +36,7 @@ import org.keycloak.services.managers.BruteForceProtector; import org.keycloak.testsuite.AbstractTestRealmKeycloakTest; import org.keycloak.testsuite.AssertEvents; import org.keycloak.testsuite.AssertEvents.ExpectedEvent; +import org.keycloak.testsuite.arquillian.annotation.IgnoreBrowserDriver; import org.keycloak.testsuite.pages.AppPage; import org.keycloak.testsuite.pages.AppPage.RequestType; import org.keycloak.testsuite.pages.LoginPage; @@ -50,6 +51,9 @@ import org.keycloak.testsuite.util.RealmRepUtil; import org.keycloak.testsuite.util.UserBuilder; import jakarta.mail.internet.MimeMessage; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.firefox.FirefoxDriver; + import java.net.MalformedURLException; import java.util.Calendar; import java.util.Collections; @@ -564,6 +568,8 @@ public class BruteForceTest extends AbstractTestRealmKeycloakTest { } @Test + @IgnoreBrowserDriver(FirefoxDriver.class) // TODO: https://github.com/keycloak/keycloak/issues/20525 + @IgnoreBrowserDriver(ChromeDriver.class) public void testResetPassword() throws Exception { String userId = adminClient.realm("test").users().search("user2", null, null, null, 0, 1).get(0).getId(); diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/RecoveryAuthnCodesAuthenticatorTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/RecoveryAuthnCodesAuthenticatorTest.java index fcb80126c66..06b211ac3e8 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/RecoveryAuthnCodesAuthenticatorTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/RecoveryAuthnCodesAuthenticatorTest.java @@ -18,6 +18,7 @@ import org.keycloak.representations.idm.RequiredActionProviderSimpleRepresentati import org.keycloak.testsuite.AbstractTestRealmKeycloakTest; import org.keycloak.testsuite.admin.ApiUtil; import org.keycloak.testsuite.arquillian.annotation.EnableFeature; +import org.keycloak.testsuite.arquillian.annotation.IgnoreBrowserDriver; import org.keycloak.testsuite.client.KeycloakTestingClient; import org.keycloak.testsuite.pages.EnterRecoveryAuthnCodePage; import org.keycloak.testsuite.pages.LoginPage; @@ -28,6 +29,8 @@ import org.keycloak.testsuite.pages.SetupRecoveryAuthnCodesPage; import org.keycloak.testsuite.util.FlowUtil; import org.openqa.selenium.WebDriver; import org.junit.Assert; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.firefox.FirefoxDriver; import java.util.Arrays; import java.util.List; @@ -141,6 +144,8 @@ public class RecoveryAuthnCodesAuthenticatorTest extends AbstractTestRealmKeyclo //// In a sub-flow with alternative credential executors, test whether setup Recovery Authentication Codes flow is working @Test + @IgnoreBrowserDriver(FirefoxDriver.class) + @IgnoreBrowserDriver(ChromeDriver.class) public void testSetupRecoveryAuthnCodes() { try { configureBrowserFlowWithRecoveryAuthnCodes(testingClient); @@ -171,6 +176,8 @@ public class RecoveryAuthnCodesAuthenticatorTest extends AbstractTestRealmKeyclo @Test + @IgnoreBrowserDriver(FirefoxDriver.class) // TODO: https://github.com/keycloak/keycloak/issues/13543 + @IgnoreBrowserDriver(ChromeDriver.class) public void testBruteforceProtectionRecoveryAuthnCodes() { try { configureBrowserFlowWithRecoveryAuthnCodes(testingClient); diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/RegisterTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/RegisterTest.java index cff5c589f62..f99fa10e647 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/RegisterTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/RegisterTest.java @@ -38,6 +38,7 @@ import org.keycloak.representations.idm.UserRepresentation; import org.keycloak.testsuite.AbstractTestRealmKeycloakTest; import org.keycloak.testsuite.AssertEvents; import org.keycloak.testsuite.AbstractTestRealmKeycloakTest; +import org.keycloak.testsuite.arquillian.annotation.IgnoreBrowserDriver; import org.keycloak.testsuite.pages.AppPage; import org.keycloak.testsuite.pages.AppPage.RequestType; import org.keycloak.testsuite.pages.LoginPage; @@ -53,6 +54,9 @@ import org.keycloak.testsuite.util.AccountHelper; import jakarta.mail.internet.MimeMessage; import jakarta.ws.rs.core.Response; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.firefox.FirefoxDriver; + import java.io.IOException; import java.util.UUID; @@ -649,6 +653,8 @@ public class RegisterTest extends AbstractTestRealmKeycloakTest { //KEYCLOAK-15244 @Test + @IgnoreBrowserDriver(ChromeDriver.class) // TODO: https://github.com/keycloak/keycloak/issues/20992 + @IgnoreBrowserDriver(FirefoxDriver.class) public void registerUserMissingTermsAcceptance() { configureRegistrationFlowWithCustomRegistrationPageForm(UUID.randomUUID().toString(), AuthenticationExecutionModel.Requirement.REQUIRED); @@ -675,6 +681,8 @@ public class RegisterTest extends AbstractTestRealmKeycloakTest { //KEYCLOAK-15244 @Test + @IgnoreBrowserDriver(ChromeDriver.class) // TODO: https://github.com/keycloak/keycloak/issues/20992 + @IgnoreBrowserDriver(FirefoxDriver.class) public void registerUserSuccessTermsAcceptance() { configureRegistrationFlowWithCustomRegistrationPageForm(UUID.randomUUID().toString(), AuthenticationExecutionModel.Requirement.REQUIRED); diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/ResetPasswordTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/ResetPasswordTest.java index 96954f0982b..3a70c33028b 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/ResetPasswordTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/ResetPasswordTest.java @@ -38,6 +38,7 @@ import org.keycloak.testsuite.AssertEvents; import org.keycloak.testsuite.AbstractTestRealmKeycloakTest; import org.keycloak.testsuite.admin.ApiUtil; import org.keycloak.testsuite.arquillian.annotation.DisableFeature; +import org.keycloak.testsuite.arquillian.annotation.IgnoreBrowserDriver; import org.keycloak.testsuite.federation.kerberos.AbstractKerberosTest; import org.keycloak.testsuite.pages.AppPage; import org.keycloak.testsuite.pages.AppPage.RequestType; @@ -80,6 +81,7 @@ import org.junit.*; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; +import org.openqa.selenium.firefox.FirefoxDriver; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.*; @@ -1078,6 +1080,7 @@ public class ResetPasswordTest extends AbstractTestRealmKeycloakTest { // KEYCLOAK-15239 @Test + @IgnoreBrowserDriver(FirefoxDriver.class) // TODO: https://github.com/keycloak/keycloak/issues/20526 public void resetPasswordWithSpnegoEnabled() throws IOException, MessagingException { KerberosUtils.assumeKerberosSupportExpected(); diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/SSOTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/SSOTest.java index 3fdbac2f9eb..2da4948428d 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/SSOTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/SSOTest.java @@ -32,6 +32,7 @@ import org.keycloak.representations.idm.RealmRepresentation; import org.keycloak.representations.idm.UserRepresentation; import org.keycloak.testsuite.AssertEvents; import org.keycloak.testsuite.AbstractTestRealmKeycloakTest; +import org.keycloak.testsuite.arquillian.annotation.IgnoreBrowserDriver; import org.keycloak.testsuite.drone.Different; import org.keycloak.testsuite.pages.AppPage; import org.keycloak.testsuite.pages.AppPage.RequestType; @@ -40,6 +41,7 @@ import org.keycloak.testsuite.pages.LoginPasswordUpdatePage; import org.keycloak.testsuite.util.MutualTLSUtils; import org.keycloak.testsuite.util.OAuthClient; import org.openqa.selenium.WebDriver; +import org.openqa.selenium.firefox.FirefoxDriver; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; @@ -52,6 +54,7 @@ import javax.ws.rs.core.Response; * @author Stian Thorgersen * @author Stan Silvert ssilvert@redhat.com (C) 2016 Red Hat Inc. */ +@IgnoreBrowserDriver(FirefoxDriver.class) // TODO: https://github.com/keycloak/keycloak/issues/20527 public class SSOTest extends AbstractTestRealmKeycloakTest { @Drone diff --git a/testsuite/integration-arquillian/tests/base/testsuites/forms-suite b/testsuite/integration-arquillian/tests/base/testsuites/forms-suite new file mode 100644 index 00000000000..1d33be21fde --- /dev/null +++ b/testsuite/integration-arquillian/tests/base/testsuites/forms-suite @@ -0,0 +1 @@ +org.keycloak.testsuite.forms.** \ No newline at end of file