Skip to content

[rb] streamline tests on github actions runners#17550

Draft
titusfortner wants to merge 9 commits into
trunkfrom
ci-ruby
Draft

[rb] streamline tests on github actions runners#17550
titusfortner wants to merge 9 commits into
trunkfrom
ci-ruby

Conversation

@titusfortner
Copy link
Copy Markdown
Member

🔗 Related Issues

Ruby implementation of #17539
Supersedes #16813

💥 What does this PR do?

  • Passes affected targets from ci.yml to ci-ruby.yml and the OS jobs run all affected with filters as described in the linked issue.
  • OS tests include both integration and unit tests, so unit test matrix can be significantly reduced
  • Relying on build target to happen on RBE and if there is an mri issue we'll see it in nightly run
  • Removes processing commit messages and PR titles for [rb] to decide what to run for a PR, everything is gated off affected targets evaluated

🔧 Implementation Notes

These OS tests will include multiple browsers, but need to specify browser name as safari to get safaridriver setup, and browser name can't be blank so I used true

🤖 AI assistance

  • No substantial AI assistance used
  • AI assisted (complete below)
    • Tool(s):
    • What was generated:
    • I reviewed all AI output and can explain the change

💡 Additional Considerations

Currently running local and remote, considering limiting it to just local, especially for safari. I'll time the runs to compare

@selenium-ci selenium-ci added C-rb Ruby Bindings B-build Includes scripting, bazel and CI integrations labels May 22, 2026
@qodo-code-review
Copy link
Copy Markdown
Contributor

Review Summary by Qodo

Streamline Ruby CI tests on GitHub Actions runners

✨ Enhancement 🧪 Tests

Grey Divider

Walkthroughs

Description
• Streamline Ruby CI by passing affected targets from main workflow
• Reduce unit test matrix by relying on OS-specific integration tests
• Replace commit message/PR title parsing with target-based filtering
• Consolidate browser-specific tests into unified OS test matrix
• Update test tags from no-sandbox to semantic labels (unit, lint)
Diagram
flowchart LR
  A["ci.yml<br/>read-targets"] -->|"rb_targets"| B["ci-ruby.yml<br/>workflow_call"]
  B --> C["unit-tests<br/>reduced matrix"]
  B --> D["os-tests<br/>ubuntu/windows/macos"]
  D --> E["browser-specific<br/>tag filters"]
  F["rb/spec/tests.bzl<br/>rb_unit_test"] -->|"tags: unit"| C
  G["rb/BUILD.bazel<br/>lint"] -->|"tags: lint"| B

Loading

File Changes

1. .github/workflows/ci-ruby.yml ⚙️ Configuration changes +23/-35

Refactor CI workflow with target-based filtering

• Add targets workflow input parameter with default value //rb/...
• Remove standalone build job and consolidate into other jobs
• Reduce unit test matrix from 5 configurations to 2 (Ruby 4.0.4 and truffleruby)
• Replace integration-tests-local with unified os-tests job using tag filters
• Update test command to use inputs.targets and tag-based filtering instead of browser filters
• Add exit code handling for test execution (exit 0 on code 4)

.github/workflows/ci-ruby.yml


2. .github/workflows/ci.yml ✨ Enhancement +11/-3

Extract and pass Ruby targets to workflow

• Rename output variable from rb to rb_targets
• Add process_binding function to extract language-specific targets from affected targets
• Replace check_binding for Ruby with process_binding to capture actual target paths
• Pass extracted rb_targets to ci-ruby.yml workflow via with clause

.github/workflows/ci.yml


3. rb/spec/tests.bzl ⚙️ Configuration changes +1/-1

Update unit test tag to semantic label

• Change rb_unit_test tag from no-sandbox to unit for semantic clarity
• Remove TODO comment about sandbox requirement

rb/spec/tests.bzl


View more (2)
4. rb/BUILD.bazel ⚙️ Configuration changes +1/-1

Update lint tag to semantic label

• Change lint job tag from no-sandbox to lint for consistency

rb/BUILD.bazel


5. .skipped-tests Miscellaneous +0/-1

Remove obsolete skipped test entry

• Remove one skipped test entry for Ruby BiDi browsing context test with Firefox beta

.skipped-tests


Grey Divider

Qodo Logo

@qodo-code-review
Copy link
Copy Markdown
Contributor

qodo-code-review Bot commented May 22, 2026

Code Review by Qodo

🐞 Bugs (5) 📘 Rule violations (2) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0)

Grey Divider


Action required

1. Invalid matrix.tag-filters access 📘 Rule violation ☼ Reliability
Description
The workflow references matrix.tag-filters, but matrix keys containing - cannot be accessed with
dot-notation, causing expression evaluation failure or empty --test_tag_filters and potentially
running the wrong test set. This makes CI behavior non-deterministic and undermines safe CI gating.
Code

.github/workflows/ci-ruby.yml[76]

Evidence
PR Compliance ID 14 requires hardening CI/scripts to be robust and deterministic. The workflow uses
a hyphenated matrix key (tag-filters) but references it via matrix.tag-filters, which is not a
safe/deterministic GitHub Actions expression access pattern for such keys, risking misconfigured
Bazel arguments.

.github/workflows/ci-ruby.yml[53-77]
Best Practice: Learned patterns

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`.github/workflows/ci-ruby.yml` defines a matrix key named `tag-filters`, but later references it as `${{ matrix.tag-filters }}`. In GitHub Actions expressions, keys with hyphens must be accessed using bracket notation (e.g., `matrix['tag-filters']`) or renamed to an underscore key.

## Issue Context
If this expression fails (or resolves unexpectedly), the `--test_tag_filters=...` argument may be empty/incorrect, leading to incorrect test selection and unreliable CI outcomes.

## Fix Focus Areas
- .github/workflows/ci-ruby.yml[53-77]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Unvalidated targets shell injection ✓ Resolved 📘 Rule violation ⛨ Security
Description
workflow_dispatch introduces a user-provided targets input that is later interpolated into a
shell command without validation/quoting, enabling command injection and unsafe argument splitting.
This violates the CI/script hardening requirement and can lead to unexpected command execution or
incorrect Bazel invocation.
Code

.github/workflows/ci-ruby.yml[R10-15]

Evidence
PR Compliance ID 14 requires safe argument handling in CI scripts. The PR adds a manually-supplied
targets input and later expands ${{ inputs.targets }} directly into a shell command, which is
unsafe because the expanded text can be interpreted by the shell as additional commands/flags.

.github/workflows/ci-ruby.yml[10-15]
.github/workflows/ci-ruby.yml[73-80]
Best Practice: Learned patterns

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
A `workflow_dispatch` string input (`inputs.targets`) is user-controlled and later inserted directly into a `bazel test` shell command, allowing shell metacharacters (e.g., `;`, `&&`) to be interpreted as commands.

## Issue Context
This workflow now accepts `targets` via manual dispatch. The value is used in the `os-tests` job’s `run` script, so it must be handled as data (arguments) rather than executable shell text.

## Fix Focus Areas
- .github/workflows/ci-ruby.yml[10-15]
- .github/workflows/ci-ruby.yml[73-80]

## Suggested approach
- Read `inputs.targets` into a variable inside quotes.
- Split into a bash array safely (e.g., `read -r -a targets_arr <<< "$targets"`).
- Invoke Bazel with `"${targets_arr[@]}"` so each target is a separate argument and shell metacharacters are not executed.
- Optionally validate that each entry matches expected Bazel target patterns (e.g., starts with `//`).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. IE remote tests included ✓ Resolved 🐞 Bug ≡ Correctness
Description
The Windows os-tests job uses --test_tag_filters=edge,edge-remote,unit,skip-rbe,-ie, but IE
remote targets are tagged ie-remote (not ie) and also include skip-rbe, so they can still be
selected and executed on Windows despite the -ie exclusion.
Code

.github/workflows/ci-ruby.yml[59]

Evidence
The workflow’s Windows tag filter includes skip-rbe and only excludes ie. In the Ruby test rule
generator, IE is defined with the skip-rbe tag, and remote tests are tagged as {browser}-remote
while inheriting the browser tags. Also, some integration tests do not override the default
browsers=BROWSERS.keys(), so IE/IE-remote targets exist and are eligible for selection.

.github/workflows/ci-ruby.yml[54-62]
rb/spec/tests.bzl[130-141]
rb/spec/tests.bzl[170-171]
rb/spec/tests.bzl[195-215]
rb/spec/integration/selenium/webdriver/BUILD.bazel[30-37]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The Windows `os-tests` matrix entry tries to exclude IE by adding `-ie`, but IE remote targets use the tag `ie-remote` and inherit `skip-rbe`, so they still match the positive filters.

### Issue Context
`rb_integration_test` generates both local and `*-remote` test targets, and remote targets inherit the browser-specific tag list (including `skip-rbe` for IE).

### Fix Focus Areas
- .github/workflows/ci-ruby.yml[57-60]

### Suggested fix
Update the Windows `tag-filters` to also exclude the remote IE tag, e.g.:
- `edge,edge-remote,unit,skip-rbe,-ie,-ie-remote`

(Alternatively, remove `skip-rbe` from the Windows include list if it is not intended to pull in unrelated `skip-rbe` tests.)

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View more (5)
4. grep exits read-targets ✓ Resolved 🐞 Bug ☼ Reliability
Description
In ci.yml, process_binding assigns lang_targets via a pipeline containing grep; when there are no
matching Ruby targets, grep exits non-zero and can fail the entire “Read targets” step instead of
simply producing no rb_targets output.
Code

.github/workflows/ci.yml[R89-94]

Evidence
The process_binding() function uses a grep -E pipeline to compute lang_targets (line 92). If
no targets match ^//rb[:/], grep returns non-zero; without || true this can fail the step
rather than just leaving rb_targets unset.

.github/workflows/ci.yml[81-100]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`process_binding()` uses `grep` inside a command substitution without guarding for the “no matches” exit code. When no Ruby targets exist, this can terminate the step early and fail CI.

### Issue Context
The workflow should continue and simply omit `rb_targets` when there are no matching targets.

### Fix Focus Areas
- .github/workflows/ci.yml[81-100]

### Suggested fix
- Make the pipeline tolerant of no matches, e.g. append `|| true` to the *whole* pipeline, or use `grep ... || :`.
 - Example:
   - `lang_targets=$(echo "$targets" | tr ' ' '\n' | grep -E "^${pattern}[:/]" | tr '\n' ' ' | sed 's/ *$//' || true)`
- Consider switching `echo` to `printf '%s\n' "$targets"` to avoid echo edge cases.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


5. Dispatch missing targets input ✓ Resolved 🐞 Bug ≡ Correctness
Description
ci-ruby.yml uses ${{ inputs.targets }} in the os-tests Bazel command, but targets is only
defined under workflow_call; a manual workflow_dispatch run can expand to an empty target list
and cause bazel test to fail.
Code

