diff --git a/.bazelrc b/.bazelrc index 4c9ebcfd307a6..281fcd02ad7d5 100644 --- a/.bazelrc +++ b/.bazelrc @@ -39,6 +39,8 @@ build --nobuild_runfile_links # More JS magic build --experimental_allow_unresolved_symlinks +# Avoid a warning about directory tracking being unsound +startup --host_jvm_args=-DBAZEL_TRACK_SOURCE_DIRECTORIES=1 # Required for faster TS builds build --@aspect_rules_ts//ts:skipLibCheck=always diff --git a/.github/workflows/ci-javascript.yml b/.github/workflows/ci-javascript.yml deleted file mode 100644 index 38f61cd0911cf..0000000000000 --- a/.github/workflows/ci-javascript.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: CI - JavaScript - -on: - workflow_call: - workflow_dispatch: - -jobs: - build: - name: Build - uses: ./.github/workflows/bazel.yml - with: - name: Build - cache-key: javascript-build - run: bazel build //javascript/node/selenium-webdriver:selenium-webdriver - - browser-tests: - name: Browser Tests - needs: build - uses: ./.github/workflows/bazel.yml - strategy: - fail-fast: false - matrix: - browser: - - chrome - - firefox - with: - name: Browser Tests (${{ matrix.browser }}) - browser: ${{ matrix.browser }} - cache-key: javascript-${{matrix.browser}}-browser-tests - run: > - bazel test - --flaky_test_attempts 3 - --test_tag_filters ${{ matrix.browser }} - --local_test_jobs 1 - //javascript/node/... diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2df302b754c39..2175fe47d3b96 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -59,17 +59,6 @@ jobs: contains(join(github.event.commits.*.message), '[java]') || contains(github.event.pull_request.title, '[java]') - javascript: - name: JavaScript - needs: check - uses: ./.github/workflows/ci-javascript.yml - if: > - github.event_name == 'schedule' || - github.event_name == 'workflow_dispatch' || - contains(needs.check.outputs.targets, '//javascript') || - contains(join(github.event.commits.*.message), '[js]') || - contains(github.event.pull_request.title, '[js]') - python: name: Python needs: check diff --git a/.skipped-tests b/.skipped-tests index 67c89f8d55b35..16f00c9b99235 100644 --- a/.skipped-tests +++ b/.skipped-tests @@ -19,6 +19,14 @@ -//javascript/atoms:test-chrome -//javascript/atoms:test-edge -//javascript/atoms:test-firefox-beta +-//javascript/node/selenium-webdriver:test-bidi-network-test.js-chrome +-//javascript/node/selenium-webdriver:test-builder-test.js-chrome +-//javascript/node/selenium-webdriver:test-builder-test.js-firefox +-//javascript/node/selenium-webdriver:test-chrome-devtools-test.js-chrome +-//javascript/node/selenium-webdriver:test-chrome-options-test.js-chrome +-//javascript/node/selenium-webdriver:test-chrome-service-test.js-chrome +-//javascript/node/selenium-webdriver:test-firefox-options-test.js-firefox +-//javascript/node/selenium-webdriver:test-lib-capabilities-test.js-chrome -//py:test-chrome-test/selenium/webdriver/chrome/chrome_launcher_tests.py -//py:test-chrome-test/selenium/webdriver/chrome/chrome_service_tests.py -//py:test-chrome-test/selenium/webdriver/chrome/proxy_tests.py diff --git a/MODULE.bazel b/MODULE.bazel index b9e8069676731..924d14d81f2c2 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -39,7 +39,7 @@ linter.configure( linter.register(name = "rust-rustfmt") node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node") -node.toolchain(node_version = "18.17.0") +node.toolchain(node_version = "20.9.0") pnpm = use_extension("@aspect_rules_js//npm:extensions.bzl", "pnpm", dev_dependency = True) use_repo(pnpm, "pnpm") diff --git a/common/repositories.bzl b/common/repositories.bzl index 73e83e4939e6c..afdb1dde63012 100644 --- a/common/repositories.bzl +++ b/common/repositories.bzl @@ -202,7 +202,7 @@ js_library( url = "https://storage.googleapis.com/chrome-for-testing-public/126.0.6478.62/linux64/chrome-linux64.zip", sha256 = "6f42045c9134bdd3cfcea03fb54876ad061da998cabd624c92a25ac6811cd737", build_file_content = """ -load("@aspect_rules_js//js:defs.bzl", "js_library") +load("@aspect_bazel_lib//lib:copy_to_bin.bzl", "copy_to_bin") package(default_visibility = ["//visibility:public"]) filegroup( @@ -212,9 +212,9 @@ filegroup( exports_files(["chrome-linux64/chrome"]) -js_library( +copy_to_bin( name = "chrome-js", - data = [":files"], + srcs = [":files"], ) """, ) @@ -229,14 +229,14 @@ js_library( "mv 'Chrome.app/Contents/MacOS/Google Chrome for Testing' Chrome.app/Contents/MacOS/Chrome", ], build_file_content = """ -load("@aspect_rules_js//js:defs.bzl", "js_library") +load("@aspect_bazel_lib//lib:copy_to_bin.bzl", "copy_to_bin") package(default_visibility = ["//visibility:public"]) exports_files(["Chrome.app"]) -js_library( +copy_to_bin( name = "chrome-js", - data = glob(["Chrome.app/**/*"]), + srcs = glob(["Chrome.app/**/*"]), ) """, ) @@ -247,14 +247,14 @@ js_library( sha256 = "a304e692480c726bae846bf6dee36316305d0b8f4826dfafeab8d6bbbc6e7214", strip_prefix = "chromedriver-linux64", build_file_content = """ -load("@aspect_rules_js//js:defs.bzl", "js_library") +load("@aspect_bazel_lib//lib:copy_to_bin.bzl", "copy_to_bin") package(default_visibility = ["//visibility:public"]) exports_files(["chromedriver"]) -js_library( +copy_to_bin( name = "chromedriver-js", - data = ["chromedriver"], + srcs = ["chromedriver"], ) """, ) @@ -265,14 +265,14 @@ js_library( sha256 = "05665a6b5fb71141b5d519998e36f01b650f661942a56dd7f6b929896ae38333", strip_prefix = "chromedriver-mac-x64", build_file_content = """ -load("@aspect_rules_js//js:defs.bzl", "js_library") +load("@aspect_bazel_lib//lib:copy_to_bin.bzl", "copy_to_bin") package(default_visibility = ["//visibility:public"]) exports_files(["chromedriver"]) -js_library( +copy_to_bin( name = "chromedriver-js", - data = ["chromedriver"], + srcs = ["chromedriver"], ) """, ) diff --git a/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java b/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java index 11b758a56e469..9b153e92954c8 100644 --- a/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java +++ b/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java @@ -242,7 +242,7 @@ void canLocateNodesInAGivenSandbox() { String sharedId = (String) ((RemoteValue) sharedIdMap.get("sharedId")).getValue().get(); assertThat(sharedId).isEqualTo(nodeId); - } + } @AfterEach public void quitDriver() { diff --git a/javascript/node/selenium-webdriver/BUILD.bazel b/javascript/node/selenium-webdriver/BUILD.bazel index d1ad6fed7445b..bb9c42802c0fd 100644 --- a/javascript/node/selenium-webdriver/BUILD.bazel +++ b/javascript/node/selenium-webdriver/BUILD.bazel @@ -7,6 +7,7 @@ load("@npm//javascript/node/selenium-webdriver:prettier/package_json.bzl", prett 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") @@ -39,6 +40,7 @@ js_library( "bidi/*.js", ]), deps = [ + ":node_modules/@bazel/runfiles", ":node_modules/jszip", ":node_modules/tmp", ":node_modules/ws", @@ -117,6 +119,9 @@ js_library( "test/**/*_test.js", ], ), + deps = [ + ":node_modules/@bazel/runfiles", + ], ) mocha_test( @@ -152,41 +157,31 @@ mocha_test( ], chdir = package_name(), data = [ - "test-data", ":large-test-srcs", - ":node_modules/@bazel/runfiles", ":node_modules/express", - ":node_modules/jszip", + ":node_modules/mocha", + ":node_modules/mocha-junit-reporter", ":node_modules/multer", ":node_modules/serve-index", ":node_modules/sinon", - ":node_modules/tmp", - ":node_modules/ws", + ":test-data", "//:node_modules/selenium-webdriver", "//common/extensions:js-lib", "//common/src/web:js-lib", - "//javascript/node/selenium-webdriver/lib/atoms:find-elements", - "//javascript/node/selenium-webdriver/lib/atoms:get_attribute", - "//javascript/node/selenium-webdriver/lib/atoms:is_displayed", - "//javascript/node/selenium-webdriver/lib/atoms:mutation-listener", - ], + ] + BROWSERS[browser]["data"], env = { "SELENIUM_BROWSER": browser, - }, + } | BROWSERS[browser]["env"], tags = [ browser, "browser-test", "no-sandbox", "requires-network", - "skip-remote", ], ), ] for test in LARGE_TESTS - for browser in [ - "chrome", - "firefox", - ] + for browser in BROWSERS.keys() ] # npm_package does not pick up filegroup sources. diff --git a/javascript/node/selenium-webdriver/jsdoc_conf.json b/javascript/node/selenium-webdriver/jsdoc_conf.json index e639e1e88d9c9..210065d66e8a3 100644 --- a/javascript/node/selenium-webdriver/jsdoc_conf.json +++ b/javascript/node/selenium-webdriver/jsdoc_conf.json @@ -11,7 +11,7 @@ "destination": "../../../build/docs/api/javascript/", "recurse": true, "verbose": true, - "template": "../../../node_modules/clean-jsdoc-theme", + "template": "./node_modules/clean-jsdoc-theme", "theme_opts": { "default_theme": "dark", "displayModuleHeader": true, diff --git a/javascript/node/selenium-webdriver/lib/pinnedScript.js b/javascript/node/selenium-webdriver/lib/pinnedScript.js index 4a9c87442c718..6382f35ccabdf 100644 --- a/javascript/node/selenium-webdriver/lib/pinnedScript.js +++ b/javascript/node/selenium-webdriver/lib/pinnedScript.js @@ -20,6 +20,7 @@ const crypto = require('node:crypto') class PinnedScript { constructor(script) { this.scriptSource_ = script + // eslint-disable-next-line this.scriptHandle_ = crypto.randomUUID().replace(/-/gi, '') } diff --git a/javascript/node/selenium-webdriver/lib/test/httpserver.js b/javascript/node/selenium-webdriver/lib/test/httpserver.js index b9053ca7584a0..840c12cc4a732 100644 --- a/javascript/node/selenium-webdriver/lib/test/httpserver.js +++ b/javascript/node/selenium-webdriver/lib/test/httpserver.js @@ -21,9 +21,9 @@ const assert = require('node:assert') const http = require('node:http') const url = require('node:url') -const net = require('../../net') -const portprober = require('../../net/portprober') -const promise = require('../..').promise +const net = require('selenium-webdriver/net') +const portprober = require('selenium-webdriver/net/portprober') +const promise = require('selenium-webdriver').promise /** * Encapsulates a simple HTTP server for testing. The {@code onrequest} diff --git a/javascript/node/selenium-webdriver/lib/test/index.js b/javascript/node/selenium-webdriver/lib/test/index.js index 2edea2a62d57d..67fda84b23d4d 100644 --- a/javascript/node/selenium-webdriver/lib/test/index.js +++ b/javascript/node/selenium-webdriver/lib/test/index.js @@ -19,8 +19,8 @@ //const build = require('./build') const fileserver = require('./fileserver') -const logging = require('../../lib/logging') -const testing = require('../../testing') +const logging = require('selenium-webdriver/lib/logging') +const testing = require('selenium-webdriver/testing') //const NO_BUILD = /^1|true$/i.test(process.env['SELENIUM_NO_BUILD']) diff --git a/javascript/node/selenium-webdriver/lib/test/resources.js b/javascript/node/selenium-webdriver/lib/test/resources.js index a45f3ae0ac3b7..bb749ef7a405a 100644 --- a/javascript/node/selenium-webdriver/lib/test/resources.js +++ b/javascript/node/selenium-webdriver/lib/test/resources.js @@ -19,6 +19,7 @@ const fs = require('node:fs') const path = require('node:path') +const runfiles = require('@bazel/runfiles') const { projectRoot } = require('./build') // PUBLIC API @@ -31,8 +32,15 @@ const { projectRoot } = require('./build') */ exports.locate = function (filePath) { const fullPath = path.normalize(path.join(projectRoot(), filePath)) - if (!fs.existsSync(fullPath)) { - throw Error('File does not exist: ' + filePath) + if (fs.existsSync(fullPath)) { + return fullPath } - return fullPath + + try { + return runfiles.resolve(filePath) + } catch { + // Fall through + } + + throw Error('File does not exist: ' + filePath) } diff --git a/javascript/node/selenium-webdriver/package.json b/javascript/node/selenium-webdriver/package.json index 49777544de40d..2940ef5e865c6 100644 --- a/javascript/node/selenium-webdriver/package.json +++ b/javascript/node/selenium-webdriver/package.json @@ -23,12 +23,12 @@ "node": ">= 14.21.0" }, "dependencies": { + "@bazel/runfiles": "^5.8.1", "jszip": "^3.10.1", "tmp": "^0.2.3", "ws": "^8.17.1" }, "devDependencies": { - "@bazel/runfiles": "^5.8.1", "@eslint/js": "^9.5.0", "clean-jsdoc-theme": "^4.3.0", "eslint": "^9.5.0", @@ -39,19 +39,20 @@ "eslint-plugin-prettier": "^5.1.3", "express": "^4.19.2", "globals": "^15.6.0", + "has-flag": "^4.0.0", "jsdoc": "^4.0.3", "mocha": "^10.5.1", "mocha-junit-reporter": "^2.2.1", "multer": "1.4.5-lts.1", "prettier": "^3.3.2", "serve-index": "^1.9.1", - "sinon": "^17.0.1" + "sinon": "^17.0.1", + "supports-color": "^9.4.0" }, "scripts": { "lint": "eslint .", "lint:fix": "eslint . --fix", - "test": "npm run lint && mocha -t 600000 --recursive test", - "test-jasmine": "bazel test //javascript/node/selenium-webdriver:tests", + "test": "bazel test //javascript/node/selenium-webdriver/...", "generate-docs": "jsdoc --configure jsdoc_conf.json --verbose" }, "mocha": { diff --git a/javascript/node/selenium-webdriver/test/actions_test.js b/javascript/node/selenium-webdriver/test/actions_test.js index d069445e299da..e204b8ab4021a 100644 --- a/javascript/node/selenium-webdriver/test/actions_test.js +++ b/javascript/node/selenium-webdriver/test/actions_test.js @@ -20,8 +20,8 @@ const assert = require('node:assert') const fileServer = require('../lib/test/fileserver') const { ignore, Pages, suite } = require('../lib/test') -const { Key, Origin } = require('../lib/input') -const { Browser, By, until } = require('..') +const { Key, Origin } = require('selenium-webdriver/lib/input') +const { Browser, By, until } = require('selenium-webdriver') suite(function (env) { describe('WebDriver.actions()', function () { diff --git a/javascript/node/selenium-webdriver/test/bidi/add_intercept_parameters_test.js b/javascript/node/selenium-webdriver/test/bidi/add_intercept_parameters_test.js index fc50ab4695238..5e81d6397e718 100644 --- a/javascript/node/selenium-webdriver/test/bidi/add_intercept_parameters_test.js +++ b/javascript/node/selenium-webdriver/test/bidi/add_intercept_parameters_test.js @@ -18,12 +18,12 @@ 'use strict' const assert = require('node:assert') -const { Browser } = require('../../') +const { Browser } = require('selenium-webdriver') const { suite } = require('../../lib/test') -const Network = require('../../bidi/network') -const { AddInterceptParameters } = require('../../bidi/addInterceptParameters') -const { InterceptPhase } = require('../../bidi/interceptPhase') -const { UrlPattern } = require('../../bidi/urlPattern') +const Network = require('selenium-webdriver/bidi/network') +const { AddInterceptParameters } = require('selenium-webdriver/bidi/addInterceptParameters') +const { InterceptPhase } = require('selenium-webdriver/bidi/interceptPhase') +const { UrlPattern } = require('selenium-webdriver/bidi/urlPattern') suite( function (env) { diff --git a/javascript/node/selenium-webdriver/test/bidi/bidi_session_test.js b/javascript/node/selenium-webdriver/test/bidi/bidi_session_test.js index d187df4d6c26a..94c7b1c393a19 100644 --- a/javascript/node/selenium-webdriver/test/bidi/bidi_session_test.js +++ b/javascript/node/selenium-webdriver/test/bidi/bidi_session_test.js @@ -18,7 +18,7 @@ 'use strict' const assert = require('node:assert') -const { Browser } = require('../../') +const { Browser } = require('selenium-webdriver') const { suite } = require('../../lib/test') suite( diff --git a/javascript/node/selenium-webdriver/test/bidi/bidi_test.js b/javascript/node/selenium-webdriver/test/bidi/bidi_test.js index a89119a488602..bd84a5778e9a0 100644 --- a/javascript/node/selenium-webdriver/test/bidi/bidi_test.js +++ b/javascript/node/selenium-webdriver/test/bidi/bidi_test.js @@ -18,11 +18,11 @@ 'use strict' const assert = require('node:assert') -const { Browser } = require('../../') +const { Browser } = require('selenium-webdriver') const { Pages, suite } = require('../../lib/test') -const logInspector = require('../../bidi/logInspector') -const BrowsingContext = require('../../bidi/browsingContext') -const until = require('../../lib/until') +const logInspector = require('selenium-webdriver/bidi/logInspector') +const BrowsingContext = require('selenium-webdriver/bidi/browsingContext') +const until = require('selenium-webdriver/lib/until') suite( function (env) { diff --git a/javascript/node/selenium-webdriver/test/bidi/browser_test.js b/javascript/node/selenium-webdriver/test/bidi/browser_test.js index 45d079d806225..ace03a47b8ec2 100644 --- a/javascript/node/selenium-webdriver/test/bidi/browser_test.js +++ b/javascript/node/selenium-webdriver/test/bidi/browser_test.js @@ -19,8 +19,8 @@ const assert = require('node:assert') const { suite } = require('../../lib/test') -const { Browser } = require('../..') -const BrowserBiDi = require('../../bidi/browser') +const { Browser } = require('selenium-webdriver') +const BrowserBiDi = require('selenium-webdriver/bidi/browser') suite( function (env) { diff --git a/javascript/node/selenium-webdriver/test/bidi/browsingcontext_inspector_test.js b/javascript/node/selenium-webdriver/test/bidi/browsingcontext_inspector_test.js index 6e09c766c9150..6bf0508b146f0 100644 --- a/javascript/node/selenium-webdriver/test/bidi/browsingcontext_inspector_test.js +++ b/javascript/node/selenium-webdriver/test/bidi/browsingcontext_inspector_test.js @@ -18,11 +18,11 @@ 'use strict' const assert = require('node:assert') -const { Browser, By } = require('../../') +const { Browser, By } = require('selenium-webdriver') const { Pages, suite, ignore } = require('../../lib/test') -const BrowsingContext = require('../../bidi/browsingContext') -const BrowsingContextInspector = require('../../bidi/browsingContextInspector') -const until = require('../../lib/until') +const BrowsingContext = require('selenium-webdriver/bidi/browsingContext') +const BrowsingContextInspector = require('selenium-webdriver/bidi/browsingContextInspector') +const until = require('selenium-webdriver/lib/until') suite( function (env) { diff --git a/javascript/node/selenium-webdriver/test/bidi/browsingcontext_test.js b/javascript/node/selenium-webdriver/test/bidi/browsingcontext_test.js index cd8b8077dc031..38ffdbe32cde6 100644 --- a/javascript/node/selenium-webdriver/test/bidi/browsingcontext_test.js +++ b/javascript/node/selenium-webdriver/test/bidi/browsingcontext_test.js @@ -18,14 +18,14 @@ 'use strict' const assert = require('node:assert') -const { Browser, By } = require('../../') +const { Browser, By } = require('selenium-webdriver') const { Pages, suite, ignore } = require('../../lib/test') -const BrowsingContext = require('../../bidi/browsingContext') -const until = require('../../lib/until') -const { Origin, CaptureScreenshotParameters } = require('../../bidi/captureScreenshotParameters') -const { BoxClipRectangle, ElementClipRectangle } = require('../../bidi/clipRectangle') -const { CreateContextParameters } = require('../../bidi/createContextParameters') -const BrowserBiDi = require('../../bidi/browser') +const BrowsingContext = require('selenium-webdriver/bidi/browsingContext') +const until = require('selenium-webdriver/lib/until') +const { Origin, CaptureScreenshotParameters } = require('selenium-webdriver/bidi/captureScreenshotParameters') +const { BoxClipRectangle, ElementClipRectangle } = require('selenium-webdriver/bidi/clipRectangle') +const { CreateContextParameters } = require('selenium-webdriver/bidi/createContextParameters') +const BrowserBiDi = require('selenium-webdriver/bidi/browser') suite( function (env) { diff --git a/javascript/node/selenium-webdriver/test/bidi/input_test.js b/javascript/node/selenium-webdriver/test/bidi/input_test.js index 58a4a3ca44586..4fde2ad67f9b4 100644 --- a/javascript/node/selenium-webdriver/test/bidi/input_test.js +++ b/javascript/node/selenium-webdriver/test/bidi/input_test.js @@ -20,9 +20,9 @@ const assert = require('node:assert') const fileServer = require('../../lib/test/fileserver') const { ignore, Pages, suite } = require('../../lib/test') -const { Key, Origin } = require('../../lib/input') -const { Browser, By, until } = require('../..') -const Input = require('../../bidi/input') +const { Key, Origin } = require('selenium-webdriver/lib/input') +const { Browser, By, until } = require('selenium-webdriver') +const Input = require('selenium-webdriver/bidi/input') suite( function (env) { diff --git a/javascript/node/selenium-webdriver/test/bidi/local_value_test.js b/javascript/node/selenium-webdriver/test/bidi/local_value_test.js index 8ae42d46756eb..61f9645b5e303 100644 --- a/javascript/node/selenium-webdriver/test/bidi/local_value_test.js +++ b/javascript/node/selenium-webdriver/test/bidi/local_value_test.js @@ -18,14 +18,14 @@ 'use strict' const assert = require('node:assert') -const { Browser } = require('../../') +const { Browser } = require('selenium-webdriver/') const { suite } = require('../../lib/test') -const ScriptManager = require('../../bidi/scriptManager') -const { LocalValue, RegExpValue } = require('../../bidi/protocolValue') -const { ArgumentValue } = require('../../bidi/argumentValue') -const { EvaluateResultType } = require('../../bidi/evaluateResult') -const { SpecialNumberType } = require('../../bidi/protocolType') +const ScriptManager = require('selenium-webdriver/bidi/scriptManager') +const { LocalValue, RegExpValue } = require('selenium-webdriver/bidi/protocolValue') +const { ArgumentValue } = require('selenium-webdriver/bidi/argumentValue') +const { EvaluateResultType } = require('selenium-webdriver/bidi/evaluateResult') +const { SpecialNumberType } = require('selenium-webdriver/bidi/protocolType') suite( function (env) { diff --git a/javascript/node/selenium-webdriver/test/bidi/locate_nodes_test.js b/javascript/node/selenium-webdriver/test/bidi/locate_nodes_test.js index 5e69913b42b7f..ff8e9b7c6c4b6 100644 --- a/javascript/node/selenium-webdriver/test/bidi/locate_nodes_test.js +++ b/javascript/node/selenium-webdriver/test/bidi/locate_nodes_test.js @@ -18,15 +18,14 @@ 'use strict' const assert = require('node:assert') -const firefox = require('../../firefox') -const { Browser } = require('../../') +const { Browser } = require('selenium-webdriver') const { Pages, suite } = require('../../lib/test') -const BrowsingContext = require('../../bidi/browsingContext') -const { Locator } = require('../../bidi/browsingContext') -const { ScriptManager } = require('../../index') -const { EvaluateResultType } = require('../../bidi/evaluateResult') -const { LocalValue, ReferenceValue } = require('../../bidi/protocolValue') -const { ArgumentValue } = require('../../bidi/argumentValue') +const BrowsingContext = require('selenium-webdriver/bidi/browsingContext') +const { Locator } = require('selenium-webdriver/bidi/browsingContext') +const { ScriptManager } = require('selenium-webdriver/index') +const { EvaluateResultType } = require('selenium-webdriver/bidi/evaluateResult') +const { LocalValue, ReferenceValue } = require('selenium-webdriver/bidi/protocolValue') +const { ArgumentValue } = require('selenium-webdriver/bidi/argumentValue') suite( function (env) { diff --git a/javascript/node/selenium-webdriver/test/bidi/log_inspector_test.js b/javascript/node/selenium-webdriver/test/bidi/log_inspector_test.js index 2790d4c09c27b..c23c9d8b46629 100644 --- a/javascript/node/selenium-webdriver/test/bidi/log_inspector_test.js +++ b/javascript/node/selenium-webdriver/test/bidi/log_inspector_test.js @@ -18,10 +18,10 @@ 'use strict' const assert = require('node:assert') -const { Browser } = require('../../') +const { Browser } = require('selenium-webdriver') const { Pages, suite } = require('../../lib/test') -const logInspector = require('../../bidi/logInspector') -const filterBy = require('../../bidi/filterBy') +const logInspector = require('selenium-webdriver/bidi/logInspector') +const filterBy = require('selenium-webdriver/bidi/filterBy') suite( function (env) { diff --git a/javascript/node/selenium-webdriver/test/bidi/network_commands_test.js b/javascript/node/selenium-webdriver/test/bidi/network_commands_test.js index 0652226559b63..3c7a686991ebd 100644 --- a/javascript/node/selenium-webdriver/test/bidi/network_commands_test.js +++ b/javascript/node/selenium-webdriver/test/bidi/network_commands_test.js @@ -18,15 +18,15 @@ 'use strict' const assert = require('node:assert') -const { Browser, By } = require('../../') +const { Browser, By } = require('selenium-webdriver') const { Pages, suite } = require('../../lib/test') -const Network = require('../../bidi/network') -const { AddInterceptParameters } = require('../../bidi/addInterceptParameters') -const { InterceptPhase } = require('../../bidi/interceptPhase') -const { until } = require('../../index') -const { ContinueRequestParameters } = require('../../bidi/continueRequestParameters') -const { ContinueResponseParameters } = require('../../bidi/continueResponseParameters') -const { ProvideResponseParameters } = require('../../bidi/provideResponseParameters') +const Network = require('selenium-webdriver/bidi/network') +const { AddInterceptParameters } = require('selenium-webdriver/bidi/addInterceptParameters') +const { InterceptPhase } = require('selenium-webdriver/bidi/interceptPhase') +const { until } = require('selenium-webdriver/index') +const { ContinueRequestParameters } = require('selenium-webdriver/bidi/continueRequestParameters') +const { ContinueResponseParameters } = require('selenium-webdriver/bidi/continueResponseParameters') +const { ProvideResponseParameters } = require('selenium-webdriver/bidi/provideResponseParameters') suite( function (env) { diff --git a/javascript/node/selenium-webdriver/test/bidi/network_test.js b/javascript/node/selenium-webdriver/test/bidi/network_test.js index dbc0cda890ca1..b02684e96bd43 100644 --- a/javascript/node/selenium-webdriver/test/bidi/network_test.js +++ b/javascript/node/selenium-webdriver/test/bidi/network_test.js @@ -18,10 +18,10 @@ 'use strict' const assert = require('node:assert') -const { Browser } = require('../../') +const { Browser } = require('selenium-webdriver') const { Pages, suite, ignore } = require('../../lib/test') -const Network = require('../../bidi/network') -const until = require('../../lib/until') +const Network = require('selenium-webdriver/bidi/network') +const until = require('selenium-webdriver/lib/until') suite( function (env) { diff --git a/javascript/node/selenium-webdriver/test/bidi/script_test.js b/javascript/node/selenium-webdriver/test/bidi/script_test.js index 04dd4c60da150..f038b78377053 100644 --- a/javascript/node/selenium-webdriver/test/bidi/script_test.js +++ b/javascript/node/selenium-webdriver/test/bidi/script_test.js @@ -18,16 +18,21 @@ 'use strict' const assert = require('node:assert') -const { Browser } = require('../../') +const { Browser } = require('selenium-webdriver') const { Pages, suite } = require('../../lib/test') -const BrowsingContext = require('../../bidi/browsingContext') -const ScriptManager = require('../../bidi/scriptManager') -const { ChannelValue, LocalValue, ReferenceValue, RemoteReferenceType } = require('../../bidi/protocolValue') -const { ArgumentValue } = require('../../bidi/argumentValue') -const { EvaluateResultType } = require('../../bidi/evaluateResult') -const { ResultOwnership } = require('../../bidi/resultOwnership') -const { RealmType } = require('../../bidi/realmInfo') -const { WebDriverError } = require('../../lib/error') +const BrowsingContext = require('selenium-webdriver/bidi/browsingContext') +const ScriptManager = require('selenium-webdriver/bidi/scriptManager') +const { + ChannelValue, + LocalValue, + ReferenceValue, + RemoteReferenceType, +} = require('selenium-webdriver/bidi/protocolValue') +const { ArgumentValue } = require('selenium-webdriver/bidi/argumentValue') +const { EvaluateResultType } = require('selenium-webdriver/bidi/evaluateResult') +const { ResultOwnership } = require('selenium-webdriver/bidi/resultOwnership') +const { RealmType } = require('selenium-webdriver/bidi/realmInfo') +const { WebDriverError } = require('selenium-webdriver/lib/error') suite( function (env) { diff --git a/javascript/node/selenium-webdriver/test/bidi/setFiles_command_test.js b/javascript/node/selenium-webdriver/test/bidi/setFiles_command_test.js index 01bf75b0b4b2e..f701ab2c3fd76 100644 --- a/javascript/node/selenium-webdriver/test/bidi/setFiles_command_test.js +++ b/javascript/node/selenium-webdriver/test/bidi/setFiles_command_test.js @@ -20,12 +20,12 @@ const assert = require('node:assert') require('../../lib/test/fileserver') const { Pages, suite } = require('../../lib/test') -const { Browser, By } = require('../..') -const Input = require('../../bidi/input') -const io = require('../../io') -const { ReferenceValue, RemoteReferenceType } = require('../../bidi/protocolValue') +const { Browser, By } = require('selenium-webdriver') +const Input = require('selenium-webdriver/bidi/input') +const io = require('selenium-webdriver/io') +const { ReferenceValue, RemoteReferenceType } = require('selenium-webdriver/bidi/protocolValue') const fs = require('node:fs') -const { ignore } = require('../../testing') +const { ignore } = require('selenium-webdriver/testing') suite( function (env) { diff --git a/javascript/node/selenium-webdriver/test/bidi/storage_test.js b/javascript/node/selenium-webdriver/test/bidi/storage_test.js index 25202eb1838c5..2e83219820571 100644 --- a/javascript/node/selenium-webdriver/test/bidi/storage_test.js +++ b/javascript/node/selenium-webdriver/test/bidi/storage_test.js @@ -20,13 +20,13 @@ const assert = require('node:assert') require('../../lib/test/fileserver') const { suite } = require('../../lib/test') -const { Browser } = require('../..') -const Storage = require('../../bidi/storage') +const { Browser } = require('selenium-webdriver') +const Storage = require('selenium-webdriver/bidi/storage') const fileserver = require('../../lib/test/fileserver') -const { CookieFilter } = require('../../bidi/cookieFilter') -const { BytesValue, SameSite } = require('../../bidi/networkTypes') -const { BrowsingContextPartitionDescriptor } = require('../../bidi/partitionDescriptor') -const { PartialCookie } = require('../../bidi/partialCookie') +const { CookieFilter } = require('selenium-webdriver/bidi/cookieFilter') +const { BytesValue, SameSite } = require('selenium-webdriver/bidi/networkTypes') +const { BrowsingContextPartitionDescriptor } = require('selenium-webdriver/bidi/partitionDescriptor') +const { PartialCookie } = require('selenium-webdriver/bidi/partialCookie') suite( function (env) { diff --git a/javascript/node/selenium-webdriver/test/builder_test.js b/javascript/node/selenium-webdriver/test/builder_test.js index 545966e237c10..c480504fe072e 100644 --- a/javascript/node/selenium-webdriver/test/builder_test.js +++ b/javascript/node/selenium-webdriver/test/builder_test.js @@ -19,16 +19,16 @@ const assert = require('node:assert') -const chrome = require('../chrome') -const edge = require('../edge') -const error = require('../lib/error') -const firefox = require('../firefox') -const ie = require('../ie') -const safari = require('../safari') +const chrome = require('selenium-webdriver/chrome') +const edge = require('selenium-webdriver/edge') +const error = require('selenium-webdriver/lib/error') +const firefox = require('selenium-webdriver/firefox') +const ie = require('selenium-webdriver/ie') +const safari = require('selenium-webdriver/safari') const test = require('../lib/test') -const { Browser } = require('../lib/capabilities') +const { Browser } = require('selenium-webdriver/lib/capabilities') const { Pages } = require('../lib/test') -const { Builder, Capabilities } = require('..') +const { Builder, Capabilities } = require('selenium-webdriver') test.suite(function (env) { const BROWSER_MAP = new Map([ diff --git a/javascript/node/selenium-webdriver/test/chrome/devtools_test.js b/javascript/node/selenium-webdriver/test/chrome/devtools_test.js index df940850d7723..e71c0f398a0c4 100644 --- a/javascript/node/selenium-webdriver/test/chrome/devtools_test.js +++ b/javascript/node/selenium-webdriver/test/chrome/devtools_test.js @@ -21,13 +21,13 @@ const assert = require('node:assert') const fs = require('node:fs') const path = require('node:path') -const chrome = require('../../chrome') -const by = require('../../lib/by') -const error = require('../../lib/error') +const chrome = require('selenium-webdriver/chrome') +const by = require('selenium-webdriver/lib/by') +const error = require('selenium-webdriver/lib/error') const fileServer = require('../../lib/test/fileserver') -const io = require('../../io') +const io = require('selenium-webdriver/io') const test = require('../../lib/test') -const until = require('../../lib/until') +const until = require('selenium-webdriver/lib/until') test.suite( function (env) { diff --git a/javascript/node/selenium-webdriver/test/chrome/options_test.js b/javascript/node/selenium-webdriver/test/chrome/options_test.js index 9570d06cbf1f3..e9f4c551a0d48 100644 --- a/javascript/node/selenium-webdriver/test/chrome/options_test.js +++ b/javascript/node/selenium-webdriver/test/chrome/options_test.js @@ -19,8 +19,8 @@ const assert = require('node:assert') const fs = require('node:fs') -const chrome = require('../../chrome') -const symbols = require('../../lib/symbols') +const chrome = require('selenium-webdriver/chrome') +const symbols = require('selenium-webdriver/lib/symbols') const test = require('../../lib/test') const { locate } = require('../../lib/test/resources') diff --git a/javascript/node/selenium-webdriver/test/chrome/permission_test.js b/javascript/node/selenium-webdriver/test/chrome/permission_test.js index 0ff4ae2d509b5..8a147a7fb0113 100644 --- a/javascript/node/selenium-webdriver/test/chrome/permission_test.js +++ b/javascript/node/selenium-webdriver/test/chrome/permission_test.js @@ -18,10 +18,10 @@ 'use strict' const assert = require('node:assert') -const chrome = require('../../chrome') +const chrome = require('selenium-webdriver/chrome') const test = require('../../lib/test') const { ignore } = require('../../lib/test') -const { Browser } = require('../../index') +const { Browser } = require('selenium-webdriver/index') test.suite( function (env) { @@ -61,6 +61,7 @@ test.suite( const checkPermission = (driver, permission) => { return driver.executeAsyncScript((permission, callback) => { + // eslint-disable-next-line navigator.permissions.query({ name: permission }).then((result) => callback(result.state)) }, permission) } diff --git a/javascript/node/selenium-webdriver/test/chrome/service_test.js b/javascript/node/selenium-webdriver/test/chrome/service_test.js index 9ffc52dade9d5..7dc1b953a739a 100644 --- a/javascript/node/selenium-webdriver/test/chrome/service_test.js +++ b/javascript/node/selenium-webdriver/test/chrome/service_test.js @@ -18,9 +18,9 @@ 'use strict' const assert = require('node:assert') -const chrome = require('../../chrome') +const chrome = require('selenium-webdriver/chrome') const test = require('../../lib/test') -const { getBinaryPaths } = require('../../common/driverFinder') +const { getBinaryPaths } = require('selenium-webdriver/common/driverFinder') test.suite( function (_env) { diff --git a/javascript/node/selenium-webdriver/test/cookie_test.js b/javascript/node/selenium-webdriver/test/cookie_test.js index c63b11f0e5f89..82179bb343dac 100644 --- a/javascript/node/selenium-webdriver/test/cookie_test.js +++ b/javascript/node/selenium-webdriver/test/cookie_test.js @@ -22,7 +22,7 @@ const { URL } = require('node:url') const { ignore, suite } = require('../lib/test') const fileserver = require('../lib/test/fileserver') -const { Browser } = require('..') +const { Browser } = require('selenium-webdriver') suite(function (env) { let driver diff --git a/javascript/node/selenium-webdriver/test/devtools_test.js b/javascript/node/selenium-webdriver/test/devtools_test.js index 204ccb8624c09..701f0395a5d2c 100644 --- a/javascript/node/selenium-webdriver/test/devtools_test.js +++ b/javascript/node/selenium-webdriver/test/devtools_test.js @@ -18,9 +18,9 @@ 'use strict' const assert = require('node:assert') -const { Browser, until } = require('..') +const { Browser, until } = require('selenium-webdriver') const fileServer = require('../lib/test/fileserver') -const { HttpResponse } = require('../devtools/networkinterceptor') +const { HttpResponse } = require('selenium-webdriver/devtools/networkinterceptor') const { Pages, ignore, suite } = require('../lib/test') suite( diff --git a/javascript/node/selenium-webdriver/test/edge/options_test.js b/javascript/node/selenium-webdriver/test/edge/options_test.js index e20deca669396..2bfcd8df54b5f 100644 --- a/javascript/node/selenium-webdriver/test/edge/options_test.js +++ b/javascript/node/selenium-webdriver/test/edge/options_test.js @@ -19,8 +19,8 @@ const assert = require('node:assert') const fs = require('node:fs') -const edge = require('../../edge') -const symbols = require('../../lib/symbols') +const edge = require('selenium-webdriver/edge') +const symbols = require('selenium-webdriver/lib/symbols') const test = require('../../lib/test') const { locate } = require('../../lib/test/resources') diff --git a/javascript/node/selenium-webdriver/test/edge/service_test.js b/javascript/node/selenium-webdriver/test/edge/service_test.js index f0ab51e054be8..1b6c302ac2058 100644 --- a/javascript/node/selenium-webdriver/test/edge/service_test.js +++ b/javascript/node/selenium-webdriver/test/edge/service_test.js @@ -18,9 +18,9 @@ 'use strict' const assert = require('node:assert') -const edge = require('../../edge') +const edge = require('selenium-webdriver/edge') const test = require('../../lib/test') -const { getBinaryPaths } = require('../../common/driverFinder') +const { getBinaryPaths } = require('selenium-webdriver/common/driverFinder') test.suite( function (_env) { diff --git a/javascript/node/selenium-webdriver/test/elementAccessibleName_test.js b/javascript/node/selenium-webdriver/test/elementAccessibleName_test.js index bb9b7e88e8f11..04d9b52ccd0ed 100644 --- a/javascript/node/selenium-webdriver/test/elementAccessibleName_test.js +++ b/javascript/node/selenium-webdriver/test/elementAccessibleName_test.js @@ -19,7 +19,7 @@ const assert = require('node:assert') const test = require('../lib/test') -const { By, Browser } = require('../index') +const { By, Browser } = require('selenium-webdriver') const { ignore } = require('../lib/test') test.suite( diff --git a/javascript/node/selenium-webdriver/test/elementAriaRole_test.js b/javascript/node/selenium-webdriver/test/elementAriaRole_test.js index ecc4eac3de287..b021b1514224b 100644 --- a/javascript/node/selenium-webdriver/test/elementAriaRole_test.js +++ b/javascript/node/selenium-webdriver/test/elementAriaRole_test.js @@ -19,7 +19,7 @@ const assert = require('node:assert') const test = require('../lib/test') -const { By } = require('../index') +const { By } = require('selenium-webdriver') test.suite( function (env) { diff --git a/javascript/node/selenium-webdriver/test/element_finding_test.js b/javascript/node/selenium-webdriver/test/element_finding_test.js index 5961ac8dc1ecc..a13c58b1a4134 100644 --- a/javascript/node/selenium-webdriver/test/element_finding_test.js +++ b/javascript/node/selenium-webdriver/test/element_finding_test.js @@ -18,11 +18,10 @@ 'use strict' const assert = require('node:assert') -const promise = require('../lib/promise') -const { Browser, By, error, withTagName, until } = require('..') +const promise = require('selenium-webdriver/lib/promise') +const { Browser, By, RelativeBy, error, withTagName, until } = require('selenium-webdriver') const { Pages, ignore, suite, whereIs } = require('../lib/test') -const { locateWith } = require('../lib/by') -const { RelativeBy } = require('../') +const { locateWith } = require('selenium-webdriver/lib/by') suite(function (env) { const browsers = (...args) => env.browsers(...args) diff --git a/javascript/node/selenium-webdriver/test/execute_script_test.js b/javascript/node/selenium-webdriver/test/execute_script_test.js index 7cc7acc9a2c21..ee556824bda68 100644 --- a/javascript/node/selenium-webdriver/test/execute_script_test.js +++ b/javascript/node/selenium-webdriver/test/execute_script_test.js @@ -18,7 +18,7 @@ 'use strict' const assert = require('node:assert') -const { Browser, By, WebElement, error } = require('..') +const { Browser, By, WebElement, error } = require('selenium-webdriver') const { Pages, ignore, suite } = require('../lib/test') suite(function (env) { diff --git a/javascript/node/selenium-webdriver/test/firefox/addon_test.js b/javascript/node/selenium-webdriver/test/firefox/addon_test.js index 236e0ca38738d..136451e81c631 100644 --- a/javascript/node/selenium-webdriver/test/firefox/addon_test.js +++ b/javascript/node/selenium-webdriver/test/firefox/addon_test.js @@ -18,10 +18,10 @@ 'use strict' const assert = require('node:assert') -const { Browser } = require('../../index') +const { Browser } = require('selenium-webdriver/index') const { Pages, suite } = require('../../lib/test') const { locate } = require('../../lib/test/resources') -const { until, By } = require('../../index') +const { until, By } = require('selenium-webdriver/index') const EXT_XPI = locate('common/extensions/webextensions-selenium-example.xpi') const EXT_UNSIGNED_ZIP = locate('common/extensions/webextensions-selenium-example-unsigned.zip') diff --git a/javascript/node/selenium-webdriver/test/firefox/contextSwitching_test.js b/javascript/node/selenium-webdriver/test/firefox/contextSwitching_test.js index d95d9172a6bf7..8e3d5b0929215 100644 --- a/javascript/node/selenium-webdriver/test/firefox/contextSwitching_test.js +++ b/javascript/node/selenium-webdriver/test/firefox/contextSwitching_test.js @@ -18,9 +18,9 @@ 'use strict' const assert = require('node:assert') -const error = require('../../lib/error') -const { Browser } = require('../../index') -const { Context } = require('../../firefox') +const error = require('selenium-webdriver/lib/error') +const { Browser } = require('selenium-webdriver/index') +const { Context } = require('selenium-webdriver/firefox') const { suite } = require('../../lib/test') suite( diff --git a/javascript/node/selenium-webdriver/test/firefox/full_page_screenshot_test.js b/javascript/node/selenium-webdriver/test/firefox/full_page_screenshot_test.js index d80509a5df058..623e54d0ce3e7 100644 --- a/javascript/node/selenium-webdriver/test/firefox/full_page_screenshot_test.js +++ b/javascript/node/selenium-webdriver/test/firefox/full_page_screenshot_test.js @@ -18,7 +18,7 @@ 'use strict' const assert = require('node:assert') -const { Browser } = require('../../index') +const { Browser } = require('selenium-webdriver/index') const { Pages, suite } = require('../../lib/test') let startIndex = 0 let endIndex = 5 diff --git a/javascript/node/selenium-webdriver/test/firefox/options_test.js b/javascript/node/selenium-webdriver/test/firefox/options_test.js index 6e0706d3b12c2..fd64b034337cb 100644 --- a/javascript/node/selenium-webdriver/test/firefox/options_test.js +++ b/javascript/node/selenium-webdriver/test/firefox/options_test.js @@ -19,12 +19,12 @@ const assert = require('node:assert') const path = require('node:path') -const firefox = require('../../firefox') -const io = require('../../io') -const { Browser } = require('../../index') +const firefox = require('selenium-webdriver/firefox') +const io = require('selenium-webdriver/io') +const { Browser } = require('selenium-webdriver/index') const { Pages, suite } = require('../../lib/test') const { locate } = require('../../lib/test/resources') -const { until, By } = require('../../index') +const { until, By } = require('selenium-webdriver/index') const EXT_XPI = locate('common/extensions/webextensions-selenium-example.xpi') const WEBEXTENSION_EXTENSION_ID = 'webextensions-selenium-example@example.com.xpi' diff --git a/javascript/node/selenium-webdriver/test/frame_test.js b/javascript/node/selenium-webdriver/test/frame_test.js index 56fff545c901e..7919e484d9a8b 100644 --- a/javascript/node/selenium-webdriver/test/frame_test.js +++ b/javascript/node/selenium-webdriver/test/frame_test.js @@ -19,7 +19,7 @@ const assert = require('node:assert') const test = require('../lib/test') -const { By } = require('..') +const { By } = require('selenium-webdriver') test.suite(function (env) { var driver diff --git a/javascript/node/selenium-webdriver/test/http/http_test.js b/javascript/node/selenium-webdriver/test/http/http_test.js index a2d35871abfce..0e1648f533422 100644 --- a/javascript/node/selenium-webdriver/test/http/http_test.js +++ b/javascript/node/selenium-webdriver/test/http/http_test.js @@ -21,8 +21,8 @@ const assert = require('node:assert') const http = require('node:http') const url = require('node:url') -const HttpClient = require('../../http').HttpClient -const HttpRequest = require('../../lib/http').Request +const HttpClient = require('selenium-webdriver/http').HttpClient +const HttpRequest = require('selenium-webdriver/lib/http').Request const Server = require('../../lib/test/httpserver').Server describe('HttpClient', function () { diff --git a/javascript/node/selenium-webdriver/test/http/util_test.js b/javascript/node/selenium-webdriver/test/http/util_test.js index b6cad07a3003c..b539b819fab9c 100644 --- a/javascript/node/selenium-webdriver/test/http/util_test.js +++ b/javascript/node/selenium-webdriver/test/http/util_test.js @@ -20,8 +20,8 @@ const assert = require('node:assert') const http = require('node:http') -const error = require('../../lib/error') -const util = require('../../http/util') +const error = require('selenium-webdriver/lib/error') +const util = require('selenium-webdriver/http/util') describe('selenium-webdriver/http/util', function () { let server, baseUrl diff --git a/javascript/node/selenium-webdriver/test/ie/options_test.js b/javascript/node/selenium-webdriver/test/ie/options_test.js index eefcb6102afb5..b47e9a4959cf7 100644 --- a/javascript/node/selenium-webdriver/test/ie/options_test.js +++ b/javascript/node/selenium-webdriver/test/ie/options_test.js @@ -18,9 +18,9 @@ 'use strict' const assert = require('node:assert') -const ie = require('../../ie') +const ie = require('selenium-webdriver/ie') const test = require('../../lib/test') -const Capabilities = require('../../lib/capabilities').Capabilities +const Capabilities = require('selenium-webdriver/lib/capabilities').Capabilities test.suite( function (env) { diff --git a/javascript/node/selenium-webdriver/test/lib/api_test.js b/javascript/node/selenium-webdriver/test/lib/api_test.js index 986f403ae2840..588fdc0517be1 100644 --- a/javascript/node/selenium-webdriver/test/lib/api_test.js +++ b/javascript/node/selenium-webdriver/test/lib/api_test.js @@ -18,7 +18,7 @@ 'use strict' const assert = require('node:assert') -const { By, Browser } = require('../../index') +const { By, Browser } = require('selenium-webdriver/index') const { Pages, ignore, suite } = require('../../lib/test') suite(function (env) { diff --git a/javascript/node/selenium-webdriver/test/lib/capabilities_test.js b/javascript/node/selenium-webdriver/test/lib/capabilities_test.js index eff3e0b85f58a..93194a4ff09c0 100644 --- a/javascript/node/selenium-webdriver/test/lib/capabilities_test.js +++ b/javascript/node/selenium-webdriver/test/lib/capabilities_test.js @@ -17,16 +17,16 @@ 'use strict' -const Capabilities = require('../../lib/capabilities').Capabilities -const Symbols = require('../../lib/symbols') +const Capabilities = require('selenium-webdriver/lib/capabilities').Capabilities +const Symbols = require('selenium-webdriver/lib/symbols') const test = require('../../lib/test') -const chrome = require('../../chrome') -const { Browser, By, until } = require('../../') -const remote = require('../../remote') +const chrome = require('selenium-webdriver/chrome') +const { Browser, By, until } = require('selenium-webdriver') +const remote = require('selenium-webdriver/remote') const assert = require('node:assert') const fs = require('node:fs') -const io = require('../../io') +const io = require('selenium-webdriver/io') const Pages = test.Pages diff --git a/javascript/node/selenium-webdriver/test/lib/form_submit_test.js b/javascript/node/selenium-webdriver/test/lib/form_submit_test.js index 8feeb7e0ae1e3..effb4ebc33e4b 100644 --- a/javascript/node/selenium-webdriver/test/lib/form_submit_test.js +++ b/javascript/node/selenium-webdriver/test/lib/form_submit_test.js @@ -19,7 +19,7 @@ const assert = require('node:assert') const test = require('../../lib/test') -const until = require('../../lib/until') +const until = require('selenium-webdriver/lib/until') const Pages = test.Pages test.suite( diff --git a/javascript/node/selenium-webdriver/test/lib/webdriver_script_test.js b/javascript/node/selenium-webdriver/test/lib/webdriver_script_test.js index dcf27600e5759..fb37a07dbd398 100644 --- a/javascript/node/selenium-webdriver/test/lib/webdriver_script_test.js +++ b/javascript/node/selenium-webdriver/test/lib/webdriver_script_test.js @@ -18,9 +18,8 @@ 'use strict' const assert = require('node:assert') -const { Browser } = require('../../') +const { Browser } = require('selenium-webdriver') const { Pages, suite } = require('../../lib/test') -const { until } = require('../../index') suite( function (env) { diff --git a/javascript/node/selenium-webdriver/test/page_loading_test.js b/javascript/node/selenium-webdriver/test/page_loading_test.js index f02e1ecccca8c..5223b6c57aa08 100644 --- a/javascript/node/selenium-webdriver/test/page_loading_test.js +++ b/javascript/node/selenium-webdriver/test/page_loading_test.js @@ -18,9 +18,9 @@ 'use strict' const assert = require('node:assert') -const error = require('../lib/error') +const error = require('selenium-webdriver/lib/error') const test = require('../lib/test') -const { Browser, By, until } = require('..') +const { Browser, By, until } = require('selenium-webdriver') const Pages = test.Pages test.suite(function (env) { diff --git a/javascript/node/selenium-webdriver/test/print_pdf_test.js b/javascript/node/selenium-webdriver/test/print_pdf_test.js index 4a932c3226f89..728f9e2bb055a 100644 --- a/javascript/node/selenium-webdriver/test/print_pdf_test.js +++ b/javascript/node/selenium-webdriver/test/print_pdf_test.js @@ -19,7 +19,7 @@ const test = require('../lib/test') const { Pages } = require('../lib/test') -const { Browser } = require('../') +const { Browser } = require('selenium-webdriver') const assert = require('node:assert') let startIndex = 0 diff --git a/javascript/node/selenium-webdriver/test/proxy_test.js b/javascript/node/selenium-webdriver/test/proxy_test.js index 14b181051fa5d..06816194e46f9 100644 --- a/javascript/node/selenium-webdriver/test/proxy_test.js +++ b/javascript/node/selenium-webdriver/test/proxy_test.js @@ -19,9 +19,9 @@ const assert = require('node:assert') const { URL } = require('node:url') -const proxy = require('../proxy') +const proxy = require('selenium-webdriver/proxy') const test = require('../lib/test') -const { Browser } = require('..') +const { Browser } = require('selenium-webdriver') const { Server } = require('../lib/test/httpserver') test.suite(function (env) { diff --git a/javascript/node/selenium-webdriver/test/rect_test.js b/javascript/node/selenium-webdriver/test/rect_test.js index bbcbfeb7b26a8..5820640d7bf67 100644 --- a/javascript/node/selenium-webdriver/test/rect_test.js +++ b/javascript/node/selenium-webdriver/test/rect_test.js @@ -18,7 +18,7 @@ 'use strict' const assert = require('node:assert') -const { By } = require('..') +const { By } = require('selenium-webdriver') const test = require('../lib/test') test.suite(function (env) { diff --git a/javascript/node/selenium-webdriver/test/remote_test.js b/javascript/node/selenium-webdriver/test/remote_test.js index 565150c09fed5..2c01e55f69f28 100644 --- a/javascript/node/selenium-webdriver/test/remote_test.js +++ b/javascript/node/selenium-webdriver/test/remote_test.js @@ -19,10 +19,10 @@ const assert = require('node:assert') const path = require('node:path') -const io = require('../io') -const cmd = require('../lib/command') -const remote = require('../remote') -const { CancellationError } = require('../http/util') +const io = require('selenium-webdriver/io') +const cmd = require('selenium-webdriver/lib/command') +const remote = require('selenium-webdriver/remote') +const { CancellationError } = require('selenium-webdriver/http/util') describe('DriverService', function () { describe('start()', function () { diff --git a/javascript/node/selenium-webdriver/test/safari_test.js b/javascript/node/selenium-webdriver/test/safari_test.js index 9968ba1f5b3ee..98f164ce959df 100644 --- a/javascript/node/selenium-webdriver/test/safari_test.js +++ b/javascript/node/selenium-webdriver/test/safari_test.js @@ -18,7 +18,7 @@ 'use strict' const assert = require('node:assert') -const safari = require('../safari') +const safari = require('selenium-webdriver/safari') const test = require('../lib/test') test.suite( diff --git a/javascript/node/selenium-webdriver/test/select_test.js b/javascript/node/selenium-webdriver/test/select_test.js index b4681ee7ed715..581e781f385b6 100644 --- a/javascript/node/selenium-webdriver/test/select_test.js +++ b/javascript/node/selenium-webdriver/test/select_test.js @@ -18,9 +18,9 @@ 'use strict' const assert = require('node:assert') -const { Select, By } = require('..') +const { Select, By } = require('selenium-webdriver') const { Pages, suite } = require('../lib/test') -const { escapeQuotes } = require('../lib/select') +const { escapeQuotes } = require('selenium-webdriver/lib/select') let singleSelectValues1 = { name: 'selectomatic', diff --git a/javascript/node/selenium-webdriver/test/stale_element_test.js b/javascript/node/selenium-webdriver/test/stale_element_test.js index 5ca04f6ce291c..1c44741621a03 100644 --- a/javascript/node/selenium-webdriver/test/stale_element_test.js +++ b/javascript/node/selenium-webdriver/test/stale_element_test.js @@ -19,7 +19,7 @@ const assert = require('node:assert') const test = require('../lib/test') -const { Browser, By, error, until } = require('..') +const { Browser, By, error, until } = require('selenium-webdriver') const Pages = test.Pages test.suite(function (env) { diff --git a/javascript/node/selenium-webdriver/test/upload_test.js b/javascript/node/selenium-webdriver/test/upload_test.js index 297143eaed5dc..05297edace671 100644 --- a/javascript/node/selenium-webdriver/test/upload_test.js +++ b/javascript/node/selenium-webdriver/test/upload_test.js @@ -19,10 +19,10 @@ const assert = require('node:assert') const fs = require('node:fs') -const io = require('../io') -const remote = require('../remote') +const io = require('selenium-webdriver/io') +const remote = require('selenium-webdriver/remote') const test = require('../lib/test') -const { Browser, By, until } = require('..') +const { Browser, By, until } = require('selenium-webdriver') const Pages = test.Pages @@ -75,8 +75,9 @@ test.suite(function (env) { var frame = await driver.findElement(By.id('upload_target')) await driver.switchTo().frame(frame) const txt = await driver.findElement(By.css('body')).getText() - assert.match(txt, new RegExp(fp1.split('/').pop())) - assert.match(txt, new RegExp(fp2.split('/').pop())) + + assert.match(txt, new RegExp(fp1.split('/').pop())) // eslint-disable-line + assert.match(txt, new RegExp(fp2.split('/').pop())) // eslint-disable-line }) test.ignore(env.browsers(Browser.SAFARI)).it('can upload files', async function () { diff --git a/javascript/node/selenium-webdriver/test/virtualAuthenticator_test.js b/javascript/node/selenium-webdriver/test/virtualAuthenticator_test.js index 96c7923890755..165a6a8e7f43a 100644 --- a/javascript/node/selenium-webdriver/test/virtualAuthenticator_test.js +++ b/javascript/node/selenium-webdriver/test/virtualAuthenticator_test.js @@ -18,13 +18,13 @@ 'use strict' const assert = require('node:assert') -const virtualAuthenticatorCredential = require('../lib/virtual_authenticator').Credential -const virtualAuthenticatorOptions = require('../lib/virtual_authenticator').VirtualAuthenticatorOptions -const Protocol = require('../lib/virtual_authenticator').Protocol +const virtualAuthenticatorCredential = require('selenium-webdriver/lib/virtual_authenticator').Credential +const virtualAuthenticatorOptions = require('selenium-webdriver/lib/virtual_authenticator').VirtualAuthenticatorOptions +const Protocol = require('selenium-webdriver/lib/virtual_authenticator').Protocol const { ignore, suite } = require('../lib/test') -const { Browser } = require('../lib/capabilities') +const { Browser } = require('selenium-webdriver/lib/capabilities') const fileServer = require('../lib/test/fileserver') -const invalidArgumentError = require('../lib/error').InvalidArgumentError +const invalidArgumentError = require('selenium-webdriver/lib/error').InvalidArgumentError const REGISTER_CREDENTIAL = 'registerCredential().then(arguments[arguments.length - 1]);' const GET_CREDENTIAL = `getCredential([{ diff --git a/javascript/node/selenium-webdriver/test/webComponent_test.js b/javascript/node/selenium-webdriver/test/webComponent_test.js index 64db4fbf76723..02eb8c797fe6c 100644 --- a/javascript/node/selenium-webdriver/test/webComponent_test.js +++ b/javascript/node/selenium-webdriver/test/webComponent_test.js @@ -18,7 +18,7 @@ 'use strict' const assert = require('node:assert') -const { By, error } = require('..') +const { By, error } = require('selenium-webdriver') const test = require('../lib/test') const Pages = test.Pages diff --git a/javascript/node/selenium-webdriver/test/window_test.js b/javascript/node/selenium-webdriver/test/window_test.js index fcdb88a544bd7..75ff00a4d9ee5 100644 --- a/javascript/node/selenium-webdriver/test/window_test.js +++ b/javascript/node/selenium-webdriver/test/window_test.js @@ -19,8 +19,8 @@ const assert = require('node:assert') const test = require('../lib/test') -const { By } = require('..') -const { UnknownCommandError } = require('../lib/error') +const { By } = require('selenium-webdriver') +const { UnknownCommandError } = require('selenium-webdriver/lib/error') test.suite(function (env) { let driver diff --git a/javascript/node/selenium-webdriver/testing/index.js b/javascript/node/selenium-webdriver/testing/index.js index fbaddfaf9047c..116009e26ea22 100644 --- a/javascript/node/selenium-webdriver/testing/index.js +++ b/javascript/node/selenium-webdriver/testing/index.js @@ -32,7 +32,10 @@ 'use strict' +const fs = require('node:fs') +const path = require('node:path') const { isatty } = require('node:tty') +const { runfiles } = require('@bazel/runfiles') const chrome = require('../chrome') const edge = require('../edge') const firefox = require('../firefox') @@ -288,6 +291,37 @@ class Environment { const urlOrServer = URL_MAP.get(this) const builder = new Builder() + + // Sniff the environment variables for paths to use for the common browsers + // Chrome + if ('SE_CHROMEDRIVER' in process.env) { + const found = locate(process.env.SE_CHROMEDRIVER) + const service = new chrome.ServiceBuilder(found) + builder.setChromeService(service) + } + if ('SE_CHROME' in process.env) { + const binary = locate(process.env.SE_CHROME) + const options = new chrome.Options() + options.setChromeBinaryPath(binary) + options.setAcceptInsecureCerts(true) + options.addArguments('disable-infobars', 'disable-breakpad', 'disable-dev-shm-usage', 'no-sandbox') + builder.setChromeOptions(options) + } + // Edge + // Firefox + if ('SE_GECKODRIVER' in process.env) { + const found = locate(process.env.SE_GECKODRIVER) + const service = new firefox.ServiceBuilder(found) + builder.setFirefoxService(service) + } + if ('SE_FIREFOX' in process.env) { + const binary = locate(process.env.SE_FIREFOX) + const options = new firefox.Options() + options.enableBidi() + options.setBinary(binary) + builder.setFirefoxOptions(options) + } + builder.disableEnvironmentOverrides() const realBuild = builder.build @@ -505,6 +539,59 @@ function getTestHook(name) { return fn } +function locate(fileLike) { + if (fs.existsSync(fileLike)) { + return fileLike + } + + try { + return runfiles.resolve(fileLike) + } catch { + // Fall through + } + + // Is the item in the workspace? + try { + return runfiles.resolveWorkspaceRelative(fileLike) + } catch { + // Fall through + } + + // Find the repo mapping file + let repoMappingFile + try { + repoMappingFile = runfiles.resolve('_repo_mapping') + } catch { + throw new Error('Unable to locate (no repo mapping file): ' + fileLike) + } + const lines = fs.readFileSync(repoMappingFile, { encoding: 'utf8' }).split('\n') + + // Build a map of "repo we declared we need" to "path" + const mapping = {} + for (const line of lines) { + if (line.startsWith(',')) { + const parts = line.split(',', 3) + mapping[parts[1]] = parts[2] + } + } + + // Get the first segment of the path + const pathSegments = fileLike.split('/') + if (!pathSegments.length) { + throw new Error('Unable to locate ' + fileLike) + } + + pathSegments[0] = mapping[pathSegments[0]] ? mapping[pathSegments[0]] : '_main' + + try { + return runfiles.resolve(path.join(...pathSegments)) + } catch { + // Fall through + } + + throw new Error('Unable to find ' + fileLike) +} + // PUBLIC API module.exports = { diff --git a/javascript/node/selenium-webdriver/tools/init_jasmine.js b/javascript/node/selenium-webdriver/tools/init_jasmine.js index 2c2313c9c5d05..a4fee31ebaf1e 100644 --- a/javascript/node/selenium-webdriver/tools/init_jasmine.js +++ b/javascript/node/selenium-webdriver/tools/init_jasmine.js @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -// eslint-disable-next-line n/no-missing-require +// eslint-disable-next-line require('@bazel/jasmine').boot() global.after = global.afterAll diff --git a/javascript/private/browsers.bzl b/javascript/private/browsers.bzl new file mode 100644 index 0000000000000..15cfac500264b --- /dev/null +++ b/javascript/private/browsers.bzl @@ -0,0 +1,55 @@ +# We need to enable `build --experimental_inprocess_symlink_creation` in the project `.bazelrc` +# to allow the runfiles that are generated to include spaces. However, doing this breaks +# test execution in `aspect_rules_js`, so we can't do that yet. Fortunately, when running on +# Linux, there are no spaces in file names, and that's all we need to get the tests running +# on the RBE. For now, we'll only use pinned browsers when running remotely. +BROWSERS = { + "chrome": { + "data": select({ + "@selenium//common:use_pinned_linux_chrome": [ + "@linux_chrome//:chrome-js", + "@linux_chromedriver//:chromedriver-js", + ], + # "@selenium//common:use_pinned_macos_chrome": [ + # "@mac_chrome//:chrome-js", + # "@mac_chromedriver//:chromedriver-js", + # ], + "//conditions:default": [], + }), + "env": select({ + "@selenium//common:use_pinned_linux_chrome": { + "SE_CHROMEDRIVER": "linux_chromedriver/chromedriver", + "SE_CHROME": "linux_chrome/chrome-linux64/chrome", + }, + # "@selenium//common:use_pinned_macos_chrome": { + # "SE_CHROMEDRIVER": "mac_chromedriver/chromedriver", + # "SE_CHROME": "mac_chrome/Chrome.app)/Contents/MacOS/Chrome", + # }, + "//conditions:default": {}, + }), + }, + "firefox": { + "data": select({ + "@selenium//common:use_pinned_linux_firefox": [ + "@linux_geckodriver//:geckodriver-js", + "@linux_firefox//:firefox-js", + ], + # "@selenium//common:use_pinned_macos_firefox": [ + # "@mac_geckodriver//:geckodriver-js", + # "@mac_firefox//:firefox-js", + # ], + "//conditions:default": [], + }), + "env": select({ + "@selenium//common:use_pinned_linux_firefox": { + "SE_GECKODRIVER": "linux_geckodriver/geckodriver", + "SE_FIREFOX": "linux_firefox/firefox/firefox", + }, + # "@selenium//common:use_pinned_macos_firefox": { + # "SE_GECKODRIVER": "mac_geckodriver/geckodriver", + # "SE_FIREFOX": "mac_firefox/Firefox.app/Contents/MacOS/firefox", + # }, + "//conditions:default": {}, + }), + }, +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dcae1e5ae73dc..9c08071ac2135 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -98,6 +98,9 @@ importers: javascript/node/selenium-webdriver: dependencies: + '@bazel/runfiles': + specifier: ^5.8.1 + version: 5.8.1 jszip: specifier: ^3.10.1 version: 3.10.1 @@ -108,9 +111,6 @@ importers: specifier: ^8.17.1 version: 8.17.1 devDependencies: - '@bazel/runfiles': - specifier: ^5.8.1 - version: 5.8.1 '@eslint/js': specifier: ^9.5.0 version: 9.5.0 @@ -119,7 +119,7 @@ importers: version: 4.3.0(jsdoc@4.0.3) eslint: specifier: ^9.5.0 - version: 9.5.0 + version: 9.5.0(supports-color@9.4.0) eslint-config-prettier: specifier: ^9.1.0 version: 9.1.0(eslint@9.5.0) @@ -137,10 +137,13 @@ importers: version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@9.5.0)(prettier@3.3.2) express: specifier: ^4.19.2 - version: 4.19.2 + version: 4.19.2(supports-color@9.4.0) globals: specifier: ^15.6.0 version: 15.6.0 + has-flag: + specifier: ^4.0.0 + version: 4.0.0 jsdoc: specifier: ^4.0.3 version: 4.0.3 @@ -149,7 +152,7 @@ importers: version: 10.5.1 mocha-junit-reporter: specifier: ^2.2.1 - version: 2.2.1(mocha@10.5.1) + version: 2.2.1(mocha@10.5.1)(supports-color@9.4.0) multer: specifier: 1.4.5-lts.1 version: 1.4.5-lts.1 @@ -158,10 +161,13 @@ importers: version: 3.3.2 serve-index: specifier: ^1.9.1 - version: 1.9.1 + version: 1.9.1(supports-color@9.4.0) sinon: specifier: ^17.0.1 version: 17.0.1 + supports-color: + specifier: ^9.4.0 + version: 9.4.0 packages: @@ -241,7 +247,7 @@ packages: '@babel/traverse': 7.24.7 '@babel/types': 7.24.7 convert-source-map: 2.0.0 - debug: 4.3.5 + debug: 4.3.5(supports-color@9.4.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -474,7 +480,7 @@ packages: '@babel/helper-split-export-declaration': 7.24.7 '@babel/parser': 7.24.7 '@babel/types': 7.24.7 - debug: 4.3.5 + debug: 4.3.5(supports-color@9.4.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -489,7 +495,7 @@ packages: /@bazel/runfiles@5.8.1: resolution: {integrity: sha512-NDdfpdQ6rZlylgv++iMn5FkObC/QlBQvipinGLSOguTYpRywmieOyJ29XHvUilspwTFSILWpoE9CqMGkHXug1g==} - dev: true + dev: false /@emotion/babel-plugin@11.11.0: resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} @@ -790,7 +796,7 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 9.5.0 + eslint: 9.5.0(supports-color@9.4.0) eslint-visitor-keys: 3.4.3 dev: true @@ -799,12 +805,12 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/config-array@0.16.0: + /@eslint/config-array@0.16.0(supports-color@9.4.0): resolution: {integrity: sha512-/jmuSd74i4Czf1XXn7wGRWZCuyaUZ330NH1Bek0Pplatt4Sy1S5haN21SCLLdbeKslQ+S0wEJ+++v5YibSi+Lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.3.5 + debug: 4.3.5(supports-color@9.4.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -815,7 +821,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.5 + debug: 4.3.5(supports-color@9.4.0) espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -827,12 +833,12 @@ packages: - supports-color dev: true - /@eslint/eslintrc@3.1.0: + /@eslint/eslintrc@3.1.0(supports-color@9.4.0): resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: ajv: 6.12.6 - debug: 4.3.5 + debug: 4.3.5(supports-color@9.4.0) espree: 10.1.0 globals: 14.0.0 ignore: 5.3.1 @@ -901,7 +907,7 @@ packages: deprecated: Use @eslint/config-array instead dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.5 + debug: 4.3.5(supports-color@9.4.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -1448,7 +1454,7 @@ packages: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5) - debug: 4.3.5 + debug: 4.3.5(supports-color@9.4.0) eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 @@ -1473,7 +1479,7 @@ packages: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) - debug: 4.3.5 + debug: 4.3.5(supports-color@9.4.0) eslint: 8.57.0 typescript: 5.4.5 transitivePeerDependencies: @@ -1500,7 +1506,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5) - debug: 4.3.5 + debug: 4.3.5(supports-color@9.4.0) eslint: 8.57.0 tsutils: 3.21.0(typescript@5.4.5) typescript: 5.4.5 @@ -1524,7 +1530,7 @@ packages: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.5 + debug: 4.3.5(supports-color@9.4.0) globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.2 @@ -1849,13 +1855,13 @@ packages: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} dev: true - /body-parser@1.20.2: + /body-parser@1.20.2(supports-color@9.4.0): resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 2.6.9 + debug: 2.6.9(supports-color@9.4.0) depd: 2.0.0 destroy: 1.2.0 http-errors: 2.0.0 @@ -2188,7 +2194,7 @@ packages: is-data-view: 1.0.1 dev: true - /debug@2.6.9: + /debug@2.6.9(supports-color@9.4.0): resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: supports-color: '*' @@ -2197,6 +2203,7 @@ packages: optional: true dependencies: ms: 2.0.0 + supports-color: 9.4.0 dev: true /debug@3.2.7: @@ -2223,7 +2230,7 @@ packages: supports-color: 8.1.1 dev: true - /debug@4.3.5: + /debug@4.3.5(supports-color@9.4.0): resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} engines: {node: '>=6.0'} peerDependencies: @@ -2233,6 +2240,7 @@ packages: optional: true dependencies: ms: 2.1.2 + supports-color: 9.4.0 /decamelize@4.0.0: resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} @@ -2592,7 +2600,7 @@ packages: peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 9.5.0 + eslint: 9.5.0(supports-color@9.4.0) semver: 7.6.2 dev: true @@ -2602,7 +2610,7 @@ packages: peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 9.5.0 + eslint: 9.5.0(supports-color@9.4.0) dev: true /eslint-config-standard-jsx@11.0.0(eslint-plugin-react@7.34.3)(eslint@8.57.0): @@ -2699,7 +2707,7 @@ packages: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) '@eslint-community/regexpp': 4.10.1 - eslint: 9.5.0 + eslint: 9.5.0(supports-color@9.4.0) eslint-compat-utils: 0.5.1(eslint@9.5.0) dev: true @@ -2755,7 +2763,7 @@ packages: peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 9.5.0 + eslint: 9.5.0(supports-color@9.4.0) eslint-utils: 3.0.0(eslint@9.5.0) globals: 13.24.0 rambda: 7.5.0 @@ -2786,7 +2794,7 @@ packages: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) enhanced-resolve: 5.17.0 - eslint: 9.5.0 + eslint: 9.5.0(supports-color@9.4.0) eslint-plugin-es-x: 7.7.0(eslint@9.5.0) get-tsconfig: 4.7.5 globals: 15.6.0 @@ -2814,7 +2822,7 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 9.5.0 + eslint: 9.5.0(supports-color@9.4.0) eslint-config-prettier: 9.1.0(eslint@9.5.0) prettier: 3.3.2 prettier-linter-helpers: 1.0.0 @@ -2904,7 +2912,7 @@ packages: peerDependencies: eslint: '>=5' dependencies: - eslint: 9.5.0 + eslint: 9.5.0(supports-color@9.4.0) eslint-visitor-keys: 2.1.0 dev: true @@ -2944,7 +2952,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.5 + debug: 4.3.5(supports-color@9.4.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -2975,15 +2983,15 @@ packages: - supports-color dev: true - /eslint@9.5.0: + /eslint@9.5.0(supports-color@9.4.0): resolution: {integrity: sha512-+NAOZFrW/jFTS3dASCGBxX1pkFD0/fsO+hfAkJ4TyYKwgsXZbqzrw+seCYFCcPCYXvnD67tAnglU7GQTz6kcVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) '@eslint-community/regexpp': 4.10.1 - '@eslint/config-array': 0.16.0 - '@eslint/eslintrc': 3.1.0 + '@eslint/config-array': 0.16.0(supports-color@9.4.0) + '@eslint/eslintrc': 3.1.0(supports-color@9.4.0) '@eslint/js': 9.5.0 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.0 @@ -2991,7 +2999,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.5 + debug: 4.3.5(supports-color@9.4.0) escape-string-regexp: 4.0.0 eslint-scope: 8.0.1 eslint-visitor-keys: 4.0.0 @@ -3084,23 +3092,23 @@ packages: jest-message-util: 29.7.0 jest-util: 29.7.0 - /express@4.19.2: + /express@4.19.2(supports-color@9.4.0): resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.2 + body-parser: 1.20.2(supports-color@9.4.0) content-disposition: 0.5.4 content-type: 1.0.5 cookie: 0.6.0 cookie-signature: 1.0.6 - debug: 2.6.9 + debug: 2.6.9(supports-color@9.4.0) depd: 2.0.0 encodeurl: 1.0.2 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.2.0 + finalhandler: 1.2.0(supports-color@9.4.0) fresh: 0.5.2 http-errors: 2.0.0 merge-descriptors: 1.0.1 @@ -3112,8 +3120,8 @@ packages: qs: 6.11.0 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 + send: 0.18.0(supports-color@9.4.0) + serve-static: 1.15.0(supports-color@9.4.0) setprototypeof: 1.2.0 statuses: 2.0.1 type-is: 1.6.18 @@ -3182,11 +3190,11 @@ packages: dependencies: to-regex-range: 5.0.1 - /finalhandler@1.2.0: + /finalhandler@1.2.0(supports-color@9.4.0): resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} dependencies: - debug: 2.6.9 + debug: 2.6.9(supports-color@9.4.0) encodeurl: 1.0.2 escape-html: 1.0.3 on-finished: 2.4.1 @@ -4272,12 +4280,12 @@ packages: hasBin: true dev: true - /mocha-junit-reporter@2.2.1(mocha@10.5.1): + /mocha-junit-reporter@2.2.1(mocha@10.5.1)(supports-color@9.4.0): resolution: {integrity: sha512-iDn2tlKHn8Vh8o4nCzcUVW4q7iXp7cC4EB78N0cDHIobLymyHNwe0XG8HEHHjc3hJlXm0Vy6zcrxaIhnI2fWmw==} peerDependencies: mocha: '>=2.2.5' dependencies: - debug: 4.3.5 + debug: 4.3.5(supports-color@9.4.0) md5: 2.3.0 mkdirp: 3.0.1 mocha: 10.5.1 @@ -5046,11 +5054,11 @@ packages: hasBin: true dev: true - /send@0.18.0: + /send@0.18.0(supports-color@9.4.0): resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} dependencies: - debug: 2.6.9 + debug: 2.6.9(supports-color@9.4.0) depd: 2.0.0 destroy: 1.2.0 encodeurl: 1.0.2 @@ -5073,13 +5081,13 @@ packages: randombytes: 2.1.0 dev: true - /serve-index@1.9.1: + /serve-index@1.9.1(supports-color@9.4.0): resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} engines: {node: '>= 0.8.0'} dependencies: accepts: 1.3.8 batch: 0.6.1 - debug: 2.6.9 + debug: 2.6.9(supports-color@9.4.0) escape-html: 1.0.3 http-errors: 1.6.3 mime-types: 2.1.35 @@ -5088,14 +5096,14 @@ packages: - supports-color dev: true - /serve-static@1.15.0: + /serve-static@1.15.0(supports-color@9.4.0): resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} dependencies: encodeurl: 1.0.2 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.18.0 + send: 0.18.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color dev: true @@ -5361,6 +5369,10 @@ packages: has-flag: 4.0.0 dev: true + /supports-color@9.4.0: + resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} + engines: {node: '>=12'} + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'}