diff --git a/.bazelrc b/.bazelrc index e711429547f5a..6c7bbee315a23 100644 --- a/.bazelrc +++ b/.bazelrc @@ -24,10 +24,10 @@ build --flag_alias=headless=//common:headless # Set the default java toolchain -build --java_language_version=17 -build --java_runtime_version=remotejdk_17 -build --tool_java_language_version=17 -build --tool_java_runtime_version=remotejdk_17 +build --java_language_version=21 +build --java_runtime_version=remotejdk_21 +build --tool_java_language_version=21 +build --tool_java_runtime_version=remotejdk_21 # We target java 11 by default diff --git a/.github/workflows/ci-rbe.yml b/.github/workflows/ci-rbe.yml index a63b54210d7b9..405bffde2bad8 100644 --- a/.github/workflows/ci-rbe.yml +++ b/.github/workflows/ci-rbe.yml @@ -21,7 +21,7 @@ jobs: with: name: Check format script run caching: false - ruby-version: jruby-9.4.12.0 + ruby-version: jruby-10.0.0.0 run: ./scripts/github-actions/check-format.sh test: @@ -31,5 +31,5 @@ jobs: with: name: All RBE tests caching: false - ruby-version: jruby-9.4.12.0 + ruby-version: jruby-10.0.0.0 run: ./scripts/github-actions/ci-build.sh ${{ github.event.inputs.disable_test_cache }} diff --git a/.github/workflows/ci-renovate-rbe.yml b/.github/workflows/ci-renovate-rbe.yml index 205fd4caae9ae..e0423839568d3 100644 --- a/.github/workflows/ci-renovate-rbe.yml +++ b/.github/workflows/ci-renovate-rbe.yml @@ -47,7 +47,7 @@ jobs: with: name: Check format script run caching: false - ruby-version: jruby-9.4.12.0 + ruby-version: jruby-10.0.0.0 run: ./scripts/github-actions/check-format.sh test: @@ -58,7 +58,7 @@ jobs: with: name: All RBE tests caching: false - ruby-version: jruby-9.4.12.0 + ruby-version: jruby-10.0.0.0 run: ./scripts/github-actions/ci-build.sh ci-gh: diff --git a/.github/workflows/ci-ruby.yml b/.github/workflows/ci-ruby.yml index 42166bb3fffb4..63aeb45c304ab 100644 --- a/.github/workflows/ci-ruby.yml +++ b/.github/workflows/ci-ruby.yml @@ -30,17 +30,17 @@ jobs: fail-fast: false matrix: include: - - ruby-version: 3.1.6 + - ruby-version: 3.2.8 os: ubuntu - - ruby-version: 3.1.6 + - ruby-version: 3.2.8 os: windows - - ruby-version: 3.1.6 + - ruby-version: 3.2.8 os: macos - - ruby-version: 3.3.5 + - ruby-version: 3.4.3 os: ubuntu - - ruby-version: jruby-9.4.12.0 + - ruby-version: jruby-10.0.0.0 os: ubuntu - - ruby-version: truffleruby-24.1.1 + - ruby-version: truffleruby-24.2.1 os: ubuntu with: name: Unit Tests (${{ matrix.ruby-version }}, ${{ matrix.os }}) diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml index 42070c69eca17..fb0f5a5045f0d 100644 --- a/.github/workflows/pre-release.yml +++ b/.github/workflows/pre-release.yml @@ -82,7 +82,7 @@ jobs: - name: Install Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: '3.1' + ruby-version: '3.2' working-directory: 'rb' - name: Setup curl for Ubuntu run: sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev diff --git a/MODULE.bazel b/MODULE.bazel index 9fd2d5b9377f3..3d1997c2d869d 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -25,7 +25,7 @@ bazel_dep(name = "rules_oci", version = "1.8.0") bazel_dep(name = "rules_pkg", version = "1.0.1") bazel_dep(name = "rules_python", version = "1.1.0") bazel_dep(name = "rules_proto", version = "7.0.2") -bazel_dep(name = "rules_ruby", version = "0.18.0") +bazel_dep(name = "rules_ruby", version = "0.19.0") # Until `rules_jvm_external` 6.8 ships git_override( @@ -266,86 +266,83 @@ ruby.bundle_fetch( gem_checksums = { "activesupport-7.2.2.1": "842bcbf8a92977f80fb4750661a237cf5dd4fdd442066b3c35e88afb488647f5", "addressable-2.8.7": "462986537cf3735ab5f3c0f557f14155d778f4b43ea4f485a9deb9c8f7c58232", - "ast-2.4.2": "1e280232e6a33754cde542bc5ef85520b74db2aac73ec14acef453784447cc12", + "ast-2.4.3": "954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383", "base64-0.2.0": "0f25e9b21a02a0cc0cea8ef92b2041035d39350946e8789c562b2d1a3da01507", "benchmark-0.4.0": "0f12f8c495545e3710c3e4f0480f63f06b4c842cc94cec7f33a956f5180e874a", "bigdecimal-3.1.9": "2ffc742031521ad69c2dfc815a98e426a230a3d22aeac1995826a75dabfad8cc", "bigdecimal-3.1.9-java": "dd9b8f7c870664cd9538a1325ce385ba57a6627969177258c4f0e661a7be4456", "concurrent-ruby-1.3.5": "813b3e37aca6df2a21a3b9f1d497f8cbab24a2b94cab325bffe65ee0f6cbebc6", - "connection_pool-2.5.0": "233b92f8d38e038c1349ccea65dd3772727d669d6d2e71f9897c8bf5cd53ebfc", + "connection_pool-2.5.3": "cfd74a82b9b094d1ce30c4f1a346da23ee19dc8a062a16a85f58eab1ced4305b", "crack-1.0.0": "c83aefdb428cdc7b66c7f287e488c796f055c0839e6e545fec2c7047743c4a49", - "csv-3.3.2": "6ff0c135e65e485d1864dde6c1703b60d34cc9e19bed8452834a0b28a519bd4e", + "csv-3.3.4": "e96ecd5a8c3494aa5b596282249daba5c6033203c199248e6146e36d2a78d8cd", "curb-1.0.9": "07e5b74a4836103ce186827528f76a22d3991a9b7c45f5c10ee18ee7b03feb0d", "date-3.4.1": "bf268e14ef7158009bfeaec40b5fa3c7271906e88b196d958a89d4b408abe64f", "date-3.4.1-java": "74740d914c65a922a15657c25ff0e203c16f1d0f7aa910a9ebed712afe9819c4", "debug-1.10.0": "11e28ca74875979e612444104f3972bd5ffb9e79179907d7ad46dba44bd2e7a4", - "diff-lcs-1.6.0": "a1e7f7b272962f8fc769358ad00001b87cdcf32ba349d6c70c6b544613d2da2e", + "diff-lcs-1.6.1": "12a5a83f3e37a8e2f4427268e305914d5f1879f22b4e73bb1a09f76a3dd86cd4", "drb-2.2.1": "e9d472bf785f558b96b25358bae115646da0dbfd45107ad858b0bc0d935cb340", - "ffi-1.17.1": "26f6b0dbd1101e6ffc09d3ca640b2a21840cc52731ad8a7ded9fb89e5fb0fc39", - "ffi-1.17.1-arm64-darwin": "a8e04f79d375742c54ee7f9fff4b4022b87200a4ec0eb082128d3b6559e67b4d", - "ffi-1.17.1-java": "2546e11f9592e2b9b6de49eb96d2a378da47b0bb8469d5cbc9881a55c0d55da7", - "ffi-1.17.1-x64-mingw-ucrt": "da79a832aee7ccd3635b4ec5e8a1927aed786e7ea03f2e33e2c06ea4fcece4a0", - "ffi-1.17.1-x86_64-darwin": "0036199c290462dd7f03bc22933644c1685b7834a21788062bd5df48c72aa7a6", - "ffi-1.17.1-x86_64-linux-gnu": "8c0ade2a5d19f3672bccfe3b58e016ae5f159e3e2e741c856db87fcf07c903d0", + "ffi-1.17.2": "297235842e5947cc3036ebe64077584bff583cd7a4e94e9a02fdec399ef46da6", + "ffi-1.17.2-java": "94c8516d7c97b21915497b994e41f69e7e8e21d5fc085c498b68e52044e191ec", + "ffi-1.17.2-x64-mingw-ucrt": "15d2da54ee578657a333a6059ed16eaba1cbd794ceecd15944825b65c8381ac0", + "ffi-1.17.2-x86_64-darwin": "981f2d4e32ea03712beb26e55e972797c2c5a7b0257955d8667ba58f2da6440e", + "ffi-1.17.2-x86_64-linux-gnu": "05d2026fc9dbb7cfd21a5934559f16293815b7ce0314846fee2ac8efbdb823ea", "fileutils-1.7.3": "57271e854b694a87755d76f836f5c57b2c9538ebbaf4b2154bb66addf15eb5da", "git-1.19.1": "b0a422d9f6517353c48a330d6114de4db9e0c82dbe7202964a1d9f1fbc827d70", "hashdiff-1.1.2": "2c30eeded6ed3dce8401d2b5b99e6963fe5f14ed85e60dd9e33c545a44b71a77", "i18n-1.14.7": "ceba573f8138ff2c0915427f1fc5bdf4aa3ab8ae88c8ce255eb3ecf0a11a5d0f", "io-console-0.8.0": "cd6a9facbc69871d69b2cb8b926fc6ea7ef06f06e505e81a64f14a470fddefa2", "io-console-0.8.0-java": "3cc6fd5c66e587145c1fdf8dc40c2e3d851e90722a5d0cc3f38da352f06fe1bd", - "irb-1.15.1": "d9bca745ac4207a8b728a52b98b766ca909b86ff1a504bcde3d6f8c84faae890", + "irb-1.15.2": "222f32952e278da34b58ffe45e8634bf4afc2dc7aa9da23fed67e581aa50fdba", "jar-dependencies-0.5.5": "2972b9fcba4b014e6446a84b5c09674a3e8648b95b71768e729f0e8e40568059", - "json-2.10.1": "ddc88ad91a1baf3f0038c174f253af3b086d30dc74db17ca4259bbde982f94dc", - "json-2.10.1-java": "de07233fb74113af2186eb9342f8207c9be0faf289a1e2623c9b0acb8b0b0ee1", + "json-2.11.3": "9a10f658a2de67c0eb837eb795dd48132ce797c403e52b5ebef87dcdc7f9ccc1", + "json-2.11.3-java": "cfe8db24e49073c5bcd93699d106a1c1c9e5bc301fcc0de05965e72fad999a34", "language_server-protocol-3.17.0.4": "c484626478664fd13482d8180947c50a8590484b1258b99b7aedb3b69df89669", "lint_roller-1.1.0": "2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87", "listen-3.9.0": "db9e4424e0e5834480385197c139cb6b0ae0ef28cc13310cfd1ca78377d59c67", - "logger-1.6.6": "dd618d24e637715472732e7eed02e33cfbdf56deaad225edd0f1f89d38024017", - "minitest-5.25.4": "9cf2cae25ac4dfc90c988ebc3b917f53c054978b673273da1bd20bcb0778f947", - "parallel-1.26.3": "d86babb7a2b814be9f4b81587bf0b6ce2da7d45969fab24d8ae4bf2bb4d4c7ef", - "parser-3.3.7.1": "7dbe61618025519024ac72402a6677ead02099587a5538e84371b76659e6aca1", + "logger-1.7.0": "196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203", + "minitest-5.25.5": "391b6c6cb43a4802bfb7c93af1ebe2ac66a210293f4a3fb7db36f2fc7dc2c756", + "parallel-1.27.0": "4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130", + "parser-3.3.8.0": "2476364142b307fa5a1b1ece44f260728be23858a9c71078e956131a75453c45", "pp-0.6.2": "947ec3120c6f92195f8ee8aa25a7b2c5297bb106d83b41baa02983686577b6ff", "prettyprint-0.2.0": "2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193", - "psych-5.2.3": "84a54bb952d14604fea22d99938348814678782f58b12648fcdfa4d2fce859ee", - "psych-5.2.3-java": "3e5425b9e8a2f41cc2707d5ef14fdc1ae908abbafb12fe45727bd63900056585", - "public_suffix-6.0.1": "61d44e1cab5cbbbe5b31068481cf16976dd0dc1b6b07bd95617ef8c5e3e00c6f", + "prism-1.4.0": "dc0e3e00e93160213dc2a65519d9002a4a1e7b962db57d444cf1a71565bb703e", + "psych-5.2.4": "f2d9810f7f383a6b0fbc705202851e1a55b236bcb8e168ab5dfa5741842ec7c5", + "psych-5.2.4-java": "a3ae584e85e11fd069f17a563ef18f204d3df0fde0c093d35ae494fd64164664", + "public_suffix-6.0.2": "bfa7cd5108066f8c9602e0d6d4114999a5df5839a63149d3e8b0f9c1d3558394", "racc-1.8.1": "4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f", "racc-1.8.1-java": "54f2e6d1e1b91c154013277d986f52a90e5ececbe91465d29172e49342732b98", - "rack-2.2.11": "424c49affa19081e9255d65d861f2d7bc7d8388edc0cb608b5e6caf1dd49bb8a", + "rack-2.2.13": "ccee101719696a5da12ee9da6fb3b1d20cb329939e089e0e458be6e93667f0fb", "rainbow-3.1.1": "039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a", "rake-13.2.1": "46cb38dae65d7d74b6020a4ac9d48afed8eb8149c040eccf0523bec91907059d", "rb-fsevent-0.11.2": "43900b972e7301d6570f64b850a5aa67833ee7d87b458ee92805d56b7318aefe", "rb-inotify-0.11.1": "a0a700441239b0ff18eb65e3866236cd78613d6b9f78fea1f9ac47a85e47be6e", - "rbs-3.8.1": "2b6ce37952e267e1d3ad330aabfadbdceac234193a60cc18f25a8f75fa949c1d", + "rbs-3.9.2": "873b5d01a11f3dc15a7cc3bd66d9d50c3d05fad4fbb73b47704eb96f0ba6faf2", "rchardet-1.9.0": "26889486cdd83b378652baf7603f71d93e431bb11bc237b4cd8c65151af4a590", - "rdoc-6.12.0": "7d6f706e070bffa5d18a448f24076cbfb34923a99c1eab842aa18e6ca69f56e0", + "rdoc-6.13.1": "62a0dac99493c94e8eb7a3fb44e55aefcb4cecb119f7991f25bddc5ed8d472f7", "regexp_parser-2.10.0": "cb6f0ddde88772cd64bff1dbbf68df66d376043fe2e66a9ef77fcb1b0c548c61", - "reline-0.6.0": "57620375dcbe56ec09bac7192bfb7460c716bbf0054dc94345ecaa5438e539d2", + "reline-0.6.1": "1afcc9d7cb1029cdbe780d72f2f09251ce46d3780050f3ec39c3ccc6b60675fb", "rexml-3.4.1": "c74527a9a0a04b4ec31dbe0dc4ed6004b960af943d8db42e539edde3a871abca", "rspec-3.13.0": "d490914ac1d5a5a64a0e1400c1d54ddd2a501324d703b8cfe83f458337bab993", "rspec-core-3.13.3": "25136507f4f9cf2e8977a2851e64e438b4331646054e345998714108745cdfe4", - "rspec-expectations-3.13.3": "0e6b5af59b900147698ea0ff80456c4f2e69cac4394fbd392fbd1ca561f66c58", - "rspec-mocks-3.13.2": "2327335def0e1665325a9b617e3af9ae20272741d80ac550336309a7c59abdef", - "rspec-support-3.13.2": "cea3a2463fd9b84b9dcc9685efd80ea701aa8f7b3decb3b3ce795ed67737dbec", - "rubocop-1.72.2": "0259a32d89fee60882bf4c4d8847e696357719c9db4971839da742bf053ae96b", - "rubocop-ast-1.38.0": "4fdf6792fe443a9a18acb12dbc8225d0d64cd1654e41fedb30e79c18edbb26ae", - "rubocop-capybara-2.21.0": "5d264efdd8b6c7081a3d4889decf1451a1cfaaec204d81534e236bc825b280ab", - "rubocop-factory_bot-2.26.1": "8de13cd4edcee5ca800f255188167ecef8dbfc3d1fae9f15734e9d2e755392aa", - "rubocop-performance-1.24.0": "e5bd39ff3e368395b9af886927cc37f5892f43db4bd6c8526594352d5b4440b5", - "rubocop-rake-0.6.0": "56b6f22189af4b33d4f4e490a555c09f1281b02f4d48c3a61f6e8fe5f401d8db", - "rubocop-rspec-2.31.0": "2bae19388d78e1ceace44cd95fd34f3209f4ef20cac1b168d0a1325cbba3d672", - "rubocop-rspec_rails-2.29.1": "4ae95abbe9ca5a9b6d8be14e50d230fb5b6ba033b05d4c0981b5b76fc44988e4", + "rspec-expectations-3.13.4": "4e43459765dfee900b25aa1361e106ab0799895ede65fc57872069feb559ecd8", + "rspec-mocks-3.13.3": "be08abadfe28e932d03b8e70215cd5972bd7693e0f1a45c7479b11e9a773c3c2", + "rspec-support-3.13.3": "2a61e393f6e18b7228726e0c6869c5d5a1419d37206116c4d917d145276b3f43", + "rubocop-1.75.4": "e0656af44d0811bb40f6d0bd4ed6c8d80c0f05f3444f0e8f0839833dd46d18c6", + "rubocop-ast-1.44.1": "e3cc04203b2ef04f6d6cf5f85fe6d643f442b18cc3b23e3ada0ce5b6521b8e92", + "rubocop-performance-1.25.0": "6f7d03568a770054117a78d0a8e191cefeffb703b382871ca7743831b1a52ec1", + "rubocop-rake-0.7.1": "3797f2b6810c3e9df7376c26d5f44f3475eda59eb1adc38e6f62ecf027cbae4d", + "rubocop-rspec-3.6.0": "c0e4205871776727e54dee9cc91af5fd74578001551ba40e1fe1a1ab4b404479", "ruby-progressbar-1.13.0": "80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33", "rubyzip-2.4.1": "8577c88edc1fde8935eb91064c5cb1aef9ad5494b940cf19c775ee833e075615", "securerandom-0.4.1": "cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1", "steep-1.5.3": "7c6302a4d5932d0a46176ebc79766e52b853c223a85525aa2f8911e345123b85", - "stringio-3.1.4": "7dd68f6f1a88610817c21f6d926dbf36e1fc585d3869fcd4a56c1f3210591d70", - "strscan-3.1.2": "5529ff36c95fe752b8489f2e6c7f4f230fd9904e0b24fdc6e0833436c63ee2e3", - "strscan-3.1.2-java": "4e9379df974b1af28d1bc1bc845ebb7e2bb21a7f9948ac99e1a8c5479881ecec", + "stringio-3.1.7": "5b78b7cb242a315fb4fca61a8255d62ec438f58da2b90be66048546ade4507fa", + "strscan-3.1.4": "8e130a503aa6c79352c6ac02a9819507c8b8720c174ce8335e3eb2c8cc2ae042", + "strscan-3.1.4-java": "5551e01d215ba8ac7dadb6dab46b9fb4c33303ba63eaf3e1b0496c078b8d3fb8", "terminal-table-3.0.2": "f951b6af5f3e00203fb290a669e0a85c5dd5b051b3b023392ccfd67ba5abae91", "tzinfo-2.0.6": "8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b", "unicode-display_width-2.6.0": "12279874bba6d5e4d2728cef814b19197dbb10d7a7837a869bab65da943b7f5a", - "webmock-3.25.0": "573c23fc4887008c830f22da588db339ca38b6d59856fd57f5a068959474198e", + "webmock-3.25.1": "ab9d5d9353bcbe6322c83e1c60a7103988efc7b67cd72ffb9012629c3d396323", "webrick-1.9.1": "b42d3c94f166f3fb73d87e9b359def9b5836c426fc8beacf38f2184a21b2a989", "websocket-1.2.11": "b7e7a74e2410b5e85c25858b26b3322f29161e300935f70a0e0d3c35e0462737", "yard-0.9.37": "a6e910399e78e613f80ba9add9ba7c394b1a935f083cccbef82903a3d2a26992", diff --git a/java/BUILD.bazel b/java/BUILD.bazel index 8634b26a80295..bfd1d45392081 100644 --- a/java/BUILD.bazel +++ b/java/BUILD.bazel @@ -1,4 +1,4 @@ -load("@contrib_rules_jvm//java:defs.bzl", "spotbugs_config") +load("@contrib_rules_jvm//java:defs.bzl", "spotbugs_binary", "spotbugs_config") load(":defs.bzl", "artifact") exports_files( @@ -34,11 +34,20 @@ java_library( ], ) +spotbugs_binary( + name = "spotbugs-cli", + runtime_deps = [ + artifact("com.github.spotbugs:spotbugs"), + artifact("org.slf4j:slf4j-jdk14"), + ], +) + spotbugs_config( name = "spotbugs-config", effort = "default", exclude_filter = "spotbugs-excludes.xml", fail_on_warning = True, + spotbugs_binary = ":spotbugs-cli", visibility = [ "//visibility:public", ], diff --git a/java/spotbugs-excludes.xml b/java/spotbugs-excludes.xml index 9c584772c8696..ccaa58909be31 100644 --- a/java/spotbugs-excludes.xml +++ b/java/spotbugs-excludes.xml @@ -4,6 +4,10 @@ xmlns="https://github.com/spotbugs/filter/3.0.0" xsi:schemaLocation="https://github.com/spotbugs/filter/3.0.0 https://raw.githubusercontent.com/spotbugs/spotbugs/3.1.0/spotbugs/etc/findbugsfilter.xsd"> + + + + @@ -139,7 +143,7 @@ - + @@ -240,4 +244,9 @@ + + + + + diff --git a/java/src/org/openqa/selenium/chromium/ChromiumDriver.java b/java/src/org/openqa/selenium/chromium/ChromiumDriver.java index 37accd0c3dafb..78dd386048215 100644 --- a/java/src/org/openqa/selenium/chromium/ChromiumDriver.java +++ b/java/src/org/openqa/selenium/chromium/ChromiumDriver.java @@ -321,6 +321,10 @@ public void launchApp(String id) { @Override public Map executeCdpCommand(String commandName, Map parameters) { Require.nonNull("Command Name", commandName); + if (this.cdp == null) { + return java.util.Collections.emptyMap(); + } + return cdp.executeCdpCommand(commandName, parameters); } @@ -358,36 +362,56 @@ public Optional maybeGetBiDi() { @Override public List> getCastSinks() { + if (this.casting == null) { + return java.util.Collections.emptyList(); + } + return casting.getCastSinks(); } @Override public String getCastIssueMessage() { + if (this.casting == null) { + return ""; + } + return casting.getCastIssueMessage(); } @Override public void selectCastSink(String deviceName) { Require.nonNull("Device Name", deviceName); - casting.selectCastSink(deviceName); + + if (this.casting != null) { + casting.selectCastSink(deviceName); + } } @Override public void startDesktopMirroring(String deviceName) { Require.nonNull("Device Name", deviceName); - casting.startDesktopMirroring(deviceName); + + if (this.casting != null) { + casting.startDesktopMirroring(deviceName); + } } @Override public void startTabMirroring(String deviceName) { Require.nonNull("Device Name", deviceName); - casting.startTabMirroring(deviceName); + + if (this.casting != null) { + casting.startTabMirroring(deviceName); + } } @Override public void stopCasting(String deviceName) { Require.nonNull("Device Name", deviceName); - casting.stopCasting(deviceName); + + if (this.casting != null) { + casting.stopCasting(deviceName); + } } @Override diff --git a/java/src/org/openqa/selenium/firefox/ProfilesIni.java b/java/src/org/openqa/selenium/firefox/ProfilesIni.java index 1bd5380e8e0af..8e22caa5107e1 100644 --- a/java/src/org/openqa/selenium/firefox/ProfilesIni.java +++ b/java/src/org/openqa/selenium/firefox/ProfilesIni.java @@ -136,10 +136,11 @@ protected File locateAppDataDirectory(Platform os) { appData = new File( MessageFormat.format( - "{0}/Library/Application Support/Firefox", System.getenv("HOME"))); + "{0}/Library/Application Support/Firefox", System.getProperty("user.home"))); } else { - appData = new File(MessageFormat.format("{0}/.mozilla/firefox", System.getenv("HOME"))); + appData = + new File(MessageFormat.format("{0}/.mozilla/firefox", System.getProperty("user.home"))); } if (!appData.exists()) { diff --git a/java/src/org/openqa/selenium/remote/tracing/opentelemetry/OpenTelemetryTracer.java b/java/src/org/openqa/selenium/remote/tracing/opentelemetry/OpenTelemetryTracer.java index d3b16bd42b0a1..5b7389636d554 100644 --- a/java/src/org/openqa/selenium/remote/tracing/opentelemetry/OpenTelemetryTracer.java +++ b/java/src/org/openqa/selenium/remote/tracing/opentelemetry/OpenTelemetryTracer.java @@ -31,7 +31,7 @@ public class OpenTelemetryTracer implements org.openqa.selenium.remote.tracing.Tracer { private static final Logger LOG = Logger.getLogger(OpenTelemetryTracer.class.getName()); - private static boolean HTTP_LOGS; + private static volatile boolean HTTP_LOGS; // We obtain the underlying tracer instance from the singleton instance // that OpenTelemetry maintains. If we blindly grabbed the tracing provider diff --git a/rb/.rubocop.yml b/rb/.rubocop.yml index b03342e0384d8..372b0f116bd3a 100644 --- a/rb/.rubocop.yml +++ b/rb/.rubocop.yml @@ -4,7 +4,7 @@ plugins: - rubocop-rspec AllCops: - TargetRubyVersion: 3.1 + TargetRubyVersion: 3.2 NewCops: enable Exclude: - !ruby/regexp /lib\/selenium\/devtools\/v\d+/ diff --git a/rb/.ruby-version b/rb/.ruby-version index 9cec7165ab0a0..f092941a7507b 100644 --- a/rb/.ruby-version +++ b/rb/.ruby-version @@ -1 +1 @@ -3.1.6 +3.2.8 diff --git a/rb/README.md b/rb/README.md index aacb9db114b10..396462bf17bf9 100644 --- a/rb/README.md +++ b/rb/README.md @@ -1,6 +1,6 @@ # selenium-webdriver -This gem provides Ruby bindings for Selenium and supports MRI >= 3.1. +This gem provides Ruby bindings for Selenium and supports MRI >= 3.2. ## Install diff --git a/rb/lib/selenium/webdriver.rb b/rb/lib/selenium/webdriver.rb index 5b82fc1a0554d..47b95008a28e2 100644 --- a/rb/lib/selenium/webdriver.rb +++ b/rb/lib/selenium/webdriver.rb @@ -21,7 +21,6 @@ require 'fileutils' require 'date' require 'json' -require 'set' require 'uri' require 'net/http' @@ -85,8 +84,8 @@ def self.root # @see Selenium::WebDriver::Support::AbstractEventListener # - def self.for(*args) - WebDriver::Driver.for(*args) + def self.for(*) + WebDriver::Driver.for(*) end # @@ -95,9 +94,9 @@ def self.for(*args) # @return [Logger] # - def self.logger(**opts) + def self.logger(**) level = $DEBUG || ENV.key?('DEBUG') ? :debug : :info - @logger ||= WebDriver::Logger.new('Selenium', default_level: level, **opts) + @logger ||= WebDriver::Logger.new('Selenium', default_level: level, **) end end # WebDriver end # Selenium diff --git a/rb/lib/selenium/webdriver/atoms.rb b/rb/lib/selenium/webdriver/atoms.rb index fac103f669b9f..c42405192aba9 100644 --- a/rb/lib/selenium/webdriver/atoms.rb +++ b/rb/lib/selenium/webdriver/atoms.rb @@ -31,8 +31,8 @@ def read_atom(function) File.read(File.expand_path("../atoms/#{function}.js", __FILE__)) end - def execute_atom(function_name, *arguments) - execute_script(atom_script(function_name), *arguments) + def execute_atom(function_name, *) + execute_script(atom_script(function_name), *) end end # Atoms end # WebDriver diff --git a/rb/lib/selenium/webdriver/bidi/log/console_log_entry.rb b/rb/lib/selenium/webdriver/bidi/log/console_log_entry.rb index d867c7c7834a1..a8b1c7fe2375f 100644 --- a/rb/lib/selenium/webdriver/bidi/log/console_log_entry.rb +++ b/rb/lib/selenium/webdriver/bidi/log/console_log_entry.rb @@ -23,8 +23,8 @@ class BiDi class ConsoleLogEntry < GenericLogEntry attr_accessor :method, :realm, :args - def initialize(method:, realm:, args:, **opts) - super(**opts) + def initialize(method:, realm:, args:, **) + super(**) @method = method @realm = realm @args = args diff --git a/rb/lib/selenium/webdriver/chrome/driver.rb b/rb/lib/selenium/webdriver/chrome/driver.rb index 46a0b1e321a91..17f2c250f9799 100644 --- a/rb/lib/selenium/webdriver/chrome/driver.rb +++ b/rb/lib/selenium/webdriver/chrome/driver.rb @@ -30,9 +30,9 @@ module Chrome class Driver < Chromium::Driver include LocalDriver - def initialize(options: nil, service: nil, url: nil, **opts) + def initialize(options: nil, service: nil, url: nil, **) caps, url = initialize_local_driver(options, service, url) - super(caps: caps, url: url, **opts) + super(caps: caps, url: url, **) end def browser diff --git a/rb/lib/selenium/webdriver/chromium/options.rb b/rb/lib/selenium/webdriver/chromium/options.rb index 7d7e59716a76e..065a662b0c445 100644 --- a/rb/lib/selenium/webdriver/chromium/options.rb +++ b/rb/lib/selenium/webdriver/chromium/options.rb @@ -67,8 +67,8 @@ class Options < WebDriver::Options # @option opts [Array] window_types A list of window types to appear in the list of window handles # - def initialize(profile: nil, **opts) - super(**opts) + def initialize(profile: nil, **) + super(**) @profile = profile diff --git a/rb/lib/selenium/webdriver/common/driver.rb b/rb/lib/selenium/webdriver/common/driver.rb index ed911cb275f45..94a29513e2752 100644 --- a/rb/lib/selenium/webdriver/common/driver.rb +++ b/rb/lib/selenium/webdriver/common/driver.rb @@ -68,9 +68,9 @@ def for(browser, opts = {}) # @api private # - def initialize(bridge: nil, listener: nil, **opts) + def initialize(bridge: nil, listener: nil, **) @devtools = nil - bridge ||= create_bridge(**opts) + bridge ||= create_bridge(**) @bridge = listener ? Support::EventFiringBridge.new(bridge, listener) : bridge add_extensions(@bridge.browser) end @@ -131,8 +131,8 @@ def manage # @see ActionBuilder # - def action(**opts) - bridge.action(**opts) + def action(**) + bridge.action(**) end # @@ -225,8 +225,8 @@ def window_handle # The value returned from the script. # - def execute_script(script, *args) - bridge.execute_script(script, *args) + def execute_script(script, *) + bridge.execute_script(script, *) end # Execute an asynchronous piece of JavaScript in the context of the @@ -244,8 +244,8 @@ def execute_script(script, *args) # @return [WebDriver::Element,Integer,Float,Boolean,NilClass,String,Array] # - def execute_async_script(script, *args) - bridge.execute_async_script(script, *args) + def execute_async_script(script, *) + bridge.execute_async_script(script, *) end # diff --git a/rb/lib/selenium/webdriver/common/interactions/key_actions.rb b/rb/lib/selenium/webdriver/common/interactions/key_actions.rb index 9f73e9d2d8e37..adf69381941f5 100644 --- a/rb/lib/selenium/webdriver/common/interactions/key_actions.rb +++ b/rb/lib/selenium/webdriver/common/interactions/key_actions.rb @@ -44,8 +44,8 @@ module KeyActions # @return [ActionBuilder] A self reference # - def key_down(*args, device: nil) - key_action(*args, action: :create_key_down, device: device) + def key_down(*, device: nil) + key_action(*, action: :create_key_down, device: device) end # @@ -71,8 +71,8 @@ def key_down(*args, device: nil) # @return [ActionBuilder] A self reference # - def key_up(*args, device: nil) - key_action(*args, action: :create_key_up, device: device) + def key_up(*, device: nil) + key_action(*, action: :create_key_up, device: device) end # diff --git a/rb/lib/selenium/webdriver/common/interactions/pointer_actions.rb b/rb/lib/selenium/webdriver/common/interactions/pointer_actions.rb index baa1034c86349..a30398d2934e3 100644 --- a/rb/lib/selenium/webdriver/common/interactions/pointer_actions.rb +++ b/rb/lib/selenium/webdriver/common/interactions/pointer_actions.rb @@ -46,8 +46,8 @@ def default_move_duration # @return [ActionBuilder] A self reference. # - def pointer_down(button = :left, device: nil, **opts) - button_action(button, :create_pointer_down, device: device, **opts) + def pointer_down(button = :left, device: nil, **) + button_action(button, :create_pointer_down, device: device, **) end # @@ -63,8 +63,8 @@ def pointer_down(button = :left, device: nil, **opts) # @return [ActionBuilder] A self reference. # - def pointer_up(button = :left, device: nil, **opts) - button_action(button, :create_pointer_up, device: device, **opts) + def pointer_up(button = :left, device: nil, **) + button_action(button, :create_pointer_up, device: device, **) end # @@ -122,13 +122,13 @@ def move_to(element, right_by = nil, down_by = nil, **opts) # @raise [MoveTargetOutOfBoundsError] if the provided offset is outside the document's boundaries. # - def move_by(right_by, down_by, device: nil, duration: default_move_duration, **opts) + def move_by(right_by, down_by, device: nil, duration: default_move_duration, **) pointer = pointer_input(device) pointer.create_pointer_move(duration: duration, x: Integer(right_by), y: Integer(down_by), origin: Interactions::PointerMove::POINTER, - **opts) + **) tick(pointer) self end @@ -150,13 +150,13 @@ def move_by(right_by, down_by, device: nil, duration: default_move_duration, **o # @raise [MoveTargetOutOfBoundsError] if the provided x or y value is outside the document's boundaries. # - def move_to_location(x, y, device: nil, duration: default_move_duration, **opts) + def move_to_location(x, y, device: nil, duration: default_move_duration, **) pointer = pointer_input(device) pointer.create_pointer_move(duration: duration, x: Integer(x), y: Integer(y), origin: Interactions::PointerMove::VIEWPORT, - **opts) + **) tick(pointer) self end @@ -336,9 +336,9 @@ def drag_and_drop_by(source, right_by, down_by, device: nil) private - def button_action(button, action, device: nil, **opts) + def button_action(button, action, device: nil, **) pointer = pointer_input(device) - pointer.send(action, button, **opts) + pointer.send(action, button, **) tick(pointer) self end diff --git a/rb/lib/selenium/webdriver/common/interactions/pointer_input.rb b/rb/lib/selenium/webdriver/common/interactions/pointer_input.rb index ec9a323d4c748..eb5310a0b3c8c 100644 --- a/rb/lib/selenium/webdriver/common/interactions/pointer_input.rb +++ b/rb/lib/selenium/webdriver/common/interactions/pointer_input.rb @@ -49,16 +49,16 @@ def assert_kind(pointer) KIND[pointer] end - def create_pointer_move(duration: 0, x: 0, y: 0, origin: nil, **opts) - add_action(PointerMove.new(self, duration, x, y, origin: origin, **opts)) + def create_pointer_move(duration: 0, x: 0, y: 0, origin: nil, **) + add_action(PointerMove.new(self, duration, x, y, origin: origin, **)) end - def create_pointer_down(button, **opts) - add_action(PointerPress.new(self, :down, button, **opts)) + def create_pointer_down(button, **) + add_action(PointerPress.new(self, :down, button, **)) end - def create_pointer_up(button, **opts) - add_action(PointerPress.new(self, :up, button, **opts)) + def create_pointer_up(button, **) + add_action(PointerPress.new(self, :up, button, **)) end def create_pointer_cancel diff --git a/rb/lib/selenium/webdriver/common/options.rb b/rb/lib/selenium/webdriver/common/options.rb index 71205f79a734d..bddb91063737b 100644 --- a/rb/lib/selenium/webdriver/common/options.rb +++ b/rb/lib/selenium/webdriver/common/options.rb @@ -29,26 +29,26 @@ class Options class << self attr_reader :driver_path - def chrome(**opts) - Chrome::Options.new(**opts) + def chrome(**) + Chrome::Options.new(**) end - def firefox(**opts) - Firefox::Options.new(**opts) + def firefox(**) + Firefox::Options.new(**) end - def ie(**opts) - IE::Options.new(**opts) + def ie(**) + IE::Options.new(**) end alias internet_explorer ie - def edge(**opts) - Edge::Options.new(**opts) + def edge(**) + Edge::Options.new(**) end alias microsoftedge edge - def safari(**opts) - Safari::Options.new(**opts) + def safari(**) + Safari::Options.new(**) end def set_capabilities diff --git a/rb/lib/selenium/webdriver/common/service.rb b/rb/lib/selenium/webdriver/common/service.rb index b0f274959ebeb..2b3b8ad1daf8b 100644 --- a/rb/lib/selenium/webdriver/common/service.rb +++ b/rb/lib/selenium/webdriver/common/service.rb @@ -28,27 +28,27 @@ class Service class << self attr_reader :driver_path - def chrome(**opts) - Chrome::Service.new(**opts) + def chrome(**) + Chrome::Service.new(**) end - def firefox(**opts) - Firefox::Service.new(**opts) + def firefox(**) + Firefox::Service.new(**) end - def ie(**opts) - IE::Service.new(**opts) + def ie(**) + IE::Service.new(**) end alias internet_explorer ie - def edge(**opts) - Edge::Service.new(**opts) + def edge(**) + Edge::Service.new(**) end alias microsoftedge edge alias msedge edge - def safari(**opts) - Safari::Service.new(**opts) + def safari(**) + Safari::Service.new(**) end def driver_path=(path) diff --git a/rb/lib/selenium/webdriver/common/virtual_authenticator/credential.rb b/rb/lib/selenium/webdriver/common/virtual_authenticator/credential.rb index 941440eb64b75..cc81f65ae38a6 100644 --- a/rb/lib/selenium/webdriver/common/virtual_authenticator/credential.rb +++ b/rb/lib/selenium/webdriver/common/virtual_authenticator/credential.rb @@ -26,12 +26,12 @@ module Selenium module WebDriver class Credential class << self - def resident(**opts) - Credential.new(resident_credential: true, **opts) + def resident(**) + Credential.new(resident_credential: true, **) end - def non_resident(**opts) - Credential.new(resident_credential: false, **opts) + def non_resident(**) + Credential.new(resident_credential: false, **) end def encode(byte_array) diff --git a/rb/lib/selenium/webdriver/edge/driver.rb b/rb/lib/selenium/webdriver/edge/driver.rb index 7ab091b9d5f6f..3d041bcea65c5 100644 --- a/rb/lib/selenium/webdriver/edge/driver.rb +++ b/rb/lib/selenium/webdriver/edge/driver.rb @@ -30,9 +30,9 @@ module Edge class Driver < Chromium::Driver include LocalDriver - def initialize(options: nil, service: nil, url: nil, **opts) + def initialize(options: nil, service: nil, url: nil, **) caps, url = initialize_local_driver(options, service, url) - super(caps: caps, url: url, **opts) + super(caps: caps, url: url, **) end def browser diff --git a/rb/lib/selenium/webdriver/firefox/driver.rb b/rb/lib/selenium/webdriver/firefox/driver.rb index 704eadd060e93..a37bf36be70ab 100644 --- a/rb/lib/selenium/webdriver/firefox/driver.rb +++ b/rb/lib/selenium/webdriver/firefox/driver.rb @@ -36,9 +36,9 @@ class Driver < WebDriver::Driver include LocalDriver - def initialize(options: nil, service: nil, url: nil, **opts) + def initialize(options: nil, service: nil, url: nil, **) caps, url = initialize_local_driver(options, service, url) - super(caps: caps, url: url, **opts) + super(caps: caps, url: url, **) end def browser diff --git a/rb/lib/selenium/webdriver/ie/driver.rb b/rb/lib/selenium/webdriver/ie/driver.rb index 7a980c64fbdc3..a27d2453cecd5 100644 --- a/rb/lib/selenium/webdriver/ie/driver.rb +++ b/rb/lib/selenium/webdriver/ie/driver.rb @@ -31,9 +31,9 @@ class Driver < WebDriver::Driver include LocalDriver - def initialize(options: nil, service: nil, url: nil, **opts) + def initialize(options: nil, service: nil, url: nil, **) caps, url = initialize_local_driver(options, service, url) - super(caps: caps, url: url, **opts) + super(caps: caps, url: url, **) end def browser diff --git a/rb/lib/selenium/webdriver/remote/driver.rb b/rb/lib/selenium/webdriver/remote/driver.rb index 806b5b8035a81..fe9e4a6b225de 100644 --- a/rb/lib/selenium/webdriver/remote/driver.rb +++ b/rb/lib/selenium/webdriver/remote/driver.rb @@ -30,12 +30,12 @@ class Driver < WebDriver::Driver include DriverExtensions::HasSessionId include DriverExtensions::HasFileDownloads - def initialize(capabilities: nil, options: nil, service: nil, url: nil, **opts) + def initialize(capabilities: nil, options: nil, service: nil, url: nil, **) raise ArgumentError, "Can not set :service object on #{self.class}" if service url ||= "http://#{Platform.localhost}:4444/wd/hub" caps = process_options(options, capabilities) - super(caps: caps, url: url, **opts) + super(caps: caps, url: url, **) @bridge.file_detector = ->((filename, *)) { File.exist?(filename) && filename.to_s } command_list = @bridge.command_list @bridge.extend(WebDriver::Remote::Features) diff --git a/rb/lib/selenium/webdriver/safari/driver.rb b/rb/lib/selenium/webdriver/safari/driver.rb index 2944f654328df..d4bcdd102a189 100644 --- a/rb/lib/selenium/webdriver/safari/driver.rb +++ b/rb/lib/selenium/webdriver/safari/driver.rb @@ -31,9 +31,9 @@ class Driver < WebDriver::Driver include LocalDriver - def initialize(options: nil, service: nil, url: nil, **opts) + def initialize(options: nil, service: nil, url: nil, **) caps, url = initialize_local_driver(options, service, url) - super(caps: caps, url: url, **opts) + super(caps: caps, url: url, **) end def browser diff --git a/rb/lib/selenium/webdriver/support/block_event_listener.rb b/rb/lib/selenium/webdriver/support/block_event_listener.rb index fbf7b4dca6eb6..71b34e98ab563 100644 --- a/rb/lib/selenium/webdriver/support/block_event_listener.rb +++ b/rb/lib/selenium/webdriver/support/block_event_listener.rb @@ -25,8 +25,8 @@ def initialize(callback) @callback = callback end - def method_missing(meth, *args) # rubocop:disable Style/MissingRespondToMissing - @callback.call meth, *args + def method_missing(meth, *) # rubocop:disable Style/MissingRespondToMissing + @callback.call(meth, *) end end # BlockEventListener end # Support diff --git a/rb/lib/selenium/webdriver/support/event_firing_bridge.rb b/rb/lib/selenium/webdriver/support/event_firing_bridge.rb index f793129494423..1f246c7dbbd4c 100644 --- a/rb/lib/selenium/webdriver/support/event_firing_bridge.rb +++ b/rb/lib/selenium/webdriver/support/event_firing_bridge.rb @@ -112,10 +112,10 @@ def driver @driver ||= Driver.new(bridge: self) end - def dispatch(name, *args) - @listener.__send__(:"before_#{name}", *args) + def dispatch(name, *) + @listener.__send__(:"before_#{name}", *) returned = yield - @listener.__send__(:"after_#{name}", *args) + @listener.__send__(:"after_#{name}", *) returned end diff --git a/rb/selenium-devtools.gemspec b/rb/selenium-devtools.gemspec index ce776dc765631..854f134c08004 100644 --- a/rb/selenium-devtools.gemspec +++ b/rb/selenium-devtools.gemspec @@ -28,7 +28,7 @@ Gem::Specification.new do |s| } s.required_rubygems_version = Gem::Requirement.new('> 1.3.1') if s.respond_to? :required_rubygems_version= - s.required_ruby_version = Gem::Requirement.new('>= 3.1') + s.required_ruby_version = Gem::Requirement.new('>= 3.2') s.files = [ 'LICENSE', diff --git a/rb/selenium-webdriver.gemspec b/rb/selenium-webdriver.gemspec index a939ae8c44ecc..41a94abec14a3 100644 --- a/rb/selenium-webdriver.gemspec +++ b/rb/selenium-webdriver.gemspec @@ -30,7 +30,7 @@ Gem::Specification.new do |s| } s.required_rubygems_version = Gem::Requirement.new('> 1.3.1') if s.respond_to? :required_rubygems_version= - s.required_ruby_version = Gem::Requirement.new('>= 3.1') + s.required_ruby_version = Gem::Requirement.new('>= 3.2') s.files = [ 'CHANGES', diff --git a/rb/spec/integration/selenium/webdriver/spec_support/test_environment.rb b/rb/spec/integration/selenium/webdriver/spec_support/test_environment.rb index b770882d7873c..3fe3564f20272 100644 --- a/rb/spec/integration/selenium/webdriver/spec_support/test_environment.rb +++ b/rb/spec/integration/selenium/webdriver/spec_support/test_environment.rb @@ -164,14 +164,14 @@ def root @root ||= Pathname.new('../../../../../../../').realpath(__FILE__) end - def create_driver!(listener: nil, **opts, &block) + def create_driver!(listener: nil, **, &block) check_for_previous_error method = :"#{driver}_driver" instance = if private_methods.include?(method) - send(method, listener: listener, options: build_options(**opts)) + send(method, listener: listener, options: build_options(**)) else - WebDriver::Driver.for(driver, listener: listener, options: build_options(**opts)) + WebDriver::Driver.for(driver, listener: listener, options: build_options(**)) end @create_driver_error_count -= 1 unless @create_driver_error_count.zero? if block @@ -191,12 +191,12 @@ def create_driver!(listener: nil, **opts, &block) private - def build_options(**opts) + def build_options(**) options_method = :"#{browser}_options" if private_methods.include?(options_method) - send(options_method, **opts) + send(options_method, **) else - WebDriver::Options.send(browser, **opts) + WebDriver::Options.send(browser, **) end end @@ -225,45 +225,45 @@ def check_for_previous_error raise DriverInstantiationError, msg, @create_driver_error.backtrace end - def remote_driver(**opts) + def remote_driver(**) url = ENV.fetch('WD_REMOTE_URL', remote_server.webdriver_url) - WebDriver::Driver.for(:remote, url: url, **opts) + WebDriver::Driver.for(:remote, url: url, **) end - def chrome_driver(service: nil, **opts) + def chrome_driver(service: nil, **) service ||= WebDriver::Service.chrome service.args << '--disable-build-check' if ENV['DISABLE_BUILD_CHECK'] service.args << '--verbose' if WebDriver.logger.debug? service.executable_path = ENV['CHROMEDRIVER_BINARY'] if ENV.key?('CHROMEDRIVER_BINARY') - WebDriver::Driver.for(:chrome, service: service, **opts) + WebDriver::Driver.for(:chrome, service: service, **) end - def edge_driver(service: nil, **opts) + def edge_driver(service: nil, **) service ||= WebDriver::Service.edge service.args << '--disable-build-check' if ENV['DISABLE_BUILD_CHECK'] service.args << '--verbose' if WebDriver.logger.debug? service.executable_path = ENV['MSEDGEDRIVER_BINARY'] if ENV.key?('MSEDGEDRIVER_BINARY') - WebDriver::Driver.for(:edge, service: service, **opts) + WebDriver::Driver.for(:edge, service: service, **) end - def firefox_driver(service: nil, **opts) + def firefox_driver(service: nil, **) service ||= WebDriver::Service.firefox service.args.push('--log', 'trace') if WebDriver.logger.debug? service.executable_path = ENV['GECKODRIVER_BINARY'] if ENV.key?('GECKODRIVER_BINARY') - WebDriver::Driver.for(:firefox, service: service, **opts) + WebDriver::Driver.for(:firefox, service: service, **) end - def safari_driver(**opts) + def safari_driver(**) service_opts = WebDriver.logger.debug? ? {args: '--diagnose'} : {} service = WebDriver::Service.safari(**service_opts) - WebDriver::Driver.for(:safari, service: service, **opts) + WebDriver::Driver.for(:safari, service: service, **) end - def safari_preview_driver(**opts) + def safari_preview_driver(**) service_opts = WebDriver.logger.debug? ? {args: '--diagnose'} : {} service = WebDriver::Service.safari(**service_opts) - WebDriver::Driver.for(:safari, service: service, **opts) + WebDriver::Driver.for(:safari, service: service, **) end def chrome_options(args: [], **opts) @@ -299,9 +299,9 @@ def ie_options(**opts) WebDriver::Options.ie(**opts) end - def safari_preview_options(**opts) + def safari_preview_options(**) WebDriver::Safari.technology_preview! - WebDriver::Options.safari(**opts) + WebDriver::Options.safari(**) end def random_port diff --git a/rb/spec/unit/selenium/webdriver/chrome/options_spec.rb b/rb/spec/unit/selenium/webdriver/chrome/options_spec.rb index a87f073e50087..5061aae7cc7ec 100644 --- a/rb/spec/unit/selenium/webdriver/chrome/options_spec.rb +++ b/rb/spec/unit/selenium/webdriver/chrome/options_spec.rb @@ -247,7 +247,7 @@ module Chrome expect { options.as_json - }.to raise_error(Error::WebDriverError, 'These options are not w3c compliant: {:foo=>"bar"}') + }.to raise_error(Error::WebDriverError, /These options are not w3c compliant: \{:?foo[:=][ >]"bar"\}/) end it 'returns added options' do diff --git a/rb/spec/unit/selenium/webdriver/edge/options_spec.rb b/rb/spec/unit/selenium/webdriver/edge/options_spec.rb index eccaeadf6e41c..19a079ce36edd 100644 --- a/rb/spec/unit/selenium/webdriver/edge/options_spec.rb +++ b/rb/spec/unit/selenium/webdriver/edge/options_spec.rb @@ -209,7 +209,7 @@ module Edge expect { options.as_json - }.to raise_error(Error::WebDriverError, 'These options are not w3c compliant: {:foo=>"bar"}') + }.to raise_error(Error::WebDriverError, /These options are not w3c compliant: \{:?foo[:=][ >]"bar"\}/) end it 'returns added options' do diff --git a/rb/spec/unit/selenium/webdriver/guard_spec.rb b/rb/spec/unit/selenium/webdriver/guard_spec.rb index 60a17ac67eff4..4e05aff19f3ff 100644 --- a/rb/spec/unit/selenium/webdriver/guard_spec.rb +++ b/rb/spec/unit/selenium/webdriver/guard_spec.rb @@ -77,16 +77,22 @@ module Support guards = described_class.new(example) guards.add_condition(:foo, false) - expect(guards.disposition).to eq [:pending, - 'Test guarded; Guarded by {:foo=>false, :reason=>"No reason given"};'] + expect(guards.disposition.size).to eq(2) + expect(guards.disposition[0]).to eq :pending + message = /Test guarded;/ + guarded_by = /Guarded by {:?foo[:=][ >]false, :?reason[:=][ >]"No reason given"};/ + expect(guards.disposition[1]).to match(/#{message} #{guarded_by}/) end it 'is skipped without provided reason', exclusive: {foo: true} do |example| guards = described_class.new(example) guards.add_condition(:foo, false) - message = 'Test does not apply to this configuration; Guarded by {:foo=>true, :reason=>"No reason given"};' - expect(guards.disposition).to eq [:skip, message] + expect(guards.disposition.size).to eq(2) + expect(guards.disposition[0]).to eq :skip + message = /Test does not apply to this configuration;/ + guarded_by = /Guarded by {:?foo[:=][ >]true, :?reason[:=][ >]"No reason given"};/ + expect(guards.disposition[1]).to match(/#{message} #{guarded_by}/) end end @@ -158,7 +164,7 @@ module Support it 'defaults to no reason given' do guard = described_class.new({}, :only) - expect(guard.message).to eq('Test guarded; Guarded by {:reason=>"No reason given"};') + expect(guard.message).to match(/Test guarded; Guarded by {:?reason[:=][ >]"No reason given"};/) end it 'accepts integer' do |example| @@ -171,7 +177,7 @@ module Support it 'accepts String' do guard = described_class.new({reason: 'because'}, :only) - expect(guard.message).to eq('Test guarded; Guarded by {:reason=>"because"};') + expect(guard.message).to match(/Test guarded; Guarded by {:?reason[:=][ >]"because"};/) end it 'accepts Symbol of known message' do @@ -191,20 +197,25 @@ module Support it 'has special message for exclude' do guard = described_class.new({reason: 'because'}, :exclude) - expect(guard.message).to eq('Test skipped because it breaks test run; Guarded by {:reason=>"because"};') + message = /Test skipped because it breaks test run;/ + guarded_by = /Guarded by {:?reason[:=][ >]"because"};/ + expect(guard.message).to match(/#{message} #{guarded_by}/) end it 'has special message for flaky' do guard = described_class.new({reason: 'because'}, :flaky) - msg = 'Test skipped because it is unreliable in this configuration; Guarded by {:reason=>"because"};' - expect(guard.message).to eq(msg) + message = /Test skipped because it is unreliable in this configuration;/ + guarded_by = /Guarded by {:?reason[:=][ >]"because"};/ + expect(guard.message).to match(/#{message} #{guarded_by}/) end it 'has special message for exclusive' do guard = described_class.new({reason: 'because'}, :exclusive) - expect(guard.message).to eq('Test does not apply to this configuration; Guarded by {:reason=>"because"};') + message = /Test does not apply to this configuration;/ + guarded_by = /Guarded by {:?reason[:=][ >]"because"};/ + expect(guard.message).to match(/#{message} #{guarded_by}/) end end end