Path: blob/trunk/javascript/selenium-webdriver/BUILD.bazel
2884 views
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.35.0-nightly202506301117" BROWSER_VERSIONS = [ "v137", "v138", "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"], )