From ee0bc8b7b9dd92605544e312c2e36efb6c534434 Mon Sep 17 00:00:00 2001 From: ManojTestsigma Date: Thu, 29 Jan 2026 13:24:40 +0530 Subject: [PATCH] [CUS-10319] Addon nlp to open deep link. --- deeplink_action 1/pom.xml | 102 ++++++++++++++++++ .../addons/android/OpenDeepLink.java | 55 ++++++++++ .../testsigma/addons/ios/OpenDeepLink.java | 63 +++++++++++ 3 files changed, 220 insertions(+) create mode 100644 deeplink_action 1/pom.xml create mode 100644 deeplink_action 1/src/main/java/com/testsigma/addons/android/OpenDeepLink.java create mode 100644 deeplink_action 1/src/main/java/com/testsigma/addons/ios/OpenDeepLink.java diff --git a/deeplink_action 1/pom.xml b/deeplink_action 1/pom.xml new file mode 100644 index 00000000..86c536ba --- /dev/null +++ b/deeplink_action 1/pom.xml @@ -0,0 +1,102 @@ + + + 4.0.0 + com.testsigma.addons + deeplink_action + 1.0.3 + jar + + + UTF-8 + 11 + 11 + 1.2.24_cloud + 5.8.0-M1 + 1.0.0 + 3.2.1 + 1.18.30 + + + + + + com.testsigma + testsigma-java-sdk + ${testsigma.sdk.version} + + + org.projectlombok + lombok + ${lombok.version} + true + + + org.junit.jupiter + junit-jupiter-api + ${junit.jupiter.version} + test + + + org.testng + testng + 6.14.3 + + + + org.seleniumhq.selenium + selenium-java + 4.33.0 + + + + io.appium + java-client + 9.4.0 + + + com.fasterxml.jackson.core + jackson-annotations + 2.13.0 + + + + org.apache.commons + commons-lang3 + 3.17.0 + + + + deeplink_action + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + package + + shade + + + + + + org.apache.maven.plugins + maven-source-plugin + ${maven.source.plugin.version} + + + attach-sources + + jar + + + + + + + diff --git a/deeplink_action 1/src/main/java/com/testsigma/addons/android/OpenDeepLink.java b/deeplink_action 1/src/main/java/com/testsigma/addons/android/OpenDeepLink.java new file mode 100644 index 00000000..a15707e8 --- /dev/null +++ b/deeplink_action 1/src/main/java/com/testsigma/addons/android/OpenDeepLink.java @@ -0,0 +1,55 @@ +package com.testsigma.addons.android; + +import com.google.common.collect.ImmutableMap; +import com.testsigma.sdk.AndroidAction; +import com.testsigma.sdk.ApplicationType; +import com.testsigma.sdk.Result; +import com.testsigma.sdk.annotation.Action; +import com.testsigma.sdk.annotation.TestData; +import io.appium.java_client.android.AndroidDriver; +import org.apache.commons.lang3.exception.ExceptionUtils; +import org.openqa.selenium.NoSuchElementException; + + +@Action(actionText = "Open the deep link test-data for the package package-name", + applicationType = ApplicationType.ANDROID, + useCustomScreenshot = false) +public class OpenDeepLink extends AndroidAction { + + @TestData(reference = "test-data") + private com.testsigma.sdk.TestData testData; + + @Override + protected Result execute() throws NoSuchElementException { + //Your Awesome code starts here + Result result = Result.SUCCESS; + logger.info("Initiating execution"); + AndroidDriver androidDriver = (AndroidDriver) this.driver; + + String deepLink = testData.getValue().toString(); + + logger.info("Opening deep link: " + deepLink); + String currentPackage = androidDriver.getCurrentPackage(); + logger.info("Current package: " + currentPackage); + Object appPackage = androidDriver.getCapabilities().getCapability("appium:appPackage"); + + try { + androidDriver.executeScript("mobile: deepLink", ImmutableMap.of( + "url", deepLink, + "package", appPackage + )); + logger.info("Deep link opened successfully: " + deepLink + " for package: " + appPackage); + } catch (Exception e) { + logger.debug("Error while opening deep link: " + ExceptionUtils.getStackTrace(e)); + setErrorMessage(String.format("Failed to open deep link %s for package %s. Error: %s .try with this " + + "package %s", + deepLink, appPackage, e.getMessage(), currentPackage)); + return Result.FAILED; + } + + setSuccessMessage(String.format("Successfully opened deep link %s for package %s", + deepLink, appPackage)); + return result; + } + +} diff --git a/deeplink_action 1/src/main/java/com/testsigma/addons/ios/OpenDeepLink.java b/deeplink_action 1/src/main/java/com/testsigma/addons/ios/OpenDeepLink.java new file mode 100644 index 00000000..10d1931d --- /dev/null +++ b/deeplink_action 1/src/main/java/com/testsigma/addons/ios/OpenDeepLink.java @@ -0,0 +1,63 @@ +package com.testsigma.addons.ios; + +import com.google.common.collect.ImmutableMap; +import com.testsigma.sdk.ApplicationType; +import com.testsigma.sdk.IOSAction; +import com.testsigma.sdk.Result; +import com.testsigma.sdk.annotation.Action; +import com.testsigma.sdk.annotation.TestData; +import io.appium.java_client.ios.IOSDriver; +import org.apache.commons.lang3.exception.ExceptionUtils; +import org.openqa.selenium.NoSuchElementException; + +import java.util.Map; + + +@Action(actionText = "Open the deep link test-data", + applicationType = ApplicationType.IOS, + useCustomScreenshot = false) +public class OpenDeepLink extends IOSAction { + + @TestData(reference = "test-data") + private com.testsigma.sdk.TestData testData; + + @Override + protected Result execute() throws NoSuchElementException { + //Your Awesome code starts here + Result result = Result.SUCCESS; + logger.info("Initiating execution"); + IOSDriver iosDriver = (IOSDriver) this.driver; + + String deepLink = testData.getValue().toString(); + logger.info("Opening deep link: " + deepLink); + + Object bundleId = iosDriver.getCapabilities().getCapability("appium:bundleId"); + if (!deepLink.contains("://")) { + // No scheme found, construct using appIdentifier as custom URL scheme + logger.debug(String.format("Deep link missing scheme, constructing URL " + + "with appIdentifier: {}://{}", bundleId, deepLink)); + setErrorMessage(String.format("Deep link missing scheme, constructing URL " + + "with appIdentifier: {}://{}", bundleId, deepLink)); + + } + + try { + iosDriver.executeScript("mobile: deepLink", ImmutableMap.of( + "url", deepLink, + "bundleId", bundleId + )); + logger.info("Deep link opened successfully: " + deepLink + " for bundleId: " + bundleId); + } catch (Exception e) { + logger.debug("Error while opening deep link: " + ExceptionUtils.getStackTrace(e)); + setErrorMessage(String.format("Failed to open deep link %s for package %s. Error: %s .try with this " + + "package %s", + deepLink, bundleId, e.getMessage())); + return Result.FAILED; + } + + setSuccessMessage(String.format("Successfully opened deep link %s for package %s", + deepLink, bundleId)); + return result; + } + +}