blob: 4d26d394016e3b92c8ea85306528b7422ddf8981 [file] [log] [blame]
load("@aspect_bazel_lib//lib:copy_to_bin.bzl", "copy_to_bin")
load("@aspect_rules_js//js:defs.bzl", "js_library")
load("@aspect_rules_js//npm:defs.bzl", "npm_package")
load("@npm//:defs.bzl", "npm_link_all_packages")
load("@npm//javascript/selenium-webdriver:eslint/package_json.bzl", eslint_bin = "bin")
load("@npm//javascript/selenium-webdriver:prettier/package_json.bzl", prettier_bin = "bin")
load("@rules_pkg//pkg:pkg.bzl", "pkg_tar")
load("//common:defs.bzl", "copy_file")
load("//javascript:defs.bzl", "mocha_test")
load("//javascript/private:browsers.bzl", "BROWSERS")
npm_link_all_packages(name = "node_modules")
VERSION = "4.32.0"
BROWSER_VERSIONS = [
"v134",
"v135",
"v136",
]
js_library(
name = "prod-src-files",
srcs = [
"CHANGES.md",
"README.md",
"package.json",
] + glob([
"*.js",
"example/*.js",
"http/*.js",
"io/*.js",
"lib/*.js",
"lib/fedcm/*.js",
"net/*.js",
"remote/*.js",
"testing/*.js",
"devtools/*.js",
"common/*.js",
"bidi/*.js",
"bidi/external/*.js",
]),
deps = [
":node_modules/@bazel/runfiles",
":node_modules/jszip",
":node_modules/tmp",
":node_modules/ws",
],
)
npm_package(
name = "selenium-webdriver",
srcs = [
":license",
":manager-linux",
":manager-macos",
":manager-windows",
":prod-src-files",
"//javascript/selenium-webdriver/lib/atoms:bidi-mutation-listener",
"//javascript/selenium-webdriver/lib/atoms:find-elements",
"//javascript/selenium-webdriver/lib/atoms:get_attribute",
"//javascript/selenium-webdriver/lib/atoms:is_displayed",
"//javascript/selenium-webdriver/lib/atoms:mutation-listener",
],
package = "selenium-webdriver",
publishable = True,
tags = [
"release-artifact",
],
version = VERSION,
visibility = ["//visibility:public"],
)
pkg_tar(
name = "selenium-webdriver.tgz",
srcs = [
":selenium-webdriver",
],
out = "selenium-webdriver-%s.tgz" % VERSION,
extension = "tgz",
package_dir = "package",
strip_prefix = "selenium-webdriver",
)
SMALL_TESTS = [
"test/io/io_test.js",
"test/io/zip_test.js",
"test/lib/by_test.js",
"test/lib/credentials_test.js",
"test/lib/error_test.js",
"test/lib/http_test.js",
"test/lib/input_test.js",
"test/lib/logging_test.js",
"test/lib/promise_test.js",
"test/lib/until_test.js",
"test/lib/virtualauthenticatoroptions_test.js",
"test/lib/webdriver_test.js",
"test/net/index_test.js",
"test/net/portprober_test.js",
]
LARGE_TESTS = glob(
["test/**/*_test.js"],
exclude = SMALL_TESTS,
)
js_library(
name = "small-test-srcs",
srcs = SMALL_TESTS,
)
js_library(
name = "large-test-srcs",
srcs = LARGE_TESTS,
)
js_library(
name = "test-data",
srcs = glob(
[
"lib/test/**",
"test/**",
],
exclude = [
"test/**/*_test.js",
],
),
deps = [
":node_modules/@bazel/runfiles",
],
)
mocha_test(
name = "small-tests",
size = "small",
args = ["./**/*test.js"],
chdir = package_name(),
data = [
":node_modules/@bazel/runfiles",
":node_modules/mocha",
":node_modules/mocha-junit-reporter",
":node_modules/sinon",
":small-test-srcs",
":test-data",
"//:node_modules/selenium-webdriver",
"//common/extensions:js-lib",
"//common/src/web:js-lib",
],
)
[
[
mocha_test(
name = "%s-%s" % (
test.replace("/", "-").replace("_", "-"),
browser,
),
size = "large",
args = [
"--retries",
"1",
test,
],
chdir = package_name(),
data = [
":large-test-srcs",
":node_modules/express",
":node_modules/mocha",
":node_modules/mocha-junit-reporter",
":node_modules/multer",
":node_modules/serve-index",
":node_modules/sinon",
":test-data",
"//:node_modules/selenium-webdriver",
"//common/extensions:js-lib",
"//common/src/web:js-lib",
] + BROWSERS[browser]["data"],
env = {
"SELENIUM_BROWSER": browser,
} | BROWSERS[browser]["env"],
tags = [
browser,
"browser-test",
"no-sandbox",
"requires-network",
],
),
]
for test in LARGE_TESTS
for browser in BROWSERS.keys()
]
# npm_package does not pick up filegroup sources.
genrule(
name = "license",
srcs = ["//:license"],
outs = [
"LICENSE",
"NOTICE",
],
cmd = "cp $(locations //:license) $(@D)",
)
copy_file(
name = "manager-linux",
src = "//common/manager:selenium-manager-linux",
out = "bin/linux/selenium-manager",
)
copy_file(
name = "manager-macos",
src = "//common/manager:selenium-manager-macos",
out = "bin/macos/selenium-manager",
)
copy_file(
name = "manager-windows",
src = "//common/manager:selenium-manager-windows",
out = "bin/windows/selenium-manager.exe",
)
copy_to_bin(
name = "package-json",
srcs = ["package.json"],
)
eslint_bin.eslint_test(
name = "eslint-test",
chdir = package_name(),
data = [
":eslint-config",
":node_modules/@eslint/js",
":node_modules/eslint-plugin-mocha",
":node_modules/eslint-plugin-n",
":node_modules/eslint-plugin-no-only-tests",
":node_modules/eslint-plugin-prettier",
":node_modules/globals",
":node_modules/jszip",
":node_modules/mocha",
":node_modules/tmp",
":node_modules/ws",
":package-json",
":prod-src-files",
],
tags = [
"lint",
],
)
copy_to_bin(
name = "eslint-config",
srcs = ["eslint.config.js"],
)
prettier_bin.prettier_test(
name = "prettier-test",
args = [
".",
"--check",
"--ignore-unknown",
"--config=.prettierrc",
],
chdir = package_name(),
data = [
":large-test-srcs",
":prettier-config",
":prettier-ignore",
":prod-src-files",
":small-test-srcs",
],
tags = [
"lint",
],
)
copy_to_bin(
name = "prettier-config",
srcs = [".prettierrc"],
)
copy_to_bin(
name = "prettier-ignore",
srcs = [".prettierignore"],
)