Skip to content

[🐛 Bug]: Selenium 4.32.0 ruby bindings fail to start firefox in parallel testing #15707

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
tomhughes opened this issue May 6, 2025 · 16 comments · Fixed by #15727
Closed
Labels
C-rb Ruby Bindings D-firefox I-defect Something is not working as intended I-regression Something was working but we "fixed" it OS-linux R-help wanted Issues looking for contributions

Comments

@tomhughes
Copy link
Contributor

tomhughes commented May 6, 2025

Description

Selenium 4.32.0 attempts to address issues with Firefox 136 and later failing when more that one instance is started (see mozilla/geckodriver#2218 for details) by allocating a unique bidi port for each instance in #15458.

That works fine if all the instances are started in a single thread but fails if two threads are starting instances simultaneously as PortProber works by allocating and then immediately closing a port leaving another thread free to do the same thing in the gap before firefox starts and binds it.

Reproducible Code

Not available

Debugging Logs

I added puts command.inspect to the build_process method in ServiceManager in order to see what processes were being started and then ran my test suite single threaded:

% PARALLEL_WORKERS=1 bundle exec rails test:system

Run options: --seed 22623

# Running:

["/usr/bin/geckodriver", "--port=4444", "--websocket-port", "9223"]
.["/usr/bin/geckodriver", "--port=4445", "--websocket-port", "9224"]
............................................................["/usr/bin/geckodriver", "--port=4446", "--websocket-port", "9225"]
...................................................................................................................

Finished in 110.831997s, 1.5880 runs/s, 7.3084 assertions/s.
176 runs, 810 assertions, 0 failures, 0 errors, 0 skips
Coverage report generated for Minitest to /home/tom/src/osm/rails/coverage.
Line Coverage: 46.57% (3587 / 7702)
Lcov style coverage report generated for Minitest to coverage/lcov.info

and then I repeated the same with multiple threads:

% bundle exec rails test:system
Running 176 tests in parallel using 24 processes
Run options: --seed 57887

# Running:

["/usr/bin/geckodriver", "--port=4444", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4445", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4446", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4447", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4448", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4449", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4450", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4451", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4452", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4453", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4454", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4455", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4456", "--websocket-port", "9225"]
.["/usr/bin/geckodriver", "--port=4457", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4458", "--websocket-port", "9225"]
.["/usr/bin/geckodriver", "--port=4459", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4460", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4461", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4462", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4463", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4464", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4465", "--websocket-port", "9225"]
.["/usr/bin/geckodriver", "--port=4466", "--websocket-port", "9225"]
["/usr/bin/geckodriver", "--port=4467", "--websocket-port", "9225"]
.....E

Error:
IndexTest#test_should_not_add_overlay_when_not_closing_right_menu_popup:
Selenium::WebDriver::Error::NoSuchWindowError: Browsing context has been discarded
    test/system/index_test.rb:26:in 'block in <class:IndexTest>'

As you can see in the second case multiple instances were started using the same bidi port and tests then started failing en mass as most of the firefox instances had failed to start.


ℹ️ Last known working version: 4.31.0 with firefox < 136 or a monkey patch to add `--websocket-port=0`

@tomhughes tomhughes added I-defect Something is not working as intended A-needs-triaging A Selenium member will evaluate this soon! labels May 6, 2025
@selenium-ci
Copy link
Member

@tomhughes, thank you for creating this issue. We will troubleshoot it as soon as we can.

Selenium Triage Team: remember to follow the Triage Guide

@github-actions github-actions bot added C-rb Ruby Bindings D-firefox I-regression Something was working but we "fixed" it OS-linux labels May 6, 2025
@titusfortner
Copy link
Member

Ah, right. There's a race condition between asking for an unused port over 9222, and one of the processes actually locking that port. @p0deje is there a reason we don't make this random? (Doesn't actually fix the race condition, but might make it harder to hit). I know the other bindings use random ports in their implementations.

The only way to ensure there is no collision is to manage the websocket ports in the client, code.

@titusfortner titusfortner added R-help wanted Issues looking for contributions and removed A-needs-triaging A Selenium member will evaluate this soon! labels May 7, 2025
@selenium-ci
Copy link
Member

This issue is looking for contributors.

Please comment below or reach out to us through our IRC/Slack/Matrix channels if you are interested.

@tomhughes
Copy link
Contributor Author

Does the selenium code actually need to know the port number? As far as I could see nothing actually connects to it?

If that is the case then --websocket-port=0 will cause firefox to pick a random port.

@titusfortner
Copy link
Member

I thought @whimboo said that using 0 wasn't sufficient.

@whimboo
Copy link
Contributor

whimboo commented May 7, 2025

Using port 0 would work for desktop but could cause issues for Android given that geckodriver uses adb to forward/reverse ports and for HTTP based sockets it requires the same port number for the device and host as explained in https://bugzilla.mozilla.org/show_bug.cgi?id=1754016.

We do not have a solution for that yet.

@titusfortner
Copy link
Member

So, first we need to allow users to pass in a websocket-port value that we do not override, so have to check that args doesn't include websocket-port

          unless args.any? { |arg| arg.include?('--connect-existing') }

Then set the default to 0

@tomhughes would you be interested in creating a PR for this?

@tomhughes
Copy link
Contributor Author

Normally I'd be happy to try but I'm afraid your build/test system has defeated me... I did eventually manage to get bazel installed but it just fails to build anything with pages of errors and then skips all the tests.

@tomhughes
Copy link
Contributor Author

I think the main problem may be this causing compiles to fail:

ccache: error: Read-only file system

but I have no idea why it thinks my filesystem is readonly and in any case I have removed ccache from my path now and it's still doing the same.

@tomhughes
Copy link
Contributor Author

Here's the full log:

bericote [~/src/selenium] % bazel7 test //rb/...
ERROR: /home/tom/.cache/bazel/_bazel_tom/2121d1ab59906fdcf1aa367a2be96f31/external/abseil-cpp+/absl/base/BUILD.bazel:60:11: Compiling absl/base/log_severity.cc [for tool] failed: (Exit 1): gcc failed: error executing CppCompile command (from target @@abseil-cpp+//absl/base:log_severity) 
  (cd /home/tom/.cache/bazel/_bazel_tom/2121d1ab59906fdcf1aa367a2be96f31/sandbox/linux-sandbox/94/execroot/_main && \
  exec env - \
    PATH=/bin:/usr/bin:/usr/local/bin \
    PWD=/proc/self/cwd \
  /usr/lib64/ccache/gcc -U_FORTIFY_SOURCE -fstack-protector -Wall -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer -g0 -O2 '-D_FORTIFY_SOURCE=1' -DNDEBUG -ffunction-sections -fdata-sections '-std=c++17' -MD -MF bazel-out/k8-opt-exec-ST-d57f47055a04/bin/external/abseil-cpp+/absl/base/_objs/log_severity/log_severity.d '-frandom-seed=bazel-out/k8-opt-exec-ST-d57f47055a04/bin/external/abseil-cpp+/absl/base/_objs/log_severity/log_severity.o' -iquote external/abseil-cpp+ -iquote bazel-out/k8-opt-exec-ST-d57f47055a04/bin/external/abseil-cpp+ -g0 -g0 '-std=c++14' -Wall -Wextra -Wcast-qual -Wconversion-null -Wformat-security -Wmissing-declarations -Woverlength-strings -Wpointer-arith -Wundef -Wunused-local-typedefs -Wunused-result -Wvarargs -Wvla -Wwrite-strings -DNOMINMAX -c external/abseil-cpp+/absl/base/log_severity.cc -o bazel-out/k8-opt-exec-ST-d57f47055a04/bin/external/abseil-cpp+/absl/base/_objs/log_severity/log_severity.o -fno-canonical-system-headers -Wno-builtin-macro-redefined '-D__DATE__="redacted"' '-D__TIMESTAMP__="redacted"' '-D__TIME__="redacted"')
# Configuration: 5219d5c916c8385fa41fcc6ed1634f5c45aaf226527c050d10cb0618b11b0ccf
# Execution platform: @@platforms//host:host

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
ccache: error: Read-only file system
ERROR: /home/tom/src/selenium/javascript/atoms/fragments/BUILD.bazel:195:17 Compiling 64 JavaScript files to javascript/atoms/fragments/find-elements.js failed: (Exit 1): gcc failed: error executing CppCompile command (from target @@abseil-cpp+//absl/base:log_severity) 
  (cd /home/tom/.cache/bazel/_bazel_tom/2121d1ab59906fdcf1aa367a2be96f31/sandbox/linux-sandbox/94/execroot/_main && \
  exec env - \
    PATH=/bin:/usr/bin:/usr/local/bin \
    PWD=/proc/self/cwd \
  /usr/lib64/ccache/gcc -U_FORTIFY_SOURCE -fstack-protector -Wall -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer -g0 -O2 '-D_FORTIFY_SOURCE=1' -DNDEBUG -ffunction-sections -fdata-sections '-std=c++17' -MD -MF bazel-out/k8-opt-exec-ST-d57f47055a04/bin/external/abseil-cpp+/absl/base/_objs/log_severity/log_severity.d '-frandom-seed=bazel-out/k8-opt-exec-ST-d57f47055a04/bin/external/abseil-cpp+/absl/base/_objs/log_severity/log_severity.o' -iquote external/abseil-cpp+ -iquote bazel-out/k8-opt-exec-ST-d57f47055a04/bin/external/abseil-cpp+ -g0 -g0 '-std=c++14' -Wall -Wextra -Wcast-qual -Wconversion-null -Wformat-security -Wmissing-declarations -Woverlength-strings -Wpointer-arith -Wundef -Wunused-local-typedefs -Wunused-result -Wvarargs -Wvla -Wwrite-strings -DNOMINMAX -c external/abseil-cpp+/absl/base/log_severity.cc -o bazel-out/k8-opt-exec-ST-d57f47055a04/bin/external/abseil-cpp+/absl/base/_objs/log_severity/log_severity.o -fno-canonical-system-headers -Wno-builtin-macro-redefined '-D__DATE__="redacted"' '-D__TIMESTAMP__="redacted"' '-D__TIME__="redacted"')
# Configuration: 5219d5c916c8385fa41fcc6ed1634f5c45aaf226527c050d10cb0618b11b0ccf
# Execution platform: @@platforms//host:host

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
INFO: Elapsed time: 0.140s, Critical Path: 0.02s
INFO: 25 processes: 25 internal.
ERROR: Build did NOT complete successfully
//rb/spec/integration/selenium/webdriver:action_builder-ie              SKIPPED
//rb/spec/integration/selenium/webdriver:action_builder-ie-bidi         SKIPPED
//rb/spec/integration/selenium/webdriver:action_builder-ie-remote       SKIPPED
//rb/spec/integration/selenium/webdriver:action_builder-safari          SKIPPED
//rb/spec/integration/selenium/webdriver:action_builder-safari-bidi     SKIPPED
//rb/spec/integration/selenium/webdriver:action_builder-safari-preview  SKIPPED
//rb/spec/integration/selenium/webdriver:action_builder-safari-preview-bidi SKIPPED
//rb/spec/integration/selenium/webdriver:action_builder-safari-preview-remote SKIPPED
//rb/spec/integration/selenium/webdriver:action_builder-safari-remote   SKIPPED
//rb/spec/integration/selenium/webdriver:bidi-ie                        SKIPPED
//rb/spec/integration/selenium/webdriver:bidi-ie-bidi                   SKIPPED
//rb/spec/integration/selenium/webdriver:bidi-ie-remote                 SKIPPED
//rb/spec/integration/selenium/webdriver:bidi-safari                    SKIPPED
//rb/spec/integration/selenium/webdriver:bidi-safari-bidi               SKIPPED
//rb/spec/integration/selenium/webdriver:bidi-safari-preview            SKIPPED
//rb/spec/integration/selenium/webdriver:bidi-safari-preview-bidi       SKIPPED
//rb/spec/integration/selenium/webdriver:bidi-safari-preview-remote     SKIPPED
//rb/spec/integration/selenium/webdriver:bidi-safari-remote             SKIPPED
//rb/spec/integration/selenium/webdriver:devtools-ie                    SKIPPED
//rb/spec/integration/selenium/webdriver:devtools-ie-bidi               SKIPPED
//rb/spec/integration/selenium/webdriver:devtools-ie-remote             SKIPPED
//rb/spec/integration/selenium/webdriver:devtools-safari                SKIPPED
//rb/spec/integration/selenium/webdriver:devtools-safari-bidi           SKIPPED
//rb/spec/integration/selenium/webdriver:devtools-safari-preview        SKIPPED
//rb/spec/integration/selenium/webdriver:devtools-safari-preview-bidi   SKIPPED
//rb/spec/integration/selenium/webdriver:devtools-safari-preview-remote SKIPPED
//rb/spec/integration/selenium/webdriver:devtools-safari-remote         SKIPPED
//rb/spec/integration/selenium/webdriver:driver-ie                      SKIPPED
//rb/spec/integration/selenium/webdriver:driver-ie-bidi                 SKIPPED
//rb/spec/integration/selenium/webdriver:driver-ie-remote               SKIPPED
//rb/spec/integration/selenium/webdriver:driver-safari                  SKIPPED
//rb/spec/integration/selenium/webdriver:driver-safari-bidi             SKIPPED
//rb/spec/integration/selenium/webdriver:driver-safari-preview          SKIPPED
//rb/spec/integration/selenium/webdriver:driver-safari-preview-bidi     SKIPPED
//rb/spec/integration/selenium/webdriver:driver-safari-preview-remote   SKIPPED
//rb/spec/integration/selenium/webdriver:driver-safari-remote           SKIPPED
//rb/spec/integration/selenium/webdriver:element-ie                     SKIPPED
//rb/spec/integration/selenium/webdriver:element-ie-bidi                SKIPPED
//rb/spec/integration/selenium/webdriver:element-ie-remote              SKIPPED
//rb/spec/integration/selenium/webdriver:element-safari                 SKIPPED
//rb/spec/integration/selenium/webdriver:element-safari-bidi            SKIPPED
//rb/spec/integration/selenium/webdriver:element-safari-preview         SKIPPED
//rb/spec/integration/selenium/webdriver:element-safari-preview-bidi    SKIPPED
//rb/spec/integration/selenium/webdriver:element-safari-preview-remote  SKIPPED
//rb/spec/integration/selenium/webdriver:element-safari-remote          SKIPPED
//rb/spec/integration/selenium/webdriver:error-ie                       SKIPPED
//rb/spec/integration/selenium/webdriver:error-ie-bidi                  SKIPPED
//rb/spec/integration/selenium/webdriver:error-ie-remote                SKIPPED
//rb/spec/integration/selenium/webdriver:error-safari                   SKIPPED
//rb/spec/integration/selenium/webdriver:error-safari-bidi              SKIPPED
//rb/spec/integration/selenium/webdriver:error-safari-preview           SKIPPED
//rb/spec/integration/selenium/webdriver:error-safari-preview-bidi      SKIPPED
//rb/spec/integration/selenium/webdriver:error-safari-preview-remote    SKIPPED
//rb/spec/integration/selenium/webdriver:error-safari-remote            SKIPPED
//rb/spec/integration/selenium/webdriver:fedcm-ie                       SKIPPED
//rb/spec/integration/selenium/webdriver:fedcm-ie-bidi                  SKIPPED
//rb/spec/integration/selenium/webdriver:fedcm-ie-remote                SKIPPED
//rb/spec/integration/selenium/webdriver:fedcm-safari                   SKIPPED
//rb/spec/integration/selenium/webdriver:fedcm-safari-bidi              SKIPPED
//rb/spec/integration/selenium/webdriver:fedcm-safari-preview           SKIPPED
//rb/spec/integration/selenium/webdriver:fedcm-safari-preview-bidi      SKIPPED
//rb/spec/integration/selenium/webdriver:fedcm-safari-preview-remote    SKIPPED
//rb/spec/integration/selenium/webdriver:fedcm-safari-remote            SKIPPED
//rb/spec/integration/selenium/webdriver:listener-ie                    SKIPPED
//rb/spec/integration/selenium/webdriver:listener-ie-bidi               SKIPPED
//rb/spec/integration/selenium/webdriver:listener-ie-remote             SKIPPED
//rb/spec/integration/selenium/webdriver:listener-safari                SKIPPED
//rb/spec/integration/selenium/webdriver:listener-safari-bidi           SKIPPED
//rb/spec/integration/selenium/webdriver:listener-safari-preview        SKIPPED
//rb/spec/integration/selenium/webdriver:listener-safari-preview-bidi   SKIPPED
//rb/spec/integration/selenium/webdriver:listener-safari-preview-remote SKIPPED
//rb/spec/integration/selenium/webdriver:listener-safari-remote         SKIPPED
//rb/spec/integration/selenium/webdriver:manager-ie                     SKIPPED
//rb/spec/integration/selenium/webdriver:manager-ie-bidi                SKIPPED
//rb/spec/integration/selenium/webdriver:manager-ie-remote              SKIPPED
//rb/spec/integration/selenium/webdriver:manager-safari                 SKIPPED
//rb/spec/integration/selenium/webdriver:manager-safari-bidi            SKIPPED
//rb/spec/integration/selenium/webdriver:manager-safari-preview         SKIPPED
//rb/spec/integration/selenium/webdriver:manager-safari-preview-bidi    SKIPPED
//rb/spec/integration/selenium/webdriver:manager-safari-preview-remote  SKIPPED
//rb/spec/integration/selenium/webdriver:manager-safari-remote          SKIPPED
//rb/spec/integration/selenium/webdriver:navigation-ie                  SKIPPED
//rb/spec/integration/selenium/webdriver:navigation-ie-bidi             SKIPPED
//rb/spec/integration/selenium/webdriver:navigation-ie-remote           SKIPPED
//rb/spec/integration/selenium/webdriver:navigation-safari              SKIPPED
//rb/spec/integration/selenium/webdriver:navigation-safari-bidi         SKIPPED
//rb/spec/integration/selenium/webdriver:navigation-safari-preview      SKIPPED
//rb/spec/integration/selenium/webdriver:navigation-safari-preview-bidi SKIPPED
//rb/spec/integration/selenium/webdriver:navigation-safari-preview-remote SKIPPED
//rb/spec/integration/selenium/webdriver:navigation-safari-remote       SKIPPED
//rb/spec/integration/selenium/webdriver:network-ie                     SKIPPED
//rb/spec/integration/selenium/webdriver:network-ie-bidi                SKIPPED
//rb/spec/integration/selenium/webdriver:network-ie-remote              SKIPPED
//rb/spec/integration/selenium/webdriver:network-safari                 SKIPPED
//rb/spec/integration/selenium/webdriver:network-safari-bidi            SKIPPED
//rb/spec/integration/selenium/webdriver:network-safari-preview         SKIPPED
//rb/spec/integration/selenium/webdriver:network-safari-preview-bidi    SKIPPED
//rb/spec/integration/selenium/webdriver:network-safari-preview-remote  SKIPPED
//rb/spec/integration/selenium/webdriver:network-safari-remote          SKIPPED
//rb/spec/integration/selenium/webdriver:select-ie                      SKIPPED
//rb/spec/integration/selenium/webdriver:select-ie-bidi                 SKIPPED
//rb/spec/integration/selenium/webdriver:select-ie-remote               SKIPPED
//rb/spec/integration/selenium/webdriver:select-safari                  SKIPPED
//rb/spec/integration/selenium/webdriver:select-safari-bidi             SKIPPED
//rb/spec/integration/selenium/webdriver:select-safari-preview          SKIPPED
//rb/spec/integration/selenium/webdriver:select-safari-preview-bidi     SKIPPED
//rb/spec/integration/selenium/webdriver:select-safari-preview-remote   SKIPPED
//rb/spec/integration/selenium/webdriver:select-safari-remote           SKIPPED
//rb/spec/integration/selenium/webdriver:shadow_root-ie                 SKIPPED
//rb/spec/integration/selenium/webdriver:shadow_root-ie-bidi            SKIPPED
//rb/spec/integration/selenium/webdriver:shadow_root-ie-remote          SKIPPED
//rb/spec/integration/selenium/webdriver:shadow_root-safari             SKIPPED
//rb/spec/integration/selenium/webdriver:shadow_root-safari-bidi        SKIPPED
//rb/spec/integration/selenium/webdriver:shadow_root-safari-preview     SKIPPED
//rb/spec/integration/selenium/webdriver:shadow_root-safari-preview-bidi SKIPPED
//rb/spec/integration/selenium/webdriver:shadow_root-safari-preview-remote SKIPPED
//rb/spec/integration/selenium/webdriver:shadow_root-safari-remote      SKIPPED
//rb/spec/integration/selenium/webdriver:takes_screenshot-ie            SKIPPED
//rb/spec/integration/selenium/webdriver:takes_screenshot-ie-bidi       SKIPPED
//rb/spec/integration/selenium/webdriver:takes_screenshot-ie-remote     SKIPPED
//rb/spec/integration/selenium/webdriver:takes_screenshot-safari        SKIPPED
//rb/spec/integration/selenium/webdriver:takes_screenshot-safari-bidi   SKIPPED
//rb/spec/integration/selenium/webdriver:takes_screenshot-safari-preview SKIPPED
//rb/spec/integration/selenium/webdriver:takes_screenshot-safari-preview-bidi SKIPPED
//rb/spec/integration/selenium/webdriver:takes_screenshot-safari-preview-remote SKIPPED
//rb/spec/integration/selenium/webdriver:takes_screenshot-safari-remote SKIPPED
//rb/spec/integration/selenium/webdriver:target_locator-ie              SKIPPED
//rb/spec/integration/selenium/webdriver:target_locator-ie-bidi         SKIPPED
//rb/spec/integration/selenium/webdriver:target_locator-ie-remote       SKIPPED
//rb/spec/integration/selenium/webdriver:target_locator-safari          SKIPPED
//rb/spec/integration/selenium/webdriver:target_locator-safari-bidi     SKIPPED
//rb/spec/integration/selenium/webdriver:target_locator-safari-preview  SKIPPED
//rb/spec/integration/selenium/webdriver:target_locator-safari-preview-bidi SKIPPED
//rb/spec/integration/selenium/webdriver:target_locator-safari-preview-remote SKIPPED
//rb/spec/integration/selenium/webdriver:target_locator-safari-remote   SKIPPED
//rb/spec/integration/selenium/webdriver:timeout-ie                     SKIPPED
//rb/spec/integration/selenium/webdriver:timeout-ie-bidi                SKIPPED
//rb/spec/integration/selenium/webdriver:timeout-ie-remote              SKIPPED
//rb/spec/integration/selenium/webdriver:timeout-safari                 SKIPPED
//rb/spec/integration/selenium/webdriver:timeout-safari-bidi            SKIPPED
//rb/spec/integration/selenium/webdriver:timeout-safari-preview         SKIPPED
//rb/spec/integration/selenium/webdriver:timeout-safari-preview-bidi    SKIPPED
//rb/spec/integration/selenium/webdriver:timeout-safari-preview-remote  SKIPPED
//rb/spec/integration/selenium/webdriver:timeout-safari-remote          SKIPPED
//rb/spec/integration/selenium/webdriver:virtual_authenticator-ie       SKIPPED
//rb/spec/integration/selenium/webdriver:virtual_authenticator-ie-bidi  SKIPPED
//rb/spec/integration/selenium/webdriver:virtual_authenticator-ie-remote SKIPPED
//rb/spec/integration/selenium/webdriver:virtual_authenticator-safari   SKIPPED
//rb/spec/integration/selenium/webdriver:virtual_authenticator-safari-bidi SKIPPED
//rb/spec/integration/selenium/webdriver:virtual_authenticator-safari-preview SKIPPED
//rb/spec/integration/selenium/webdriver:virtual_authenticator-safari-preview-bidi SKIPPED
//rb/spec/integration/selenium/webdriver:virtual_authenticator-safari-preview-remote SKIPPED
//rb/spec/integration/selenium/webdriver:virtual_authenticator-safari-remote SKIPPED
//rb/spec/integration/selenium/webdriver:window-ie                      SKIPPED
//rb/spec/integration/selenium/webdriver:window-ie-bidi                 SKIPPED
//rb/spec/integration/selenium/webdriver:window-ie-remote               SKIPPED
//rb/spec/integration/selenium/webdriver:window-safari                  SKIPPED
//rb/spec/integration/selenium/webdriver:window-safari-bidi             SKIPPED
//rb/spec/integration/selenium/webdriver:window-safari-preview          SKIPPED
//rb/spec/integration/selenium/webdriver:window-safari-preview-bidi     SKIPPED
//rb/spec/integration/selenium/webdriver:window-safari-preview-remote   SKIPPED
//rb/spec/integration/selenium/webdriver:window-safari-remote           SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:browsing_context-ie       SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:browsing_context-ie-bidi  SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:browsing_context-ie-remote SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:browsing_context-safari   SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:browsing_context-safari-bidi SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:browsing_context-safari-preview SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:browsing_context-safari-preview-bidi SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:browsing_context-safari-preview-remote SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:browsing_context-safari-remote SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:log_inspector-ie          SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:log_inspector-ie-bidi     SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:log_inspector-ie-remote   SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:log_inspector-safari      SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:log_inspector-safari-bidi SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:log_inspector-safari-preview SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:log_inspector-safari-preview-bidi SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:log_inspector-safari-preview-remote SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:log_inspector-safari-remote SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:network-ie                SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:network-ie-bidi           SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:network-ie-remote         SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:network-safari            SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:network-safari-bidi       SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:network-safari-preview    SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:network-safari-preview-bidi SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:network-safari-preview-remote SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:network-safari-remote     SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:script-ie                 SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:script-ie-bidi            SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:script-ie-remote          SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:script-safari             SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:script-safari-bidi        SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:script-safari-preview     SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:script-safari-preview-bidi SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:script-safari-preview-remote SKIPPED
//rb/spec/integration/selenium/webdriver/bidi:script-safari-remote      SKIPPED
//rb/spec/integration/selenium/webdriver/remote:driver-ie               SKIPPED
//rb/spec/integration/selenium/webdriver/remote:driver-ie-bidi          SKIPPED
//rb/spec/integration/selenium/webdriver/remote:driver-ie-remote        SKIPPED
//rb/spec/integration/selenium/webdriver/remote:driver-safari           SKIPPED
//rb/spec/integration/selenium/webdriver/remote:driver-safari-bidi      SKIPPED
//rb/spec/integration/selenium/webdriver/remote:driver-safari-preview   SKIPPED
//rb/spec/integration/selenium/webdriver/remote:driver-safari-preview-bidi SKIPPED
//rb/spec/integration/selenium/webdriver/remote:driver-safari-preview-remote SKIPPED
//rb/spec/integration/selenium/webdriver/remote:driver-safari-remote    SKIPPED
//rb/spec/integration/selenium/webdriver/remote:element-ie              SKIPPED
//rb/spec/integration/selenium/webdriver/remote:element-ie-bidi         SKIPPED
//rb/spec/integration/selenium/webdriver/remote:element-ie-remote       SKIPPED
//rb/spec/integration/selenium/webdriver/remote:element-safari          SKIPPED
//rb/spec/integration/selenium/webdriver/remote:element-safari-bidi     SKIPPED
//rb/spec/integration/selenium/webdriver/remote:element-safari-preview  SKIPPED
//rb/spec/integration/selenium/webdriver/remote:element-safari-preview-bidi SKIPPED
//rb/spec/integration/selenium/webdriver/remote:element-safari-preview-remote SKIPPED
//rb/spec/integration/selenium/webdriver/remote:element-safari-remote   SKIPPED
//rb/spec/integration/selenium/webdriver/safari:driver-safari           SKIPPED
//rb/spec/integration/selenium/webdriver/safari:driver-safari-bidi      SKIPPED
//rb/spec/integration/selenium/webdriver/safari:driver-safari-preview   SKIPPED
//rb/spec/integration/selenium/webdriver/safari:driver-safari-preview-bidi SKIPPED
//rb/spec/integration/selenium/webdriver/safari:driver-safari-preview-remote SKIPPED
//rb/spec/integration/selenium/webdriver/safari:driver-safari-remote    SKIPPED
//rb/spec/integration/selenium/webdriver/safari:service-safari          SKIPPED
//rb/spec/integration/selenium/webdriver/safari:service-safari-bidi     SKIPPED
//rb/spec/integration/selenium/webdriver/safari:service-safari-preview  SKIPPED
//rb/spec/integration/selenium/webdriver/safari:service-safari-preview-bidi SKIPPED
//rb/spec/integration/selenium/webdriver/safari:service-safari-preview-remote SKIPPED
//rb/spec/integration/selenium/webdriver/safari:service-safari-remote   SKIPPED

Executed 0 out of 228 tests: 228 were skipped.
All tests passed but there were other errors during the build.

FAILED: 
    Fetching ...itory @@rules_ruby++ruby+ruby; Downloading ruby-build 20250215

@p0deje
Copy link
Member

p0deje commented May 8, 2025

Can you try running bazel build with --sandbox_writable_path=$HOME/.ccache?

@tomhughes
Copy link
Contributor Author

I blew away ~/.cache/bazel which seems to have fixed the ccache issue but that just moves the problem:

In file included from ./enc/euc_jp.c:503:
enc/jis/props.kwd:146:1: error: conflicting types for ‘onig_jis_property’; have ‘const struct enc_property *(const char *, size_t)’ {aka ‘const struct enc_property *(const char *, long unsigned int)’}
enc/jis/props.kwd:40:35: note: previous declaration of ‘onig_jis_property’ with type ‘const struct enc_property *(void)’
   40 | static const struct enc_property *onig_jis_property(/*!ANSI{*/const char *str, unsigned int len/*}!ANSI*/);
      |                                   ^~~~~~~~~~~~~~~~~
cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics
make[1]: *** [enc.mk:645: enc/euc_jp.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [uncommon.mk:888: enc] Error 2
make: *** Waiting for unfinished jobs....
libffi_version: 3.4.6

BUILD FAILED (Fedora Linux 42 on x86_64 using ruby-build 20250215)

which I fear is because it's trying to compile ruby 3.1 (why a three old version? why are we building ruby from source when I have a perfectly good one?) with gcc 15 and is running into https://gcc.gnu.org/gcc-15/porting_to.html#c23-fn-decls-without-parameters.

@titusfortner
Copy link
Member

The idea is to be able to have hermetic installs of all the languages used by selenium so devs don't have to set up individual dev environments for everything. Ruby makes that challenging because it references local libraries for a lot of things.

And 3.1 because we need to make sure that the syntax works for people using the oldest supported version (technically 3.2 now, we have a PR to update that)

Maybe we do just switch to using JRuby for the default, @p0deje ? We can toggle to MRI on github actions tests?

@p0deje
Copy link
Member

p0deje commented May 8, 2025

@titusfortner we can, but your RubyMind will break :)

@tomhughes Can you please try switch to JRuby and see if it helps? To do that, simply run the following:

echo "jruby-9.4.12.0" > rb/.ruby-version

@titusfortner
Copy link
Member

I'll just overwrite it when I need to test locally

@tomhughes
Copy link
Contributor Author

I gave up trying to get anything to run locally and I've opened #15727 and we'll see what GHA makes of the tests...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-rb Ruby Bindings D-firefox I-defect Something is not working as intended I-regression Something was working but we "fixed" it OS-linux R-help wanted Issues looking for contributions
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants