Skip to content
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

[grid] Dynamic Grid is able to disable video container spawn up #15047

Open
wants to merge 1 commit into
base: trunk
Choose a base branch
from

Conversation

VietND96
Copy link
Member

@VietND96 VietND96 commented Jan 8, 2025

User description

Thanks for contributing to Selenium!
A PR well described will help maintainers to quickly review and merge it

Before submitting your PR, please check our contributing guidelines.
Avoid large PRs, help reviewers by making them as simple and short as possible.

Description

Fixes #14757
This supports a use case where user can trigger recording in the browser node itself via env var in this feat SeleniumHQ/docker-selenium#2539

Motivation and Context

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist

  • I have read the contributing document.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have added tests to cover my changes.
  • All new and existing tests passed.

PR Type

Enhancement


Description

  • Added ability to disable video container in Dynamic Grid.

  • Modified DockerOptions to handle false video-image configuration.

  • Updated DockerSessionFactory to check for null video image before starting.

  • Enhanced video container logic for better configurability.


Changes walkthrough 📝

Relevant files
Enhancement
DockerOptions.java
Handle disabling video container in DockerOptions               

java/src/org/openqa/selenium/grid/node/docker/DockerOptions.java

  • Added null check for video image loading.
  • Modified getVideoImage to handle false configuration.
  • Enhanced logic to skip video container setup when disabled.
  • +6/-1     
    DockerSessionFactory.java
    Update video container start logic in DockerSessionFactory

    java/src/org/openqa/selenium/grid/node/docker/DockerSessionFactory.java

  • Added null check for video image before starting video container.
  • Updated logic to ensure video container is not started unnecessarily.
  • +1/-1     

    💡 PR-Agent usage: Comment /help "your question" on any pull request to receive relevant information

    Copy link
    Contributor

    qodo-merge-pro bot commented Jan 8, 2025

    PR Reviewer Guide 🔍

    Here are some key observations to aid the review process:

    🎫 Ticket compliance analysis ✅

    14757 - PR Code Verified

    Compliant requirements:

    • Add ability to disable video container spawn in Dynamic Grid
    • Allow setting video container disable by passing 'false' value

    Requires further human verification:

    • Verify if TOML config support works as expected
    • Verify if video recording via environment variable works correctly
    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 No relevant tests
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    Null Check

    The video container logic now returns null in two cases but there's no documentation about the behavior change. This could affect downstream code expecting non-null containers.

    if (videoImage == null || !recordVideoForSession(sessionCapabilities)) {
      return null;

    Copy link
    Contributor

    qodo-merge-pro bot commented Jan 8, 2025

    PR Code Suggestions ✨

    Explore these optional code suggestions:

    CategorySuggestion                                                                                                                                    Score
    General
    Use constants instead of string literals for configuration values to improve code maintainability

    Add case-insensitive constant for "false" string comparison to improve
    maintainability and prevent string literal duplication.

    java/src/org/openqa/selenium/grid/node/docker/DockerOptions.java [229-231]

    -if (videoImage.equalsIgnoreCase("false")) {
    +private static final String DISABLED_VALUE = "false";
    +// ...
    +if (videoImage.equalsIgnoreCase(DISABLED_VALUE)) {
       return null;
     }
    Suggestion importance[1-10]: 5

    Why: Using a constant for the "false" string would improve maintainability and reduce magic strings in the code. This is a good practice, though not critical for functionality.

    5
    Possible issue
    Separate null checks from business logic to prevent potential null pointer exceptions and improve code clarity

    Add a null check for videoImage before attempting to access its properties or
    methods in other parts of the code to prevent potential NullPointerExceptions.

    java/src/org/openqa/selenium/grid/node/docker/DockerSessionFactory.java [338-340]

    -if (videoImage == null || !recordVideoForSession(sessionCapabilities)) {
    +if (videoImage == null) {
    +  return null;
    +}
    +if (!recordVideoForSession(sessionCapabilities)) {
       return null;
     }
    • Apply this suggestion
    Suggestion importance[1-10]: 3

    Why: While the suggestion aims to improve code clarity by separating conditions, the existing code is already safe and follows common practice of combining related conditions. The change would add unnecessary verbosity.

    3

    Copy link
    Contributor

    qodo-merge-pro bot commented Jan 8, 2025

    CI Failure Feedback 🧐

    Action: Ruby / Local Tests (firefox, macos) / Local Tests (firefox, macos)

    Failed stage: Run Bazel [❌]

    Failed test name: Selenium::WebDriver::DevTools sends commands

    Failure summary:

    The action failed because the Firefox DevTools integration tests failed. Specifically:

  • The test 'Selenium::WebDriver::DevTools sends commands' failed because the expected page title
    "XHTML Test Page" was not found (got empty string instead)
  • Multiple Firefox-specific DevTools features are not yet supported or have known bugs:
    -
    Runtime.addBinding is not supported
    - Fetch.enable is not supported (affects network interception)

    - Event handling has issues (tracked in Firefox bug #1819965)
    - The pin_script method is not
    implemented for Firefox

  • Relevant error logs:
    1:  ##[group]Operating System
    2:  macOS
    ...
    
    726:  �[32m[1,299 / 1,321]�[0m 2 / 30 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:element-firefox; 117s local, disk-cache ... (3 actions, 1 running)
    727:  �[32m[1,299 / 1,321]�[0m 2 / 30 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:element-firefox; 149s local, disk-cache ... (3 actions, 1 running)
    728:  �[32m[1,299 / 1,321]�[0m 2 / 30 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:element-firefox; 167s local, disk-cache ... (3 actions, 2 running)
    729:  �[35mFLAKY: �[0m//rb/spec/integration/selenium/webdriver:element-firefox (Summary)
    730:  /Users/runner/.bazel/execroot/_main/bazel-out/darwin_arm64-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/element-firefox/test_attempts/attempt_1.log
    731:  �[32mINFO: �[0mFrom Testing //rb/spec/integration/selenium/webdriver:element-firefox:
    732:  ==================== Test output for //rb/spec/integration/selenium/webdriver:element-firefox:
    733:  Running Ruby specs:
    734:  An error occurred in a `before(:suite)` hook.
    735:  Failure/Error: (io = @io.to_io).wait_readable(@read_timeout) or raise Net::ReadTimeout.new(io)
    ...
    
    748:  # ./rb/lib/selenium/webdriver/common/driver.rb:53:in `for'
    749:  # /Users/runner/work/selenium/selenium/rb/spec/integration/selenium/webdriver/spec_support/test_environment.rb:253:in `firefox_driver'
    750:  # /Users/runner/work/selenium/selenium/rb/spec/integration/selenium/webdriver/spec_support/test_environment.rb:171:in `create_driver!'
    751:  # /Users/runner/work/selenium/selenium/rb/spec/integration/selenium/webdriver/spec_support/test_environment.rb:61:in `driver_instance'
    752:  # /Users/runner/work/selenium/selenium/rb/spec/integration/selenium/webdriver/spec_support/test_environment.rb:206:in `current_env'
    753:  # /Users/runner/work/selenium/selenium/rb/spec/integration/selenium/webdriver/spec_support/test_environment.rb:42:in `print_env'
    754:  # /Users/runner/work/selenium/selenium/rb/spec/integration/selenium/webdriver/spec_helper.rb:41:in `block (2 levels) in <top (required)>'
    755:  Finished in 1 minute 2.36 seconds (files took 0.36346 seconds to load)
    756:  0 examples, 0 failures, 1 error occurred outside of examples
    ...
    
    814:  2025-01-08 09:57:50 DEBUG Selenium [:command]    >>> http://127.0.0.1:4444/session/6cfdb91b-23e0-461e-9a7b-22beb6ca497c/url | {"url":"http://localhost:49807/blank.html"} 
    815:  2025-01-08 09:57:50 DEBUG Selenium [:header]      > {"Accept"=>"application/json", "Content-Type"=>"application/json; charset=UTF-8", "User-Agent"=>"selenium/4.28.0.nightly (ruby macosx)", "Content-Length"=>"43"} 
    816:  2025-01-08 09:57:51 DEBUG Selenium [:header]    <<<  {"content-type"=>["application/json; charset=utf-8"], "cache-control"=>["no-cache"], "content-length"=>["14"], "date"=>["Wed, 08 Jan 2025 09:57:50 GMT"]} 
    817:  2025-01-08 09:57:51 DEBUG Selenium [:command] <- {"value":null} 
    818:  2025-01-08 09:57:51 DEBUG Selenium [:command] -> POST session/6cfdb91b-23e0-461e-9a7b-22beb6ca497c/element 
    819:  2025-01-08 09:57:51 DEBUG Selenium [:command]    >>> http://127.0.0.1:4444/session/6cfdb91b-23e0-461e-9a7b-22beb6ca497c/element | {"using":"css selector","value":"#webextensions\\-selenium\\-example"} 
    820:  2025-01-08 09:57:51 DEBUG Selenium [:header]      > {"Accept"=>"application/json", "Content-Type"=>"application/json; charset=UTF-8", "User-Agent"=>"selenium/4.28.0.nightly (ruby macosx)", "Content-Length"=>"70"} 
    821:  2025-01-08 09:57:51 DEBUG Selenium [:header]    <<<  {"content-type"=>["application/json; charset=utf-8"], "cache-control"=>["no-cache"], "content-length"=>["419"], "date"=>["Wed, 08 Jan 2025 09:57:50 GMT"]} 
    822:  2025-01-08 09:57:51 DEBUG Selenium [:command] <- {"value":{"error":"no such element","message":"Unable to locate element: #webextensions\\-selenium\\-example","stacktrace":"RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8\nWebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5\nNoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:511:5\ndom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16\n"}} 
    ...
    
    841:  2025-01-08 09:57:52 DEBUG Selenium [:command] -> POST session 
    842:  2025-01-08 09:57:52 DEBUG Selenium [:command]    >>> http://127.0.0.1:4444/session | {"capabilities":{"alwaysMatch":{"acceptInsecureCerts":true,"browserName":"firefox","moz:firefoxOptions":{"binary":"external/_main~pin_browsers_extension~mac_firefox/Firefox.app/Contents/MacOS/firefox","prefs":{"remote.active-protocols":3}},"moz:debuggerAddress":true}}} 
    843:  2025-01-08 09:57:52 DEBUG Selenium [:header]      > {"Accept"=>"application/json", "Content-Type"=>"application/json; charset=UTF-8", "User-Agent"=>"selenium/4.28.0.nightly (ruby macosx)", "Content-Length"=>"269"} 
    844:  1736330272803	webdriver::server	DEBUG	-> POST /session {"capabilities":{"alwaysMatch":{"acceptInsecureCerts":true,"browserName":"firefox","moz:firefoxOptions":{"bi ... xtension~mac_firefox/Firefox.app/Contents/MacOS/firefox","prefs":{"remote.active-protocols":3}},"moz:debuggerAddress":true}}}
    845:  1736330272803	geckodriver::capabilities	DEBUG	Trying to read firefox version from ini files
    846:  1736330272805	geckodriver::capabilities	DEBUG	Found version 133.0.3
    847:  1736330272813	mozrunner::runner	INFO	Running command: MOZ_CRASHREPORTER="1" MOZ_CRASHREPORTER_NO_REPORT="1" MOZ_CRASHREPORTER_SHUTDOWN="1" MOZ_NO_REMOTE="1" "exte ... s" "localhost" "-foreground" "-no-remote" "-profile" "/var/folders/95/0ydz4d79163427j3k5crp3fh0000gn/T/rust_mozprofileIuDv3K"
    848:  1736330272814	geckodriver::marionette	DEBUG	Waiting 60s to connect to browser on 127.0.0.1
    849:  1736330272814	geckodriver::browser	TRACE	Failed to open /var/folders/95/0ydz4d79163427j3k5crp3fh0000gn/T/rust_mozprofileIuDv3K/MarionetteActivePort
    850:  1736330272814	geckodriver::marionette	TRACE	Retrying in 100ms
    851:  1736330272944	geckodriver::browser	TRACE	Failed to open /var/folders/95/0ydz4d79163427j3k5crp3fh0000gn/T/rust_mozprofileIuDv3K/MarionetteActivePort
    852:  1736330272944	geckodriver::marionette	TRACE	Retrying in 100ms
    853:  1736330273131	geckodriver::browser	TRACE	Failed to open /var/folders/95/0ydz4d79163427j3k5crp3fh0000gn/T/rust_mozprofileIuDv3K/MarionetteActivePort
    854:  1736330273131	geckodriver::marionette	TRACE	Retrying in 100ms
    855:  console.warn: services.settings: Ignoring preference override of remote settings server
    856:  console.warn: services.settings: Allow by setting MOZ_REMOTE_SETTINGS_DEVTOOLS=1 in the environment
    857:  1736330273336	geckodriver::browser	TRACE	Failed to open /var/folders/95/0ydz4d79163427j3k5crp3fh0000gn/T/rust_mozprofileIuDv3K/MarionetteActivePort
    858:  1736330273336	geckodriver::marionette	TRACE	Retrying in 100ms
    859:  1736330273583	geckodriver::browser	TRACE	Failed to open /var/folders/95/0ydz4d79163427j3k5crp3fh0000gn/T/rust_mozprofileIuDv3K/MarionetteActivePort
    ...
    
    917:  1736330273704	RemoteAgent	DEBUG	Setting recommended pref security.remote_settings.intermediates.enabled to false
    918:  1736330273704	RemoteAgent	DEBUG	Setting recommended pref signon.autofillForms to false
    919:  1736330273704	RemoteAgent	DEBUG	Setting recommended pref signon.rememberSignons to false
    920:  1736330273704	RemoteAgent	DEBUG	Setting recommended pref toolkit.telemetry.server to https://%(server)s/telemetry-dummy/
    921:  1736330273704	RemoteAgent	DEBUG	Setting recommended pref widget.windows.window_occlusion_tracking.enabled to false
    922:  1736330273705	RemoteAgent	DEBUG	WebDriver BiDi enabled
    923:  1736330273706	RemoteAgent	DEBUG	CDP enabled
    924:  1736330273706	Marionette	INFO	Marionette enabled
    925:  1736330273833	geckodriver::browser	TRACE	Failed to open /var/folders/95/0ydz4d79163427j3k5crp3fh0000gn/T/rust_mozprofileIuDv3K/MarionetteActivePort
    926:  1736330273833	geckodriver::marionette	TRACE	Retrying in 100ms
    927:  1736330274084	geckodriver::browser	TRACE	Failed to open /var/folders/95/0ydz4d79163427j3k5crp3fh0000gn/T/rust_mozprofileIuDv3K/MarionetteActivePort
    928:  1736330274084	geckodriver::marionette	TRACE	Retrying in 100ms
    929:  1736330274215	geckodriver::browser	TRACE	Failed to open /var/folders/95/0ydz4d79163427j3k5crp3fh0000gn/T/rust_mozprofileIuDv3K/MarionetteActivePort
    930:  1736330274215	geckodriver::marionette	TRACE	Retrying in 100ms
    931:  1736330274318	geckodriver::browser	TRACE	Failed to open /var/folders/95/0ydz4d79163427j3k5crp3fh0000gn/T/rust_mozprofileIuDv3K/MarionetteActivePort
    932:  1736330274318	geckodriver::marionette	TRACE	Retrying in 100ms
    933:  1736330274433	Marionette	TRACE	Received observer notification final-ui-startup
    934:  1736330274436	RemoteAgent	TRACE	Received observer notification final-ui-startup
    935:  1736330274561	geckodriver::browser	TRACE	Failed to open /var/folders/95/0ydz4d79163427j3k5crp3fh0000gn/T/rust_mozprofileIuDv3K/MarionetteActivePort
    936:  1736330274561	geckodriver::marionette	TRACE	Retrying in 100ms
    937:  console.error: "Warning: unrecognized command line flag" "-remote-allow-hosts"
    938:  1736330274675	Marionette	INFO	Listening on port 49829
    939:  1736330274677	Marionette	DEBUG	Marionette is listening
    940:  Read port: 49829
    941:  1736330274853	RemoteAgent	TRACE	Available local IP addresses: 127.0.0.1, [::1]
    942:  !!! could not start server on port 9222: [Exception... "Component returned failure code: 0x804b0036 (NS_ERROR_SOCKET_ADDRESS_IN_USE) [nsIServerSocket.init]"  nsresult: "0x804b0036 (NS_ERROR_SOCKET_ADDRESS_IN_USE)"  location: "JS frame :: chrome://remote/content/server/httpd.sys.mjs :: _start :: line 556"  data: no]
    943:  1736330274860	RemoteAgent	ERROR	Unable to stop listener: [Exception... "Unexpected error"  nsresult: "0x8000ffff (NS_ERROR_UNEXPECTED)"  location: "JS frame :: chrome://remote/content/server/httpd.sys.mjs :: stop :: line 610"  data: no] Stack trace: stop()@httpd.sys.mjs:610
    944:  #stop()@RemoteAgent.sys.mjs:353
    945:  1736330274860	RemoteAgent	ERROR	Unable to start remote agent: : [Exception... "Component is not available"  nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"  location: "JS frame :: chrome://remote/content/server/httpd.sys.mjs :: _start :: line 601"  data: no] Stack trace: _start()@httpd.sys.mjs:601
    946:  #listen()@RemoteAgent.sys.mjs:272
    947:  1736330274874	Marionette	DEBUG	Accepted connection 0 from 127.0.0.1:49830
    948:  1736330274923	geckodriver::marionette	DEBUG	Connection to Marionette established on 127.0.0.1:49829.
    949:  1736330275006	Marionette	DEBUG	0 -> [0,1,"WebDriver:NewSession",{"acceptInsecureCerts":true,"browserName":"firefox"}]
    950:  1736330275009	RemoteAgent	WARN	TLS certificate errors will be ignored for this session
    951:  1736330275010	Marionette	DEBUG	Waiting for initial application window
    952:  1736330278480	Marionette	TRACE	Received observer notification browser-idle-startup-tasks-finished
    953:  1736330278482	RemoteAgent	TRACE	Received observer notification browser-idle-startup-tasks-finished
    954:  1736330278493	RemoteAgent	TRACE	[9] ProgressListener Start: expectNavigation=false resolveWhenStarted=false unloadTimeout=5000 waitForExplicitStart=false
    955:  1736330278493	RemoteAgent	TRACE	[9] ProgressListener Setting unload timer (5000ms)
    956:  1736330278494	RemoteAgent	TRACE	[9] Wait for initial navigation: isInitial=false, isLoadingDocument=false
    957:  1736330278494	RemoteAgent	TRACE	[9] Document already finished loading: about:blank
    958:  1736330278494	RemoteAgent	TRACE	[9] ProgressListener Stop: has error=false url=about:blank
    959:  1736330278519	Marionette	DEBUG	0 <- [1,1,null,{"sessionId":"e2faa62c-b5dd-4282-ab52-2d082793180a","capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"133.0.3","platformName":"mac","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:133.0) Gecko/20100101 Firefox/133.0","moz:buildID":"20241209150345","moz:headless":false,"moz:platformVersion":"23.6.0","moz:processID":11920,"moz:profile":"/var/folders/95/0ydz4d79163427j3k5crp3fh0000gn/T/rust_mozprofileIuDv3K","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:debuggerAddress":"127.0.0.1:9222","moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}]
    960:  1736330278533	webdriver::server	DEBUG	<- 200 OK {"value":{"sessionId":"e2faa62c-b5dd-4282-ab52-2d082793180a","capabilities":{"acceptInsecureCerts":true,"browserNam ... r":"dismiss and notify","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:133.0) Gecko/20100101 Firefox/133.0"}}}
    961:  2025-01-08 09:57:58 DEBUG Selenium [:header]    <<<  {"content-type"=>["application/json; charset=utf-8"], "cache-control"=>["no-cache"], "content-length"=>["851"], "date"=>["Wed, 08 Jan 2025 09:57:52 GMT"]} 
    962:  2025-01-08 09:57:58 DEBUG Selenium [:command] <- {"value":{"sessionId":"e2faa62c-b5dd-4282-ab52-2d082793180a","capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"133.0.3","moz:accessibilityChecks":false,"moz:buildID":"20241209150345","moz:debuggerAddress":"127.0.0.1:9222","moz:geckodriverVersion":"0.35.0","moz:headless":false,"moz:platformVersion":"23.6.0","moz:processID":11920,"moz:profile":"/var/folders/95/0ydz4d79163427j3k5crp3fh0000gn/T/rust_mozprofileIuDv3K","moz:shutdownTimeout":60000,"moz:webdriverClick":true,"moz:windowless":false,"pageLoadStrategy":"normal","platformName":"mac","proxy":{},"setWindowRect":true,"strictFileInteractability":false,"timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:133.0) Gecko/20100101 Firefox/133.0"}}} 
    963:  install and uninstall xpi file (FAILED - 1)
    ...
    
    1317:  1736330280101	RemoteAgent	DEBUG	Resetting recommended pref security.notification_enable_delay
    1318:  1736330280101	RemoteAgent	DEBUG	Resetting recommended pref security.remote_settings.intermediates.enabled
    1319:  1736330280101	RemoteAgent	DEBUG	Resetting recommended pref signon.autofillForms
    1320:  1736330280101	RemoteAgent	DEBUG	Resetting recommended pref signon.rememberSignons
    1321:  1736330280111	RemoteAgent	DEBUG	Resetting recommended pref toolkit.telemetry.server
    1322:  1736330280111	RemoteAgent	DEBUG	Resetting recommended pref widget.windows.window_occlusion_tracking.enabled
    1323:  1736330280112	RemoteAgent	TRACE	Received observer notification quit-application
    1324:  1736330280116	Marionette	DEBUG	Marionette stopped listening
    1325:  1736330280118	RemoteAgent	ERROR	Unable to stop listener: [Exception... "Unexpected error"  nsresult: "0x8000ffff (NS_ERROR_UNEXPECTED)"  location: "JS frame :: chrome://remote/content/server/httpd.sys.mjs :: stop :: line 610"  data: no] Stack trace: stop()@httpd.sys.mjs:610
    ...
    
    1339:  2025-01-08 09:58:00 DEBUG Selenium [:process] Checking if 11919 is exited: 
    1340:  2025-01-08 09:58:00 DEBUG Selenium [:process]   -> exit code is 15 
    1341:  2025-01-08 09:58:00 DEBUG Selenium [:process] Checking if 11919 is exited: 
    1342:  2025-01-08 09:58:00 DEBUG Selenium [:process]   -> exit code is 15 
    1343:  2025-01-08 09:58:00 DEBUG Selenium [:process]   -> stopped 11919 
    1344:  Pending: (Failures listed here are expected and do not affect your suite's status)
    1345:  1) Selenium::WebDriver::Firefox::Driver#print_options prints full page
    1346:  # Test guarded; Guarded by {:platform=>:macosx, :reason=>"showing half resolution of what expected"};
    1347:  Got 1 failure:
    1348:  1.1) Failure/Error: expect(width).to be >= viewport_width
    1349:  expected: >= 1280
    1350:  got:    632
    1351:  # ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:58:in `block (3 levels) in <module:Firefox>'
    1352:  Failures:
    1353:  1) Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall xpi file
    1354:  Failure/Error: injected = driver.find_element(id: 'webextensions-selenium-example')
    1355:  Selenium::WebDriver::Error::NoSuchElementError:
    1356:  Unable to locate element: #webextensions\-selenium\-example; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    1357:  # ./rb/lib/selenium/webdriver/remote/response.rb:63:in `add_cause'
    1358:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    1363:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    1364:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:68:in `call'
    1365:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:685:in `execute'
    1366:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:553:in `find_element_by'
    1367:  # ./rb/lib/selenium/webdriver/common/search_context.rb:71:in `find_element'
    1368:  # ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:74:in `block (3 levels) in <module:Firefox>'
    1369:  # ------------------
    1370:  # --- Caused by: ---
    1371:  # Selenium::WebDriver::Error::WebDriverError:
    1372:  #   RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    1373:  WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    1374:  NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:511:5
    1375:  dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
    1376:  Finished in 45.76 seconds (files took 0.20469 seconds to load)
    1377:  10 examples, 1 failure, 1 pending
    1378:  Failed examples:
    ...
    
    1388:  2025-01-08 09:58:00 DEBUG Selenium [:process] Checking if 11395 is exited: 
    1389:  2025-01-08 09:58:00 DEBUG Selenium [:process]   -> exit code is 15 
    1390:  ================================================================================
    1391:  �[32m[1,309 / 1,321]�[0m 12 / 30 tests;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-firefox; 37s ... (3 actions, 1 running)
    1392:  �[32m[1,309 / 1,321]�[0m 12 / 30 tests;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-firefox; 48s ... (3 actions, 1 running)
    1393:  �[32m[1,309 / 1,321]�[0m 12 / 30 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:window-firefox; 17s local, disk-cache ... (3 actions, 2 running)
    1394:  �[32m[1,310 / 1,321]�[0m 13 / 30 tests;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-firefox; 18s ... (3 actions, 1 running)
    1395:  �[32m[1,310 / 1,321]�[0m 13 / 30 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-firefox; 9s local, disk-cache ... (3 actions, 2 running)
    1396:  �[32m[1,311 / 1,321]�[0m 14 / 30 tests;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:error-firefox; 9s ... (3 actions, 1 running)
    1397:  �[32m[1,311 / 1,321]�[0m 14 / 30 tests;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:error-firefox; 20s ... (3 actions, 1 running)
    1398:  �[32m[1,311 / 1,321]�[0m 14 / 30 tests;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:error-firefox; 53s ... (3 actions, 1 running)
    1399:  �[32m[1,311 / 1,321]�[0m 14 / 30 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:action_builder-firefox; 48s local, disk-cache ... (3 actions, 2 running)
    1400:  �[32m[1,312 / 1,321]�[0m 15 / 30 tests;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/remote:element-firefox; 49s ... (3 actions, 1 running)
    1401:  �[32m[1,312 / 1,321]�[0m 15 / 30 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:error-firefox; 11s local, disk-cache ... (3 actions, 2 running)
    ...
    
    1430:  �[32m[1,324 / 1,325]�[0m 27 / 30 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-firefox; 354s local, disk-cache
    1431:  �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver:devtools-firefox (see /Users/runner/.bazel/execroot/_main/bazel-out/darwin_arm64-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/devtools-firefox/test_attempts/attempt_1.log)
    1432:  �[32m[1,324 / 1,325]�[0m 27 / 30 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-firefox; 356s local, disk-cache
    1433:  �[32m[1,324 / 1,325]�[0m 27 / 30 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-firefox; 648s local, disk-cache
    1434:  �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver:devtools-firefox (see /Users/runner/.bazel/execroot/_main/bazel-out/darwin_arm64-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/devtools-firefox/test_attempts/attempt_2.log)
    1435:  �[32m[1,324 / 1,325]�[0m 27 / 30 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-firefox; 650s local, disk-cache
    1436:  �[32m[1,324 / 1,325]�[0m 27 / 30 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-firefox; 975s local, disk-cache
    1437:  �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver:devtools-firefox (see /Users/runner/.bazel/execroot/_main/bazel-out/darwin_arm64-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/devtools-firefox/test.log)
    1438:  �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver:devtools-firefox (Summary)
    ...
    
    1445:  browser: firefox
    1446:  driver: firefox
    1447:  version: 133.0.3
    1448:  platform: macosx
    1449:  ci: github
    1450:  rbe: false
    1451:  ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [arm64-darwin23]
    1452:  Selenium::WebDriver::DevTools
    1453:  sends commands (FAILED - 1)
    1454:  maps methods to classes
    1455:  supports events (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};)
    1456:  propagates errors in events (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};)
    1457:  2025-01-08 10:03:54 WARN Selenium [:on_log_event] [DEPRECATION] Driver#on_log_event on Firefox is deprecated. Use the script.add_console_message_handler or the script.add_javascript_error_handler methods instead. 
    1458:  notifies about log messages (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};)
    1459:  2025-01-08 10:04:09 WARN Selenium [:on_log_event] [DEPRECATION] Driver#on_log_event on Firefox is deprecated. Use the script.add_console_message_handler or the script.add_javascript_error_handler methods instead. 
    1460:  notifies about document log messages (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"Firefox & Chrome parse document differently"};)
    1461:  2025-01-08 10:04:37 WARN Selenium [:on_log_event] [DEPRECATION] Driver#on_log_event on Firefox is deprecated. Use the script.add_console_message_handler or the script.add_javascript_error_handler methods instead. 
    1462:  notifies about document log messages (PENDING: Test guarded; Guarded by {:browser=>[:chrome, :edge, :firefox], :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};)
    1463:  2025-01-08 10:05:05 WARN Selenium [:on_log_event] [DEPRECATION] Driver#on_log_event on Firefox is deprecated. Use the script.add_console_message_handler or the script.add_javascript_error_handler methods instead. 
    1464:  notifies about exceptions (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};)
    1465:  2025-01-08 10:05:32 WARN Selenium [:on_log_event] [DEPRECATION] Driver#on_log_event on Firefox is deprecated. Use the script.add_console_message_handler or the script.add_javascript_error_handler methods instead. 
    ...
    
    1481:  ensures pinned script is available on new pages (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};)
    1482:  allows to unpin script (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};)
    1483:  ensures unpinned scripts are not available on new pages (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};)
    1484:  handles arguments in pinned script (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};)
    1485:  supports async pinned scripts (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};)
    1486:  Pending: (Failures listed here are expected and do not affect your suite's status)
    1487:  1) Selenium::WebDriver::DevTools supports events
    1488:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};
    1489:  Got 1 failure:
    1490:  1.1) Failure/Error:
    1491:  expect { |block|
    1492:  driver.devtools.page.enable
    1493:  driver.devtools.page.on(:load_event_fired, &block)
    1494:  driver.navigate.to url_for('xhtmlTest.html')
    1495:  sleep 0.5
    1496:  }.to yield_control
    1497:  expected given block to yield control but did not yield
    1498:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:41:in `block (2 levels) in <module:WebDriver>'
    1499:  2) Selenium::WebDriver::DevTools propagates errors in events
    1500:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};
    1501:  Got 1 failure:
    1502:  2.1) Failure/Error:
    1503:  expect {
    1504:  driver.devtools.page.enable
    1505:  driver.devtools.page.on(:load_event_fired) { raise 'This is fine!' }
    1506:  driver.navigate.to url_for('xhtmlTest.html')
    1507:  sleep 0.5
    1508:  }.to raise_error(RuntimeError, 'This is fine!')
    1509:  expected RuntimeError with "This is fine!" but nothing was raised
    1510:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:51:in `block (2 levels) in <module:WebDriver>'
    1511:  3) Selenium::WebDriver::DevTools notifies about log messages
    1512:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};
    1513:  Got 1 failure:
    1514:  3.1) Failure/Error:
    ...
    
    1524:  -[(an object having attributes {:args => ["I like cheese"], :type => :log}),
    1525:  - (an object having attributes {:args => [true], :type => :log}),
    1526:  - (an object having attributes {:args => [nil], :type => :log}),
    1527:  - (an object having attributes {:args => [{"type" => "undefined"}], :type => :log})]
    1528:  +[]
    1529:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:100:in `block (2 levels) in <module:WebDriver>'
    1530:  4) Selenium::WebDriver::DevTools notifies about document log messages
    1531:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Firefox & Chrome parse document differently"};
    1532:  Failure/Error: wait.until { !logs.empty? }
    1533:  Selenium::WebDriver::Error::TimeoutError:
    1534:  timed out after 10 seconds
    1535:  # ./rb/lib/selenium/webdriver/common/wait.rb:73:in `until'
    1536:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:115:in `block (2 levels) in <module:WebDriver>'
    1537:  5) Selenium::WebDriver::DevTools notifies about document log messages
    1538:  # Test guarded; Guarded by {:browser=>[:chrome, :edge, :firefox], :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};
    1539:  Failure/Error: wait.until { !logs.empty? }
    1540:  Selenium::WebDriver::Error::TimeoutError:
    1541:  timed out after 10 seconds
    1542:  # ./rb/lib/selenium/webdriver/common/wait.rb:73:in `until'
    1543:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:129:in `block (2 levels) in <module:WebDriver>'
    1544:  6) Selenium::WebDriver::DevTools notifies about exceptions
    1545:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};
    1546:  Failure/Error: wait.until { exceptions.any? }
    1547:  Selenium::WebDriver::Error::TimeoutError:
    1548:  timed out after 10 seconds
    1549:  # ./rb/lib/selenium/webdriver/common/wait.rb:73:in `until'
    1550:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:143:in `block (2 levels) in <module:WebDriver>'
    1551:  7) Selenium::WebDriver::DevTools notifies about DOM mutations
    1552:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Runtime.addBinding not yet supported"};
    1553:  Failure/Error: driver.on_log_event(:mutation) { |mutation| mutations.push(mutation) }
    1554:  Selenium::WebDriver::Error::WebDriverError:
    1555:  : Runtime.addBinding: RemoteAgentError@chrome://remote/content/cdp/Error.sys.mjs:18:5
    1556:  UnknownMethodError@chrome://remote/content/cdp/Error.sys.mjs:101:7
    ...
    
    1558:  receiveMessage@chrome://remote/content/cdp/sessions/ContentProcessSession.sys.mjs:79:45
    1559:  # ./rb/lib/selenium/webdriver/devtools.rb:49:in `send_cmd'
    1560:  # ./rb/lib/selenium/devtools/v85/runtime.rb:177:in `add_binding'
    1561:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb:120:in `log_mutation_events'
    1562:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb:74:in `on_log_event'
    1563:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:153:in `block (2 levels) in <module:WebDriver>'
    1564:  8) Selenium::WebDriver::DevTools#register on any request
    1565:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Fetch.enable is not yet supported"};
    1566:  Failure/Error: driver.register(username: username, password: password)
    1567:  NoMethodError:
    1568:  undefined method `register' for #<Selenium::WebDriver::Firefox::Driver:0x6f633da53cd90c94 browser=:firefox>
    1569:  driver.register(username: username, password: password)
    1570:  ^^^^^^^^^
    1571:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:65:in `block (3 levels) in <module:WebDriver>'
    1572:  9) Selenium::WebDriver::DevTools#register based on URL
    1573:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Fetch.enable is not yet supported"};
    1574:  Failure/Error: driver.register(username: username, password: password, uri: /localhost/)
    1575:  NoMethodError:
    1576:  undefined method `register' for #<Selenium::WebDriver::Firefox::Driver:0x..f5163646aa4bc122 browser=:firefox>
    1577:  driver.register(username: username, password: password, uri: /localhost/)
    1578:  ^^^^^^^^^
    1579:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:73:in `block (3 levels) in <module:WebDriver>'
    1580:  10) Selenium::WebDriver::DevTools#intercept continues requests
    1581:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Fetch.enable is not yet supported"};
    1582:  Failure/Error:
    1583:  driver.intercept do |request, &continue|
    1584:  requests << request
    1585:  continue.call(request)
    1586:  end
    1587:  Selenium::WebDriver::Error::WebDriverError:
    1588:  : Fetch.enable: RemoteAgentError@chrome://remote/content/cdp/Error.sys.mjs:18:5
    1589:  UnknownMethodError@chrome://remote/content/cdp/Error.sys.mjs:101:7
    ...
    
    1591:  receiveMessage@chrome://remote/content/cdp/sessions/ContentProcessSession.sys.mjs:79:45
    1592:  # ./rb/lib/selenium/webdriver/devtools.rb:49:in `send_cmd'
    1593:  # ./rb/lib/selenium/devtools/v85/fetch.rb:44:in `enable'
    1594:  # ./rb/lib/selenium/webdriver/devtools/network_interceptor.rb:52:in `intercept'
    1595:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb:71:in `intercept'
    1596:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:170:in `block (3 levels) in <module:WebDriver>'
    1597:  11) Selenium::WebDriver::DevTools#intercept changes requests
    1598:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Fetch.enable is not yet supported"};
    1599:  Failure/Error:
    1600:  driver.intercept do |request, &continue|
    1601:  uri = URI(request.url)
    1602:  if uri.path.end_with?('one.js')
    1603:  uri.path = '/devtools_request_interception_test/two.js'
    1604:  request.url = uri.to_s
    1605:  end
    1606:  request.post_data = {foo: 'bar'}.to_json
    1607:  continue.call(request)
    1608:  Selenium::WebDriver::Error::WebDriverError:
    1609:  : Fetch.enable: RemoteAgentError@chrome://remote/content/cdp/Error.sys.mjs:18:5
    1610:  UnknownMethodError@chrome://remote/content/cdp/Error.sys.mjs:101:7
    ...
    
    1612:  receiveMessage@chrome://remote/content/cdp/sessions/ContentProcessSession.sys.mjs:79:45
    1613:  # ./rb/lib/selenium/webdriver/devtools.rb:49:in `send_cmd'
    1614:  # ./rb/lib/selenium/devtools/v85/fetch.rb:44:in `enable'
    1615:  # ./rb/lib/selenium/webdriver/devtools/network_interceptor.rb:52:in `intercept'
    1616:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb:71:in `intercept'
    1617:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:180:in `block (3 levels) in <module:WebDriver>'
    1618:  12) Selenium::WebDriver::DevTools#intercept continues responses
    1619:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Fetch.enable is not yet supported"};
    1620:  Failure/Error:
    1621:  driver.intercept do |request, &continue|
    1622:  continue.call(request) do |response|
    1623:  responses << response
    1624:  end
    1625:  end
    1626:  Selenium::WebDriver::Error::WebDriverError:
    1627:  : Fetch.enable: RemoteAgentError@chrome://remote/content/cdp/Error.sys.mjs:18:5
    1628:  UnknownMethodError@chrome://remote/content/cdp/Error.sys.mjs:101:7
    ...
    
    1630:  receiveMessage@chrome://remote/content/cdp/sessions/ContentProcessSession.sys.mjs:79:45
    1631:  # ./rb/lib/selenium/webdriver/devtools.rb:49:in `send_cmd'
    1632:  # ./rb/lib/selenium/devtools/v85/fetch.rb:44:in `enable'
    1633:  # ./rb/lib/selenium/webdriver/devtools/network_interceptor.rb:52:in `intercept'
    1634:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb:71:in `intercept'
    1635:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:196:in `block (3 levels) in <module:WebDriver>'
    1636:  13) Selenium::WebDriver::DevTools#intercept changes responses
    1637:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Fetch.enable is not yet supported"};
    1638:  Failure/Error:
    1639:  driver.intercept do |request, &continue|
    1640:  continue.call(request) do |response|
    1641:  response.body << '<h4 id="appended">Appended!</h4>' if request.url.include?('html5Page.html')
    1642:  end
    1643:  end
    1644:  Selenium::WebDriver::Error::WebDriverError:
    1645:  : Fetch.enable: RemoteAgentError@chrome://remote/content/cdp/Error.sys.mjs:18:5
    1646:  UnknownMethodError@chrome://remote/content/cdp/Error.sys.mjs:101:7
    ...
    
    1648:  receiveMessage@chrome://remote/content/cdp/sessions/ContentProcessSession.sys.mjs:79:45
    1649:  # ./rb/lib/selenium/webdriver/devtools.rb:49:in `send_cmd'
    1650:  # ./rb/lib/selenium/devtools/v85/fetch.rb:44:in `enable'
    1651:  # ./rb/lib/selenium/webdriver/devtools/network_interceptor.rb:52:in `intercept'
    1652:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb:71:in `intercept'
    1653:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:207:in `block (3 levels) in <module:WebDriver>'
    1654:  14) Selenium::WebDriver::DevTools#pin_script allows to pin script
    1655:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};
    1656:  Failure/Error: script = driver.pin_script('return document.title;')
    1657:  NoMethodError:
    1658:  undefined method `pin_script' for #<Selenium::WebDriver::Firefox::Driver:0x71d96fba9f4ad5a browser=:firefox>
    1659:  script = driver.pin_script('return document.title;')
    1660:  ^^^^^^^^^^^
    1661:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:223:in `block (3 levels) in <module:WebDriver>'
    1662:  15) Selenium::WebDriver::DevTools#pin_script ensures pinned script is available on new pages
    1663:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};
    1664:  Failure/Error: script = driver.pin_script('return document.title;')
    1665:  NoMethodError:
    1666:  undefined method `pin_script' for #<Selenium::WebDriver::Firefox::Driver:0x3b95ca7feb4f77be browser=:firefox>
    1667:  script = driver.pin_script('return document.title;')
    1668:  ^^^^^^^^^^^
    1669:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:229:in `block (3 levels) in <module:WebDriver>'
    1670:  16) Selenium::WebDriver::DevTools#pin_script allows to unpin script
    1671:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};
    1672:  Failure/Error: script = driver.pin_script('return document.title;')
    1673:  NoMethodError:
    1674:  undefined method `pin_script' for #<Selenium::WebDriver::Firefox::Driver:0x2e0c39f226a63e92 browser=:firefox>
    1675:  script = driver.pin_script('return document.title;')
    1676:  ^^^^^^^^^^^
    1677:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:235:in `block (3 levels) in <module:WebDriver>'
    1678:  17) Selenium::WebDriver::DevTools#pin_script ensures unpinned scripts are not available on new pages
    1679:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};
    1680:  Failure/Error: script = driver.pin_script('return document.title;')
    1681:  NoMethodError:
    1682:  undefined method `pin_script' for #<Selenium::WebDriver::Firefox::Driver:0x42846d76603ef446 browser=:firefox>
    1683:  script = driver.pin_script('return document.title;')
    1684:  ^^^^^^^^^^^
    1685:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:242:in `block (3 levels) in <module:WebDriver>'
    1686:  18) Selenium::WebDriver::DevTools#pin_script handles arguments in pinned script
    1687:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};
    1688:  Failure/Error: script = driver.pin_script('return arguments;')
    1689:  NoMethodError:
    1690:  undefined method `pin_script' for #<Selenium::WebDriver::Firefox::Driver:0x753c40eaa389aa0a browser=:firefox>
    1691:  script = driver.pin_script('return arguments;')
    1692:  ^^^^^^^^^^^
    1693:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:249:in `block (3 levels) in <module:WebDriver>'
    1694:  19) Selenium::WebDriver::DevTools#pin_script supports async pinned scripts
    1695:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};
    1696:  Failure/Error: script = driver.pin_script('arguments[0]()')
    1697:  NoMethodError:
    1698:  undefined method `pin_script' for #<Selenium::WebDriver::Firefox::Driver:0x69b4b46efde0602e browser=:firefox>
    1699:  script = driver.pin_script('arguments[0]()')
    1700:  ^^^^^^^^^^^
    1701:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:255:in `block (3 levels) in <module:WebDriver>'
    1702:  Failures:
    1703:  1) Selenium::WebDriver::DevTools sends commands
    1704:  Failure/Error: expect(driver.title).to eq('XHTML Test Page')
    1705:  expected: "XHTML Test Page"
    1706:  got: ""
    1707:  (compared using ==)
    1708:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:30:in `block (2 levels) in <module:WebDriver>'
    1709:  Finished in 5 minutes 54 seconds (files took 0.17407 seconds to load)
    1710:  21 examples, 1 failure, 19 pending
    1711:  Failed examples:
    ...
    
    1716:  browser: firefox
    1717:  driver: firefox
    1718:  version: 133.0.3
    1719:  platform: macosx
    1720:  ci: github
    1721:  rbe: false
    1722:  ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [arm64-darwin23]
    1723:  Selenium::WebDriver::DevTools
    1724:  sends commands (FAILED - 1)
    1725:  maps methods to classes
    1726:  supports events (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};)
    1727:  propagates errors in events (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};)
    1728:  2025-01-08 10:09:58 WARN Selenium [:on_log_event] [DEPRECATION] Driver#on_log_event on Firefox is deprecated. Use the script.add_console_message_handler or the script.add_javascript_error_handler methods instead. 
    1729:  notifies about log messages (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};)
    1730:  2025-01-08 10:10:12 WARN Selenium [:on_log_event] [DEPRECATION] Driver#on_log_event on Firefox is deprecated. Use the script.add_console_message_handler or the script.add_javascript_error_handler methods instead. 
    1731:  notifies about document log messages (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"Firefox & Chrome parse document differently"};)
    1732:  2025-01-08 10:10:35 WARN Selenium [:on_log_event] [DEPRECATION] Driver#on_log_event on Firefox is deprecated. Use the script.add_console_message_handler or the script.add_javascript_error_handler methods instead. 
    1733:  notifies about document log messages (PENDING: Test guarded; Guarded by {:browser=>[:chrome, :edge, :firefox], :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};)
    1734:  2025-01-08 10:10:57 WARN Selenium [:on_log_event] [DEPRECATION] Driver#on_log_event on Firefox is deprecated. Use the script.add_console_message_handler or the script.add_javascript_error_handler methods instead. 
    1735:  notifies about exceptions (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};)
    1736:  2025-01-08 10:11:23 WARN Selenium [:on_log_event] [DEPRECATION] Driver#on_log_event on Firefox is deprecated. Use the script.add_console_message_handler or the script.add_javascript_error_handler methods instead. 
    ...
    
    1752:  ensures pinned script is available on new pages (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};)
    1753:  allows to unpin script (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};)
    1754:  ensures unpinned scripts are not available on new pages (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};)
    1755:  handles arguments in pinned script (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};)
    1756:  supports async pinned scripts (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};)
    1757:  Pending: (Failures listed here are expected and do not affect your suite's status)
    1758:  1) Selenium::WebDriver::DevTools supports events
    1759:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};
    1760:  Got 1 failure:
    1761:  1.1) Failure/Error:
    1762:  expect { |block|
    1763:  driver.devtools.page.enable
    1764:  driver.devtools.page.on(:load_event_fired, &block)
    1765:  driver.navigate.to url_for('xhtmlTest.html')
    1766:  sleep 0.5
    1767:  }.to yield_control
    1768:  expected given block to yield control but did not yield
    1769:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:41:in `block (2 levels) in <module:WebDriver>'
    1770:  2) Selenium::WebDriver::DevTools propagates errors in events
    1771:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};
    1772:  Got 1 failure:
    1773:  2.1) Failure/Error:
    1774:  expect {
    1775:  driver.devtools.page.enable
    1776:  driver.devtools.page.on(:load_event_fired) { raise 'This is fine!' }
    1777:  driver.navigate.to url_for('xhtmlTest.html')
    1778:  sleep 0.5
    1779:  }.to raise_error(RuntimeError, 'This is fine!')
    1780:  expected RuntimeError with "This is fine!" but nothing was raised
    1781:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:51:in `block (2 levels) in <module:WebDriver>'
    1782:  3) Selenium::WebDriver::DevTools notifies about log messages
    1783:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};
    1784:  Got 1 failure:
    1785:  3.1) Failure/Error:
    ...
    
    1795:  -[(an object having attributes {:args => ["I like cheese"], :type => :log}),
    1796:  - (an object having attributes {:args => [true], :type => :log}),
    1797:  - (an object having attributes {:args => [nil], :type => :log}),
    1798:  - (an object having attributes {:args => [{"type" => "undefined"}], :type => :log})]
    1799:  +[]
    1800:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:100:in `block (2 levels) in <module:WebDriver>'
    1801:  4) Selenium::WebDriver::DevTools notifies about document log messages
    1802:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Firefox & Chrome parse document differently"};
    1803:  Failure/Error: wait.until { !logs.empty? }
    1804:  Selenium::WebDriver::Error::TimeoutError:
    1805:  timed out after 10 seconds
    1806:  # ./rb/lib/selenium/webdriver/common/wait.rb:73:in `until'
    1807:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:115:in `block (2 levels) in <module:WebDriver>'
    1808:  5) Selenium::WebDriver::DevTools notifies about document log messages
    1809:  # Test guarded; Guarded by {:browser=>[:chrome, :edge, :firefox], :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};
    1810:  Failure/Error: wait.until { !logs.empty? }
    1811:  Selenium::WebDriver::Error::TimeoutError:
    1812:  timed out after 10 seconds
    1813:  # ./rb/lib/selenium/webdriver/common/wait.rb:73:in `until'
    1814:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:129:in `block (2 levels) in <module:WebDriver>'
    1815:  6) Selenium::WebDriver::DevTools notifies about exceptions
    1816:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};
    1817:  Failure/Error: wait.until { exceptions.any? }
    1818:  Selenium::WebDriver::Error::TimeoutError:
    1819:  timed out after 10 seconds
    1820:  # ./rb/lib/selenium/webdriver/common/wait.rb:73:in `until'
    1821:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:143:in `block (2 levels) in <module:WebDriver>'
    1822:  7) Selenium::WebDriver::DevTools notifies about DOM mutations
    1823:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Runtime.addBinding not yet supported"};
    1824:  Failure/Error: driver.on_log_event(:mutation) { |mutation| mutations.push(mutation) }
    1825:  Selenium::WebDriver::Error::WebDriverError:
    1826:  : Runtime.addBinding: RemoteAgentError@chrome://remote/content/cdp/Error.sys.mjs:18:5
    1827:  UnknownMethodError@chrome://remote/content/cdp/Error.sys.mjs:101:7
    ...
    
    1829:  receiveMessage@chrome://remote/content/cdp/sessions/ContentProcessSession.sys.mjs:79:45
    1830:  # ./rb/lib/selenium/webdriver/devtools.rb:49:in `send_cmd'
    1831:  # ./rb/lib/selenium/devtools/v85/runtime.rb:177:in `add_binding'
    1832:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb:120:in `log_mutation_events'
    1833:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb:74:in `on_log_event'
    1834:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:153:in `block (2 levels) in <module:WebDriver>'
    1835:  8) Selenium::WebDriver::DevTools#register on any request
    1836:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Fetch.enable is not yet supported"};
    1837:  Failure/Error: driver.register(username: username, password: password)
    1838:  NoMethodError:
    1839:  undefined method `register' for #<Selenium::WebDriver::Firefox::Driver:0x..f9ed82510129796da browser=:firefox>
    1840:  driver.register(username: username, password: password)
    1841:  ^^^^^^^^^
    1842:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:65:in `block (3 levels) in <module:WebDriver>'
    1843:  9) Selenium::WebDriver::DevTools#register based on URL
    1844:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Fetch.enable is not yet supported"};
    1845:  Failure/Error: driver.register(username: username, password: password, uri: /localhost/)
    1846:  NoMethodError:
    1847:  undefined method `register' for #<Selenium::WebDriver::Firefox::Driver:0x37232877a905451a browser=:firefox>
    1848:  driver.register(username: username, password: password, uri: /localhost/)
    1849:  ^^^^^^^^^
    1850:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:73:in `block (3 levels) in <module:WebDriver>'
    1851:  10) Selenium::WebDriver::DevTools#intercept continues requests
    1852:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Fetch.enable is not yet supported"};
    1853:  Failure/Error:
    1854:  driver.intercept do |request, &continue|
    1855:  requests << request
    1856:  continue.call(request)
    1857:  end
    1858:  Selenium::WebDriver::Error::WebDriverError:
    1859:  : Fetch.enable: RemoteAgentError@chrome://remote/content/cdp/Error.sys.mjs:18:5
    1860:  UnknownMethodError@chrome://remote/content/cdp/Error.sys.mjs:101:7
    ...
    
    1862:  receiveMessage@chrome://remote/content/cdp/sessions/ContentProcessSession.sys.mjs:79:45
    1863:  # ./rb/lib/selenium/webdriver/devtools.rb:49:in `send_cmd'
    1864:  # ./rb/lib/selenium/devtools/v85/fetch.rb:44:in `enable'
    1865:  # ./rb/lib/selenium/webdriver/devtools/network_interceptor.rb:52:in `intercept'
    1866:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb:71:in `intercept'
    1867:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:170:in `block (3 levels) in <module:WebDriver>'
    1868:  11) Selenium::WebDriver::DevTools#intercept changes requests
    1869:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Fetch.enable is not yet supported"};
    1870:  Failure/Error:
    1871:  driver.intercept do |request, &continue|
    1872:  uri = URI(request.url)
    1873:  if uri.path.end_with?('one.js')
    1874:  uri.path = '/devtools_request_interception_test/two.js'
    1875:  request.url = uri.to_s
    1876:  end
    1877:  request.post_data = {foo: 'bar'}.to_json
    1878:  continue.call(request)
    1879:  Selenium::WebDriver::Error::WebDriverError:
    1880:  : Fetch.enable: RemoteAgentError@chrome://remote/content/cdp/Error.sys.mjs:18:5
    1881:  UnknownMethodError@chrome://remote/content/cdp/Error.sys.mjs:101:7
    ...
    
    1883:  receiveMessage@chrome://remote/content/cdp/sessions/ContentProcessSession.sys.mjs:79:45
    1884:  # ./rb/lib/selenium/webdriver/devtools.rb:49:in `send_cmd'
    1885:  # ./rb/lib/selenium/devtools/v85/fetch.rb:44:in `enable'
    1886:  # ./rb/lib/selenium/webdriver/devtools/network_interceptor.rb:52:in `intercept'
    1887:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb:71:in `intercept'
    1888:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:180:in `block (3 levels) in <module:WebDriver>'
    1889:  12) Selenium::WebDriver::DevTools#intercept continues responses
    1890:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Fetch.enable is not yet supported"};
    1891:  Failure/Error:
    1892:  driver.intercept do |request, &continue|
    1893:  continue.call(request) do |response|
    1894:  responses << response
    1895:  end
    1896:  end
    1897:  Selenium::WebDriver::Error::WebDriverError:
    1898:  : Fetch.enable: RemoteAgentError@chrome://remote/content/cdp/Error.sys.mjs:18:5
    1899:  UnknownMethodError@chrome://remote/content/cdp/Error.sys.mjs:101:7
    ...
    
    1901:  receiveMessage@chrome://remote/content/cdp/sessions/ContentProcessSession.sys.mjs:79:45
    1902:  # ./rb/lib/selenium/webdriver/devtools.rb:49:in `send_cmd'
    1903:  # ./rb/lib/selenium/devtools/v85/fetch.rb:44:in `enable'
    1904:  # ./rb/lib/selenium/webdriver/devtools/network_interceptor.rb:52:in `intercept'
    1905:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb:71:in `intercept'
    1906:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:196:in `block (3 levels) in <module:WebDriver>'
    1907:  13) Selenium::WebDriver::DevTools#intercept changes responses
    1908:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Fetch.enable is not yet supported"};
    1909:  Failure/Error:
    1910:  driver.intercept do |request, &continue|
    1911:  continue.call(request) do |response|
    1912:  response.body << '<h4 id="appended">Appended!</h4>' if request.url.include?('html5Page.html')
    1913:  end
    1914:  end
    1915:  Selenium::WebDriver::Error::WebDriverError:
    1916:  : Fetch.enable: RemoteAgentError@chrome://remote/content/cdp/Error.sys.mjs:18:5
    1917:  UnknownMethodError@chrome://remote/content/cdp/Error.sys.mjs:101:7
    ...
    
    1919:  receiveMessage@chrome://remote/content/cdp/sessions/ContentProcessSession.sys.mjs:79:45
    1920:  # ./rb/lib/selenium/webdriver/devtools.rb:49:in `send_cmd'
    1921:  # ./rb/lib/selenium/devtools/v85/fetch.rb:44:in `enable'
    1922:  # ./rb/lib/selenium/webdriver/devtools/network_interceptor.rb:52:in `intercept'
    1923:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb:71:in `intercept'
    1924:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:207:in `block (3 levels) in <module:WebDriver>'
    1925:  14) Selenium::WebDriver::DevTools#pin_script allows to pin script
    1926:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};
    1927:  Failure/Error: script = driver.pin_script('return document.title;')
    1928:  NoMethodError:
    1929:  undefined method `pin_script' for #<Selenium::WebDriver::Firefox::Driver:0x..f855d88f2a878f110 browser=:firefox>
    1930:  script = driver.pin_script('return document.title;')
    1931:  ^^^^^^^^^^^
    1932:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:223:in `block (3 levels) in <module:WebDriver>'
    1933:  15) Selenium::WebDriver::DevTools#pin_script ensures pinned script is available on new pages
    1934:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};
    1935:  Failure/Error: script = driver.pin_script('return document.title;')
    1936:  NoMethodError:
    1937:  undefined method `pin_script' for #<Selenium::WebDriver::Firefox::Driver:0x..feaa5dc7eea01bb3c browser=:firefox>
    1938:  script = driver.pin_script('return document.title;')
    1939:  ^^^^^^^^^^^
    1940:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:229:in `block (3 levels) in <module:WebDriver>'
    1941:  16) Selenium::WebDriver::DevTools#pin_script allows to unpin script
    1942:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};
    1943:  Failure/Error: script = driver.pin_script('return document.title;')
    1944:  NoMethodError:
    1945:  undefined method `pin_script' for #<Selenium::WebDriver::Firefox::Driver:0x..fde2d21fb2c9684d8 browser=:firefox>
    1946:  script = driver.pin_script('return document.title;')
    1947:  ^^^^^^^^^^^
    1948:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:235:in `block (3 levels) in <module:WebDriver>'
    1949:  17) Selenium::WebDriver::DevTools#pin_script ensures unpinned scripts are not available on new pages
    1950:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};
    1951:  Failure/Error: script = driver.pin_script('return document.title;')
    1952:  NoMethodError:
    1953:  undefined method `pin_script' for #<Selenium::WebDriver::Firefox::Driver:0x..fc3b575676f3e4e74 browser=:firefox>
    1954:  script = driver.pin_script('return document.title;')
    1955:  ^^^^^^^^^^^
    1956:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:242:in `block (3 levels) in <module:WebDriver>'
    1957:  18) Selenium::WebDriver::DevTools#pin_script handles arguments in pinned script
    1958:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};
    1959:  Failure/Error: script = driver.pin_script('return arguments;')
    1960:  NoMethodError:
    1961:  undefined method `pin_script' for #<Selenium::WebDriver::Firefox::Driver:0x..fb73d46e391c717c0 browser=:firefox>
    1962:  script = driver.pin_script('return arguments;')
    1963:  ^^^^^^^^^^^
    1964:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:249:in `block (3 levels) in <module:WebDriver>'
    1965:  19) Selenium::WebDriver::DevTools#pin_script supports async pinned scripts
    1966:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};
    1967:  Failure/Error: script = driver.pin_script('arguments[0]()')
    1968:  NoMethodError:
    1969:  undefined method `pin_script' for #<Selenium::WebDriver::Firefox::Driver:0x..f9c84aa6fd46c1e0c browser=:firefox>
    1970:  script = driver.pin_script('arguments[0]()')
    1971:  ^^^^^^^^^^^
    1972:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:255:in `block (3 levels) in <module:WebDriver>'
    1973:  Failures:
    1974:  1) Selenium::WebDriver::DevTools sends commands
    1975:  Failure/Error: expect(driver.title).to eq('XHTML Test Page')
    1976:  expected: "XHTML Test Page"
    1977:  got: ""
    1978:  (compared using ==)
    1979:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:30:in `block (2 levels) in <module:WebDriver>'
    1980:  Finished in 4 minutes 53.6 seconds (files took 0.18989 seconds to load)
    1981:  21 examples, 1 failure, 19 pending
    1982:  Failed examples:
    ...
    
    1987:  browser: firefox
    1988:  driver: firefox
    1989:  version: 133.0.3
    1990:  platform: macosx
    1991:  ci: github
    1992:  rbe: false
    1993:  ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [arm64-darwin23]
    1994:  Selenium::WebDriver::DevTools
    1995:  sends commands (FAILED - 1)
    1996:  maps methods to classes
    1997:  supports events (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};)
    1998:  propagates errors in events (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};)
    1999:  2025-01-08 10:14:41 WARN Selenium [:on_log_event] [DEPRECATION] Driver#on_log_event on Firefox is deprecated. Use the script.add_console_message_handler or the script.add_javascript_error_handler methods instead. 
    2000:  notifies about log messages (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};)
    2001:  2025-01-08 10:14:55 WARN Selenium [:on_log_event] [DEPRECATION] Driver#on_log_event on Firefox is deprecated. Use the script.add_console_message_handler or the script.add_javascript_error_handler methods instead. 
    2002:  notifies about document log messages (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"Firefox & Chrome parse document differently"};)
    2003:  2025-01-08 10:15:16 WARN Selenium [:on_log_event] [DEPRECATION] Driver#on_log_event on Firefox is deprecated. Use the script.add_console_message_handler or the script.add_javascript_error_handler methods instead. 
    2004:  notifies about document log messages (PENDING: Test guarded; Guarded by {:browser=>[:chrome, :edge, :firefox], :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};)
    2005:  2025-01-08 10:15:39 WARN Selenium [:on_log_event] [DEPRECATION] Driver#on_log_event on Firefox is deprecated. Use the script.add_console_message_handler or the script.add_javascript_error_handler methods instead. 
    2006:  notifies about exceptions (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};)
    2007:  2025-01-08 10:16:06 WARN Selenium [:on_log_event] [DEPRECATION] Driver#on_log_event on Firefox is deprecated. Use the script.add_console_message_handler or the script.add_javascript_error_handler methods instead. 
    ...
    
    2023:  ensures pinned script is available on new pages (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};)
    2024:  allows to unpin script (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};)
    2025:  ensures unpinned scripts are not available on new pages (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};)
    2026:  handles arguments in pinned script (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};)
    2027:  supports async pinned scripts (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"No reason given"};)
    2028:  Pending: (Failures listed here are expected and do not affect your suite's status)
    2029:  1) Selenium::WebDriver::DevTools supports events
    2030:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};
    2031:  Got 1 failure:
    2032:  1.1) Failure/Error:
    2033:  expect { |block|
    2034:  driver.devtools.page.enable
    2035:  driver.devtools.page.on(:load_event_fired, &block)
    2036:  driver.navigate.to url_for('xhtmlTest.html')
    2037:  sleep 0.5
    2038:  }.to yield_control
    2039:  expected given block to yield control but did not yield
    2040:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:41:in `block (2 levels) in <module:WebDriver>'
    2041:  2) Selenium::WebDriver::DevTools propagates errors in events
    2042:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};
    2043:  Got 1 failure:
    2044:  2.1) Failure/Error:
    2045:  expect {
    2046:  driver.devtools.page.enable
    2047:  driver.devtools.page.on(:load_event_fired) { raise 'This is fine!' }
    2048:  driver.navigate.to url_for('xhtmlTest.html')
    2049:  sleep 0.5
    2050:  }.to raise_error(RuntimeError, 'This is fine!')
    2051:  expected RuntimeError with "This is fine!" but nothing was raised
    2052:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:51:in `block (2 levels) in <module:WebDriver>'
    2053:  3) Selenium::WebDriver::DevTools notifies about log messages
    2054:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};
    2055:  Got 1 failure:
    2056:  3.1) Failure/Error:
    ...
    
    2066:  -[(an object having attributes {:args => ["I like cheese"], :type => :log}),
    2067:  - (an object having attributes {:args => [true], :type => :log}),
    2068:  - (an object having attributes {:args => [nil], :type => :log}),
    2069:  - (an object having attributes {:args => [{"type" => "undefined"}], :type => :log})]
    2070:  +[]
    2071:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:100:in `block (2 levels) in <module:WebDriver>'
    2072:  4) Selenium::WebDriver::DevTools notifies about document log messages
    2073:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Firefox & Chrome parse document differently"};
    2074:  Failure/Error: wait.until { !logs.empty? }
    2075:  Selenium::WebDriver::Error::TimeoutError:
    2076:  timed out after 10 seconds
    2077:  # ./rb/lib/selenium/webdriver/common/wait.rb:73:in `until'
    2078:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:115:in `block (2 levels) in <module:WebDriver>'
    2079:  5) Selenium::WebDriver::DevTools notifies about document log messages
    2080:  # Test guarded; Guarded by {:browser=>[:chrome, :edge, :firefox], :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};
    2081:  Failure/Error: wait.until { !logs.empty? }
    2082:  Selenium::WebDriver::Error::TimeoutError:
    2083:  timed out after 10 seconds
    2084:  # ./rb/lib/selenium/webdriver/common/wait.rb:73:in `until'
    2085:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:129:in `block (2 levels) in <module:WebDriver>'
    2086:  6) Selenium::WebDriver::DevTools notifies about exceptions
    2087:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};
    2088:  Failure/Error: wait.until { exceptions.any? }
    2089:  Selenium::WebDriver::Error::TimeoutError:
    2090:  timed out after 10 seconds
    2091:  # ./rb/lib/selenium/webdriver/common/wait.rb:73:in `until'
    2092:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:143:in `block (2 levels) in <module:WebDriver>'
    2093:  7) Selenium::WebDriver::DevTools notifies about DOM mutations
    2094:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Runtime.addBinding not yet supported"};
    2095:  Failure/Error: driver.on_log_event(:mutation) { |mutation| mutations.push(mutation) }
    2096:  Selenium::WebDriver::Error::WebDriverError:
    2097:  : Runtime.addBinding: RemoteAgentError@chrome://remote/content/cdp/Error.sys.mjs:18:5
    2098:  UnknownMethodError@chrome://remote/content/cdp/Error.sys.mjs:101:7
    ...
    
    2100:  receiveMessage@chrome://remote/content/cdp/sessions/ContentProcessSession.sys.mjs:79:45
    2101:  # ./rb/lib/selenium/webdriver/devtools.rb:49:in `send_cmd'
    2102:  # ./rb/lib/selenium/devtools/v85/runtime.rb:177:in `add_binding'
    2103:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb:120:in `log_mutation_events'
    2104:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb:74:in `on_log_event'
    2105:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:153:in `block (2 levels) in <module:WebDriver>'
    2106:  8) Selenium::WebDriver::DevTools#register on any request
    2107:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Fetch.enable is not yet supported"};
    2108:  Failure/Error: driver.register(username: username, password: password)
    2109:  NoMethodError:
    2110:  undefined method `register' for #<Selenium::WebDriver::Firefox::Driver:0x3a960b718b09bd54 browser=:firefox>
    2111:  driver.register(username: username, password: password)
    2112:  ^^^^^^^^^
    2113:  # ./...

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    [🚀 Feature]: Dynamic Grid is able to disable video container spawn up
    1 participant