.github/workflows/ci-ruby.yml[R74-76]

Evidence
The workflow defines targets only for workflow_call (lines 4-9) but the os-tests run command
always interpolates ${{ inputs.targets }} (line 75).

.github/workflows/ci-ruby.yml[3-11]
.github/workflows/ci-ruby.yml[47-76]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`os-tests` references `inputs.targets`, but `targets` is only declared for `workflow_call`. For `workflow_dispatch` runs, this input is not defined, so the Bazel command may receive no explicit targets.

### Issue Context
The workflow declares `workflow_dispatch:` with no inputs, but still relies on `inputs.targets`.

### Fix Focus Areas
- .github/workflows/ci-ruby.yml[3-11]
- .github/workflows/ci-ruby.yml[47-76]

### Suggested fix
Add `workflow_dispatch.inputs.targets` mirroring the `workflow_call` input (same default `//rb/...`), or change the command to fall back to `//rb/...` when `inputs.targets` is empty.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


6. Bazel exit code 4 ignored ✓ Resolved 📘 Rule violation ☼ Reliability
Description
The os-tests job treats bazel test exit code 4 as success, which can mask misconfiguration
(e.g., filters producing “no tests found”) and allow CI to go green without running any Ruby tests.
This violates the requirement to avoid error-swallowing constructs in CI/scripts that hide failures.
Code

.github/workflows/ci-ruby.yml[R74-76]

Evidence
PR Compliance ID 15 forbids error-swallowing in CI/scripts that can hide failures. The added shell
handler explicitly exits 0 when bazel test returns code 4, masking “no tests found”
conditions.

.github/workflows/ci-ruby.yml[74-76]
Best Practice: Learned patterns

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The `os-tests` Bazel invocation converts exit code `4` into success (`exit 0`). This can hide “no tests found” situations caused by incorrect target selection or tag filters, resulting in false-green CI.

## Issue Context
`bazel test` exit code `4` typically indicates that no tests were executed. Treating this as success in PR CI can allow Ruby changes to merge without test coverage.

## Fix Focus Areas
- .github/workflows/ci-ruby.yml[74-76]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


7. macOS runs safari-preview tests 🐞 Bug ☼ Reliability
Description
The macOS os-tests job includes skip-rbe as a positive --test_tag_filters value, which matches
safari-preview tests because they carry the skip-rbe tag; the workflow only performs Safari setup
when inputs.browser == 'safari', so safari-preview targets may run without intended setup.
Code

.github/workflows/ci-ruby.yml[R60-62]

Evidence
macOS tag filters include skip-rbe. In Ruby test definitions, safari-preview is tagged with
skip-rbe and is macOS-compatible, and safari integration BUILD files explicitly request
safari-preview targets. Meanwhile, the runner setup only enables Safari when the workflow input is
exactly safari.

.github/workflows/ci-ruby.yml[47-76]
rb/spec/tests.bzl[142-167]
rb/spec/integration/selenium/webdriver/safari/BUILD.bazel[3-13]
.github/workflows/bazel.yml[265-267]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`skip-rbe` is included as a positive tag filter on macOS. Ruby safari-preview targets are tagged `skip-rbe`, so they can be selected even though the job is intended to run Safari.

### Issue Context
- `safari-preview` browser definition includes `skip-rbe` and is macOS-compatible.
- Some integration specs explicitly generate both `safari` and `safari-preview` targets.
- GitHub Actions setup only enables safaridriver when `inputs.browser == 'safari'`.

### Fix Focus Areas
- .github/workflows/ci-ruby.yml[52-63]

### Suggested fix
- Remove `skip-rbe` from macOS `tag-filters`, or
- Add an explicit exclusion: `-safari-preview,-safari-preview-remote` (and `-safari-preview-bidi` if applicable).
- Optionally, if you *do* want safari-preview coverage, add explicit setup steps and set `browser: safari-preview` so bazel.yml can configure it.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


8. Boolean passed as browser ✓ Resolved 🐞 Bug ≡ Correctness
Description
ci-ruby.yml sets matrix.browser: true (boolean) and passes it into bazel.yml where browser is
declared as a string input; this can break reusable-workflow input validation or lead to unexpected
conditional behavior (inputs.browser != '').
Code

.github/workflows/ci-ruby.yml[R54-59]

Evidence
ci-ruby sets browser: true in the matrix (boolean) and forwards it as `browser: ${{ matrix.browser
}}. bazel.yml declares browser as a string input and uses it in conditions like inputs.browser
!= ''`, so passing a boolean is unsafe.

.github/workflows/ci-ruby.yml[52-66]
.github/workflows/bazel.yml[19-28]
.github/workflows/bazel.yml[252-267]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`matrix.browser` is set to YAML boolean `true` for ubuntu/windows, then forwarded to reusable workflow input `browser` which is typed as `string`. This risks workflow-call validation errors and also changes behavior of steps gated on `inputs.browser != ''`.

### Issue Context
The called workflow declares `browser` as `type: string`.

### Fix Focus Areas
- .github/workflows/ci-ruby.yml[52-66]
- .github/workflows/bazel.yml[19-28]

### Suggested fix
- Change `browser: true` to a string value:
 - If you want “no specific browser but enable UI setup”, use `browser: 'enabled'` (string) and update bazel.yml docs accordingly.
 - If you actually intend Edge on Windows, set `browser: 'edge'`.
 - If Ubuntu is unit-only, set `browser: ''` and adjust tag filters accordingly.
- Keep macOS as `browser: safari` for safaridriver enablement.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

9. IE default browser expansion 🐞 Bug ☼ Reliability
Description
rb_integration_test now defaults to browsers=BROWSERS.keys(), which includes "ie", so any
BUILD.bazel that omits an explicit browsers list will start generating *-ie and *-ie-remote test
targets. This likely widens execution/analysis scope unintentionally (DEFAULT_BROWSERS excluding IE
is still defined but no longer used).
Code

rb/spec/tests.bzl[R171-172]

Evidence
The default browser set now includes IE, and multiple BUILD files omit an explicit browsers list so
they will inherit that new default; the prior IE-excluding default list still exists but is unused,
suggesting an unintended behavior change.

rb/spec/tests.bzl[169-193]
rb/spec/integration/selenium/webdriver/remote/BUILD.bazel[3-9]
rb/spec/integration/selenium/webdriver/bidi/BUILD.bazel[3-16]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`rb_integration_test` changed its default `browsers` parameter from `DEFAULT_BROWSERS` (which excludes IE) to `BROWSERS.keys()` (which includes IE). This causes IE test variants to be generated across packages that don’t explicitly pass `browsers`, expanding the test matrix and leaving `DEFAULT_BROWSERS` unused.

### Issue Context
Several integration BUILD files call `rb_integration_test(...)` without specifying `browsers`, so they inherit the new default.

### Fix Focus Areas
- rb/spec/tests.bzl[169-193]
- rb/spec/integration/selenium/webdriver/remote/BUILD.bazel[3-9]
- rb/spec/integration/selenium/webdriver/bidi/BUILD.bazel[3-16]

### Suggested fix
1. Change the default parameter back to `DEFAULT_BROWSERS` (or explicitly define a new default list that excludes IE if that’s the intent).
2. If any specific suites truly need IE coverage, pass `browsers=["ie", ...]` explicitly in those BUILD files instead of enabling it globally.
3. Remove or repurpose `DEFAULT_BROWSERS` if you intend to keep the new behavior, so the code doesn’t carry misleading dead constants.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


10. Re-enabled skipped Ruby BiDi 🐞 Bug ☼ Reliability
Description
The Ruby target //rb/spec/integration/selenium/webdriver/bidi:browsing_context-firefox-beta-bidi
was removed from .skipped-tests, so it will now run in the RBE CI invocation that consumes this
file. This is a behavior change for CI stability/coverage and should be done only if the test is now
reliably passing.
Code

.skipped-tests[26]

Evidence
ci-build.sh passes .skipped-tests as negative target patterns to Bazel; removing an entry means
Bazel will no longer exclude it. The Ruby BiDi package still defines BiDi-tagged integration tests
that produce the referenced *-bidi variants.

scripts/github-actions/ci-build.sh[18-25]
.skipped-tests[1-25]
rb/spec/integration/selenium/webdriver/bidi/BUILD.bazel[3-16]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
A Ruby BiDi target was removed from `.skipped-tests`, which is used to exclude known-problematic tests from the RBE CI run (`scripts/github-actions/ci-build.sh`). This change will cause the target to start running again in CI.

### Issue Context
If the skip was removed because the underlying issue is fixed, consider adding a reference (issue/PR) or ensuring the fix is part of this PR/series.

### Fix Focus Areas
- scripts/github-actions/ci-build.sh[18-25]
- .skipped-tests[1-25]

### Suggested fix
- If the test is still flaky/failing on RBE, restore the `-//rb/spec/integration/selenium/webdriver/bidi:browsing_context-firefox-beta-bidi` entry.
- If it is intentionally re-enabled, add a brief note in the PR description (or adjacent docs) explaining why it’s safe to remove and what changed to make it stable.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


11. Broken Ruby lint instructions 🐞 Bug ⚙ Maintainability
Description
The Bazel test target //rb:lint was removed, but the README still instructs running `bazel test
//rb:lint and claims bazel test //rb/...` runs lint. This will now fail (missing target) and
misleads contributors about how to run Ruby linting.
Code

rb/BUILD.bazel[R213-215]

Evidence
The Ruby BUILD file no longer defines a lint test target, while the README still documents `bazel
test //rb:lint` as a supported command.

rb/BUILD.bazel[192-221]
README.md[435-445]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`//rb:lint` no longer exists (the lint `rb_test` wrapper was removed), but the README Ruby command table still references `bazel test //rb:lint` and implies `bazel test //rb/...` runs lint.

### Issue Context
Lint is now driven via Bazel `run` on `//rb:rubocop` (and the CI job uses `./go rb:lint`). Documentation should reflect the supported invocation.

### Fix Focus Areas
- rb/BUILD.bazel[192-221]
- README.md[435-445]

### Suggested fix
- Update README Ruby section:
 - Replace `bazel test //rb:lint` with `bazel run //rb:rubocop` and/or `./go rb:lint`.
 - Update `bazel test //rb/...` description to remove “and lint” (or reintroduce a `rb_test(name="lint")` wrapper if you want `bazel test` to run it).
- Ensure any other docs referring to `//rb:lint` are updated similarly.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View more (2)
12. Ungated presses pointer twice 📘 Rule violation ☼ Reliability
Description
The ActionBuilder integration tests it 'presses pointer twice' and it 'sends keys to element'
were changed to run unconditionally, no longer excluding Safari/Safari Preview, which can cause
cross-browser CI failures when Actions/double-click or Actions+sendKeys behavior is not consistently
supported by a given browser/driver. These tests should be conditionally gated/skipped based on
runtime/browser feature support where unsupported.
Code

