diff --git a/.gitignore b/.gitignore index c681709..a09b2bd 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,6 @@ target/ # VS Code Files # .vscode + +.flattened-pom.xml +.idea/* \ No newline at end of file diff --git a/cb-kit-common/src/main/java/io/cloudbeat/common/client/api/GatewayApi.java b/cb-kit-common/src/main/java/io/cloudbeat/common/client/api/GatewayApi.java index a06ced9..7499a76 100644 --- a/cb-kit-common/src/main/java/io/cloudbeat/common/client/api/GatewayApi.java +++ b/cb-kit-common/src/main/java/io/cloudbeat/common/client/api/GatewayApi.java @@ -3,6 +3,7 @@ import io.cloudbeat.common.client.CbClientException; import io.cloudbeat.common.client.RetrofitApiBase; import io.cloudbeat.common.client.dto.CaseStatusInfoDto; +import io.cloudbeat.common.client.dto.LoadTestMetricsUpdateRequest; import io.cloudbeat.common.client.dto.TestStatusRequest; import io.cloudbeat.common.model.runtime.NewInstanceOptions; import io.cloudbeat.common.model.runtime.NewRunOptions; @@ -20,7 +21,13 @@ public class GatewayApi extends RetrofitApiBase { public GatewayApi(GatewayApiRetro retroApi) { this.retroApi = retroApi; } - + public void updateLoadTestMetrics( + String runId, + String instanceId, + LoadTestMetricsUpdateRequest request + ) throws CbClientException { + executeAsync(retroApi.updateLoadTestMetrics(runId, instanceId, request)); + } public void updateTestCaseStatus( String runId, String instanceId, diff --git a/cb-kit-common/src/main/java/io/cloudbeat/common/client/api/GatewayApiRetro.java b/cb-kit-common/src/main/java/io/cloudbeat/common/client/api/GatewayApiRetro.java index da12fd8..7fe6f34 100644 --- a/cb-kit-common/src/main/java/io/cloudbeat/common/client/api/GatewayApiRetro.java +++ b/cb-kit-common/src/main/java/io/cloudbeat/common/client/api/GatewayApiRetro.java @@ -1,18 +1,15 @@ package io.cloudbeat.common.client.api; -import io.cloudbeat.common.client.CbApiResponse; +import io.cloudbeat.common.client.dto.LoadTestMetricsUpdateRequest; import io.cloudbeat.common.client.dto.TestStatusRequest; -import io.cloudbeat.common.model.runtime.NewInstanceOptions; -import io.cloudbeat.common.model.runtime.NewRunOptions; -import io.cloudbeat.common.reporter.model.RunStatus; -import io.cloudbeat.common.reporter.model.TestResult; import retrofit2.Call; import retrofit2.http.Body; import retrofit2.http.POST; -import retrofit2.http.PUT; import retrofit2.http.Path; public interface GatewayApiRetro { @POST("testresult/Status") Call updateTestCaseStatus(@Body TestStatusRequest statusRequest); + @POST("testresult/load/run/{runId}/instance/{instanceId}/metrics") + Call updateLoadTestMetrics(@Path("runId") String runId, @Path("instanceId") String instanceId, @Body LoadTestMetricsUpdateRequest request); } diff --git a/cb-kit-common/src/main/java/io/cloudbeat/common/client/api/RuntimeApi.java b/cb-kit-common/src/main/java/io/cloudbeat/common/client/api/RuntimeApi.java index 175c62f..630a3e5 100644 --- a/cb-kit-common/src/main/java/io/cloudbeat/common/client/api/RuntimeApi.java +++ b/cb-kit-common/src/main/java/io/cloudbeat/common/client/api/RuntimeApi.java @@ -3,6 +3,7 @@ import io.cloudbeat.common.client.CbClientException; import io.cloudbeat.common.client.RetrofitApiBase; import io.cloudbeat.common.client.dto.CaseStatusInfoDto; +import io.cloudbeat.common.client.dto.LoadTestMetricsUpdateRequest; import io.cloudbeat.common.client.dto.TestStatusRequest; import io.cloudbeat.common.model.runtime.NewInstanceOptions; import io.cloudbeat.common.model.runtime.NewRunOptions; @@ -34,6 +35,13 @@ public void updateRunStatus(String runId, RunStatus status) throws CbClientExcep public void updateInstanceStatus(String runId, String instanceId, RunStatus status) throws CbClientException { execute(retroApi.updateInstanceStatus(runId, instanceId, status)); } + public void updateLoadTestMetrics( + String runId, + String instanceId, + LoadTestMetricsUpdateRequest request + ) throws CbClientException { + executeAsync(retroApi.updateLoadTestMetrics(runId, instanceId, request)); + } public void updateTestCaseStatus( String runId, String instanceId, diff --git a/cb-kit-common/src/main/java/io/cloudbeat/common/client/api/RuntimeApiRetro.java b/cb-kit-common/src/main/java/io/cloudbeat/common/client/api/RuntimeApiRetro.java index e0ad7ed..b85eb2b 100644 --- a/cb-kit-common/src/main/java/io/cloudbeat/common/client/api/RuntimeApiRetro.java +++ b/cb-kit-common/src/main/java/io/cloudbeat/common/client/api/RuntimeApiRetro.java @@ -1,6 +1,8 @@ package io.cloudbeat.common.client.api; import io.cloudbeat.common.client.CbApiResponse; +import io.cloudbeat.common.client.dto.CaseMetricsUpdateDto; +import io.cloudbeat.common.client.dto.LoadTestMetricsUpdateRequest; import io.cloudbeat.common.client.dto.TestStatusRequest; import io.cloudbeat.common.model.runtime.NewInstanceOptions; import io.cloudbeat.common.model.runtime.NewRunOptions; @@ -25,6 +27,8 @@ public interface RuntimeApiRetro { Call updateInstanceStatus(@Path("runId") String runId, @Path("instanceId") String instanceId, @Body RunStatus status); @POST("api/run/{runId}/instance/{instanceId}/case") Call updateTestCaseStatus(@Path("runId") String runId, @Path("instanceId") String instanceId, @Body TestStatusRequest status); + @POST("load/api/run/{runId}/instance/{instanceId}/metrics") + Call updateLoadTestMetrics(@Path("runId") String runId, @Path("instanceId") String instanceId, @Body LoadTestMetricsUpdateRequest request); @POST("api/run/{runId}/instance/{instanceId}/end") Call endInstance(@Path("runId") String runId, @Path("instanceId") String instanceId); @PUT("runs/api/run/{runId}/instance/{instanceId}/result") diff --git a/cb-kit-common/src/main/java/io/cloudbeat/common/client/dto/CaseMetricsUpdateDto.java b/cb-kit-common/src/main/java/io/cloudbeat/common/client/dto/CaseMetricsUpdateDto.java new file mode 100644 index 0000000..43fc3e2 --- /dev/null +++ b/cb-kit-common/src/main/java/io/cloudbeat/common/client/dto/CaseMetricsUpdateDto.java @@ -0,0 +1,96 @@ +package io.cloudbeat.common.client.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import io.cloudbeat.common.reporter.model.StepType; +import io.cloudbeat.common.reporter.model.extra.IStepExtra; +import io.cloudbeat.common.reporter.serializer.EpochTimeSerializer; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +public class CaseMetricsUpdateDto { + @JsonSerialize(using = EpochTimeSerializer.class) + long timestamp; + String name; + String fqn; + final Map metrics = new HashMap<>(); + final ArrayList stepList = new ArrayList<>(); + + public long getTimestamp() { + return timestamp; + } + + public void setTimestamp(long timestamp) { + this.timestamp = timestamp; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getFqn() { + return fqn; + } + + public void setFqn(String fqn) { + this.fqn = fqn; + } + + public Map getMetrics() { + return metrics; + } + + public ArrayList getStepList() { + return stepList; + } + + public static class StepMetricsUpdateDto { + String name; + String fqn; + StepType type; + final Map metrics = new HashMap<>(); + final Map extra = new HashMap<>(); + final ArrayList stepList = new ArrayList<>(); + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getFqn() { + return fqn; + } + + public void setFqn(String fqn) { + this.fqn = fqn; + } + + public void setType(StepType type) { + this.type = type; + } + + public StepType getType() { + return type; + } + + public Map getMetrics() { + return metrics; + } + + public Map getExtra() { + return extra; + } + + public ArrayList getStepList() { + return stepList; + } + } +} diff --git a/cb-kit-common/src/main/java/io/cloudbeat/common/client/dto/LoadTestMetricsUpdateRequest.java b/cb-kit-common/src/main/java/io/cloudbeat/common/client/dto/LoadTestMetricsUpdateRequest.java new file mode 100644 index 0000000..d8ae9d1 --- /dev/null +++ b/cb-kit-common/src/main/java/io/cloudbeat/common/client/dto/LoadTestMetricsUpdateRequest.java @@ -0,0 +1,60 @@ +package io.cloudbeat.common.client.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import io.cloudbeat.common.reporter.serializer.EpochTimeSerializer; + +import javax.annotation.Nonnull; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +public class LoadTestMetricsUpdateRequest { + @Nonnull + String runId; + @Nonnull + String instanceId; + @Nonnull + @JsonSerialize(using = EpochTimeSerializer.class) + long timestamp; + @Nonnull + final ArrayList caseList = new ArrayList<>(); + + @Nonnull + final Map metrics = new HashMap<>(); + + public ArrayList getCaseList() { + return caseList; + } + + public Map getMetrics() { + return metrics; + } + + public String getRunId() { + return runId; + } + + public String getInstanceId() { + return instanceId; + } + + public long getTimestamp() { + return timestamp; + } + + public void setRunId(@Nonnull String runId) { + this.runId = runId; + } + + public void setInstanceId(@Nonnull String instanceId) { + this.instanceId = instanceId; + } + + public void setTimestamp(long timestamp) { + this.timestamp = timestamp; + } + + public void addCaseMetrics(CaseMetricsUpdateDto caseMetrics) { + caseList.add(caseMetrics); + } +} diff --git a/cb-kit-common/src/main/java/io/cloudbeat/common/config/CbConfig.java b/cb-kit-common/src/main/java/io/cloudbeat/common/config/CbConfig.java index 19f21ac..65098d9 100755 --- a/cb-kit-common/src/main/java/io/cloudbeat/common/config/CbConfig.java +++ b/cb-kit-common/src/main/java/io/cloudbeat/common/config/CbConfig.java @@ -1,15 +1,12 @@ package io.cloudbeat.common.config; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.Set; +import java.util.*; + import org.apache.commons.lang3.StringUtils; public class CbConfig { public static final String DEFAULT_WEBDRIVER_URL = "http://localhost:4444/wd/hub"; - //public static final String DEFAULT_API_URL = "https://api.cloudbeat.io"; - public final static String DEFAULT_API_URL = "http://212.80.207.119:8887"; + public static final String DEFAULT_API_URL = "https://api.cloudbeat.io"; public static final String CB_API_KEY = "CB_API_KEY"; public static final String CB_API_URL = "CB_API_URL"; public static final String CB_PROJECT_ID = "CB_PROJECT_ID"; @@ -22,13 +19,17 @@ public class CbConfig { public static final String CB_OPT_PREFIX = "CB_OPT."; public static final String CB_SELENIUM_URL = "CB_SELENIUM_URL"; public static final String CB_APPIUM_URL = "CB_APPIUM_URL"; - public static final String CB_RUNNER_GATEWAY_TOKEN = "testmonitortoken"; - public static final String CB_RUNNER_GATEWAY_URL = "testmonitorurl"; + public static final String CB_GATEWAY_TOKEN_PROP_NAME = "testmonitortoken"; + public static final String CB_GATEWAY_URL_PROP_NAME = "testmonitorurl"; + public static final String CB_GATEWAY_TOKEN = "CB_GATEWAY_TOKEN"; + public static final String CB_GATEWAY_URL = "CB_GATEWAY_URL"; final Properties props; String runId; String runGroup; String instanceId; + Optional instanceIndex; + Optional instanceCount; String projectId; String gatewayToken; String gatewayUrl; @@ -41,7 +42,7 @@ public class CbConfig { Map envVars; Map options; List tags; - List cases; + List cases; public CbConfig() { this.props = null; @@ -71,10 +72,10 @@ public CbConfig(Properties props) { } private void loadGatewaySettingsFromProps() { - if (StringUtils.isNotEmpty(System.getProperty(CB_RUNNER_GATEWAY_TOKEN))) - gatewayToken = System.getProperty(CB_RUNNER_GATEWAY_TOKEN); - if (StringUtils.isNotEmpty(System.getProperty(CB_RUNNER_GATEWAY_URL))) - gatewayUrl = System.getProperty(CB_RUNNER_GATEWAY_URL); + if (StringUtils.isNotEmpty(System.getProperty(CB_GATEWAY_TOKEN_PROP_NAME))) + gatewayToken = System.getProperty(CB_GATEWAY_TOKEN_PROP_NAME); + if (StringUtils.isNotEmpty(System.getProperty(CB_GATEWAY_URL_PROP_NAME))) + gatewayUrl = System.getProperty(CB_GATEWAY_URL_PROP_NAME); } private void loadConfigFromProps() { apiToken = getProperty(CB_API_KEY); @@ -95,15 +96,20 @@ private void loadConfigFromProps() { loadMapFromPrefixedProps(CB_ENV_PREFIX, envVars); } - private String getProperty(final String key, final String defaultValue) { - final String propertyName = getPropertyNameFromConfigKey(key); - if (props.containsKey(propertyName)) - return props.getProperty(propertyName); - final String possibleValFromEnv = System.getenv(key); + private String getEnv(final String name, final String defaultValue) { + final String possibleValFromEnv = System.getenv(name); if (StringUtils.isNotEmpty(possibleValFromEnv)) return possibleValFromEnv; return defaultValue; } + private String getProperty(final String key, final String defaultValue) { + final String propertyName = getPropertyNameFromConfigKey(key); + if (props != null && props.containsKey(propertyName)) + return props.getProperty(propertyName); + else if (props == null && System.getProperties().containsKey(key)) + return System.getProperties().getProperty(key, defaultValue); + return getEnv(key, defaultValue); + } private String getProperty(final String key) { return getProperty(key, null); @@ -145,16 +151,39 @@ public Properties getProperties() { public Map getEnvironmentVariables() { return envVars; } - public String getGatewayToken() { return gatewayToken; } - public String getGatewayUrl() { return gatewayUrl; } - public String getApiToken() { return apiToken; } + public String getGatewayToken() { + if (gatewayToken == null) + return getProperty(CB_GATEWAY_TOKEN); + return gatewayToken; + } + public String getGatewayUrl() { + if (gatewayUrl == null) + return getProperty(CB_GATEWAY_URL); + return gatewayUrl; + } + public String getApiToken() { + if (apiToken == null) + return getEnv(CB_API_KEY, null); + return apiToken; + } - public String getApiEndpointUrl() { return apiEndpointUrl; } + public String getApiEndpointUrl() { + if (apiEndpointUrl == null) + return getEnv(CB_API_URL, DEFAULT_API_URL); + return apiEndpointUrl; + } public String getProjectId() { return projectId; } public String getInstanceId() { return instanceId; } - + public Optional getInstanceIndex() { return instanceIndex; } + public void setInstanceCount(Optional instanceCount) { + this.instanceCount = instanceCount; + } + public void setInstanceIndex(Optional instanceIndex) { + this.instanceIndex = instanceIndex; + } + public Optional getInstanceCount() { return instanceCount; } public String getRunId() { return runId; } public String getRunGroup() { return runGroup; } @@ -166,4 +195,92 @@ public boolean isRunningInCb() { public String getAppiumUrl() { return seleniumUrl; } public String getSeleniumOrAppiumUrl() { return seleniumUrl != null && seleniumUrl.length() > 0 ? seleniumUrl : appiumUrl; } + + public List getCases() { + return cases; + } + + public static class CaseDef { + Optional id; + String name; + String fqn; + short scriptType; + String parameterData; + short parameterMode; + int iterationCount; + short iterationMode; + Map details = new HashMap<>(); + + public Optional getId() { + return id; + } + + public void setId(Optional id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getFqn() { + return fqn; + } + + public void setFqn(String fqn) { + this.fqn = fqn; + } + + public String getParameterData() { + return parameterData; + } + + public void setParameterData(String parameterData) { + this.parameterData = parameterData; + } + + public short getParameterMode() { + return parameterMode; + } + + public void setParameterMode(short parameterMode) { + this.parameterMode = parameterMode; + } + + public int getIterationCount() { + return iterationCount; + } + + public void setIterationCount(int iterationCount) { + this.iterationCount = iterationCount; + } + + public short getIterationMode() { + return iterationMode; + } + + public void setIterationMode(short iterationMode) { + this.iterationMode = iterationMode; + } + + public Map getDetails() { + return details; + } + + public void setDetails(Map details) { + this.details = details; + } + + public short getScriptType() { + return scriptType; + } + + public void setScriptType(short scriptType) { + this.scriptType = scriptType; + } + } } diff --git a/cb-kit-common/src/main/java/io/cloudbeat/common/config/JsonConfigLoader.java b/cb-kit-common/src/main/java/io/cloudbeat/common/config/JsonConfigLoader.java index 0cdf91c..6f44dee 100755 --- a/cb-kit-common/src/main/java/io/cloudbeat/common/config/JsonConfigLoader.java +++ b/cb-kit-common/src/main/java/io/cloudbeat/common/config/JsonConfigLoader.java @@ -14,6 +14,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; public final class JsonConfigLoader { private static final String SELENIUM_URL_KEY = "seleniumUrl"; @@ -35,7 +36,8 @@ public static CbConfig load(String path) throws IOException { config.instanceId = rootNode.get("InstanceId").textValue(); config.instanceId = rootNode.get("InstanceId").textValue(); config.capabilities = mapper.readValue(rootNode.get("Capabilities").toString(), mapTypeRef); - mapFoldedCapabilities(config.capabilities, mapper); + if (config.capabilities != null) + mapFoldedCapabilities(config.capabilities, mapper); // remove technologyName capability, if presented (a left-over from legacy CB) if (config.capabilities != null && config.capabilities.containsKey("technologyName")) config.capabilities.remove("technologyName"); @@ -51,11 +53,38 @@ public static CbConfig load(String path) throws IOException { if (rootNode.has("Cases")) { config.cases = new ArrayList<>(); for (JsonNode caseNode : rootNode.get("Cases")) { - if (caseNode.get("Fqn") != null) - config.cases.add(caseNode.get("Fqn").asText()); - else if (caseNode.get("Details") != null) { + CbConfig.CaseDef caseDef = new CbConfig.CaseDef(); + config.cases.add(caseDef); + caseDef.setId(Optional.ofNullable( + caseNode.get("Id") != null ? caseNode.get("Id").asLong() : null) + ); + caseDef.setFqn(caseNode.get("Fqn") != null ? caseNode.get("Fqn").asText() : null); + caseDef.setName(caseNode.get("Name") != null ? caseNode.get("Name").asText() : null); + caseDef.setIterationCount( + caseNode.get("IterationCount") != null ? + caseNode.get("IterationCount").asInt(0) : 0); + caseDef.setParameterData( + caseNode.get("ParameterData") != null ? + caseNode.get("ParameterData").asText() : null); + caseDef.setScriptType( + (short) (caseNode.get("ScriptType") != null ? + caseNode.get("ScriptType").asInt(0) : 0)); + + if (caseNode.get("Details") != null) { if (caseNode.get("Details").get("FullyQualifiedName") != null) - config.cases.add(caseNode.get("Details").get("FullyQualifiedName").asText()); + caseDef.setFqn(caseNode.get("Details").get("FullyQualifiedName").asText()); + caseNode.get("Details").fields().forEachRemaining(f -> { + if (f.getKey().equals("FullyQualifiedName")) + return; + if (f.getValue() != null && f.getValue().canConvertToInt()) + caseDef.details.put(f.getKey(), f.getValue().asInt()); + else if (f.getValue() != null && f.getValue().canConvertToLong()) + caseDef.details.put(f.getKey(), f.getValue().asLong()); + else if (f.getValue() != null && f.getValue().isBoolean()) + caseDef.details.put(f.getKey(), f.getValue().asBoolean()); + else if (f.getValue() != null && !f.getValue().isNull()) + caseDef.details.put(f.getKey(), f.getValue().asText()); + }); } } } @@ -81,6 +110,8 @@ else if (System.getProperties().containsKey(APPIUM_URL_PROPERTY_KEY)) } private static void mapFoldedCapabilities(Map caps, ObjectMapper mapper) { + if (caps == null) + return; caps.forEach((key, value) -> { if (key.endsWith(":options") && value != null && value instanceof String && value.toString().startsWith("{")) { try { diff --git a/cb-kit-junit5/pom.xml b/cb-kit-junit5/pom.xml index 7166da6..537224d 100644 --- a/cb-kit-junit5/pom.xml +++ b/cb-kit-junit5/pom.xml @@ -11,6 +11,9 @@ CloudBeat Kit for JUnit 5 + JUnit 5 integration library for CloudBeat + https://github.com/cloudbeat-io/cb-kit-java/tree/main/cb-kit-junit5 + cb-kit-junit5 jar diff --git a/cb-kit-selenium4/pom.xml b/cb-kit-selenium4/pom.xml index 0c02c2a..22c6ba6 100755 --- a/cb-kit-selenium4/pom.xml +++ b/cb-kit-selenium4/pom.xml @@ -11,14 +11,17 @@ CloudBeat Kit for Selenium 4 + Selenium 4 integration library for CloudBeat + https://github.com/cloudbeat-io/cb-kit-java/tree/main/cb-kit-selenium4 + cb-kit-selenium4 jar - 4.14.1 - v117 - 8.1.1 + 4.27.0 + v131 + 9.2.2 diff --git a/cb-kit-selenium4/src/main/java/io/cloudbeat/selenium/DevToolsHelper.java b/cb-kit-selenium4/src/main/java/io/cloudbeat/selenium/DevToolsHelper.java index 349a8ec..3c274a6 100644 --- a/cb-kit-selenium4/src/main/java/io/cloudbeat/selenium/DevToolsHelper.java +++ b/cb-kit-selenium4/src/main/java/io/cloudbeat/selenium/DevToolsHelper.java @@ -2,8 +2,8 @@ import io.cloudbeat.common.reporter.model.LogLevel; import org.openqa.selenium.devtools.events.ConsoleEvent; -import org.openqa.selenium.devtools.v117.runtime.model.PropertyPreview; -import org.openqa.selenium.devtools.v117.runtime.model.RemoteObject; +import org.openqa.selenium.devtools.v131.runtime.model.PropertyPreview; +import org.openqa.selenium.devtools.v131.runtime.model.RemoteObject; import java.util.List; import java.util.logging.Level; diff --git a/cb-kit-selenium4/src/main/java/io/cloudbeat/selenium/SE4Element.java b/cb-kit-selenium4/src/main/java/io/cloudbeat/selenium/SE4Element.java index b457137..cede2fc 100644 --- a/cb-kit-selenium4/src/main/java/io/cloudbeat/selenium/SE4Element.java +++ b/cb-kit-selenium4/src/main/java/io/cloudbeat/selenium/SE4Element.java @@ -3,6 +3,7 @@ import io.cloudbeat.common.wrapper.webdriver.AbstractWebElement; import org.openqa.selenium.WebElement; +@SuppressWarnings({"deprecation"}) public class SE4Element implements AbstractWebElement { private final WebElement seElm; public SE4Element(WebElement element) { diff --git a/cb-kit-selenium4/src/main/java/io/cloudbeat/selenium/Selenium4WebDriver.java b/cb-kit-selenium4/src/main/java/io/cloudbeat/selenium/Selenium4WebDriver.java index 38cab89..5cc1c30 100755 --- a/cb-kit-selenium4/src/main/java/io/cloudbeat/selenium/Selenium4WebDriver.java +++ b/cb-kit-selenium4/src/main/java/io/cloudbeat/selenium/Selenium4WebDriver.java @@ -12,12 +12,12 @@ import org.openqa.selenium.devtools.Command; import org.openqa.selenium.devtools.DevTools; import org.openqa.selenium.devtools.HasDevTools; -import org.openqa.selenium.devtools.v117.network.Network; -import org.openqa.selenium.devtools.v117.network.model.RequestId; -import org.openqa.selenium.devtools.v117.network.model.ResourceTiming; -import org.openqa.selenium.devtools.v117.performance.Performance; -import org.openqa.selenium.devtools.v117.performance.model.Metric; -import org.openqa.selenium.devtools.v117.runtime.Runtime; +import org.openqa.selenium.devtools.v131.network.Network; +import org.openqa.selenium.devtools.v131.network.model.RequestId; +import org.openqa.selenium.devtools.v131.network.model.ResourceTiming; +import org.openqa.selenium.devtools.v131.performance.Performance; +import org.openqa.selenium.devtools.v131.performance.model.Metric; +import org.openqa.selenium.devtools.v131.runtime.Runtime; import org.openqa.selenium.logging.LogEntries; import org.openqa.selenium.logging.LogType; @@ -27,6 +27,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +@SuppressWarnings({"deprecation"}) public class Selenium4WebDriver implements AbstractWebDriver { private final WebDriver driver; private final DevTools devTools; diff --git a/pom.xml b/pom.xml index d9e6006..6a0c437 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 - 1.0.11-SNAPSHOT + 1.0.15 UTF-8 1.9.7 @@ -70,7 +70,7 @@ https://s01.oss.sonatype.org/content/repositories/snapshots - ossrh + ossrh-staging https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ @@ -117,9 +117,14 @@ org.apache.maven.plugins maven-gpg-plugin - 3.0.1 + 3.2.7 - true + ${gpg.keyname} + gpg.passphrase + + --pinentry-mode + loopback + @@ -131,7 +136,7 @@ - + + + org.sonatype.central + central-publishing-maven-plugin + 0.7.0 + true + + central + true + published + org.codehaus.mojo @@ -148,11 +164,18 @@ 1.5.0 true + ossrh + + flatten + flatten + flatten + flatten - process-resources + + package flatten