diff --git a/.github/workflows/release-maven-central.yml b/.github/workflows/release-maven-central.yml index ff3dca3..9f21c1b 100644 --- a/.github/workflows/release-maven-central.yml +++ b/.github/workflows/release-maven-central.yml @@ -20,7 +20,7 @@ jobs: with: java-version: "11" distribution: "adopt" - server-id: ossrh + server-id: central server-username: MVN_CENTRAL_USERNAME server-password: MVN_CENTRAL_PASSWORD gpg-private-key: ${{ secrets.GPG_SECRET_KEY }} @@ -54,7 +54,12 @@ jobs: - name: Step 6 - Publish package run: | - mvn -Dmaven.test.skip=true -P release -Drevision=${{ steps.gitversion.outputs.semVer }} deploy + mvn -B --no-transfer-progress \ + versions:set \ + -DnewVersion=${{ steps.gitversion.outputs.semVer }} \ + -DgenerateBackupPoms=false \ + -DprocessAllModules + mvn -B --no-transfer-progress -Dmaven.test.skip=true deploy env: MVN_CENTRAL_USERNAME: ${{ secrets.OSSRH_USERNAME }} MVN_CENTRAL_PASSWORD: ${{ secrets.OSSRH_TOKEN }} diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 92a53b4..9964784 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -9,32 +9,55 @@ jobs: displayName: Analyse code with SonarQube steps: + - task: SonarCloudPrepare@3 + displayName: 'Prepare SonarCloud analysis' + inputs: + SonarCloud: 'SonarCloud' + organization: 'aqualityautomation' + scannerMode: 'CLI' + configMode: 'file' + extraProperties: 'sonar.coverage.exclusions=**/**' - - task: Maven@3 - displayName: 'Build project' - inputs: - mavenPomFile: 'pom.xml' - mavenOptions: '-Xmx3072m' - javaHomeOption: 'JDKVersion' - jdkVersionOption: '11' - jdkArchitectureOption: 'x64' - publishJUnitResults: true - testResultsFiles: '**/surefire-reports/TEST-*.xml' - goals: 'clean' + - task: Maven@4 + displayName: 'Build project' + inputs: + mavenPomFile: 'pom.xml' + goals: 'clean' + publishJUnitResults: true + testResultsFiles: '**/surefire-reports/TEST-*.xml' + javaHomeOption: 'JDKVersion' + jdkVersionOption: '1.11' + mavenVersionOption: 'Default' + mavenAuthenticateFeed: false + effectivePomSkip: false + sonarQubeRunAnalysis: false + + - task: SonarCloudAnalyze@3 + inputs: + jdkversion: 'JAVA_HOME_21_X64' + displayName: 'Run SonarCloud code analysis' + continueOnError: true + + - task: SonarCloudPublish@3 + displayName: 'Publish SonarCloud quality gate results' + inputs: + pollingTimeoutSec: '300' - job: tests displayName: Run tests steps: - - task: Maven@3 + - task: Maven@4 displayName: 'Run tests' inputs: mavenPomFile: 'pom.xml' - mavenOptions: '-Xmx3072m' - javaHomeOption: 'JDKVersion' - jdkVersionOption: '11' - jdkArchitectureOption: 'x64' + goals: 'clean test -Dprofile=local' publishJUnitResults: true testResultsFiles: '**/surefire-reports/TEST-*.xml' - goals: 'test -Dprofile=local' + javaHomeOption: 'JDKVersion' + jdkVersionOption: '1.11' + mavenVersionOption: 'Default' + mavenAuthenticateFeed: false + effectivePomSkip: false + sonarQubeRunAnalysis: false diff --git a/pom.xml b/pom.xml index 246c0eb..27823e2 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.github.aquality-automation aquality-selenium - ${revision} + 4.0.0 jar Aquality Selenium Library around Selenium WebDriver @@ -15,20 +15,8 @@ UTF-8 UTF-8 - 4.0.0-SNAPSHOT - - - ossrh - https://s01.oss.sonatype.org/content/repositories/snapshots - - - ossrh - https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ - - - scm:git:git@github.com:aquality-automation/aquality-selenium-java.git scm:git:git@github.com:aquality-automation/aquality-selenium-java.git @@ -82,12 +70,12 @@ com.github.aquality-automation aquality-selenium-core - 4.6.0 + 4.7.0 org.apache.commons commons-lang3 - 3.17.0 + 3.18.0 com.fasterxml.jackson.core @@ -97,7 +85,7 @@ org.slf4j slf4j-simple - 2.0.16 + 2.0.17 test @@ -119,7 +107,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.13.0 + 3.14.0 11 11 @@ -128,7 +116,7 @@ org.jacoco jacoco-maven-plugin - 0.8.12 + 0.8.13 pre-unit-test @@ -156,7 +144,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.5.2 + 3.5.3 ${surefireArgLine} -Dfile.encoding=UTF-8 false @@ -168,6 +156,7 @@ org.apache.maven.plugins maven-assembly-plugin + 3.7.1 @@ -198,7 +187,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.11.1 + 3.11.2 11 @@ -214,7 +203,7 @@ org.apache.maven.plugins maven-gpg-plugin - 3.2.7 + 3.2.8 sign-artifacts @@ -232,16 +221,21 @@ - org.sonatype.plugins - nexus-staging-maven-plugin - 1.7.0 + org.sonatype.central + central-publishing-maven-plugin + 0.8.0 true - ossrh - https://s01.oss.sonatype.org/ - true + central + true + published + + org.codehaus.mojo + versions-maven-plugin + 2.18.0 + diff --git a/src/main/java/aquality/selenium/browser/devtools/DevToolsHandling.java b/src/main/java/aquality/selenium/browser/devtools/DevToolsHandling.java index 87cc5b3..53c0eff 100644 --- a/src/main/java/aquality/selenium/browser/devtools/DevToolsHandling.java +++ b/src/main/java/aquality/selenium/browser/devtools/DevToolsHandling.java @@ -9,8 +9,8 @@ import org.openqa.selenium.devtools.DevTools; import org.openqa.selenium.devtools.Event; import org.openqa.selenium.devtools.HasDevTools; -import org.openqa.selenium.devtools.v137.performance.Performance; -import org.openqa.selenium.devtools.v137.performance.model.Metric; +import org.openqa.selenium.devtools.v138.performance.Performance; +import org.openqa.selenium.devtools.v138.performance.model.Metric; import java.util.List; import java.util.Map; diff --git a/src/main/java/aquality/selenium/browser/devtools/EmulationHandling.java b/src/main/java/aquality/selenium/browser/devtools/EmulationHandling.java index 93f4982..11ea117 100644 --- a/src/main/java/aquality/selenium/browser/devtools/EmulationHandling.java +++ b/src/main/java/aquality/selenium/browser/devtools/EmulationHandling.java @@ -2,10 +2,10 @@ import org.apache.commons.lang3.StringUtils; import org.openqa.selenium.devtools.Command; -import org.openqa.selenium.devtools.v137.dom.model.RGBA; -import org.openqa.selenium.devtools.v137.emulation.Emulation; -import org.openqa.selenium.devtools.v137.emulation.model.MediaFeature; -import org.openqa.selenium.devtools.v137.emulation.model.ScreenOrientation; +import org.openqa.selenium.devtools.v138.dom.model.RGBA; +import org.openqa.selenium.devtools.v138.emulation.Emulation; +import org.openqa.selenium.devtools.v138.emulation.model.MediaFeature; +import org.openqa.selenium.devtools.v138.emulation.model.ScreenOrientation; import java.util.Collections; import java.util.List; diff --git a/src/main/java/aquality/selenium/browser/devtools/JavaScriptHandling.java b/src/main/java/aquality/selenium/browser/devtools/JavaScriptHandling.java index 6e72d15..cb4acd4 100644 --- a/src/main/java/aquality/selenium/browser/devtools/JavaScriptHandling.java +++ b/src/main/java/aquality/selenium/browser/devtools/JavaScriptHandling.java @@ -12,9 +12,9 @@ import org.openqa.selenium.devtools.idealized.Javascript; import org.openqa.selenium.devtools.idealized.ScriptId; import org.openqa.selenium.devtools.idealized.target.model.SessionID; -import org.openqa.selenium.devtools.v137.page.Page; -import org.openqa.selenium.devtools.v137.page.model.ScriptIdentifier; -import org.openqa.selenium.devtools.v137.runtime.Runtime; +import org.openqa.selenium.devtools.v138.page.Page; +import org.openqa.selenium.devtools.v138.page.model.ScriptIdentifier; +import org.openqa.selenium.devtools.v138.runtime.Runtime; import org.openqa.selenium.logging.EventType; import org.openqa.selenium.logging.HasLogEvents; import org.openqa.selenium.remote.Augmenter; diff --git a/src/main/java/aquality/selenium/browser/devtools/NetworkHandling.java b/src/main/java/aquality/selenium/browser/devtools/NetworkHandling.java index 4ab8381..ae29061 100644 --- a/src/main/java/aquality/selenium/browser/devtools/NetworkHandling.java +++ b/src/main/java/aquality/selenium/browser/devtools/NetworkHandling.java @@ -8,7 +8,7 @@ import org.openqa.selenium.UsernameAndPassword; import org.openqa.selenium.devtools.NetworkInterceptor; import org.openqa.selenium.devtools.idealized.Network; -import org.openqa.selenium.devtools.v137.network.model.*; +import org.openqa.selenium.devtools.v138.network.model.*; import org.openqa.selenium.remote.http.*; import java.net.URI; @@ -22,11 +22,11 @@ import static aquality.selenium.browser.AqualityServices.getBrowser; import static aquality.selenium.logging.LocalizedLoggerUtility.logByLevel; -import static org.openqa.selenium.devtools.v137.network.Network.*; +import static org.openqa.selenium.devtools.v138.network.Network.*; /** * DevTools commands for version-independent network interception. - * For more information, see {@link org.openqa.selenium.devtools.v137.network.Network} and {@link Network}. + * For more information, see {@link org.openqa.selenium.devtools.v138.network.Network} and {@link Network}. */ public class NetworkHandling { public static final String LOC_NETWORK_INTERCEPTOR_START = "loc.browser.network.interceptor.start"; @@ -129,7 +129,7 @@ public void interceptTrafficWith(Filter filter) { */ public void addRequestListener(Consumer listener) { logger.info("loc.browser.network.event.requestsent.add"); - tools.sendCommand(enable(Optional.empty(), Optional.empty(), Optional.empty())); + tools.sendCommand(enable(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty())); tools.addListener(requestWillBeSent(), listener); } @@ -139,7 +139,7 @@ public void addRequestListener(Consumer listener) { */ public void addResponseListener(Consumer listener) { logger.info("loc.browser.network.event.responsereceived.add"); - tools.sendCommand(enable(Optional.empty(), Optional.empty(), Optional.empty())); + tools.sendCommand(enable(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty())); tools.addListener(responseReceived(), listener); } @@ -179,7 +179,7 @@ private Consumer getRequestLogger(HttpExchangeLoggingOptions if (loggingOptions.getRequestPostData().isEnabled() && request.getHasPostData().orElse(false)) { logByLevel(loggingOptions.getRequestPostData().getLogLevel(), "loc.browser.network.event.requestsent.log.data", - request.getPostData().orElse(null)); + request.getPostDataEntries().orElse(null)); } }; } @@ -199,7 +199,7 @@ private Consumer getResponseLogger(HttpExchangeLoggingOptions formatHeaders(response.getHeaders())); } if (loggingOptions.getResponseBody().isEnabled()) { - String responseBody = tools.sendCommand(org.openqa.selenium.devtools.v137.network.Network.getResponseBody(requestId)).getBody(); + String responseBody = tools.sendCommand(org.openqa.selenium.devtools.v138.network.Network.getResponseBody(requestId)).getBody(); if (StringUtils.isNotEmpty(responseBody)) { logByLevel(loggingOptions.getResponseBody().getLogLevel(), "loc.browser.network.event.responsereceived.log.body", @@ -322,7 +322,7 @@ public void clearNetworkInterceptor() { * @param uploadThroughput Maximal aggregated upload throughput (bytes/sec). -1 disables upload throttling. */ public void emulateConditions(Boolean offline, Number latency, Number downloadThroughput, Number uploadThroughput) { - tools.sendCommand(enable(Optional.empty(), Optional.empty(), Optional.empty())); + tools.sendCommand(enable(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty())); tools.sendCommand(emulateNetworkConditions(offline, latency, downloadThroughput, uploadThroughput, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty())); } @@ -338,7 +338,7 @@ public void emulateConditions(Boolean offline, Number latency, Number downloadTh * "wifi", "wimax", "other". */ public void emulateConditions(Boolean offline, Number latency, Number downloadThroughput, Number uploadThroughput, String connectionType) { - tools.sendCommand(enable(Optional.empty(), Optional.empty(), Optional.empty())); + tools.sendCommand(enable(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty())); tools.sendCommand(emulateNetworkConditions(offline, latency, downloadThroughput, uploadThroughput, Optional.of(ConnectionType.fromString(connectionType)), Optional.empty(), Optional.empty(), Optional.empty())); } diff --git a/src/test/java/manytools/ManyToolsForm.java b/src/test/java/manytools/ManyToolsForm.java index 7b055a6..67e4dc8 100644 --- a/src/test/java/manytools/ManyToolsForm.java +++ b/src/test/java/manytools/ManyToolsForm.java @@ -25,12 +25,6 @@ protected ManyToolsForm(String name) { public T open() { AqualityServices.get(IActionRetrier.class).doWithRetry(() -> { AqualityServices.getBrowser().goTo(BASE_URL + getUrlPart()); - AqualityServices.getBrowser().waitForPageToLoad(); - if (btnAgree.state().isDisplayed()) - { - btnAgree.click(); - btnAgree.state().waitForNotDisplayed(); - } }, Collections.singletonList(TimeoutException.class)); return (T) this; } diff --git a/src/test/java/tests/usecases/devtools/DeviceEmulationTest.java b/src/test/java/tests/usecases/devtools/DeviceEmulationTest.java index e8dda34..789e796 100644 --- a/src/test/java/tests/usecases/devtools/DeviceEmulationTest.java +++ b/src/test/java/tests/usecases/devtools/DeviceEmulationTest.java @@ -3,8 +3,8 @@ import aquality.selenium.browser.AqualityServices; import aquality.selenium.browser.devtools.EmulationHandling; import com.google.common.collect.ImmutableMap; -import org.openqa.selenium.devtools.v137.emulation.Emulation; -import org.openqa.selenium.devtools.v137.emulation.model.DisplayFeature; +import org.openqa.selenium.devtools.v138.emulation.Emulation; +import org.openqa.selenium.devtools.v138.emulation.model.DisplayFeature; import org.testng.Assert; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; diff --git a/src/test/java/tests/usecases/devtools/NetworkInterceptionTests.java b/src/test/java/tests/usecases/devtools/NetworkInterceptionTests.java index 81134ee..15f8eae 100644 --- a/src/test/java/tests/usecases/devtools/NetworkInterceptionTests.java +++ b/src/test/java/tests/usecases/devtools/NetworkInterceptionTests.java @@ -5,6 +5,7 @@ import com.google.common.net.MediaType; import manytools.RequestHeadersForm; import org.openqa.selenium.devtools.NetworkInterceptor; +import org.openqa.selenium.remote.http.Contents; import org.openqa.selenium.remote.http.HttpHandler; import org.openqa.selenium.remote.http.HttpRequest; import org.openqa.selenium.remote.http.HttpResponse; @@ -15,7 +16,6 @@ import theinternet.TheInternetPage; import theinternet.forms.WelcomeForm; -import java.io.ByteArrayInputStream; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; @@ -87,7 +87,7 @@ public void testAddAndClearRequestHandler() final String somePhrase = "delicious cheese!"; NetworkInterceptor networkInterceptor = network().addRequestHandler(request -> true, request -> { HttpResponse response = new HttpResponse(); - response.setContent(() -> new ByteArrayInputStream(somePhrase.getBytes())); + response.setContent(Contents.utf8String(somePhrase)); response.setStatus(200); return response; }); @@ -106,7 +106,7 @@ public void testAddAndClearResponseHandler() final String somePhrase = "delicious cheese!"; NetworkInterceptor networkInterceptor = network().addResponseHandler(response -> true, oldResponse -> { HttpResponse response = new HttpResponse(); - response.setContent(() -> new ByteArrayInputStream(somePhrase.getBytes())); + response.setContent(Contents.utf8String(somePhrase)); response.setStatus(200); return response; }); diff --git a/src/test/java/tests/usecases/devtools/NetworkSpeedEmulationTest.java b/src/test/java/tests/usecases/devtools/NetworkSpeedEmulationTest.java index 2238d60..5e8f708 100644 --- a/src/test/java/tests/usecases/devtools/NetworkSpeedEmulationTest.java +++ b/src/test/java/tests/usecases/devtools/NetworkSpeedEmulationTest.java @@ -2,7 +2,7 @@ import aquality.selenium.browser.AqualityServices; import org.openqa.selenium.TimeoutException; -import org.openqa.selenium.devtools.v137.network.model.ConnectionType; +import org.openqa.selenium.devtools.v138.network.model.ConnectionType; import org.testng.Assert; import org.testng.annotations.Test; import tests.BaseTest; diff --git a/src/test/java/tests/usecases/devtools/OverrideUserAgentTest.java b/src/test/java/tests/usecases/devtools/OverrideUserAgentTest.java index 1732528..567aa5f 100644 --- a/src/test/java/tests/usecases/devtools/OverrideUserAgentTest.java +++ b/src/test/java/tests/usecases/devtools/OverrideUserAgentTest.java @@ -8,7 +8,7 @@ import manytools.BrowserLanguageForm; import manytools.UserAgentForm; import org.openqa.selenium.devtools.idealized.Network; -import org.openqa.selenium.devtools.v137.emulation.Emulation; +import org.openqa.selenium.devtools.v138.emulation.Emulation; import org.testng.Assert; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; diff --git a/src/test/resources/settings.json b/src/test/resources/settings.json index 966eaf2..0fa95de 100644 --- a/src/test/resources/settings.json +++ b/src/test/resources/settings.json @@ -19,6 +19,7 @@ "loggingPreferences": { "Performance": "All" }, + "pageLoadStrategy": "normal", "startArguments": ["--disable-search-engine-choice-screen"], "excludedArguments": ["enable-automation"] }, diff --git a/src/test/resources/settings.local.json b/src/test/resources/settings.local.json index cddfee0..8b8f823 100644 --- a/src/test/resources/settings.local.json +++ b/src/test/resources/settings.local.json @@ -19,7 +19,9 @@ "loggingPreferences": { "Performance": "All" }, - "startArguments": [] + "pageLoadStrategy": "normal", + "startArguments": ["--disable-search-engine-choice-screen"], + "excludedArguments": ["enable-automation"] }, "firefox": { "capabilities": { @@ -52,11 +54,11 @@ }, "timeouts": { "timeoutImplicit" : 0, - "timeoutCondition" : 30, + "timeoutCondition" : 45, "timeoutScript" : 10, "timeoutPageLoad" : 60, "timeoutPollingInterval": 300, - "timeoutCommand": 120 + "timeoutCommand": 60 }, "retry": { "number": 2,