@@ -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,74 @@ 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 } "`
90
+ `-DBROWSERSTACK_ACCESS_KEY="${ accessKey } "`
69
91
) ;
92
+
93
+ // Add framework parameter for browserstack-sdk-archetype-integrate
94
+ if ( mavenFramework === "browserstack-sdk-archetype-integrate" ) {
95
+ command += ` -DBROWSERSTACK_FRAMEWORK="${ framework } "` ;
96
+ }
97
+
98
+ // Add app path if provided
99
+ if ( appPath ) {
100
+ command += ` -DBROWSERSTACK_APP="${ appPath } "` ;
101
+ }
102
+
103
+ return command ;
70
104
}
71
105
72
106
function getMavenCommandForUnix (
73
107
framework : string ,
74
108
mavenFramework : string ,
109
+ version : string ,
75
110
username : string ,
76
111
accessKey : string ,
112
+ appPath ?: string ,
77
113
) : string {
78
- return (
114
+ let command = (
79
115
`mvn archetype:generate -B ` +
80
116
`-DarchetypeGroupId="${ MAVEN_ARCHETYPE_GROUP_ID } " ` +
81
117
`-DarchetypeArtifactId="${ mavenFramework } " ` +
82
- `-DarchetypeVersion="${ MAVEN_ARCHETYPE_VERSION } " ` +
118
+ `-DarchetypeVersion="${ version } " ` +
83
119
`-DgroupId="${ MAVEN_ARCHETYPE_GROUP_ID } " ` +
84
- `-DartifactId="${ MAVEN_ARCHETYPE_ARTIFACT_ID } " ` +
85
- `-Dversion="${ MAVEN_ARCHETYPE_VERSION } " ` +
120
+ `-DartifactId="${ mavenFramework } " ` +
121
+ `-Dversion="${ version } " ` +
86
122
`-DBROWSERSTACK_USERNAME="${ username } " ` +
87
- `-DBROWSERSTACK_ACCESS_KEY="${ accessKey } " ` +
88
- `-DBROWSERSTACK_FRAMEWORK="${ framework } "`
123
+ `-DBROWSERSTACK_ACCESS_KEY="${ accessKey } "`
89
124
) ;
125
+
126
+ // Add framework parameter for browserstack-sdk-archetype-integrate
127
+ if ( mavenFramework === "browserstack-sdk-archetype-integrate" ) {
128
+ command += ` -DBROWSERSTACK_FRAMEWORK="${ framework } "` ;
129
+ }
130
+
131
+ // Add app path if provided
132
+ if ( appPath ) {
133
+ command += ` -DBROWSERSTACK_APP="${ appPath } "` ;
134
+ }
135
+
136
+ return command ;
90
137
}
91
138
92
139
export function getJavaSDKCommand (
@@ -98,29 +145,28 @@ export function getJavaSDKCommand(
98
145
const { isWindows = false , getPlatformLabel } = PLATFORM_UTILS || { } ;
99
146
100
147
const mavenFramework = getJavaAppFrameworkForMaven ( framework ) ;
148
+ const version = getJavaAppFrameworkVersion ( framework ) ;
101
149
102
150
let mavenCommand : string ;
103
151
104
152
if ( isWindows ) {
105
153
mavenCommand = getMavenCommandForWindows (
106
154
framework ,
107
155
mavenFramework ,
156
+ version ,
108
157
username ,
109
158
accessKey ,
159
+ appPath ,
110
160
) ;
111
- if ( appPath ) {
112
- mavenCommand += ` -DBROWSERSTACK_APP="${ appPath } "` ;
113
- }
114
161
} else {
115
162
mavenCommand = getMavenCommandForUnix (
116
163
framework ,
117
164
mavenFramework ,
165
+ version ,
118
166
username ,
119
167
accessKey ,
168
+ appPath ,
120
169
) ;
121
- if ( appPath ) {
122
- mavenCommand += ` -DBROWSERSTACK_APP="${ appPath } "` ;
123
- }
124
170
}
125
171
126
172
const envStep = createEnvStep (
0 commit comments