@@ -11,15 +11,32 @@ export const MAVEN_ARCHETYPE_GROUP_ID = "com.browserstack";
11
11
export const MAVEN_ARCHETYPE_ARTIFACT_ID = "junit-archetype-integrate" ;
12
12
export const MAVEN_ARCHETYPE_VERSION = "1.0" ;
13
13
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
+
14
28
// Framework mapping for Java Maven archetype generation for App Automate
15
29
export const JAVA_APP_FRAMEWORK_MAP : Record < string , string > = {
16
- testng : "browserstack-sdk -archetype-integrate" ,
30
+ testng : "testng -archetype-integrate" ,
17
31
junit5 : "browserstack-sdk-archetype-integrate" ,
18
32
selenide : "selenide-archetype-integrate" ,
19
33
jbehave : "browserstack-sdk-archetype-integrate" ,
34
+ junit4 : "browserstack-sdk-archetype-integrate" ,
20
35
cucumberTestng : "browserstack-sdk-archetype-integrate" ,
21
36
cucumberJunit4 : "browserstack-sdk-archetype-integrate" ,
22
37
cucumberJunit5 : "browserstack-sdk-archetype-integrate" ,
38
+ cucumber : "browserstack-sdk-archetype-integrate" ,
39
+ serenity : "browserstack-sdk-archetype-integrate" ,
23
40
} ;
24
41
25
42
// Common Gradle setup instructions for App Automate (platform-independent)
@@ -49,44 +66,72 @@ export function getJavaAppFrameworkForMaven(framework: string): string {
49
66
return JAVA_APP_FRAMEWORK_MAP [ framework ] || framework ;
50
67
}
51
68
69
+ export function getJavaAppFrameworkVersion ( framework : string ) : string {
70
+ return JAVA_APP_FRAMEWORK_VERSION_MAP [ framework ] || MAVEN_ARCHETYPE_VERSION ;
71
+ }
72
+
52
73
function getMavenCommandForWindows (
53
74
framework : string ,
54
75
mavenFramework : string ,
76
+ version : string ,
55
77
username : string ,
56
78
accessKey : string ,
79
+ appPath ?: string ,
57
80
) : string {
58
- return (
81
+ let command =
59
82
`mvn archetype:generate -B ` +
60
83
`-DarchetypeGroupId="${ MAVEN_ARCHETYPE_GROUP_ID } " ` +
61
84
`-DarchetypeArtifactId="${ mavenFramework } " ` +
62
- `-DarchetypeVersion="${ MAVEN_ARCHETYPE_VERSION } " ` +
85
+ `-DarchetypeVersion="${ version } " ` +
63
86
`-DgroupId="${ MAVEN_ARCHETYPE_GROUP_ID } " ` +
64
- `-DartifactId="${ MAVEN_ARCHETYPE_ARTIFACT_ID } " ` +
65
- `-Dversion="${ MAVEN_ARCHETYPE_VERSION } " ` +
87
+ `-DartifactId="${ mavenFramework } " ` +
88
+ `-Dversion="${ version } " ` +
66
89
`-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 ;
70
103
}
71
104
72
105
function getMavenCommandForUnix (
73
106
framework : string ,
74
107
mavenFramework : string ,
108
+ version : string ,
75
109
username : string ,
76
110
accessKey : string ,
111
+ appPath ?: string ,
77
112
) : string {
78
- return (
113
+ let command =
79
114
`mvn archetype:generate -B ` +
80
115
`-DarchetypeGroupId="${ MAVEN_ARCHETYPE_GROUP_ID } " ` +
81
116
`-DarchetypeArtifactId="${ mavenFramework } " ` +
82
- `-DarchetypeVersion="${ MAVEN_ARCHETYPE_VERSION } " ` +
117
+ `-DarchetypeVersion="${ version } " ` +
83
118
`-DgroupId="${ MAVEN_ARCHETYPE_GROUP_ID } " ` +
84
- `-DartifactId="${ MAVEN_ARCHETYPE_ARTIFACT_ID } " ` +
85
- `-Dversion="${ MAVEN_ARCHETYPE_VERSION } " ` +
119
+ `-DartifactId="${ mavenFramework } " ` +
120
+ `-Dversion="${ version } " ` +
86
121
`-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 ;
90
135
}
91
136
92
137
export function getJavaSDKCommand (
@@ -98,29 +143,28 @@ export function getJavaSDKCommand(
98
143
const { isWindows = false , getPlatformLabel } = PLATFORM_UTILS || { } ;
99
144
100
145
const mavenFramework = getJavaAppFrameworkForMaven ( framework ) ;
146
+ const version = getJavaAppFrameworkVersion ( framework ) ;
101
147
102
148
let mavenCommand : string ;
103
149
104
150
if ( isWindows ) {
105
151
mavenCommand = getMavenCommandForWindows (
106
152
framework ,
107
153
mavenFramework ,
154
+ version ,
108
155
username ,
109
156
accessKey ,
157
+ appPath ,
110
158
) ;
111
- if ( appPath ) {
112
- mavenCommand += ` -DBROWSERSTACK_APP="${ appPath } "` ;
113
- }
114
159
} else {
115
160
mavenCommand = getMavenCommandForUnix (
116
161
framework ,
117
162
mavenFramework ,
163
+ version ,
118
164
username ,
119
165
accessKey ,
166
+ appPath ,
120
167
) ;
121
- if ( appPath ) {
122
- mavenCommand += ` -DBROWSERSTACK_APP="${ appPath } "` ;
123
- }
124
168
}
125
169
126
170
const envStep = createEnvStep (
@@ -133,13 +177,21 @@ export function getJavaSDKCommand(
133
177
const mavenStep = createStep (
134
178
"Install BrowserStack SDK using Maven Archetype for App Automate" ,
135
179
`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
+ ) ;
139
187
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
+ \`\`\`` ,
142
194
) ;
143
195
144
- return combineInstructions ( envStep , mavenStep ) ;
196
+ return combineInstructions ( envStep , mavenStep , argsLineStep ) ;
145
197
}
0 commit comments