rb/spec/integration/selenium/webdriver/action_builder_spec.rb[162]

Evidence
PR Compliance ID 13 requires guarding tests by runtime/browser feature support to avoid
cross-environment failures. In rb/spec/integration/selenium/webdriver/action_builder_spec.rb, the
modified tests at lines 41 and 162 are now unconditional (run for all browsers), while nearby
ActionBuilder/double-click-related tests in the same file still explicitly exclude Safari/Safari
Preview via except: {browser: %i[safari safari_preview]}, indicating there is known or expected
variance in support that these two tests should also account for.

rb/spec/integration/selenium/webdriver/action_builder_spec.rb[162-168]
rb/spec/integration/selenium/webdriver/action_builder_spec.rb[170-179]
rb/spec/integration/selenium/webdriver/action_builder_spec.rb[41-50]
rb/spec/integration/selenium/webdriver/action_builder_spec.rb[28-29]
Best Practice: Learned patterns

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Two browser-sensitive ActionBuilder integration tests (`it 'presses pointer twice'` and `it 'sends keys to element'`) were changed to run unconditionally. If Safari/Safari Preview (or another CI browser/driver) does not reliably support the specific Actions double-click / pointer behavior or Actions+send_keys behavior under test, this can introduce cross-browser CI failures.

## Issue Context
PR Compliance ID 13 requires gating tests by runtime/browser feature support to prevent cross-environment failures. Other ActionBuilder tests in the same spec file remain gated with `except: {browser: %i[safari safari_preview]}`, and an adjacent double-click equivalence test still excludes Safari/Safari Preview, implying known incompatibility or flakiness that should be handled consistently.

## Fix Focus Areas
- rb/spec/integration/selenium/webdriver/action_builder_spec.rb[41-50]
- rb/spec/integration/selenium/webdriver/action_builder_spec.rb[162-179]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


13. Affected browser tests can skip 🐞 Bug ≡ Correctness
Description
os-tests tag filters do not include chrome or firefox, but Ruby integration tests are tagged
with their browser name (e.g., chrome, firefox); if the affected targets include those tests,
--test_tag_filters can filter them out so they never run in ci-ruby despite being affected.
Code

.github/workflows/ci-ruby.yml[R53-62]

Evidence
Ruby integration tests are tagged with their browser name (local) and ${browser}-remote (remote).
ci-ruby os-tests only includes edge/safari tags, so chrome/firefox-tagged integration tests can be
filtered out even when passed via inputs.targets.

.github/workflows/ci-ruby.yml[47-76]
rb/spec/tests.bzl[170-215]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`os-tests` uses `--test_tag_filters` that select only edge/safari/unit/skip-rbe (plus exclusions). Ruby integration tests are tagged with `[browser]` and `[browser-remote]`, so affected chrome/firefox tests may be excluded and not exercised on GitHub-hosted OS runners.

### Issue Context
Ruby integration test generation appends the browser tag (e.g., `chrome`) to each test target.

### Fix Focus Areas
- .github/workflows/ci-ruby.yml[47-76]

### Suggested fix
- If you intend to run affected integration tests for chrome/firefox on OS runners, add `chrome,chrome-remote,firefox,firefox-remote` (and beta variants if needed) to the appropriate matrix entries.
- If you intentionally rely on RBE for chrome/firefox coverage, consider documenting that explicitly in the workflow and ensure required CI checks still cover those targets.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

Comment thread .github/workflows/ci-ruby.yml Outdated
Comment thread .github/workflows/ci.yml
Comment thread .github/workflows/ci-ruby.yml Outdated
Comment thread .github/workflows/ci-ruby.yml Outdated
Comment thread .github/workflows/ci-ruby.yml Outdated
@qodo-code-review
Copy link
Copy Markdown
Contributor

qodo-code-review Bot commented May 22, 2026

Persistent review updated to latest commit fa50a25

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Streamlines Ruby CI on GitHub Actions runners by switching Ruby workflow execution to be driven by the Bazel “affected targets” list, and consolidating more signal into OS-specific test jobs (instead of a broader unit-test OS matrix).

Changes:

  • Pass Ruby affected targets from ci.yml into ci-ruby.yml and gate Ruby CI on those targets being present.
  • Replace the prior Ruby CI job layout with OS-specific test runs using Bazel tag filters, plus a smaller Ruby interpreter unit-test matrix.
  • Update Bazel tags for Ruby unit and lint targets to support the new filtering approach.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
rb/spec/tests.bzl Retags Ruby unit test targets to support CI tag filtering.
rb/BUILD.bazel Retags the Ruby lint target to be filterable via Bazel tag filters.
.skipped-tests Removes a previously skipped Ruby BiDi test label from the skip list.
.github/workflows/ci.yml Emits Ruby affected targets (rb_targets) and passes them into the Ruby reusable workflow.
.github/workflows/ci-ruby.yml Restructures Ruby CI to run OS-specific Bazel tests over affected targets with tag filters and a reduced unit-test matrix.

Comment thread .github/workflows/ci-ruby.yml
Comment thread .github/workflows/ci-ruby.yml Outdated
Comment thread .github/workflows/ci-ruby.yml Outdated
@qodo-code-review
Copy link
Copy Markdown
Contributor

qodo-code-review Bot commented May 22, 2026

Persistent review updated to latest commit 2f0d00f

Comment thread .github/workflows/ci-ruby.yml Outdated
@qodo-code-review
Copy link
Copy Markdown
Contributor

qodo-code-review Bot commented May 22, 2026

Persistent review updated to latest commit 035aaf6

@qodo-code-review
Copy link
Copy Markdown
Contributor

qodo-code-review Bot commented May 22, 2026

Persistent review updated to latest commit 7e9d57a

@qodo-code-review
Copy link
Copy Markdown
Contributor

qodo-code-review Bot commented May 22, 2026

Persistent review updated to latest commit 6c8325e

@qodo-code-review
Copy link
Copy Markdown
Contributor

qodo-code-review Bot commented May 22, 2026

Persistent review updated to latest commit 2f4b024

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated no new comments.

@qodo-code-review
Copy link
Copy Markdown
Contributor

qodo-code-review Bot commented May 23, 2026

Persistent review updated to latest commit e6d425f

@qodo-code-review
Copy link
Copy Markdown
Contributor

qodo-code-review Bot commented May 23, 2026

Persistent review updated to latest commit 6d6cb6f

@qodo-code-review
Copy link
Copy Markdown
Contributor

qodo-code-review Bot commented May 23, 2026

Persistent review updated to latest commit f0a30f7

@qodo-code-review
Copy link
Copy Markdown
Contributor

qodo-code-review Bot commented May 23, 2026

Persistent review updated to latest commit 02d2d5c

Comment thread .github/workflows/ci-ruby.yml
@titusfortner titusfortner marked this pull request as draft May 25, 2026 13:31
@titusfortner titusfortner force-pushed the ci-ruby branch 3 times, most recently from c9df9f6 to f05ec3d Compare May 26, 2026 20:47
@qodo-code-review
Copy link
Copy Markdown
Contributor

CI Feedback 🧐

A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

Action: macos-tests-full (safari-local) / macos-tests-full (safari-local)

Failed stage: Rerun failures with debug [❌]

Failed test name: //rb/spec/integration/selenium/webdriver:element-safari

Failure summary:

The GitHub Action failed because Bazel tests for the Ruby Safari integration suite failed on macOS
(darwin_arm64), causing bazel test --keep_going ... --test_tag_filters=safari-local to exit with
code 3.

6 Bazel test targets failed (each retried with --flaky_test_attempts 2 and still failed):
-
//rb/spec/integration/selenium/webdriver:element-safari (Exit 1)
- Multiple RSpec failures in
./rb/spec/integration/selenium/webdriver/element_spec.rb, including:
- “Expected pending … to
fail. No error was raised.” (e.g. at element_spec.rb:457, :529, :203, :208, :235, :240)
- A real
assertion mismatch: Element#submit any input element in form expected title We Arrive Here but got
We Leave From Here (element_spec.rb:68)
- Safari-specific behavior differences for
click/key/attribute semantics (e.g. expected ElementClickInterceptedError but got generic
WebDriverError; expected boolean dom_attribute true but got checked/readonly).
-
//rb/spec/integration/selenium/webdriver:timeout-safari (Exit 1)
- RSpec failures in
./rb/spec/integration/selenium/webdriver/timeout_spec.rb:
- Implicit wait specs marked pending
are now “FIXED” (no failure raised), leading to “Expected pending … to fail” at timeout_spec.rb:45
and :60.
- Page load timeout after click expected TimeoutError but got NoSuchWindowError
(timeout_spec.rb:93-94), indicating Safari closed/invalidated the window during navigation.
-
//rb/spec/integration/selenium/webdriver:action_builder-safari (Exit 1)
- Many RSpec failures in
./rb/spec/integration/selenium/webdriver/action_builder_spec.rb (e.g. :41, :52, :63, :92, :111,
:143, :150, :170, :201, :209, :224, :241, :257):
- Numerous cases are “Expected pending … to
fail. No error was raised.” (tests are guarded as known-bad on Safari, but now unexpectedly pass).

- Additional Safari event/interaction timing/behavior issues (timeouts waiting for keylogger,
missing pointer event elements, differing modifier key event sequences).
-
//rb/spec/integration/selenium/webdriver:window-safari (Exit 1)
- Failure in
./rb/spec/integration/selenium/webdriver/window_spec.rb:128: can minimize the window marked pending
but did not fail (“FIXED” / no error raised).
- Pending test window_spec.rb:120 also shows
Net::ReadTimeout, indicating intermittent SafariDriver communication issues.
-
//rb/spec/integration/selenium/webdriver:target_locator-safari (Exit 1)
- Multiple failures in
./rb/spec/integration/selenium/webdriver/target_locator_spec.rb (e.g. :114, :128, :142, :154, :240,
:269, :280, :291, :303, :315, :333):
- Many are “Expected pending … to fail. No error was
raised.”
- Timeouts waiting for additional windows (wait.until { driver.window_handles.size == 3
} at target_locator_spec.rb:179, :192, :206, :225) and alert-handling expectations not matching
Safari behavior.
- //rb/spec/integration/selenium/webdriver:navigation-safari (Exit 1)
- Both
specs in ./rb/spec/integration/selenium/webdriver/navigation_spec.rb failed because they are
guarded/pending but unexpectedly did not fail:
- navigation_spec.rb:24 and navigation_spec.rb:49
report “Expected pending … to fail. No error was raised.”

