-
Notifications
You must be signed in to change notification settings - Fork 15
[CUS-12422] Added folder and file actions to windows advanced type. #385
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,97 @@ | ||||||||||||||||||||||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||||||||||||||||||||||
| <project | ||||||||||||||||||||||||
| xmlns="http://maven.apache.org/POM/4.0.0" | ||||||||||||||||||||||||
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||||||||||||||||||||
| xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||||||||||||||||||||||
| <modelVersion>4.0.0</modelVersion> | ||||||||||||||||||||||||
| <groupId>com.testsigma.addons</groupId> | ||||||||||||||||||||||||
| <artifactId>folder_and_file_actions</artifactId> | ||||||||||||||||||||||||
| <version>1.0.2</version> | ||||||||||||||||||||||||
| <packaging>jar</packaging> | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| <properties> | ||||||||||||||||||||||||
| <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||||||||||||||||||||||||
| <maven.compiler.source>11</maven.compiler.source> | ||||||||||||||||||||||||
| <maven.compiler.target>11</maven.compiler.target> | ||||||||||||||||||||||||
| <testsigma.sdk.version>1.2.24_cloud</testsigma.sdk.version> | ||||||||||||||||||||||||
| <junit.jupiter.version>5.8.0-M1</junit.jupiter.version> | ||||||||||||||||||||||||
| <testsigma.addon.maven.plugin>1.0.0</testsigma.addon.maven.plugin> | ||||||||||||||||||||||||
| <maven.source.plugin.version>3.2.1</maven.source.plugin.version> | ||||||||||||||||||||||||
| <lombok.version>1.18.30</lombok.version> | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| </properties> | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| <dependencies> | ||||||||||||||||||||||||
| <dependency> | ||||||||||||||||||||||||
| <groupId>com.testsigma</groupId> | ||||||||||||||||||||||||
| <artifactId>testsigma-java-sdk</artifactId> | ||||||||||||||||||||||||
| <version>${testsigma.sdk.version}</version> | ||||||||||||||||||||||||
| </dependency> | ||||||||||||||||||||||||
| <dependency> | ||||||||||||||||||||||||
| <groupId>org.projectlombok</groupId> | ||||||||||||||||||||||||
| <artifactId>lombok</artifactId> | ||||||||||||||||||||||||
| <version>${lombok.version}</version> | ||||||||||||||||||||||||
| <optional>true</optional> | ||||||||||||||||||||||||
| </dependency> | ||||||||||||||||||||||||
| <dependency> | ||||||||||||||||||||||||
| <groupId>org.junit.jupiter</groupId> | ||||||||||||||||||||||||
| <artifactId>junit-jupiter-api</artifactId> | ||||||||||||||||||||||||
| <version>${junit.jupiter.version}</version> | ||||||||||||||||||||||||
| <scope>test</scope> | ||||||||||||||||||||||||
| </dependency> | ||||||||||||||||||||||||
| <dependency> | ||||||||||||||||||||||||
| <groupId>org.testng</groupId> | ||||||||||||||||||||||||
| <artifactId>testng</artifactId> | ||||||||||||||||||||||||
| <version>6.14.3</version> | ||||||||||||||||||||||||
| </dependency> | ||||||||||||||||||||||||
|
Comment on lines
+42
to
+46
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Set TestNG to test scope to avoid shipping test framework in the addon JAR. At Line 42, Suggested fix <dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
+ <scope>test</scope>
</dependency>📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||
| <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --> | ||||||||||||||||||||||||
| <dependency> | ||||||||||||||||||||||||
| <groupId>org.seleniumhq.selenium</groupId> | ||||||||||||||||||||||||
| <artifactId>selenium-java</artifactId> | ||||||||||||||||||||||||
| <version>4.14.1</version> | ||||||||||||||||||||||||
| </dependency> | ||||||||||||||||||||||||
| <!-- https://mvnrepository.com/artifact/io.appium/java-client --> | ||||||||||||||||||||||||
| <dependency> | ||||||||||||||||||||||||
| <groupId>io.appium</groupId> | ||||||||||||||||||||||||
| <artifactId>java-client</artifactId> | ||||||||||||||||||||||||
| <version>9.0.0</version> | ||||||||||||||||||||||||
| </dependency> | ||||||||||||||||||||||||
| <dependency> | ||||||||||||||||||||||||
| <groupId>com.fasterxml.jackson.core</groupId> | ||||||||||||||||||||||||
| <artifactId>jackson-annotations</artifactId> | ||||||||||||||||||||||||
| <version>2.13.0</version> | ||||||||||||||||||||||||
| </dependency> | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| </dependencies> | ||||||||||||||||||||||||
| <build> | ||||||||||||||||||||||||
| <finalName>folder_and_file_actions</finalName> | ||||||||||||||||||||||||
| <plugins> | ||||||||||||||||||||||||
| <plugin> | ||||||||||||||||||||||||
| <groupId>org.apache.maven.plugins</groupId> | ||||||||||||||||||||||||
| <artifactId>maven-shade-plugin</artifactId> | ||||||||||||||||||||||||
| <version>3.2.4</version> | ||||||||||||||||||||||||
| <executions> | ||||||||||||||||||||||||
| <execution> | ||||||||||||||||||||||||
| <phase>package</phase> | ||||||||||||||||||||||||
| <goals> | ||||||||||||||||||||||||
| <goal>shade</goal> | ||||||||||||||||||||||||
| </goals> | ||||||||||||||||||||||||
| </execution> | ||||||||||||||||||||||||
| </executions> | ||||||||||||||||||||||||
| </plugin> | ||||||||||||||||||||||||
| <plugin> | ||||||||||||||||||||||||
| <groupId>org.apache.maven.plugins</groupId> | ||||||||||||||||||||||||
| <artifactId>maven-source-plugin</artifactId> | ||||||||||||||||||||||||
| <version>${maven.source.plugin.version}</version> | ||||||||||||||||||||||||
| <executions> | ||||||||||||||||||||||||
| <execution> | ||||||||||||||||||||||||
| <id>attach-sources</id> | ||||||||||||||||||||||||
| <goals> | ||||||||||||||||||||||||
| <goal>jar</goal> | ||||||||||||||||||||||||
| </goals> | ||||||||||||||||||||||||
| </execution> | ||||||||||||||||||||||||
| </executions> | ||||||||||||||||||||||||
| </plugin> | ||||||||||||||||||||||||
| </plugins> | ||||||||||||||||||||||||
| </build> | ||||||||||||||||||||||||
| </project> | ||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,57 @@ | ||
| package com.testsigma.addons.web; | ||
|
|
||
| import com.testsigma.addons.web.folderutil.FolderUtilities; | ||
| import com.testsigma.sdk.ApplicationType; | ||
| import com.testsigma.sdk.Result; | ||
| import com.testsigma.sdk.StepActionType; | ||
| import com.testsigma.sdk.WebAction; | ||
| import com.testsigma.sdk.annotation.Action; | ||
| import com.testsigma.sdk.annotation.TestData; | ||
| import lombok.Data; | ||
| import org.openqa.selenium.NoSuchElementException; | ||
|
|
||
| import java.io.File; | ||
|
|
||
| @Data | ||
| @Action(actionText = "Verify that the folder Folder-Path has a file with name containing File-Name", | ||
| description = "Verifies whether the folder has any file containing the given name (use in if condition step)", | ||
| applicationType = ApplicationType.WEB, | ||
| actionType = StepActionType.IF_CONDITION, | ||
| displayName = "If: Verify folder has file containing name", | ||
| useCustomScreenshot = false) | ||
| public class IfVerifyFileContainingNamePresence extends WebAction { | ||
|
|
||
| @TestData(reference = "Folder-Path") | ||
| private com.testsigma.sdk.TestData folderPath_; | ||
|
|
||
| @TestData(reference = "File-Name") | ||
| private com.testsigma.sdk.TestData fileName_; | ||
|
|
||
| @Override | ||
| public Result execute() throws NoSuchElementException { | ||
| logger.info("Initiating execution..."); | ||
| Result result = Result.SUCCESS; | ||
| String folderPath = folderPath_.getValue().toString(); | ||
| String fileName = fileName_.getValue().toString(); | ||
|
|
||
| logger.info("Given folder path : " + folderPath); | ||
| logger.info("Given file name : " + fileName); | ||
|
|
||
| FolderUtilities util = new FolderUtilities(); | ||
| if (util.folderCheck(folderPath)) { | ||
| File file = util.searchFile(new File(folderPath), fileName, false, logger); | ||
| if (file != null) { | ||
| setSuccessMessage(String.format("Successfully verified that file exists containing the name %s in " + | ||
| "the folder path %s", fileName, folderPath)); | ||
| } else { | ||
| result = Result.FAILED; | ||
| setErrorMessage(String.format(util.NO_FILE_CONTAINS_ERROR_MSG, fileName, folderPath)); | ||
| } | ||
| } else { | ||
| result = Result.FAILED; | ||
| setErrorMessage(String.format(util.FOLDER_NOT_FOUND, folderPath)); | ||
| } | ||
| logger.info("Execution completed"); | ||
| return result; | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,72 @@ | ||
| package com.testsigma.addons.web; | ||
|
|
||
| import com.testsigma.addons.web.folderutil.FolderUtilities; | ||
| import com.testsigma.sdk.ApplicationType; | ||
| import com.testsigma.sdk.Result; | ||
| import com.testsigma.sdk.StepActionType; | ||
| import com.testsigma.sdk.WebAction; | ||
| import com.testsigma.sdk.annotation.Action; | ||
| import com.testsigma.sdk.annotation.TestData; | ||
| import lombok.Data; | ||
| import org.openqa.selenium.NoSuchElementException; | ||
|
|
||
| import java.io.File; | ||
|
|
||
| @Data | ||
| @Action(actionText = "Verify that the folder Folder-Path has a file with name containing File-Name and the size of " + | ||
| "the file is greater than test-data KB", | ||
| description = "Verifies whether the folder has any file containing the given name and its size exceeds the " + | ||
| "given input (use in if condition step)", | ||
| applicationType = ApplicationType.WEB, | ||
| actionType = StepActionType.IF_CONDITION, | ||
| displayName = "If: Verify folder has file containing name and size", | ||
| useCustomScreenshot = false) | ||
| public class IfVerifyFileContainingNamePresenceWithFileSize extends WebAction { | ||
|
|
||
| @TestData(reference = "Folder-Path") | ||
| private com.testsigma.sdk.TestData folderPath_; | ||
|
|
||
| @TestData(reference = "File-Name") | ||
| private com.testsigma.sdk.TestData fileName_; | ||
|
|
||
| @TestData(reference = "test-data") | ||
| private com.testsigma.sdk.TestData size_; | ||
|
|
||
| @Override | ||
| public Result execute() throws NoSuchElementException { | ||
| logger.info("Initiating execution..."); | ||
| Result result = Result.SUCCESS; | ||
| String folderPath = folderPath_.getValue().toString(); | ||
| String fileName = fileName_.getValue().toString(); | ||
| long size = Long.parseLong(size_.getValue().toString()); | ||
|
|
||
| logger.info("Given folder path : " + folderPath); | ||
| logger.info("Given file name : " + fileName); | ||
| logger.info("Given size value : " + size); | ||
|
|
||
| FolderUtilities util = new FolderUtilities(); | ||
| if (util.folderCheck(folderPath)) { | ||
| File file = util.searchFile(new File(folderPath), fileName, false, logger); | ||
| if (file != null) { | ||
| long fileSize = file.length() / 1000; | ||
| if (file.length() > (size * 1000)) { | ||
| setSuccessMessage(String.format("Successfully verified that file exists containing name %s in" + | ||
| " the folder path %s and it's size %s KB is greater than %s KB", | ||
| fileName, folderPath, fileSize, size)); | ||
| } else { | ||
| result = Result.FAILED; | ||
| setErrorMessage(String.format("The files exists with containing name %s in the folder path %s and its" + | ||
| " size %s KB is not greater than %s KB", fileName, folderPath, fileSize, size)); | ||
| } | ||
| } else { | ||
| result = Result.FAILED; | ||
| setErrorMessage(String.format(util.NO_FILE_CONTAINS_ERROR_MSG, fileName, folderPath)); | ||
| } | ||
| } else { | ||
| result = Result.FAILED; | ||
| setErrorMessage(String.format(util.FOLDER_NOT_FOUND, folderPath)); | ||
| } | ||
| logger.info("Execution completed"); | ||
| return result; | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,57 @@ | ||
| package com.testsigma.addons.web; | ||
|
|
||
| import com.testsigma.addons.web.folderutil.FolderUtilities; | ||
| import com.testsigma.sdk.ApplicationType; | ||
| import com.testsigma.sdk.Result; | ||
| import com.testsigma.sdk.StepActionType; | ||
| import com.testsigma.sdk.WebAction; | ||
| import com.testsigma.sdk.annotation.Action; | ||
| import com.testsigma.sdk.annotation.TestData; | ||
| import lombok.Data; | ||
| import org.openqa.selenium.NoSuchElementException; | ||
|
|
||
| import java.io.File; | ||
|
|
||
| @Data | ||
| @Action(actionText = "Verify that the folder Folder-Path has a file with name File-Name", | ||
| description = "Verifies whether the folder has a file with given name (use in if condition step)", | ||
| applicationType = ApplicationType.WEB, | ||
| actionType = StepActionType.IF_CONDITION, | ||
| displayName = "If: Verify folder has file with exact name", | ||
| useCustomScreenshot = false) | ||
| public class IfVerifyFileWithNamePresence extends WebAction { | ||
|
|
||
| @TestData(reference = "Folder-Path") | ||
| private com.testsigma.sdk.TestData folderPath_; | ||
|
|
||
| @TestData(reference = "File-Name") | ||
| private com.testsigma.sdk.TestData fileName_; | ||
|
|
||
| @Override | ||
| public Result execute() throws NoSuchElementException { | ||
| logger.info("Initiating execution..."); | ||
| Result result = Result.SUCCESS; | ||
| String folderPath = folderPath_.getValue().toString(); | ||
| String fileName = fileName_.getValue().toString(); | ||
|
|
||
| logger.info("Given folder path : " + folderPath); | ||
| logger.info("Given file name : " + fileName); | ||
|
|
||
| FolderUtilities util = new FolderUtilities(); | ||
| if (util.folderCheck(folderPath)) { | ||
| File file = util.searchFile(new File(folderPath), fileName, true, logger); | ||
| if (file != null) { | ||
| setSuccessMessage(String.format("Successfully verified that file exists with name %s in the folder " + | ||
| "path %s", fileName, folderPath)); | ||
| } else { | ||
| result = Result.FAILED; | ||
| setErrorMessage(String.format(util.NO_FILE_EXISTS_ERROR_MSG, fileName, folderPath)); | ||
| } | ||
| } else { | ||
| result = Result.FAILED; | ||
| setErrorMessage(String.format(util.FOLDER_NOT_FOUND, folderPath)); | ||
| } | ||
| logger.info("Execution completed"); | ||
| return result; | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,70 @@ | ||||||||||||||||||||||||||
| package com.testsigma.addons.web; | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| import com.testsigma.addons.web.folderutil.FolderUtilities; | ||||||||||||||||||||||||||
| import com.testsigma.sdk.ApplicationType; | ||||||||||||||||||||||||||
| import com.testsigma.sdk.Result; | ||||||||||||||||||||||||||
| import com.testsigma.sdk.StepActionType; | ||||||||||||||||||||||||||
| import com.testsigma.sdk.WebAction; | ||||||||||||||||||||||||||
| import com.testsigma.sdk.annotation.Action; | ||||||||||||||||||||||||||
| import com.testsigma.sdk.annotation.TestData; | ||||||||||||||||||||||||||
| import lombok.Data; | ||||||||||||||||||||||||||
| import org.openqa.selenium.NoSuchElementException; | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| import java.io.File; | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| @Data | ||||||||||||||||||||||||||
| @Action(actionText = "Verify that the folder Folder-Path has a file with name File-Name and the size of the file is" + | ||||||||||||||||||||||||||
| " greater than test-data KB", | ||||||||||||||||||||||||||
| description = "Verifies whether the folder has a file with given name and its size exceeds the given input" + | ||||||||||||||||||||||||||
| " (use in if condition step)", | ||||||||||||||||||||||||||
| applicationType = ApplicationType.WEB, | ||||||||||||||||||||||||||
| actionType = StepActionType.IF_CONDITION, | ||||||||||||||||||||||||||
| displayName = "If: Verify folder has file with exact name and size", | ||||||||||||||||||||||||||
| useCustomScreenshot = false) | ||||||||||||||||||||||||||
| public class IfVerifyFileWithNamePresenceWithFileSize extends WebAction { | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| @TestData(reference = "Folder-Path") | ||||||||||||||||||||||||||
| private com.testsigma.sdk.TestData folderPath_; | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| @TestData(reference = "File-Name") | ||||||||||||||||||||||||||
| private com.testsigma.sdk.TestData fileName_; | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| @TestData(reference = "test-data") | ||||||||||||||||||||||||||
| private com.testsigma.sdk.TestData size_; | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| @Override | ||||||||||||||||||||||||||
| public Result execute() throws NoSuchElementException { | ||||||||||||||||||||||||||
| logger.info("Initiating execution..."); | ||||||||||||||||||||||||||
| Result result = Result.SUCCESS; | ||||||||||||||||||||||||||
| String folderPath = folderPath_.getValue().toString(); | ||||||||||||||||||||||||||
| String fileName = fileName_.getValue().toString(); | ||||||||||||||||||||||||||
| long size = Long.parseLong(size_.getValue().toString()); | ||||||||||||||||||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Handle invalid size input safely. Line 41 can throw Proposed fix- long size = Long.parseLong(size_.getValue().toString());
+ long size;
+ try {
+ size = Long.parseLong(String.valueOf(size_.getValue()).trim());
+ if (size < 0) {
+ setErrorMessage("Given size must be a non-negative number in KB");
+ return Result.FAILED;
+ }
+ } catch (RuntimeException e) {
+ setErrorMessage("Given size must be a non-negative number in KB");
+ return Result.FAILED;
+ }📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| logger.info("Given folder path : " + folderPath); | ||||||||||||||||||||||||||
| logger.info("Given file name : " + fileName); | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| FolderUtilities util = new FolderUtilities(); | ||||||||||||||||||||||||||
| if (util.folderCheck(folderPath)) { | ||||||||||||||||||||||||||
| File file = util.searchFile(new File(folderPath), fileName, true, logger); | ||||||||||||||||||||||||||
| if (file != null) { | ||||||||||||||||||||||||||
| long fileSize = file.length() / 1000; | ||||||||||||||||||||||||||
| if (file.length() > (size * 1000)) { | ||||||||||||||||||||||||||
| setSuccessMessage(String.format("Successfully verified that file exists with name %s in the folder " + | ||||||||||||||||||||||||||
| "path %s and it's size %s KB is greater than %s KB", fileName, folderPath, fileSize, size)); | ||||||||||||||||||||||||||
| } else { | ||||||||||||||||||||||||||
| result = Result.FAILED; | ||||||||||||||||||||||||||
| setErrorMessage(String.format("The files exists with name %s in the folder path %s and its size " + | ||||||||||||||||||||||||||
| " %s KB is not greater than %s KB", fileName, folderPath, fileSize, size)); | ||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||
| } else { | ||||||||||||||||||||||||||
| result = Result.FAILED; | ||||||||||||||||||||||||||
| setErrorMessage(String.format(util.FOLDER_NOT_FOUND, folderPath)); | ||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||
|
Comment on lines
+59
to
+62
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Use the correct file-not-found error in the null-file branch. At Line 59, this branch means the folder exists but file lookup failed; using Proposed fix- } else {
- result = Result.FAILED;
- setErrorMessage(String.format(util.FOLDER_NOT_FOUND, folderPath));
- }
+ } else {
+ result = Result.FAILED;
+ setErrorMessage(String.format(util.NO_FILE_EXISTS_ERROR_MSG, fileName, folderPath));
+ }📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||
| } else { | ||||||||||||||||||||||||||
| result = Result.FAILED; | ||||||||||||||||||||||||||
| setErrorMessage(String.format(util.FOLDER_NOT_FOUND, folderPath)); | ||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||
| logger.info("Execution completed"); | ||||||||||||||||||||||||||
| return result; | ||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
Repository: testsigmahq/testsigma-addons
Length of output: 1796
🏁 Script executed:
Repository: testsigmahq/testsigma-addons
Length of output: 1888
🌐 Web query:
Latest stable version of JUnit Jupiter (org.junit.jupiter:junit-jupiter-api)💡 Result:
The latest stable version of org.junit.jupiter:junit-jupiter-api is 6.0.3, released on February 15, 2026.
Citations:
🌐 Web query:
Latest stable version of TestNG (org.testng:testng)💡 Result:
The latest stable version of TestNG (org.testng:testng) is 7.12.0.
Citations:
🌐 Web query:
Latest stable version of Selenium (org.seleniumhq.selenium:selenium-java)💡 Result:
The latest stable version of org.seleniumhq.selenium:selenium-java is 4.43.0, released on April 10, 2026.
Citations:
🌐 Web query:
Latest stable version of Appium (io.appium:java-client)💡 Result:
The latest stable version of io.appium:java-client is 10.1.1.
Citations:
🌐 Web query:
Latest stable version of Jackson Annotations (com.fasterxml.jackson.core:jackson-annotations)💡 Result:
The latest stable version of Jackson Annotations (com.fasterxml.jackson.core:jackson-annotations) is 2.18.6.
Citations:
Update pinned dependency versions before publishing as PUBLIC.
The version
5.8.0-M1at line 17 is a JUnit Jupiter milestone build, not a stable release. Additionally, versions at lines 17, 45, 62, and 72 are significantly outdated:junit-jupiter-api:5.8.0-M1→ latest:6.0.3(stable)testng:6.14.3→ latest:7.12.0selenium-java:4.14.1→ latest:4.43.0java-client:9.0.0→ latest:10.1.1jackson-annotations:2.13.0→ latest:2.18.6Update to current stable versions and verify against known advisories before release.
🤖 Prompt for AI Agents