diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index 3a2078ed..cfbc698d 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -23,7 +23,18 @@ jobs: cache: gradle - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@342dbebe7272035434f9baccc29a816ec6dd2c7b + - name: Install ChromeDriver + uses: nanasess/setup-chromedriver@v2 + with: + chromedriver-version: '111.0.5563.64' + - run: | + export DISPLAY=:99 + chromedriver --url-base=/wd/hub & + sudo Xvfb -ac :99 -screen 0 1600x900x24 > /dev/null 2>&1 & # optional - name: Build & Test + env: + CHROME_DRIVER_VERSION: 111.0.5563.64 + CHROME_BROWSER_VERSION: 111.0.5563.64 run: | ./gradlew --no-daemon --console=plain build test diff --git a/swagger-brake-integration-tests/build.gradle b/swagger-brake-integration-tests/build.gradle index 0860ce9c..147ecbe9 100644 --- a/swagger-brake-integration-tests/build.gradle +++ b/swagger-brake-integration-tests/build.gradle @@ -6,9 +6,9 @@ dependencies { testImplementation "ch.qos.logback:logback-core:1.2.11" testImplementation "ch.qos.logback:logback-classic:1.2.11" testImplementation "org.awaitility:awaitility:4.2.0" - testImplementation "org.seleniumhq.selenium:selenium-java:4.4.0" + testImplementation "org.seleniumhq.selenium:selenium-java:4.13.0" testImplementation "org.seleniumhq.selenium:selenium-chrome-driver:4.4.0" - testImplementation "io.github.bonigarcia:webdrivermanager:5.3.0" + testImplementation "io.github.bonigarcia:webdrivermanager:5.5.3" testImplementation "org.testcontainers:testcontainers:1.17.3" testImplementation "org.apache.httpcomponents:httpclient:4.5.13" testImplementation "org.projectlombok:lombok:1.18.24" diff --git a/swagger-brake-integration-tests/src/test/java/io/redskap/swagger/brake/integration/artifactory/factory/WebDriverFactory.java b/swagger-brake-integration-tests/src/test/java/io/redskap/swagger/brake/integration/artifactory/factory/WebDriverFactory.java index ae04e3f3..1c18a0d8 100644 --- a/swagger-brake-integration-tests/src/test/java/io/redskap/swagger/brake/integration/artifactory/factory/WebDriverFactory.java +++ b/swagger-brake-integration-tests/src/test/java/io/redskap/swagger/brake/integration/artifactory/factory/WebDriverFactory.java @@ -1,19 +1,22 @@ package io.redskap.swagger.brake.integration.artifactory.factory; import io.github.bonigarcia.wdm.WebDriverManager; +import org.apache.commons.lang3.StringUtils; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; public class WebDriverFactory { - public static final String BROWSER_VERSION = "111.0.5563.111"; - public static final String DRIVER_VERSION = "111.0.5563.64"; + private static final String CHROME_DRIVER_VERSION_ENV_VAR = "CHROME_DRIVER_VERSION"; + private static final String CHROME_BROWSER_VERSION_ENV_VAR = "CHROME_BROWSER_VERSION"; + public static final String DEFAULT_DRIVER_VERSION = "111.0.5563.64"; + public static final String DEFAULT_BROWSER_VERSION = "111.0.5563.111"; public static WebDriver create() { WebDriverManager .chromedriver() - .browserVersion(BROWSER_VERSION) - .driverVersion(DRIVER_VERSION) + .browserVersion(getBrowserVersion()) + .driverVersion(getDriverVersion()) .setup(); ChromeOptions options = new ChromeOptions(); options.addArguments("start-maximized"); @@ -29,4 +32,20 @@ public static WebDriver create() { options.addArguments("--headless"); return new ChromeDriver(options); } + + private static String getDriverVersion() { + String chromeDriverVersion = System.getenv(CHROME_DRIVER_VERSION_ENV_VAR); + if (StringUtils.isBlank(chromeDriverVersion)) { + chromeDriverVersion = DEFAULT_DRIVER_VERSION; + } + return chromeDriverVersion; + } + + private static String getBrowserVersion() { + String chromeBrowserVersion = System.getenv(CHROME_BROWSER_VERSION_ENV_VAR);; + if (StringUtils.isBlank(chromeBrowserVersion)) { + chromeBrowserVersion = DEFAULT_BROWSER_VERSION; + } + return chromeBrowserVersion; + } } diff --git a/swagger-brake-integration-tests/src/test/java/io/redskap/swagger/brake/integration/project/BuildFailureException.java b/swagger-brake-integration-tests/src/test/java/io/redskap/swagger/brake/integration/project/BuildFailureException.java index 64bbf293..810a75b4 100644 --- a/swagger-brake-integration-tests/src/test/java/io/redskap/swagger/brake/integration/project/BuildFailureException.java +++ b/swagger-brake-integration-tests/src/test/java/io/redskap/swagger/brake/integration/project/BuildFailureException.java @@ -1,4 +1,7 @@ package io.redskap.swagger.brake.integration.project; public class BuildFailureException extends RuntimeException { + public BuildFailureException(String message) { + super(message); + } } diff --git a/swagger-brake-integration-tests/src/test/java/io/redskap/swagger/brake/integration/project/ProjectContainerBase.java b/swagger-brake-integration-tests/src/test/java/io/redskap/swagger/brake/integration/project/ProjectContainerBase.java index e3cb7f22..c6787a5f 100644 --- a/swagger-brake-integration-tests/src/test/java/io/redskap/swagger/brake/integration/project/ProjectContainerBase.java +++ b/swagger-brake-integration-tests/src/test/java/io/redskap/swagger/brake/integration/project/ProjectContainerBase.java @@ -75,8 +75,7 @@ public boolean isApiBrokenWith(String text) { protected boolean isBuildComplete(String logs) { boolean isBuildSuccess = isBuildSuccess(logs); if (isBuildFailure(logs) || (!isBuildSuccess && !container.isRunning())) { - log.error(logs); - throw new BuildFailureException(); + throw new BuildFailureException(logs); } return isBuildSuccess; }