From 38b5dd05b22e2691c98a77302beb247f4b9b6c7c Mon Sep 17 00:00:00 2001 From: Ruturaj-Browserstack Date: Wed, 2 Jul 2025 09:47:03 +0530 Subject: [PATCH 1/3] Add Serenity framework support to SDK utilities --- src/tools/sdk-utils/commands.ts | 1 + src/tools/sdk-utils/constants.ts | 61 ++++++++++++++++++++++++++++++++ src/tools/sdk-utils/types.ts | 1 + 3 files changed, 63 insertions(+) diff --git a/src/tools/sdk-utils/commands.ts b/src/tools/sdk-utils/commands.ts index 6865551..565f0e1 100644 --- a/src/tools/sdk-utils/commands.ts +++ b/src/tools/sdk-utils/commands.ts @@ -7,6 +7,7 @@ const JAVA_FRAMEWORK_MAP: Record = { junit5: "junit5", junit4: "junit4", cucumber: "cucumber-testng", + serenity: "serenity", }; // Common Gradle setup instructions (platform-independent) diff --git a/src/tools/sdk-utils/constants.ts b/src/tools/sdk-utils/constants.ts index 468a9f7..a7d78dc 100644 --- a/src/tools/sdk-utils/constants.ts +++ b/src/tools/sdk-utils/constants.ts @@ -62,6 +62,66 @@ const pytestInstructions = generatePythonFrameworkInstructions("pytest"); const argsInstruction = '-javaagent:"${com.browserstack:browserstack-java-sdk:jar}"'; +const serenityInstructions = ` +---STEP--- + +Set BrowserStack credentials as environment variables: + +For macOS/Linux: +\`\`\`bash +export BROWSERSTACK_USERNAME=${config.browserstackUsername} +export BROWSERSTACK_ACCESS_KEY=${config.browserstackAccessKey} +\`\`\` + +For Windows Command Prompt: +\`\`\`cmd +set BROWSERSTACK_USERNAME=${config.browserstackUsername} +set BROWSERSTACK_ACCESS_KEY=${config.browserstackAccessKey} +\`\`\` + +---STEP--- + +Add serenity-browserstack dependency in pom.xml: +Add the following dependency to your pom.xml file and save it: + +\`\`\`xml + + net.serenity-bdd + serenity-browserstack + 3.3.4 + +\`\`\` + +---STEP--- + +Set up serenity.conf file: +Create or update your serenity.conf file in the project root with the following configuration: + +\`\`\` +webdriver { + driver = remote + remote.url = "https://hub.browserstack.com/wd/hub" +} +browserstack.user="${config.browserstackUsername}" +browserstack.key="${config.browserstackAccessKey}" +\`\`\` + +---STEP--- + +Run your Serenity tests: +You can continue running your tests as you normally would. For example: + +Using Maven: +\`\`\`bash +mvn clean verify +\`\`\` + +Using Gradle: +\`\`\`bash +gradle clean test +\`\`\` +`; + const javaInstructions = ` ---STEP--- @@ -478,6 +538,7 @@ export const SUPPORTED_CONFIGURATIONS: ConfigMapping = { cucumber: { instructions: javaInstructions }, junit4: { instructions: javaInstructions }, junit5: { instructions: javaInstructions }, + serenity: { instructions: serenityInstructions }, }, }, csharp: { diff --git a/src/tools/sdk-utils/types.ts b/src/tools/sdk-utils/types.ts index 3e3ed44..dccbf0b 100644 --- a/src/tools/sdk-utils/types.ts +++ b/src/tools/sdk-utils/types.ts @@ -32,6 +32,7 @@ export enum SDKSupportedTestingFrameworkEnum { nunit = "nunit", mstest = "mstest", xunit = "xunit", + serenity = "serenity", } export type SDKSupportedTestingFramework = keyof typeof SDKSupportedTestingFrameworkEnum; From 310969c97eef31362889b2570b8774b8ceb3c1f3 Mon Sep 17 00:00:00 2001 From: Ruturaj-Browserstack Date: Wed, 2 Jul 2025 11:32:12 +0530 Subject: [PATCH 2/3] Remove unnecessary blank line before SDK description in bstack-sdk.ts --- src/tools/bstack-sdk.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/tools/bstack-sdk.ts b/src/tools/bstack-sdk.ts index 7e9d723..1ca90ad 100644 --- a/src/tools/bstack-sdk.ts +++ b/src/tools/bstack-sdk.ts @@ -24,7 +24,6 @@ import { getPercyInstructions, } from "./sdk-utils/percy/instructions.js"; - /** * BrowserStack SDK hooks into your test framework to seamlessly run tests on BrowserStack. * This tool gives instructions to setup a browserstack.yml file in the project root and installs the necessary dependencies. From 1f6ffe74f19e10c75c4c0d11358988d0a7d29c69 Mon Sep 17 00:00:00 2001 From: Ruturaj-Browserstack Date: Mon, 7 Jul 2025 11:29:11 +0530 Subject: [PATCH 3/3] Add Java Selenium instructions for Serenity framework support --- src/tools/sdk-utils/percy/constants.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/sdk-utils/percy/constants.ts b/src/tools/sdk-utils/percy/constants.ts index 63a3eae..39dea6a 100644 --- a/src/tools/sdk-utils/percy/constants.ts +++ b/src/tools/sdk-utils/percy/constants.ts @@ -159,6 +159,7 @@ export const PERCY_INSTRUCTIONS: PercyConfigMapping = { cucumber: { script_updates: javaSeleniumInstructions }, junit4: { script_updates: javaSeleniumInstructions }, junit5: { script_updates: javaSeleniumInstructions }, + serenity: { script_updates: javaSeleniumInstructions }, }, }, csharp: {