Overall, the immediate cause is test failures; a dominant pattern is “pending/guarded” Safari tests
unexpectedly passing (reported as FIXED), which RSpec treats as a failure (pending examples must
fail to satisfy the guard), plus some genuine SafariDriver behavior mismatches and errors (e.g.,
NoSuchWindowError, Net::ReadTimeout).

Relevant error logs:
1:  ##[group]Runner Image Provisioner
2:  Hosted Compute Agent
...

520:  �[32m[2,329 / 3,151]�[0m Compiling Rust rlib @@rules_rs++crate+crates__syn-2.0.117//:syn v2.0.117 (97 files) [for tool]; 5s darwin-sandbox ... (3 actions running)
521:  �[32m[2,334 / 3,151]�[0m Compiling Rust rlib @@rules_rs++crate+crates__syn-2.0.117//:syn v2.0.117 (97 files) [for tool]; 6s darwin-sandbox ... (3 actions running)
522:  �[32m[2,335 / 3,151]�[0m Compiling Rust rlib @@rules_rs++crate+crates__syn-2.0.117//:syn v2.0.117 (97 files) [for tool]; 7s darwin-sandbox ... (3 actions running)
523:  �[32m[2,336 / 3,151]�[0m Compiling Rust rlib @@rules_rs++crate+crates__syn-2.0.117//:syn v2.0.117 (97 files) [for tool]; 8s darwin-sandbox ... (3 actions, 2 running)
524:  �[32m[2,336 / 3,151]�[0m Compiling Rust rlib @@rules_rs++crate+crates__syn-2.0.117//:syn v2.0.117 (97 files) [for tool]; 10s darwin-sandbox ... (3 actions running)
525:  �[32m[2,338 / 3,151]�[0m Compiling Rust rlib @@rules_rs++crate+crates__syn-2.0.117//:syn v2.0.117 (97 files) [for tool]; 11s darwin-sandbox ... (3 actions running)
526:  �[32m[2,339 / 3,151]�[0m Compiling Rust rlib @@rules_rs++crate+crates__syn-2.0.117//:syn v2.0.117 (97 files) [for tool]; 12s darwin-sandbox ... (3 actions running)
527:  �[32m[2,340 / 3,151]�[0m Compiling Rust rlib @@rules_rs++crate+crates__syn-2.0.117//:syn v2.0.117 (97 files) [for tool]; 16s darwin-sandbox ... (3 actions, 2 running)
528:  �[32m[2,341 / 3,151]�[0m Compiling Rust rlib @@rules_rs++crate+crates__syn-2.0.117//:syn v2.0.117 (97 files) [for tool]; 17s darwin-sandbox ... (3 actions running)
529:  �[32m[2,342 / 3,151]�[0m Compiling Rust rlib @@rules_rs++crate+crates__syn-2.0.117//:syn v2.0.117 (97 files) [for tool]; 18s darwin-sandbox ... (3 actions running)
530:  �[32m[2,345 / 3,151]�[0m Compiling Rust rlib @@rules_rs++crate+crates__zlib-rs-0.6.3//:zlib-rs v0.6.3 (43 files); 8s darwin-sandbox ... (3 actions running)
531:  �[32m[2,346 / 3,151]�[0m Compiling Rust rlib @@rules_rs++crate+crates__zlib-rs-0.6.3//:zlib-rs v0.6.3 (43 files); 9s darwin-sandbox ... (3 actions, 2 running)
532:  �[32m[2,349 / 3,151]�[0m Compiling Rust rlib @@rules_rs++crate+crates__zlib-rs-0.6.3//:zlib-rs v0.6.3 (43 files); 10s darwin-sandbox ... (3 actions running)
533:  �[32m[2,350 / 3,151]�[0m Compiling Rust rlib @@rules_rs++crate+crates__zlib-rs-0.6.3//:zlib-rs v0.6.3 (43 files); 12s darwin-sandbox ... (3 actions, 2 running)
534:  �[32m[2,354 / 3,151]�[0m Compiling Rust proc-macro @@rules_rs++crate+crates__scroll_derive-0.12.1//:scroll_derive v0.12.1 (1 file) [for tool]; 4s darwin-sandbox ... (3 actions, 2 running)
535:  �[32m[2,357 / 3,151]�[0m Compiling Rust proc-macro @@rules_rs++crate+crates__thiserror-impl-1.0.69//:thiserror-impl v1.0.69 (10 files) [for tool]; 0s darwin-sandbox ... (3 actions, 2 running)
536:  �[32m[2,358 / 3,151]�[0m Compiling Rust proc-macro @@rules_rs++crate+crates__thiserror-impl-1.0.69//:thiserror-impl v1.0.69 (10 files) [for tool]; 2s darwin-sandbox ... (3 actions running)
537:  �[32m[2,359 / 3,151]�[0m Compiling Rust proc-macro @@rules_rs++crate+crates__thiserror-impl-1.0.69//:thiserror-impl v1.0.69 (10 files) [for tool]; 4s darwin-sandbox ... (3 actions, 2 running)
538:  �[32m[2,360 / 3,151]�[0m Compiling Rust proc-macro @@rules_rs++crate+crates__thiserror-impl-1.0.69//:thiserror-impl v1.0.69 (10 files) [for tool]; 5s darwin-sandbox ... (3 actions running)
539:  �[32m[2,362 / 3,151]�[0m Compiling Rust proc-macro @@rules_rs++crate+crates__thiserror-impl-1.0.69//:thiserror-impl v1.0.69 (10 files) [for tool]; 6s darwin-sandbox ... (3 actions running)
540:  �[32m[2,366 / 3,151]�[0m Compiling Rust proc-macro @@rules_rs++crate+crates__thiserror-impl-1.0.69//:thiserror-impl v1.0.69 (10 files) [for tool]; 7s darwin-sandbox ... (3 actions running)
541:  �[32m[2,372 / 3,151]�[0m Compiling Rust rlib @@rules_rs++crate+crates__sevenz-rust-0.6.1//:sevenz-rust v0.6.1 (35 files); 0s darwin-sandbox ... (3 actions running)
542:  �[32m[2,376 / 3,151]�[0m Compiling Rust rlib @@rules_rs++crate+crates__serde_json-1.0.150//:serde_json v1.0.150 (69 files); 1s darwin-sandbox ... (3 actions running)
543:  �[32m[2,378 / 3,151]�[0m Compiling Rust proc-macro @@rules_rs++crate+crates__thiserror-impl-2.0.18//:thiserror-impl v2.0.18 (11 files) [for tool]; 2s darwin-sandbox ... (3 actions running)
544:  �[32m[2,381 / 3,151]�[0m Compiling Rust proc-macro @@rules_rs++crate+crates__thiserror-impl-2.0.18//:thiserror-impl v2.0.18 (11 files) [for tool]; 3s darwin-sandbox ... (3 actions running)
545:  �[32m[2,385 / 3,151]�[0m Compiling Rust proc-macro @@rules_rs++crate+crates__thiserror-impl-2.0.18//:thiserror-impl v2.0.18 (11 files) [for tool]; 4s darwin-sandbox ... (3 actions running)
546:  �[32m[2,386 / 3,151]�[0m Compiling Rust proc-macro @@rules_rs++crate+crates__thiserror-impl-2.0.18//:thiserror-impl v2.0.18 (11 files) [for tool]; 5s darwin-sandbox ... (3 actions, 2 running)
547:  �[32m[2,388 / 3,151]�[0m Compiling Rust proc-macro @@rules_rs++crate+crates__thiserror-impl-2.0.18//:thiserror-impl v2.0.18 (11 files) [for tool]; 7s darwin-sandbox ... (3 actions, 2 running)
548:  �[32m[2,393 / 3,151]�[0m Compiling Rust rlib @@rules_rs++crate+crates__regex-automata-0.4.14//:regex-automata v0.4.14 (98 files); 1s darwin-sandbox ... (3 actions, 2 running)
...

648:  �[32m[2,734 / 3,151]�[0m Building Java resource jar; 0s darwin-sandbox ... (3 actions, 2 running)
649:  �[32m[2,773 / 3,151]�[0m Building Java resource jar; 1s darwin-sandbox ... (3 actions, 2 running)
650:  �[32m[2,830 / 3,151]�[0m GemBuild rb/selenium-webdriver.gem; 2s darwin-sandbox ... (3 actions, 2 running)
651:  �[32m[2,889 / 3,151]�[0m GemBuild rb/selenium-webdriver.gem; 3s darwin-sandbox ... (3 actions, 2 running)
652:  �[32mINFO: �[0mFrom GemBuild rb/selenium-webdriver.gem:
653:  Successfully built RubyGem
654:  Name: selenium-webdriver
655:  Version: 4.45.0.nightly
656:  File: selenium-webdriver-4.45.0.nightly.gem
657:  �[32m[2,892 / 3,151]�[0m MergeJars java/src/org/openqa/selenium/manager/manager-project.jar; 3s darwin-sandbox ... (2 actions, 1 running)
658:  �[32m[2,894 / 3,151]�[0m MergeJars java/src/org/openqa/selenium/manager/manager-project.jar; 4s darwin-sandbox
659:  �[32m[2,895 / 3,151]�[0m Action java/src/org/openqa/selenium/manager/manager-module-module-info.jar; 0s darwin-sandbox
660:  �[32m[2,896 / 3,151]�[0m Action java/src/org/openqa/selenium/manager/libmanager-module.jar; 1s darwin-sandbox
661:  �[32m[2,897 / 3,151]�[0m [Prepa] Extracting interface for jar java/src/org/openqa/selenium/manager/libmanager-module.jar
662:  �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (70 source files):
663:  java/src/org/openqa/selenium/remote/ErrorHandler.java:49: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
664:  private final ErrorCodes errorCodes;
665:  ^
666:  java/src/org/openqa/selenium/remote/ErrorHandler.java:63: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
667:  this.errorCodes = new ErrorCodes();
668:  ^
669:  java/src/org/openqa/selenium/remote/ErrorHandler.java:71: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
670:  public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {
671:  ^
672:  java/src/org/openqa/selenium/remote/RemoteWebDriverBuilder.java:309: warning: [removal] <T>sendNative(HttpRequest,BodyHandler<T>) in HttpClient has been deprecated and marked for removal
673:  public <T> java.net.http.HttpResponse<T> sendNative(
674:  ^
675:  where T is a type-variable:
676:  T extends Object declared in method <T>sendNative(HttpRequest,BodyHandler<T>)
677:  java/src/org/openqa/selenium/remote/RemoteWebDriverBuilder.java:302: warning: [removal] <T>sendAsyncNative(HttpRequest,BodyHandler<T>) in HttpClient has been deprecated and marked for removal
678:  sendAsyncNative(
679:  ^
680:  where T is a type-variable:
681:  T extends Object declared in method <T>sendAsyncNative(HttpRequest,BodyHandler<T>)
682:  java/src/org/openqa/selenium/remote/Response.java:99: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
683:  ErrorCodes errorCodes = new ErrorCodes();
684:  ^
685:  java/src/org/openqa/selenium/remote/Response.java:99: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
686:  ErrorCodes errorCodes = new ErrorCodes();
687:  ^
688:  java/src/org/openqa/selenium/remote/ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
689:  response.setStatus(ErrorCodes.SUCCESS);
690:  ^
691:  java/src/org/openqa/selenium/remote/ProtocolHandshake.java:183: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
692:  response.setState(ErrorCodes.SUCCESS_STRING);
693:  ^
694:  java/src/org/openqa/selenium/remote/W3CHandshakeResponse.java:54: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
695:  new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));
696:  ^
697:  java/src/org/openqa/selenium/remote/W3CHandshakeResponse.java:57: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
698:  new ErrorCodes().getExceptionType((String) rawError);
699:  ^
700:  java/src/org/openqa/selenium/remote/codec/AbstractHttpResponseCodec.java:43: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
701:  private final ErrorCodes errorCodes = new ErrorCodes();
702:  ^
703:  java/src/org/openqa/selenium/remote/codec/AbstractHttpResponseCodec.java:43: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
704:  private final ErrorCodes errorCodes = new ErrorCodes();
705:  ^
706:  java/src/org/openqa/selenium/remote/codec/AbstractHttpResponseCodec.java:55: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
707:  int status = responseStatus == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;
708:  ^
709:  java/src/org/openqa/selenium/remote/codec/AbstractHttpResponseCodec.java:100: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
710:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
711:  ^
712:  java/src/org/openqa/selenium/remote/codec/AbstractHttpResponseCodec.java:102: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
713:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
714:  ^
715:  java/src/org/openqa/selenium/remote/codec/AbstractHttpResponseCodec.java:118: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
716:  response.setStatus(ErrorCodes.SUCCESS);
717:  ^
718:  java/src/org/openqa/selenium/remote/codec/AbstractHttpResponseCodec.java:119: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
719:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
720:  ^
721:  java/src/org/openqa/selenium/remote/codec/AbstractHttpResponseCodec.java:125: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
722:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
723:  ^
724:  java/src/org/openqa/selenium/remote/codec/w3c/W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
725:  private final ErrorCodes errorCodes = new ErrorCodes();
726:  ^
727:  java/src/org/openqa/selenium/remote/codec/w3c/W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
728:  private final ErrorCodes errorCodes = new ErrorCodes();
729:  ^
730:  java/src/org/openqa/selenium/remote/codec/w3c/W3CHttpResponseCodec.java:98: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
731:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
732:  ^
733:  java/src/org/openqa/selenium/remote/codec/w3c/W3CHttpResponseCodec.java:103: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
734:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
735:  ^
736:  java/src/org/openqa/selenium/remote/codec/w3c/W3CHttpResponseCodec.java:150: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
737:  response.setStatus(ErrorCodes.SUCCESS);
738:  ^
...

762:  �[32m[3,017 / 3,151]�[0m Action java/src/org/openqa/selenium/firefox/firefox-module-module-info.jar; 0s darwin-sandbox
763:  �[32m[3,020 / 3,151]�[0m MergeJars java/src/org/openqa/selenium/grid/grid-project.jar; 0s darwin-sandbox
764:  �[32m[3,021 / 3,151]�[0m Action java/src/org/openqa/selenium/grid/grid-module-module-info.jar; 0s darwin-sandbox
765:  �[32m[3,022 / 3,151]�[0m Action java/src/org/openqa/selenium/grid/libgrid-module.jar; 0s darwin-sandbox
766:  �[32m[3,025 / 3,151]�[0m MergeJars java/src/org/openqa/selenium/grid/sessionmap/redis/redis-project.jar; 0s darwin-sandbox
767:  �[32m[3,026 / 3,151]�[0m Action java/src/org/openqa/selenium/grid/sessionmap/redis/redis-module-module-info.jar; 0s darwin-sandbox
768:  �[32m[3,104 / 3,151]�[0m [Prepa] runfiles for //rb/spec/integration/selenium/webdriver:driver-firefox-beta-remote ... (3 actions, 0 running)
769:  �[32m[3,151 / 3,152]�[0m Testing //rb/spec/integration/selenium/webdriver/safari:service-safari; 0s local
770:  �[32m[3,151 / 3,152]�[0m Testing //rb/spec/integration/selenium/webdriver/safari:service-safari; 2s local
771:  �[32m[3,152 / 3,153]�[0m 1 / 21 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:element-safari; 1s local
772:  �[32m[3,152 / 3,153]�[0m 1 / 21 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:element-safari; 96s local
773:  �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver:element-safari (Exit 1) (see /Users/runner/.bazel/execroot/_main/bazel-out/darwin_arm64-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/element-safari/test_attempts/attempt_1.log)
774:  �[32m[3,152 / 3,153]�[0m 1 / 21 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:element-safari; 98s local
775:  �[32m[3,152 / 3,153]�[0m 1 / 21 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:element-safari; 189s local
776:  �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver:element-safari (Exit 1) (see /Users/runner/.bazel/execroot/_main/bazel-out/darwin_arm64-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/element-safari/test.log)
777:  �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver:element-safari (Summary)
778:  /Users/runner/.bazel/execroot/_main/bazel-out/darwin_arm64-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/element-safari/test.log
...

788:  rbe: false
789:  ruby: ruby 3.3.11 (2026-03-26 revision 1f2d15125a) [arm64-darwin24]
790:  Selenium::WebDriver::Element
791:  clicks
792:  raises if different element receives click (PENDING: Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};)
793:  raises if element is partially covered (PENDING: Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};)
794:  raises if element stale
795:  sends empty keys
796:  sends string keys
797:  sends key presses
798:  sends key presses chords (PENDING: Test guarded; Guarded by {:browser=>[:firefox, :safari, :safari_preview], :reason=>"No reason given"};)
799:  handles file uploads
800:  returns ARIA role
801:  returns accessible name
802:  clears
803:  gets and set selected (FAILED - 1)
804:  gets enabled
805:  gets text
806:  gets displayed
807:  drags and drop (FAILED - 2)
808:  gets css property
809:  knows when two elements are equal
810:  knows when element arrays are equal
811:  knows when two elements are not equal
812:  returns the same #hash for equal elements when found by Driver#find_element
813:  returns the same #hash for equal elements when found by Driver#find_elements
814:  #submit
815:  valid submit button
816:  any input element in form (FAILED - 3)
817:  any element in form
818:  button with id submit
819:  button with name submit
820:  errors with button outside form
821:  properties and attributes
822:  when string type
823:  #dom_attribute returns attribute value
824:  #property returns property value
825:  #attribute returns value
826:  when numeric type
827:  #dom_attribute String
828:  #property returns Number
829:  #attribute returns String
830:  with boolean type of true
831:  #dom_attribute returns String (PENDING: Test guarded; Guarded by {:browser=>:safari, :reason=>"No reason given"};)
832:  #property returns true
833:  #attribute returns String
834:  #dom_attribute does not update after click (PENDING: Test guarded; Guarded by {:browser=>:safari, :reason=>"No reason given"};)
835:  #property updates to false after click (FAILED - 4)
836:  #attribute updates to nil after click (FAILED - 5)
837:  with boolean type of false
838:  #dom_attribute returns nil
839:  #property returns false
840:  #attribute returns nil
841:  #dom_attribute does not update after click
842:  #property updates to true after click (FAILED - 6)
843:  #attribute updates to String after click (FAILED - 7)
844:  when property exists but attribute does not
...

879:  #dom_attribute returns nil
880:  #property returns property value
881:  #attribute returns property value
882:  property attribute value difference
883:  #dom_attribute returns attribute value
884:  #property returns property value
885:  #attribute returns property value
886:  size and location
887:  gets current location
888:  gets location once scrolled into view
889:  gets size
890:  gets rect
891:  Pending: (Failures listed here are expected and do not affect your suite's status)
892:  1) Selenium::WebDriver::Element raises if different element receives click
893:  # Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};
894:  Got 1 failure:
895:  1.1) Failure/Error: expect { element.click }.to raise_error(Error::ElementClickInterceptedError)
896:  expected Selenium::WebDriver::Error::ElementClickInterceptedError, got Selenium::WebDriver::Error::WebDriverError with backtrace:
897:  # ./rb/lib/selenium/webdriver/remote/response.rb:63:in `add_cause'
898:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
899:  # ./rb/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok'
900:  # ./rb/lib/selenium/webdriver/remote/response.rb:34:in `initialize'
901:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:135:in `new'
902:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:135:in `create_response'
903:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
904:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:70:in `call'
905:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:633:in `execute'
906:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:373:in `click_element'
907:  # ./rb/lib/selenium/webdriver/common/element.rb:77:in `click'
908:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:35:in `block (3 levels) in <module:WebDriver>'
909:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:35:in `block (2 levels) in <module:WebDriver>'
910:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:35:in `block (2 levels) in <module:WebDriver>'
911:  2) Selenium::WebDriver::Element raises if element is partially covered
912:  # Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};
913:  Got 1 failure:
914:  2.1) Failure/Error: expect { element.click }.to raise_error(Error::ElementClickInterceptedError)
915:  expected Selenium::WebDriver::Error::ElementClickInterceptedError, got Selenium::WebDriver::Error::WebDriverError with backtrace:
916:  # ./rb/lib/selenium/webdriver/remote/response.rb:63:in `add_cause'
917:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
918:  # ./rb/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok'
919:  # ./rb/lib/selenium/webdriver/remote/response.rb:34:in `initialize'
920:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:135:in `new'
921:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:135:in `create_response'
922:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
923:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:70:in `call'
924:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:633:in `execute'
925:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:373:in `click_element'
926:  # ./rb/lib/selenium/webdriver/common/element.rb:77:in `click'
927:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:42:in `block (3 levels) in <module:WebDriver>'
928:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:42:in `block (2 levels) in <module:WebDriver>'
929:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:42:in `block (2 levels) in <module:WebDriver>'
930:  3) Selenium::WebDriver::Element sends key presses chords
931:  # Test guarded; Guarded by {:browser=>[:firefox, :safari, :safari_preview], :reason=>"No reason given"};
932:  Got 1 failure:
933:  3.1) Failure/Error: expect(key_reporter.attribute('value')).to eq('Hello')
934:  expected: "Hello"
935:  got: "ello"
936:  (compared using ==)
937:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:129:in `block (2 levels) in <module:WebDriver>'
938:  4) Selenium::WebDriver::Element properties and attributes with boolean type of true #dom_attribute returns String
939:  # Test guarded; Guarded by {:browser=>:safari, :reason=>"No reason given"};
940:  Got 1 failure:
941:  4.1) Failure/Error: expect(element.dom_attribute(prop_or_attr)).to eq 'true'
942:  expected: "true"
943:  got: "checked"
944:  (compared using ==)
945:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:187:in `block (4 levels) in <module:WebDriver>'
946:  5) Selenium::WebDriver::Element properties and attributes with boolean type of true #dom_attribute does not update after click
947:  # Test guarded; Guarded by {:browser=>:safari, :reason=>"No reason given"};
948:  Got 1 failure:
949:  5.1) Failure/Error: expect(element.dom_attribute(prop_or_attr)).to eq 'true'
950:  expected: "true"
951:  got: "checked"
952:  (compared using ==)
953:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:200:in `block (4 levels) in <module:WebDriver>'
954:  6) Selenium::WebDriver::Element properties and attributes style #property returns object
955:  # Test guarded; Guarded by {:browser=>:safari, :reason=>"No reason given"};
956:  Got 1 failure:
957:  6.1) Failure/Error: expect(element.property(prop_or_attr)).to eq %w[width height]
958:  expected: ["width", "height"]
...

2443:  +"word-spacing" => "",
2444:  +"word-wrap" => "",
2445:  +"wordBreak" => "",
2446:  +"wordSpacing" => "",
2447:  +"wordWrap" => "",
2448:  +"writing-mode" => "",
2449:  +"writingMode" => "",
2450:  +"x" => "",
2451:  +"y" => "",
2452:  +"z-index" => "",
2453:  +"zIndex" => "",
2454:  +"zoom" => "",
2455:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:322:in `block (4 levels) in <module:WebDriver>'
2456:  7) Selenium::WebDriver::Element properties and attributes property attribute case difference with attribute casing #dom_attribute returns a String
2457:  # Test guarded; Guarded by {:browser=>:safari, :reason=>"No reason given"};
2458:  Got 1 failure:
2459:  7.1) Failure/Error: expect(element.dom_attribute(prop_or_attr)).to eq 'true'
2460:  expected: "true"
2461:  got: "readonly"
2462:  (compared using ==)
2463:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:352:in `block (4 levels) in <module:WebDriver>'
2464:  8) Selenium::WebDriver::Element properties and attributes property attribute case difference with property casing #dom_attribute returns a String
2465:  # Test guarded; Guarded by {:browser=>:safari, :reason=>"No reason given"};
2466:  Got 1 failure:
2467:  8.1) Failure/Error: expect(element.dom_attribute(prop_or_attr)).to eq 'true'
2468:  expected: "true"
2469:  got: "readonly"
2470:  (compared using ==)
2471:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:372:in `block (4 levels) in <module:WebDriver>'
2472:  Failures:
2473:  1) Selenium::WebDriver::Element gets and set selected FIXED
2474:  Expected pending 'Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};' to fail. No error was raised.
2475:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:457
2476:  2) Selenium::WebDriver::Element drags and drop FIXED
2477:  Expected pending 'Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};' to fail. No error was raised.
2478:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:529
2479:  3) Selenium::WebDriver::Element#submit any input element in form
2480:  Failure/Error: expect(driver.title).to eq('We Arrive Here')
2481:  expected: "We Arrive Here"
2482:  got: "We Leave From Here"
2483:  (compared using ==)
2484:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:68:in `block (3 levels) in <module:WebDriver>'
2485:  4) Selenium::WebDriver::Element properties and attributes with boolean type of true #property updates to false after click FIXED
2486:  Expected pending 'Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};' to fail. No error was raised.
2487:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:203
2488:  5) Selenium::WebDriver::Element properties and attributes with boolean type of true #attribute updates to nil after click FIXED
2489:  Expected pending 'Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};' to fail. No error was raised.
2490:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:208
2491:  6) Selenium::WebDriver::Element properties and attributes with boolean type of false #property updates to true after click FIXED
2492:  Expected pending 'Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};' to fail. No error was raised.
2493:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:235
2494:  7) Selenium::WebDriver::Element properties and attributes with boolean type of false #attribute updates to String after click FIXED
2495:  Expected pending 'Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};' to fail. No error was raised.
2496:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:240
2497:  Finished in 1 minute 34.92 seconds (files took 0.20991 seconds to load)
2498:  83 examples, 7 failures, 8 pending
2499:  Failed examples:
2500:  rspec ./rb/spec/integration/selenium/webdriver/element_spec.rb:457 # Selenium::WebDriver::Element gets and set selected
...

2515:  rbe: false
2516:  ruby: ruby 3.3.11 (2026-03-26 revision 1f2d15125a) [arm64-darwin24]
2517:  Selenium::WebDriver::Element
2518:  clicks
2519:  raises if different element receives click (PENDING: Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};)
2520:  raises if element is partially covered (PENDING: Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};)
2521:  raises if element stale
2522:  sends empty keys
2523:  sends string keys
2524:  sends key presses
2525:  sends key presses chords (PENDING: Test guarded; Guarded by {:browser=>[:firefox, :safari, :safari_preview], :reason=>"No reason given"};)
2526:  handles file uploads
2527:  returns ARIA role
2528:  returns accessible name
2529:  clears
2530:  gets and set selected (FAILED - 1)
2531:  gets enabled
2532:  gets text
2533:  gets displayed
2534:  drags and drop (FAILED - 2)
2535:  gets css property
2536:  knows when two elements are equal
2537:  knows when element arrays are equal
2538:  knows when two elements are not equal
2539:  returns the same #hash for equal elements when found by Driver#find_element
2540:  returns the same #hash for equal elements when found by Driver#find_elements
2541:  #submit
2542:  valid submit button
2543:  any input element in form
2544:  any element in form
2545:  button with id submit
2546:  button with name submit
2547:  errors with button outside form
2548:  properties and attributes
2549:  when string type
2550:  #dom_attribute returns attribute value
2551:  #property returns property value
2552:  #attribute returns value
2553:  when numeric type
2554:  #dom_attribute String
2555:  #property returns Number
2556:  #attribute returns String
2557:  with boolean type of true
2558:  #dom_attribute returns String (PENDING: Test guarded; Guarded by {:browser=>:safari, :reason=>"No reason given"};)
2559:  #property returns true
2560:  #attribute returns String
2561:  #dom_attribute does not update after click (PENDING: Test guarded; Guarded by {:browser=>:safari, :reason=>"No reason given"};)
2562:  #property updates to false after click (FAILED - 3)
2563:  #attribute updates to nil after click (FAILED - 4)
2564:  with boolean type of false
2565:  #dom_attribute returns nil
2566:  #property returns false
2567:  #attribute returns nil
2568:  #dom_attribute does not update after click
2569:  #property updates to true after click (FAILED - 5)
2570:  #attribute updates to String after click (FAILED - 6)
2571:  when property exists but attribute does not
...

2606:  #dom_attribute returns nil
2607:  #property returns property value
2608:  #attribute returns property value
2609:  property attribute value difference
2610:  #dom_attribute returns attribute value
2611:  #property returns property value
2612:  #attribute returns property value
2613:  size and location
2614:  gets current location
2615:  gets location once scrolled into view
2616:  gets size
2617:  gets rect
2618:  Pending: (Failures listed here are expected and do not affect your suite's status)
2619:  1) Selenium::WebDriver::Element raises if different element receives click
2620:  # Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};
2621:  Got 1 failure:
2622:  1.1) Failure/Error: expect { element.click }.to raise_error(Error::ElementClickInterceptedError)
2623:  expected Selenium::WebDriver::Error::ElementClickInterceptedError, got Selenium::WebDriver::Error::WebDriverError with backtrace:
2624:  # ./rb/lib/selenium/webdriver/remote/response.rb:63:in `add_cause'
2625:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
2626:  # ./rb/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok'
2627:  # ./rb/lib/selenium/webdriver/remote/response.rb:34:in `initialize'
2628:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:135:in `new'
2629:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:135:in `create_response'
2630:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
2631:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:70:in `call'
2632:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:633:in `execute'
2633:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:373:in `click_element'
2634:  # ./rb/lib/selenium/webdriver/common/element.rb:77:in `click'
2635:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:35:in `block (3 levels) in <module:WebDriver>'
2636:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:35:in `block (2 levels) in <module:WebDriver>'
2637:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:35:in `block (2 levels) in <module:WebDriver>'
2638:  2) Selenium::WebDriver::Element raises if element is partially covered
2639:  # Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};
2640:  Got 1 failure:
2641:  2.1) Failure/Error: expect { element.click }.to raise_error(Error::ElementClickInterceptedError)
2642:  expected Selenium::WebDriver::Error::ElementClickInterceptedError, got Selenium::WebDriver::Error::WebDriverError with backtrace:
2643:  # ./rb/lib/selenium/webdriver/remote/response.rb:63:in `add_cause'
2644:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
2645:  # ./rb/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok'
2646:  # ./rb/lib/selenium/webdriver/remote/response.rb:34:in `initialize'
2647:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:135:in `new'
2648:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:135:in `create_response'
2649:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
2650:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:70:in `call'
2651:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:633:in `execute'
2652:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:373:in `click_element'
2653:  # ./rb/lib/selenium/webdriver/common/element.rb:77:in `click'
2654:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:42:in `block (3 levels) in <module:WebDriver>'
2655:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:42:in `block (2 levels) in <module:WebDriver>'
2656:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:42:in `block (2 levels) in <module:WebDriver>'
2657:  3) Selenium::WebDriver::Element sends key presses chords
2658:  # Test guarded; Guarded by {:browser=>[:firefox, :safari, :safari_preview], :reason=>"No reason given"};
2659:  Got 1 failure:
2660:  3.1) Failure/Error: expect(key_reporter.attribute('value')).to eq('Hello')
2661:  expected: "Hello"
2662:  got: "ello"
2663:  (compared using ==)
2664:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:129:in `block (2 levels) in <module:WebDriver>'
2665:  4) Selenium::WebDriver::Element properties and attributes with boolean type of true #dom_attribute returns String
2666:  # Test guarded; Guarded by {:browser=>:safari, :reason=>"No reason given"};
2667:  Got 1 failure:
2668:  4.1) Failure/Error: expect(element.dom_attribute(prop_or_attr)).to eq 'true'
2669:  expected: "true"
2670:  got: "checked"
2671:  (compared using ==)
2672:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:187:in `block (4 levels) in <module:WebDriver>'
2673:  5) Selenium::WebDriver::Element properties and attributes with boolean type of true #dom_attribute does not update after click
2674:  # Test guarded; Guarded by {:browser=>:safari, :reason=>"No reason given"};
2675:  Got 1 failure:
2676:  5.1) Failure/Error: expect(element.dom_attribute(prop_or_attr)).to eq 'true'
2677:  expected: "true"
2678:  got: "checked"
2679:  (compared using ==)
2680:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:200:in `block (4 levels) in <module:WebDriver>'
2681:  6) Selenium::WebDriver::Element properties and attributes style #property returns object
2682:  # Test guarded; Guarded by {:browser=>:safari, :reason=>"No reason given"};
2683:  Got 1 failure:
2684:  6.1) Failure/Error: expect(element.property(prop_or_attr)).to eq %w[width height]
2685:  expected: ["width", "height"]
...

4170:  +"word-spacing" => "",
4171:  +"word-wrap" => "",
4172:  +"wordBreak" => "",
4173:  +"wordSpacing" => "",
4174:  +"wordWrap" => "",
4175:  +"writing-mode" => "",
4176:  +"writingMode" => "",
4177:  +"x" => "",
4178:  +"y" => "",
4179:  +"z-index" => "",
4180:  +"zIndex" => "",
4181:  +"zoom" => "",
4182:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:322:in `block (4 levels) in <module:WebDriver>'
4183:  7) Selenium::WebDriver::Element properties and attributes property attribute case difference with attribute casing #dom_attribute returns a String
4184:  # Test guarded; Guarded by {:browser=>:safari, :reason=>"No reason given"};
4185:  Got 1 failure:
4186:  7.1) Failure/Error: expect(element.dom_attribute(prop_or_attr)).to eq 'true'
4187:  expected: "true"
4188:  got: "readonly"
4189:  (compared using ==)
4190:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:352:in `block (4 levels) in <module:WebDriver>'
4191:  8) Selenium::WebDriver::Element properties and attributes property attribute case difference with property casing #dom_attribute returns a String
4192:  # Test guarded; Guarded by {:browser=>:safari, :reason=>"No reason given"};
4193:  Got 1 failure:
4194:  8.1) Failure/Error: expect(element.dom_attribute(prop_or_attr)).to eq 'true'
4195:  expected: "true"
4196:  got: "readonly"
4197:  (compared using ==)
4198:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:372:in `block (4 levels) in <module:WebDriver>'
4199:  Failures:
4200:  1) Selenium::WebDriver::Element gets and set selected FIXED
4201:  Expected pending 'Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};' to fail. No error was raised.
4202:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:457
4203:  2) Selenium::WebDriver::Element drags and drop FIXED
4204:  Expected pending 'Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};' to fail. No error was raised.
4205:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:529
4206:  3) Selenium::WebDriver::Element properties and attributes with boolean type of true #property updates to false after click FIXED
4207:  Expected pending 'Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};' to fail. No error was raised.
4208:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:203
4209:  4) Selenium::WebDriver::Element properties and attributes with boolean type of true #attribute updates to nil after click FIXED
4210:  Expected pending 'Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};' to fail. No error was raised.
4211:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:208
4212:  5) Selenium::WebDriver::Element properties and attributes with boolean type of false #property updates to true after click FIXED
4213:  Expected pending 'Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};' to fail. No error was raised.
4214:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:235
4215:  6) Selenium::WebDriver::Element properties and attributes with boolean type of false #attribute updates to String after click FIXED
4216:  Expected pending 'Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};' to fail. No error was raised.
4217:  # ./rb/spec/integration/selenium/webdriver/element_spec.rb:240
4218:  Finished in 1 minute 32.48 seconds (files took 0.32334 seconds to load)
4219:  83 examples, 6 failures, 8 pending
4220:  Failed examples:
4221:  rspec ./rb/spec/integration/selenium/webdriver/element_spec.rb:457 # Selenium::WebDriver::Element gets and set selected
4222:  rspec ./rb/spec/integration/selenium/webdriver/element_spec.rb:529 # Selenium::WebDriver::Element drags and drop
4223:  rspec ./rb/spec/integration/selenium/webdriver/element_spec.rb:203 # Selenium::WebDriver::Element properties and attributes with boolean type of true #property updates to false after click
4224:  rspec ./rb/spec/integration/selenium/webdriver/element_spec.rb:208 # Selenium::WebDriver::Element properties and attributes with boolean type of true #attribute updates to nil after click
4225:  rspec ./rb/spec/integration/selenium/webdriver/element_spec.rb:235 # Selenium::WebDriver::Element properties and attributes with boolean type of false #property updates to true after click
4226:  rspec ./rb/spec/integration/selenium/webdriver/element_spec.rb:240 # Selenium::WebDriver::Element properties and attributes with boolean type of false #attribute updates to String after click
4227:  ================================================================================
4228:  �[32m[3,153 / 3,154]�[0m 2 / 21 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:timeout-safari; 0s local
4229:  �[32m[3,153 / 3,154]�[0m 2 / 21 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:timeout-safari; 18s local
4230:  �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver:timeout-safari (Exit 1) (see /Users/runner/.bazel/execroot/_main/bazel-out/darwin_arm64-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/timeout-safari/test_attempts/attempt_1.log)
4231:  �[32m[3,153 / 3,154]�[0m 2 / 21 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:timeout-safari; 20s local
4232:  �[32m[3,153 / 3,154]�[0m 2 / 21 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:timeout-safari; 40s local
4233:  �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver:timeout-safari (Exit 1) (see /Users/runner/.bazel/execroot/_main/bazel-out/darwin_arm64-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/timeout-safari/test.log)
4234:  �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver:timeout-safari (Summary)
4235:  /Users/runner/.bazel/execroot/_main/bazel-out/darwin_arm64-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/timeout-safari/test.log
4236:  /Users/runner/.bazel/execroot/_main/bazel-out/darwin_arm64-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/timeout-safari/test_attempts/attempt_1.log
4237:  �[32mINFO: �[0mFrom Testing //rb/spec/integration/selenium/webdriver:timeout-safari:
4238:  ==================== Test output for //rb/spec/integration/selenium/webdriver:timeout-safari:
4239:  Running Ruby specs:
4240:  browser: safari
4241:  driver: safari
4242:  version: stable
4243:  platform: macosx
4244:  ci: github
4245:  rbe: false
4246:  ruby: ruby 3.3.11 (2026-03-26 revision 1f2d15125a) [arm64-darwin24]
4247:  Selenium::WebDriver::Timeouts
4248:  gets all the timeouts
4249:  implicit waits
4250:  implicitlies wait for a single element (FAILED - 1)
4251:  stills fail to find an element with implicit waits enabled
4252:  returns after first attempt to find one after disabling implicit waits
4253:  implicitlies wait until at least one element is found when searching for many (FAILED - 2)
4254:  stills fail to find elements when implicit waits are enabled
4255:  returns after first attempt to find many after disabling implicit waits
4256:  page load
4257:  times out if page takes too long to load
4258:  times out if page takes too long to load after click (PENDING: Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};)
4259:  Pending: (Failures listed here are expected and do not affect your suite's status)
4260:  1) Selenium::WebDriver::Timeouts page load times out if page takes too long to load after click
4261:  # Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};
4262:  Got 1 failure:
4263:  1.1) Failure/Error:
4264:  expect {
4265:  driver.find_element(id: 'link-to-slow-loading-page').click
4266:  }.to raise_error(WebDriver::Error::TimeoutError)
4267:  expected Selenium::WebDriver::Error::TimeoutError but nothing was raised
4268:  # ./rb/spec/integration/selenium/webdriver/timeout_spec.rb:93:in `block (3 levels) in <module:WebDriver>'
4269:  Failures:
4270:  1) Selenium::WebDriver::Timeouts implicit waits implicitlies wait for a single element FIXED
4271:  Expected pending 'Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};' to fail. No error was raised.
4272:  # ./rb/spec/integration/selenium/webdriver/timeout_spec.rb:45
4273:  2) Selenium::WebDriver::Timeouts implicit waits implicitlies wait until at least one element is found when searching for many FIXED
4274:  Expected pending 'Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};' to fail. No error was raised.
4275:  # ./rb/spec/integration/selenium/webdriver/timeout_spec.rb:60
4276:  Finished in 16.87 seconds (files took 0.39305 seconds to load)
4277:  9 examples, 2 failures, 1 pending
4278:  Failed examples:
4279:  rspec ./rb/spec/integration/selenium/webdriver/timeout_spec.rb:45 # Selenium::WebDriver::Timeouts implicit waits implicitlies wait for a single element
4280:  rspec ./rb/spec/integration/selenium/webdriver/timeout_spec.rb:60 # Selenium::WebDriver::Timeouts implicit waits implicitlies wait until at least one element is found when searching for many
4281:  ================================================================================
4282:  ==================== Test output for //rb/spec/integration/selenium/webdriver:timeout-safari:
4283:  Running Ruby specs:
4284:  browser: safari
4285:  driver: safari
4286:  version: stable
4287:  platform: macosx
4288:  ci: github
4289:  rbe: false
4290:  ruby: ruby 3.3.11 (2026-03-26 revision 1f2d15125a) [arm64-darwin24]
4291:  Selenium::WebDriver::Timeouts
4292:  gets all the timeouts
4293:  implicit waits
4294:  implicitlies wait for a single element (FAILED - 1)
4295:  stills fail to find an element with implicit waits enabled
4296:  returns after first attempt to find one after disabling implicit waits
4297:  implicitlies wait until at least one element is found when searching for many (FAILED - 2)
4298:  stills fail to find elements when implicit waits are enabled
4299:  returns after first attempt to find many after disabling implicit waits
4300:  page load
4301:  times out if page takes too long to load
4302:  times out if page takes too long to load after click (PENDING: Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};)
4303:  Pending: (Failures listed here are expected and do not affect your suite's status)
4304:  1) Selenium::WebDriver::Timeouts page load times out if page takes too long to load after click
4305:  # Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};
4306:  Got 1 failure:
4307:  1.1) Failure/Error:
4308:  expect {
4309:  driver.find_element(id: 'link-to-slow-loading-page').click
4310:  }.to raise_error(WebDriver::Error::TimeoutError)
4311:  expected Selenium::WebDriver::Error::TimeoutError, got Selenium::WebDriver::Error::NoSuchWindowError with backtrace:
4312:  # ./rb/lib/selenium/webdriver/remote/response.rb:63:in `add_cause'
4313:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
4314:  # ./rb/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok'
4315:  # ./rb/lib/selenium/webdriver/remote/response.rb:34:in `initialize'
4316:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:135:in `new'
4317:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:135:in `create_response'
4318:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
4319:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:70:in `call'
4320:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:633:in `execute'
4321:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:501:in `find_element_by'
4322:  # ./rb/lib/selenium/webdriver/common/search_context.rb:71:in `find_element'
4323:  # ./rb/spec/integration/selenium/webdriver/timeout_spec.rb:94:in `block (4 levels) in <module:WebDriver>'
4324:  # ./rb/spec/integration/selenium/webdriver/timeout_spec.rb:93:in `block (3 levels) in <module:WebDriver>'
4325:  # ./rb/spec/integration/selenium/webdriver/timeout_spec.rb:93:in `block (3 levels) in <module:WebDriver>'
4326:  Failures:
4327:  1) Selenium::WebDriver::Timeouts implicit waits implicitlies wait for a single element FIXED
4328:  Expected pending 'Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};' to fail. No error was raised.
4329:  # ./rb/spec/integration/selenium/webdriver/timeout_spec.rb:45
4330:  2) Selenium::WebDriver::Timeouts implicit waits implicitlies wait until at least one element is found when searching for many FIXED
4331:  Expected pending 'Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};' to fail. No error was raised.
4332:  # ./rb/spec/integration/selenium/webdriver/timeout_spec.rb:60
4333:  Finished in 20.28 seconds (files took 0.4001 seconds to load)
4334:  9 examples, 2 failures, 1 pending
4335:  Failed examples:
4336:  rspec ./rb/spec/integration/selenium/webdriver/timeout_spec.rb:45 # Selenium::WebDriver::Timeouts implicit waits implicitlies wait for a single element
4337:  rspec ./rb/spec/integration/selenium/webdriver/timeout_spec.rb:60 # Selenium::WebDriver::Timeouts implicit waits implicitlies wait until at least one element is found when searching for many
4338:  ================================================================================
4339:  �[32m[3,154 / 3,155]�[0m 3 / 21 tests, �[31m�[1m2 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:driver-safari; 1s local
4340:  �[32m[3,154 / 3,155]�[0m 3 / 21 tests, �[31m�[1m2 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:driver-safari; 31s local
4341:  �[32m[3,155 / 3,156]�[0m 4 / 21 tests, �[31m�[1m2 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-safari; 1s local
4342:  �[32m[3,156 / 3,157]�[0m 5 / 21 tests, �[31m�[1m2 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:action_builder-safari; 1s local
4343:  �[32m[3,156 / 3,157]�[0m 5 / 21 tests, �[31m�[1m2 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:action_builder-safari; 75s local
4344:  �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver:action_builder-safari (Exit 1) (see /Users/runner/.bazel/execroot/_main/bazel-out/darwin_arm64-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/action_builder-safari/test_attempts/attempt_1.log)
4345:  �[32m[3,156 / 3,157]�[0m 5 / 21 tests, �[31m�[1m2 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:action_builder-safari; 76s local
4346:  �[32m[3,156 / 3,157]�[0m 5 / 21 tests, �[31m�[1m2 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:action_builder-safari; 152s local
4347:  �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver:action_builder-safari (Exit 1) (see /Users/runner/.bazel/execroot/_main/bazel-out/darwin_arm64-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/action_builder-safari/test.log)
4348:  �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver:action_builder-safari (Summary)
4349:  /Users/runner/.bazel/execroot/_main/bazel-out/darwin_arm64-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/action_builder-safari/test.log
4350:  /Users/runner/.bazel/execroot/_main/bazel-out/darwin_arm64-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/action_builder-safari/test_attempts/attempt_1.log
4351:  �[32mINFO: �[0mFrom Testing //rb/spec/integration/selenium/webdriver:action_builder-safari:
4352:  ==================== Test output for //rb/spec/integration/selenium/webdriver:action_builder-safari:
4353:  Running Ruby specs:
4354:  browser: safari
4355:  driver: safari
4356:  version: stable
4357:  platform: macosx
4358:  ci: github
4359:  rbe: false
4360:  ruby: ruby 3.3.11 (2026-03-26 revision 1f2d15125a) [arm64-darwin24]
4361:  Selenium::WebDriver::ActionBuilder
4362:  #send_keys
4363:  sends keys to the active element (PENDING: Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};)
4364:  sends keys to element (FAILED - 1)
4365:  sends keys with multiple arguments (FAILED - 2)
4366:  sends non-ASCII keys (FAILED - 3)
4367:  multiple key presses
4368:  sends keys with shift pressed (PENDING: Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};)
4369:  press and release modifier keys (FAILED - 4)
4370:  #release_actions
4371:  releases pressed keys (FAILED - 5)
4372:  releases pressed buttons (PENDING: Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};)
4373:  #click
4374:  clicks provided element (FAILED - 6)
4375:  executes with equivalent pointer methods (FAILED - 7)
4376:  #double_click
4377:  presses pointer twice (PENDING: Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};)
4378:  executes with equivalent pointer methods (FAILED - 8)
4379:  #context_click
4380:  right clicks an element
4381:  executes with equivalent pointer methods
4382:  #move_to
4383:  moves to element (FAILED - 9)
4384:  moves to element with offset (FAILED - 10)
4385:  #drag_and_drop
4386:  moves one element to another (FAILED - 11)
4387:  #drag_and_drop_by
4388:  moves one element a provided distance (FAILED - 12)
4389:  #move_to_location
4390:  moves pointer to specified coordinates (FAILED - 13)
4391:  pen stylus
4392:  sets pointer event properties (PENDING: Test guarded; Guarded by {:browser=>:safari, :reason=>"Some issues with resolution?"};)
4393:  #scroll_to
4394:  scrolls to element (PENDING: Test does not apply to this configuration; Guarded by {:browser=>[:chrome, :edge], :reason=>"incorrect MoveTargetOutOfBoundsError"};)
4395:  #scroll_by
4396:  scrolls by given amount (PENDING: Test does not apply to this configuration; Guarded by {:browser=>[:chrome, :edge], :reason=>"inconsistent behavior between versions"};)
4397:  #scroll_from
4398:  scrolls from element by given amount (PENDING: Test does not apply to this configuration; Guarded by {:browser=>[:chrome, :edge], :reason=>"incorrect MoveTargetOutOfBoundsError in Firefox"};)
4399:  scrolls from element by given amount with offset (PENDING: Test does not apply to this configuration; Guarded by {:browser=>[:chrome, :edge], :reason=>"incorrect MoveTargetOutOfBoundsError in Firefox"};)
4400:  raises MoveTargetOutOfBoundsError when origin offset from element is out of viewport
4401:  scrolls by given amount with offset
4402:  raises MoveTargetOutOfBoundsError when origin offset is out of viewport (PENDING: Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};)
4403:  Pending: (Failures listed here are expected and do not affect your suite's status)
4404:  1) Selenium::WebDriver::ActionBuilder#send_keys sends keys to the active element
4405:  # Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};
4406:  Failure/Error: wait.until { keylogger.text.split.length == 2 }
4407:  Selenium::WebDriver::Error::TimeoutError:
4408:  timed out after 10 seconds
4409:  # ./rb/lib/selenium/webdriver/common/wait.rb:76:in `until'
4410:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:35:in `block (3 levels) in <module:WebDriver>'
4411:  2) Selenium::WebDriver::ActionBuilder multiple key presses sends keys with shift pressed
4412:  # Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};
4413:  Got 1 failure:
4414:  2.1) Failure/Error: expect(expected).to match(/^(focus )?keydown keydown keypress keyup keydown keypress keyup keyup$/)
4415:  expected "\u00A0focus keydown keydown keypress keyup keydown keypress keyup keyup" to match /^(focus )?keydown keydown keypress keyup keydown keypress keyup keyup$/
4416:  Diff:
4417:  @@ -1 +1 @@
4418:  -/^(focus )?keydown keydown keypress keyup keydown keypress keyup keyup$/
4419:  +"\u00A0focus keydown keydown keypress keyup keydown keypress keyup keyup"
4420:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:89:in `block (3 levels) in <module:WebDriver>'
4421:  3) Selenium::WebDriver::ActionBuilder#release_actions releases pressed buttons
4422:  # Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};
4423:  Got 1 failure:
4424:  3.1) Failure/Error: expect(event_input.property(:value)).to eq('Clicked')
4425:  expected: "Clicked"
4426:  got: "Hello"
4427:  (compared using ==)
4428:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:138:in `block (3 levels) in <module:WebDriver>'
4429:  4) Selenium::WebDriver::ActionBuilder#double_click presses pointer twice
4430:  # Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};
4431:  Got 1 failure:
4432:  4.1) Failure/Error: expect(element.property(:value)).to eq('DoubleClicked')
4433:  expected: "DoubleClicked"
4434:  got: "Clicked"
4435:  (compared using ==)
4436:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:167:in `block (3 levels) in <module:WebDriver>'
4437:  5) Selenium::WebDriver::ActionBuilder pen stylus sets pointer event properties
4438:  # Test guarded; Guarded by {:browser=>:safari, :reason=>"Some issues with resolution?"};
4439:  Failure/Error: down = properties(driver.find_element(class: 'pointerdown'))
4440:  Selenium::WebDriver::Error::NoSuchElementError:
4441:  ; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#nosuchelementexception
4442:  # ./rb/lib/selenium/webdriver/remote/response.rb:63:in `add_cause'
4443:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
4444:  # ./rb/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok'
4445:  # ./rb/lib/selenium/webdriver/remote/response.rb:34:in `initialize'
4446:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:135:in `new'
4447:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:135:in `create_response'
4448:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
4449:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:70:in `call'
4450:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:633:in `execute'
4451:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:501:in `find_element_by'
4452:  # ./rb/lib/selenium/webdriver/common/search_context.rb:71:in `find_element'
4453:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:289:in `block (3 levels) in <module:WebDriver>'
4454:  # ------------------
4455:  # --- Caused by: ---
4456:  # Selenium::WebDriver::Error::WebDriverError:
4457:  #   
4458:  6) Selenium::WebDriver::ActionBuilder#scroll_to scrolls to element
4459:  # Test does not apply to this configuration; Guarded by {:browser=>[:chrome, :edge], :reason=>"incorrect MoveTargetOutOfBoundsError"};
4460:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:310
4461:  7) Selenium::WebDriver::ActionBuilder#scroll_by scrolls by given amount
4462:  # Test does not apply to this configuration; Guarded by {:browser=>[:chrome, :edge], :reason=>"inconsistent behavior between versions"};
4463:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:324
4464:  8) Selenium::WebDriver::ActionBuilder#scroll_from scrolls from element by given amount
4465:  # Test does not apply to this configuration; Guarded by {:browser=>[:chrome, :edge], :reason=>"incorrect MoveTargetOutOfBoundsError in Firefox"};
4466:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:338
4467:  9) Selenium::WebDriver::ActionBuilder#scroll_from scrolls from element by given amount with offset
4468:  # Test does not apply to this configuration; Guarded by {:browser=>[:chrome, :edge], :reason=>"incorrect MoveTargetOutOfBoundsError in Firefox"};
4469:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:352
4470:  10) Selenium::WebDriver::ActionBuilder#scroll_from raises MoveTargetOutOfBoundsError when origin offset is out of viewport
4471:  # Test guarded; Guarded by {:browser=>[:safari, :safari_preview], :reason=>"No reason given"};
4472:  Got 1 failure:
4473:  10.1) Failure/Error:
4474:  expect {
4475:  driver.action.scroll_from(scroll_origin, 0, 200).perform
4476:  }.to raise_error(Error::Mov...

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

Labels

B-build Includes scripting, bazel and CI integrations C-rb Ruby Bindings

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants