1
+ load ("//common/private:selenium_test.bzl" , "BROWSERS" , "DEFAULT_BROWSER" , "selenium_test" )
1
2
load (":package.bzl" , "package_name" )
2
3
3
4
def _test_class_name (src_file ):
@@ -62,23 +63,25 @@ _test_attrs = [
62
63
"use_testrunner" ,
63
64
]
64
65
65
- def java_test_suite (
66
+ def _suite_name (name , suite_name ):
67
+ if not suite_name :
68
+ return "" .join ([p .capitalize () for p in name .replace ("-" , " " ).replace ("_" , " " ).split (" " )])
69
+ return suite_name
70
+
71
+ def _generate_common_targets (
66
72
name ,
73
+ size ,
74
+ suite_name ,
67
75
srcs ,
68
- size = None ,
69
- suite_name = None ,
70
- test_identifiers = ["Test.java" ],
71
- deps = [],
72
- tags = [],
76
+ deps ,
77
+ tags ,
78
+ test_identifiers ,
73
79
** kwargs ):
74
- if not suite_name :
75
- suite_name = "" .join ([p .capitalize () for p in name .replace ("-" , " " ).replace ("_" , " " ).split (" " )])
80
+ suite_name = _suite_name (name , suite_name )
76
81
77
82
pkg = package_name ()
78
83
test_classes = [pkg + src [:- len (".java" )].replace ("/" , "." ) for src in srcs if _matches (test_identifiers , src )]
79
84
80
- additional_tags = [] if size == "small" else ["no-sandbox" ]
81
-
82
85
libargs = {}
83
86
for (key , value ) in kwargs .items ():
84
87
if key not in _test_attrs :
@@ -101,6 +104,32 @@ def java_test_suite(
101
104
test_classes = test_classes ,
102
105
)
103
106
107
+
108
+ def java_test_suite (
109
+ name ,
110
+ srcs ,
111
+ size = None ,
112
+ suite_name = None ,
113
+ test_identifiers = ["Test.java" ],
114
+ deps = [],
115
+ tags = [],
116
+ ** kwargs ):
117
+ suite_name = _suite_name (name , suite_name )
118
+ pkg = package_name ()
119
+ test_classes = [pkg + src [:- len (".java" )].replace ("/" , "." ) for src in srcs if _matches (test_identifiers , src )]
120
+ additional_tags = [] if size == "small" else ["no-sandbox" ]
121
+
122
+ _generate_common_targets (
123
+ name ,
124
+ size ,
125
+ suite_name ,
126
+ srcs ,
127
+ deps ,
128
+ tags ,
129
+ test_identifiers ,
130
+ ** kwargs ,
131
+ )
132
+
104
133
# Skip linting for the generated test suite
105
134
native .java_test (
106
135
name = name ,
@@ -112,3 +141,43 @@ def java_test_suite(
112
141
tags = tags + additional_tags ,
113
142
** kwargs ,
114
143
)
144
+
145
+ def java_selenium_test_suite (
146
+ name ,
147
+ browsers = BROWSERS .keys (),
148
+ srcs = None ,
149
+ test_identifiers = ["Test.java" ],
150
+ deps = None ,
151
+ data = [],
152
+ jvm_flags = [],
153
+ tags = [],
154
+ ** kwargs ):
155
+ suite_name = _suite_name (name , None )
156
+ pkg = package_name ()
157
+ test_classes = [pkg + src [:- len (".java" )].replace ("/" , "." ) for src in srcs if _matches (test_identifiers , src )]
158
+
159
+ amended_flags = {k : v for (k , v ) in kwargs .items () if k != "size" }
160
+
161
+ _generate_common_targets (
162
+ name ,
163
+ "large" ,
164
+ suite_name ,
165
+ srcs ,
166
+ deps ,
167
+ tags ,
168
+ test_identifiers ,
169
+ ** amended_flags
170
+ )
171
+
172
+ selenium_test (
173
+ name = name ,
174
+ test_class = pkg + suite_name ,
175
+ browsers = browsers ,
176
+ size = "large" ,
177
+ srcs = [":%s-suite-src" % name ],
178
+ deps = deps + ["%s-suite-lib" % name ],
179
+ shard_count = len (srcs ),
180
+ data = data ,
181
+ jvm_flags = jvm_flags ,
182
+ tags = tags
183
+ )
0 commit comments