2020-12-01 16:37:01 +00:00
|
|
|
load(
|
2021-03-15 15:38:24 +00:00
|
|
|
"//common:browsers.bzl",
|
2021-03-15 16:31:32 +00:00
|
|
|
"COMMON_TAGS",
|
2026-01-08 12:31:06 -06:00
|
|
|
"chrome_beta_data",
|
2021-01-19 10:23:10 +00:00
|
|
|
"chrome_data",
|
|
|
|
|
"edge_data",
|
2023-09-19 16:18:13 +02:00
|
|
|
"firefox_beta_data",
|
2021-01-19 10:23:10 +00:00
|
|
|
"firefox_data",
|
2021-03-15 15:38:24 +00:00
|
|
|
)
|
|
|
|
|
load(
|
|
|
|
|
"//java:browsers.bzl",
|
2026-01-08 12:31:06 -06:00
|
|
|
"chrome_beta_jvm_flags",
|
2021-03-15 15:38:24 +00:00
|
|
|
"chrome_jvm_flags",
|
|
|
|
|
"edge_jvm_flags",
|
2023-09-19 16:18:13 +02:00
|
|
|
"firefox_beta_jvm_flags",
|
2021-01-19 10:23:10 +00:00
|
|
|
"firefox_jvm_flags",
|
|
|
|
|
)
|
2023-10-09 18:04:52 +01:00
|
|
|
load(":junit5_test.bzl", "junit5_test")
|
2020-12-01 16:37:01 +00:00
|
|
|
|
2020-11-30 13:30:00 +00:00
|
|
|
DEFAULT_BROWSER = "firefox"
|
2020-03-31 15:11:14 +01:00
|
|
|
|
2020-11-30 13:30:00 +00:00
|
|
|
BROWSERS = {
|
2020-03-31 15:11:14 +01:00
|
|
|
"chrome": {
|
2021-08-03 17:39:24 +03:00
|
|
|
"deps": ["//java/src/org/openqa/selenium/chrome"],
|
2020-12-01 16:37:01 +00:00
|
|
|
"jvm_flags": ["-Dselenium.browser=chrome"] + chrome_jvm_flags,
|
|
|
|
|
"data": chrome_data,
|
2021-03-15 16:31:32 +00:00
|
|
|
"tags": COMMON_TAGS + ["chrome"],
|
2020-03-31 15:11:14 +01:00
|
|
|
},
|
2026-01-08 12:31:06 -06:00
|
|
|
"chrome-beta": {
|
|
|
|
|
"deps": ["//java/src/org/openqa/selenium/chrome"],
|
|
|
|
|
"jvm_flags": ["-Dselenium.browser=chrome"] + chrome_beta_jvm_flags,
|
|
|
|
|
"data": chrome_beta_data,
|
|
|
|
|
"tags": COMMON_TAGS + ["chrome", "chrome-beta"],
|
|
|
|
|
},
|
2020-03-31 15:11:14 +01:00
|
|
|
"edge": {
|
2021-08-03 17:39:24 +03:00
|
|
|
"deps": ["//java/src/org/openqa/selenium/edge"],
|
2020-12-01 16:37:01 +00:00
|
|
|
"jvm_flags": ["-Dselenium.browser=edge"] + edge_jvm_flags,
|
|
|
|
|
"data": edge_data,
|
2024-03-15 11:26:40 -07:00
|
|
|
"tags": COMMON_TAGS + ["edge"],
|
2020-03-31 15:11:14 +01:00
|
|
|
},
|
|
|
|
|
"firefox": {
|
2021-08-03 17:39:24 +03:00
|
|
|
"deps": ["//java/src/org/openqa/selenium/firefox"],
|
2020-12-01 16:37:01 +00:00
|
|
|
"jvm_flags": ["-Dselenium.browser=ff"] + firefox_jvm_flags,
|
|
|
|
|
"data": firefox_data,
|
2021-03-15 16:31:32 +00:00
|
|
|
"tags": COMMON_TAGS + ["firefox"],
|
2020-03-31 15:11:14 +01:00
|
|
|
},
|
2023-09-19 16:18:13 +02:00
|
|
|
"firefox-beta": {
|
|
|
|
|
"deps": ["//java/src/org/openqa/selenium/firefox"],
|
|
|
|
|
"jvm_flags": ["-Dselenium.browser=ff"] + firefox_beta_jvm_flags,
|
|
|
|
|
"data": firefox_beta_data,
|
2023-10-30 21:12:48 -05:00
|
|
|
"tags": COMMON_TAGS + ["firefox", "firefox-beta"],
|
2023-09-19 16:18:13 +02:00
|
|
|
},
|
2020-03-31 15:11:14 +01:00
|
|
|
"ie": {
|
2021-08-03 17:39:24 +03:00
|
|
|
"deps": ["//java/src/org/openqa/selenium/ie"],
|
2020-03-31 15:11:14 +01:00
|
|
|
"jvm_flags": ["-Dselenium.browser=ie"] +
|
2020-05-14 17:30:31 +01:00
|
|
|
select({
|
2021-02-23 08:40:45 +00:00
|
|
|
"@selenium//common:windows": ["-Dselenium.skiptest=false"],
|
|
|
|
|
"@selenium//conditions:default": ["-Dselenium.skiptest=true"],
|
2020-05-14 17:30:31 +01:00
|
|
|
}),
|
2020-12-01 16:37:01 +00:00
|
|
|
"data": [],
|
2025-03-21 20:51:16 -07:00
|
|
|
"tags": COMMON_TAGS + ["exclusive-if-local", "ie", "skip-rbe"],
|
2020-03-31 15:11:14 +01:00
|
|
|
},
|
|
|
|
|
"safari": {
|
2021-08-03 17:39:24 +03:00
|
|
|
"deps": ["//java/src/org/openqa/selenium/safari"],
|
2020-03-31 15:11:14 +01:00
|
|
|
"jvm_flags": ["-Dselenium.browser=safari"] +
|
2020-05-14 17:30:31 +01:00
|
|
|
select({
|
2021-02-23 08:40:45 +00:00
|
|
|
"@selenium//common:macos": ["-Dselenium.skiptest=false"],
|
|
|
|
|
"@selenium//conditions:default": ["-Dselenium.skiptest=true"],
|
2020-05-14 17:30:31 +01:00
|
|
|
}),
|
2020-12-01 16:37:01 +00:00
|
|
|
"data": [],
|
2025-03-21 20:51:16 -07:00
|
|
|
"tags": COMMON_TAGS + ["exclusive-if-local", "safari", "skip-rbe"],
|
2020-03-31 15:11:14 +01:00
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
2023-06-06 04:35:03 +01:00
|
|
|
DEFAULT_BROWSERS = [b for b in BROWSERS.keys() if b != "ie"]
|
|
|
|
|
|
|
|
|
|
def selenium_test(name, test_class, size = "medium", browsers = DEFAULT_BROWSERS, **kwargs):
|
2020-03-31 15:11:14 +01:00
|
|
|
if len(browsers) == 0:
|
|
|
|
|
fail("At least one browser must be specified.")
|
|
|
|
|
|
2020-11-30 13:30:00 +00:00
|
|
|
default_browser = DEFAULT_BROWSER if DEFAULT_BROWSER in browsers else browsers[0]
|
2020-03-31 15:11:14 +01:00
|
|
|
|
|
|
|
|
test_name = test_class.rpartition(".")[2]
|
|
|
|
|
|
2020-10-06 12:47:12 +01:00
|
|
|
data = kwargs["data"] if "data" in kwargs else []
|
2020-03-31 15:11:14 +01:00
|
|
|
jvm_flags = kwargs["jvm_flags"] if "jvm_flags" in kwargs else []
|
|
|
|
|
tags = kwargs["tags"] if "tags" in kwargs else []
|
|
|
|
|
|
2023-05-02 08:16:23 -07:00
|
|
|
remote = False
|
|
|
|
|
if "selenium-remote" in tags:
|
|
|
|
|
tags.remove("selenium-remote")
|
|
|
|
|
remote = True
|
|
|
|
|
|
2020-03-31 15:11:14 +01:00
|
|
|
stripped_args = dict(**kwargs)
|
2020-10-06 12:47:12 +01:00
|
|
|
stripped_args.pop("data", None)
|
2020-03-31 15:11:14 +01:00
|
|
|
stripped_args.pop("jvm_flags", None)
|
|
|
|
|
stripped_args.pop("tags", None)
|
2023-06-05 21:16:59 +01:00
|
|
|
inherited_env = stripped_args.pop("env_inherit", []) + ["REMOTE_BUILD"]
|
2020-03-31 15:11:14 +01:00
|
|
|
|
2022-07-05 15:26:50 +01:00
|
|
|
all_tests = []
|
|
|
|
|
|
2020-03-31 15:11:14 +01:00
|
|
|
for browser in browsers:
|
2020-11-30 13:30:00 +00:00
|
|
|
if not browser in BROWSERS:
|
2020-03-31 15:11:14 +01:00
|
|
|
fail("Unrecognized browser: " + browser)
|
|
|
|
|
|
2021-03-16 16:25:12 +00:00
|
|
|
test = name if browser == default_browser else "%s-%s" % (name, browser)
|
2020-03-31 15:11:14 +01:00
|
|
|
|
2023-10-09 18:04:52 +01:00
|
|
|
junit5_test(
|
2020-03-31 15:11:14 +01:00
|
|
|
name = test,
|
|
|
|
|
test_class = test_class,
|
|
|
|
|
size = size,
|
2020-11-30 13:30:00 +00:00
|
|
|
jvm_flags = BROWSERS[browser]["jvm_flags"] + jvm_flags,
|
2022-06-22 11:28:58 +02:00
|
|
|
# Only allow linting on the default test
|
|
|
|
|
tags = BROWSERS[browser]["tags"] + tags + ([] if test == name else ["no-lint"]),
|
2020-12-01 16:37:01 +00:00
|
|
|
data = BROWSERS[browser]["data"] + data,
|
2023-06-05 21:16:59 +01:00
|
|
|
env_inherit = inherited_env,
|
2020-05-14 17:30:31 +01:00
|
|
|
**stripped_args
|
2020-03-31 15:11:14 +01:00
|
|
|
)
|
2022-07-05 15:26:50 +01:00
|
|
|
if browser == default_browser:
|
|
|
|
|
native.alias(
|
|
|
|
|
name = "%s-%s" % (name, browser),
|
|
|
|
|
actual = test,
|
|
|
|
|
)
|
|
|
|
|
all_tests.append(":%s" % test)
|
2020-07-21 18:35:28 +01:00
|
|
|
|
2023-05-02 08:16:23 -07:00
|
|
|
if remote:
|
2023-10-09 18:04:52 +01:00
|
|
|
junit5_test(
|
2020-07-21 18:35:28 +01:00
|
|
|
name = "%s-remote" % test,
|
|
|
|
|
test_class = test_class,
|
|
|
|
|
size = size,
|
2020-11-30 13:30:00 +00:00
|
|
|
jvm_flags = BROWSERS[browser]["jvm_flags"] + jvm_flags + [
|
2020-07-21 18:35:28 +01:00
|
|
|
"-Dselenium.browser.remote=true",
|
|
|
|
|
],
|
2022-06-23 13:51:40 +02:00
|
|
|
# No need to lint remote tests as the code for non-remote is the same and they get linted
|
2026-01-14 12:28:21 -06:00
|
|
|
tags = BROWSERS[browser]["tags"] + tags + ["remote", "%s-remote" % browser, "no-lint"],
|
2020-12-01 16:37:01 +00:00
|
|
|
data = BROWSERS[browser]["data"] + data + [
|
2023-08-01 17:54:46 +01:00
|
|
|
"@selenium//java/src/org/openqa/selenium/grid:selenium_server",
|
2020-07-21 18:35:28 +01:00
|
|
|
],
|
|
|
|
|
**stripped_args
|
|
|
|
|
)
|
2022-07-05 15:26:50 +01:00
|
|
|
all_tests.append(":%s-remote" % test)
|
2020-07-21 18:35:28 +01:00
|
|
|
|
2020-11-30 13:30:00 +00:00
|
|
|
# Handy way to run everything
|
2022-07-05 15:26:50 +01:00
|
|
|
native.test_suite(name = "%s-all-browsers" % name, tests = all_tests, tags = tags + ["manual"])
|