@@ -11,15 +11,32 @@ export const MAVEN_ARCHETYPE_GROUP_ID = "com.browserstack";
1111export const MAVEN_ARCHETYPE_ARTIFACT_ID = "junit-archetype-integrate" ;
1212export const MAVEN_ARCHETYPE_VERSION = "1.0" ;
1313
14+ // Version mapping for different frameworks
15+ export const JAVA_APP_FRAMEWORK_VERSION_MAP : Record < string , string > = {
16+ testng : "1.4" ,
17+ selenide : "1.4" ,
18+ junit5 : "1.0" ,
19+ junit4 : "1.0" ,
20+ jbehave : "1.0" ,
21+ cucumberTestng : "1.0" ,
22+ cucumberJunit4 : "1.0" ,
23+ cucumberJunit5 : "1.0" ,
24+ cucumber : "1.0" ,
25+ serenity : "1.0" ,
26+ } ;
27+
1428// Framework mapping for Java Maven archetype generation for App Automate
1529export const JAVA_APP_FRAMEWORK_MAP : Record < string , string > = {
16- testng : "browserstack-sdk -archetype-integrate" ,
30+ testng : "testng -archetype-integrate" ,
1731 junit5 : "browserstack-sdk-archetype-integrate" ,
1832 selenide : "selenide-archetype-integrate" ,
1933 jbehave : "browserstack-sdk-archetype-integrate" ,
34+ junit4 : "browserstack-sdk-archetype-integrate" ,
2035 cucumberTestng : "browserstack-sdk-archetype-integrate" ,
2136 cucumberJunit4 : "browserstack-sdk-archetype-integrate" ,
2237 cucumberJunit5 : "browserstack-sdk-archetype-integrate" ,
38+ cucumber : "browserstack-sdk-archetype-integrate" ,
39+ serenity : "browserstack-sdk-archetype-integrate" ,
2340} ;
2441
2542// Common Gradle setup instructions for App Automate (platform-independent)
@@ -49,44 +66,72 @@ export function getJavaAppFrameworkForMaven(framework: string): string {
4966 return JAVA_APP_FRAMEWORK_MAP [ framework ] || framework ;
5067}
5168
69+ export function getJavaAppFrameworkVersion ( framework : string ) : string {
70+ return JAVA_APP_FRAMEWORK_VERSION_MAP [ framework ] || MAVEN_ARCHETYPE_VERSION ;
71+ }
72+
5273function getMavenCommandForWindows (
5374 framework : string ,
5475 mavenFramework : string ,
76+ version : string ,
5577 username : string ,
5678 accessKey : string ,
79+ appPath ?: string ,
5780) : string {
58- return (
81+ let command =
5982 `mvn archetype:generate -B ` +
6083 `-DarchetypeGroupId="${ MAVEN_ARCHETYPE_GROUP_ID } " ` +
6184 `-DarchetypeArtifactId="${ mavenFramework } " ` +
62- `-DarchetypeVersion="${ MAVEN_ARCHETYPE_VERSION } " ` +
85+ `-DarchetypeVersion="${ version } " ` +
6386 `-DgroupId="${ MAVEN_ARCHETYPE_GROUP_ID } " ` +
64- `-DartifactId="${ MAVEN_ARCHETYPE_ARTIFACT_ID } " ` +
65- `-Dversion="${ MAVEN_ARCHETYPE_VERSION } " ` +
87+ `-DartifactId="${ mavenFramework } " ` +
88+ `-Dversion="${ version } " ` +
6689 `-DBROWSERSTACK_USERNAME="${ username } " ` +
67- `-DBROWSERSTACK_ACCESS_KEY="${ accessKey } " ` +
68- `-DBROWSERSTACK_FRAMEWORK="${ framework } "`
69- ) ;
90+ `-DBROWSERSTACK_ACCESS_KEY="${ accessKey } "` ;
91+
92+ // Add framework parameter for browserstack-sdk-archetype-integrate
93+ if ( mavenFramework === "browserstack-sdk-archetype-integrate" ) {
94+ command += ` -DBROWSERSTACK_FRAMEWORK="${ framework } "` ;
95+ }
96+
97+ // Add app path if provided
98+ if ( appPath ) {
99+ command += ` -DBROWSERSTACK_APP="${ appPath } "` ;
100+ }
101+
102+ return command ;
70103}
71104
72105function getMavenCommandForUnix (
73106 framework : string ,
74107 mavenFramework : string ,
108+ version : string ,
75109 username : string ,
76110 accessKey : string ,
111+ appPath ?: string ,
77112) : string {
78- return (
113+ let command =
79114 `mvn archetype:generate -B ` +
80115 `-DarchetypeGroupId="${ MAVEN_ARCHETYPE_GROUP_ID } " ` +
81116 `-DarchetypeArtifactId="${ mavenFramework } " ` +
82- `-DarchetypeVersion="${ MAVEN_ARCHETYPE_VERSION } " ` +
117+ `-DarchetypeVersion="${ version } " ` +
83118 `-DgroupId="${ MAVEN_ARCHETYPE_GROUP_ID } " ` +
84- `-DartifactId="${ MAVEN_ARCHETYPE_ARTIFACT_ID } " ` +
85- `-Dversion="${ MAVEN_ARCHETYPE_VERSION } " ` +
119+ `-DartifactId="${ mavenFramework } " ` +
120+ `-Dversion="${ version } " ` +
86121 `-DBROWSERSTACK_USERNAME="${ username } " ` +
87- `-DBROWSERSTACK_ACCESS_KEY="${ accessKey } " ` +
88- `-DBROWSERSTACK_FRAMEWORK="${ framework } "`
89- ) ;
122+ `-DBROWSERSTACK_ACCESS_KEY="${ accessKey } "` ;
123+
124+ // Add framework parameter for browserstack-sdk-archetype-integrate
125+ if ( mavenFramework === "browserstack-sdk-archetype-integrate" ) {
126+ command += ` -DBROWSERSTACK_FRAMEWORK="${ framework } "` ;
127+ }
128+
129+ // Add app path if provided
130+ if ( appPath ) {
131+ command += ` -DBROWSERSTACK_APP="${ appPath } "` ;
132+ }
133+
134+ return command ;
90135}
91136
92137export function getJavaSDKCommand (
@@ -98,29 +143,28 @@ export function getJavaSDKCommand(
98143 const { isWindows = false , getPlatformLabel } = PLATFORM_UTILS || { } ;
99144
100145 const mavenFramework = getJavaAppFrameworkForMaven ( framework ) ;
146+ const version = getJavaAppFrameworkVersion ( framework ) ;
101147
102148 let mavenCommand : string ;
103149
104150 if ( isWindows ) {
105151 mavenCommand = getMavenCommandForWindows (
106152 framework ,
107153 mavenFramework ,
154+ version ,
108155 username ,
109156 accessKey ,
157+ appPath ,
110158 ) ;
111- if ( appPath ) {
112- mavenCommand += ` -DBROWSERSTACK_APP="${ appPath } "` ;
113- }
114159 } else {
115160 mavenCommand = getMavenCommandForUnix (
116161 framework ,
117162 mavenFramework ,
163+ version ,
118164 username ,
119165 accessKey ,
166+ appPath ,
120167 ) ;
121- if ( appPath ) {
122- mavenCommand += ` -DBROWSERSTACK_APP="${ appPath } "` ;
123- }
124168 }
125169
126170 const envStep = createEnvStep (
@@ -133,13 +177,21 @@ export function getJavaSDKCommand(
133177 const mavenStep = createStep (
134178 "Install BrowserStack SDK using Maven Archetype for App Automate" ,
135179 `Maven command for ${ framework } (${ getPlatformLabel ( ) } ):
136- \`\`\`bash
137- ${ mavenCommand }
138- \`\`\`
180+ \`\`\`bash
181+ ${ mavenCommand }
182+ \`\`\`
183+
184+ Alternative setup for Gradle users:
185+ ${ GRADLE_APP_SETUP_INSTRUCTIONS } ` ,
186+ ) ;
139187
140- Alternative setup for Gradle users:
141- ${ GRADLE_APP_SETUP_INSTRUCTIONS } `,
188+ const argsLineStep = createStep (
189+ "Verifying dependency and argsLine" ,
190+ `Verify browserstack-java-sdk with LATEST is added as dependency and add this line in pom.xml if not added:
191+ \`\`\`xml
192+ <argLine>-javaagent:"\${com.browserstack:browserstack-java-sdk:jar}"</argLine>
193+ \`\`\`` ,
142194 ) ;
143195
144- return combineInstructions ( envStep , mavenStep ) ;
196+ return combineInstructions ( envStep , mavenStep , argsLineStep ) ;
145197}
0 commit comments