Skip to content

Commit dad3ac8

Browse files
feat: enhance Java SDK setup instructions and update testing framework support
1 parent 93e3f4e commit dad3ac8

File tree

4 files changed

+44
-43
lines changed

4 files changed

+44
-43
lines changed

src/tools/sdk-utils/commands.ts

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,24 @@ import { SDKSupportedLanguage } from "./types.js";
44
// Framework mapping for Java Maven archetype generation
55
const JAVA_FRAMEWORK_MAP: Record<string, string> = {
66
testng: "testng",
7-
junit: "junit5", // Map generic junit to junit5 as default
8-
cucumber: "cucumber-testng", // Map generic cucumber to cucumber-testng as default
7+
junit5: "junit5",
8+
junit4: "junit4",
9+
cucumber: "cucumber-testng",
910
};
1011

12+
// Common Gradle setup instructions (platform-independent)
13+
const GRADLE_SETUP_INSTRUCTIONS = `
14+
**For Gradle setup:**
15+
1. Add browserstack-java-sdk to dependencies:
16+
compileOnly 'com.browserstack:browserstack-java-sdk:latest.release'
17+
18+
2. Add browserstackSDK path variable:
19+
def browserstackSDKArtifact = configurations.compileClasspath.resolvedConfiguration.resolvedArtifacts.find { it.name == 'browserstack-java-sdk' }
20+
21+
3. Add javaagent to gradle tasks:
22+
jvmArgs "-javaagent:\${browserstackSDKArtifact.file}"
23+
`;
24+
1125
export function getSDKPrefixCommand(
1226
language: SDKSupportedLanguage,
1327
framework: string,
@@ -18,26 +32,25 @@ export function getSDKPrefixCommand(
1832

1933
case "java": {
2034
const mavenFramework = getJavaFrameworkForMaven(framework);
21-
return `Install BrowserStack Java SDK
35+
const isWindows = process.platform === "win32";
2236

23-
**Maven command for ${framework}:**
24-
Run the command, it is required to generate the browserstack-sdk-archetype-integrate project:
25-
mvn archetype:generate -B -DarchetypeGroupId=com.browserstack \\
37+
const mavenCommand = isWindows
38+
? `mvn archetype:generate -B -DarchetypeGroupId="com.browserstack" -DarchetypeArtifactId="browserstack-sdk-archetype-integrate" -DarchetypeVersion="1.0" -DgroupId="com.browserstack" -DartifactId="browserstack-sdk-archetype-integrate" -Dversion="1.0" -DBROWSERSTACK_USERNAME="${process.env.BROWSERSTACK_USERNAME}" -DBROWSERSTACK_ACCESS_KEY="${process.env.BROWSERSTACK_ACCESS_KEY}" -DBROWSERSTACK_FRAMEWORK="${mavenFramework}"`
39+
: `mvn archetype:generate -B -DarchetypeGroupId=com.browserstack \\
2640
-DarchetypeArtifactId=browserstack-sdk-archetype-integrate -DarchetypeVersion=1.0 \\
2741
-DgroupId=com.browserstack -DartifactId=browserstack-sdk-archetype-integrate -Dversion=1.0 \\
28-
-DBROWSERSTACK_USERNAME=${process.env.BROWSERSTACK_USERNAME} -DBROWSERSTACK_ACCESS_KEY=${process.env.BROWSERSTACK_ACCESS_KEY} \\
29-
-DBROWSERSTACK_FRAMEWORK=${mavenFramework}
42+
-DBROWSERSTACK_USERNAME="${process.env.BROWSERSTACK_USERNAME}" \\
43+
-DBROWSERSTACK_ACCESS_KEY="${process.env.BROWSERSTACK_ACCESS_KEY}" \\
44+
-DBROWSERSTACK_FRAMEWORK="${mavenFramework}"`;
3045

31-
**For Gradle setup:**
32-
1. Add browserstack-java-sdk to dependencies:
33-
compileOnly 'com.browserstack:browserstack-java-sdk:latest.release'
46+
const platformLabel = isWindows ? "Windows" : "macOS/Linux";
3447

35-
2. Add browserstackSDK path variable:
36-
def browserstackSDKArtifact = configurations.compileClasspath.resolvedConfiguration.resolvedArtifacts.find { it.name == 'browserstack-java-sdk' }
48+
return `Install BrowserStack Java SDK
3749
38-
3. Add javaagent to gradle tasks:
39-
jvmArgs "-javaagent:\${browserstackSDKArtifact.file}"
40-
`;
50+
**Maven command for ${framework} (${platformLabel}):**
51+
Run the command, it is required to generate the browserstack-sdk-archetype-integrate project:
52+
${mavenCommand}
53+
${GRADLE_SETUP_INSTRUCTIONS}`;
4154
}
4255

4356
// Add more languages as needed

src/tools/sdk-utils/constants.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,6 @@ const nodejsInstructions = `
268268
* ---------- EXPORT CONFIG ----------
269269
*/
270270

271-
=======
272271
const webdriverioInstructions = `
273272
To integrate your WebdriverIO test suite with BrowserStack, follow these steps. This process uses the @wdio/browserstack-service and does not require a browserstack.yml file.
274273

src/tools/sdk-utils/percy/constants.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,8 @@ export const PERCY_INSTRUCTIONS: PercyConfigMapping = {
115115
selenium: {
116116
testng: { script_updates: javaSeleniumInstructions },
117117
cucumber: { script_updates: javaSeleniumInstructions },
118-
junit: { script_updates: javaSeleniumInstructions },
118+
junit4: { script_updates: javaSeleniumInstructions },
119+
junit5: { script_updates: javaSeleniumInstructions },
119120
},
120121
},
121122
nodejs: {

src/tools/sdk-utils/types.ts

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,8 @@
1-
export type SDKSupportedLanguage = "nodejs" | "python" | "java" | "csharp";
2-
export type SDKSupportedBrowserAutomationFramework = "playwright" | "selenium";
3-
export type SDKSupportedTestingFramework =
4-
| "jest"
5-
| "codeceptjs"
6-
| "playwright"
7-
| "pytest"
8-
| "robot"
9-
| "behave"
10-
| "cucumber"
11-
| "nightwatch"
12-
| "webdriverio"
13-
| "mocha"
14-
| "junit4"
15-
| "junit5"
16-
| "testng"
17-
| "xunit"
18-
| "nunit"
19-
| "mstest";
20-
21-
221
export enum SDKSupportedLanguageEnum {
232
nodejs = "nodejs",
243
python = "python",
254
java = "java",
5+
csharp = "csharp",
266
}
277
export type SDKSupportedLanguage = keyof typeof SDKSupportedLanguageEnum;
288

@@ -45,17 +25,25 @@ export enum SDKSupportedTestingFrameworkEnum {
4525
nightwatch = "nightwatch",
4626
webdriverio = "webdriverio",
4727
mocha = "mocha",
48-
junit = "junit",
28+
junit4 = "junit4",
29+
junit5 = "junit5",
4930
testng = "testng",
5031
cypress = "cypress",
32+
nunit = "nunit",
33+
mstest = "mstest",
34+
xunit = "xunit",
5135
}
5236
export type SDKSupportedTestingFramework =
5337
keyof typeof SDKSupportedTestingFrameworkEnum;
5438

5539
export type ConfigMapping = Record<
5640
SDKSupportedLanguageEnum,
57-
Record<
58-
SDKSupportedBrowserAutomationFrameworkEnum,
59-
Partial<Record<SDKSupportedTestingFrameworkEnum, { instructions: string }>>
41+
Partial<
42+
Record<
43+
SDKSupportedBrowserAutomationFrameworkEnum,
44+
Partial<
45+
Record<SDKSupportedTestingFrameworkEnum, { instructions: string }>
46+
>
47+
>
6048
>
6149
>;

0 commit comments

Comments
 (0)