Skip to content

Conversation

@yashuatla
Copy link
Owner

This PR contains changes from a range of commits from the original repository.

Commit Range: 1efb74d..e1cb6a5
Files Changed: 140 (128 programming files)
Programming Ratio: 91.4%

Commits included:

diemol and others added 15 commits June 20, 2025 22:04
…HQ#15929)

Update pinned browser versions

Co-authored-by: Selenium CI Bot <selenium-ci@users.noreply.github.com>
* add deprecation warn for ftp proxy type

* [proxy] Replace deprecation warning for FTP proxy support with logger method

---------

Co-authored-by: Augustin Gottlieb <33221555+aguspe@users.noreply.github.com>
- Remove an empty space in the constructor.

Co-authored-by: Diego Molina <diemol@users.noreply.github.com>

[skip ci]
SeleniumHQ#15910)

* [FEAT] Add macOS-specific keys (OPTION, FN) to Keys enum for improved platform support

* [FEAT] These additions (RIGHT_SHIFT, RIGHT_CONTROL, RIGHT_ALT, RIGHT_COMMAND) follow conventions already in use by ChromeDriver and allow for more accurate key simulations. While not currently in the W3C WebDriver specification, they represent a practical standard used in the field.

* [FEAT] Add macOS-specific and ChromeDriver-aligned extended keys

       - Added RIGHT_SHIFT, RIGHT_CONTROL, RIGHT_ALT, and RIGHT_COMMAND using Unicode PUA codes observed in ChromeDriver.
       - Included symbolic macOS keys OPTION and FN, marked with TODO comments for future validation against W3C WebDriver spec.
       - Updated class-level Javadoc to clarify the role of PUA mappings and their interoperability considerations.

       These additions improve platform representation and lay the groundwork for consistent macOS key handling.

* Format script

---------

Co-authored-by: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com>
Co-authored-by: Diego Molina <diemol@users.noreply.github.com>
Co-authored-by: Diego Molina <diemol@gmail.com>
Re-word section of `CONTRIBUTING.md` to clarify development steps.
* [java][BiDi] implement web extensions

* cleanup

* fix spotbug

---------

Co-authored-by: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com>
Co-authored-by: Diego Molina <diemol@users.noreply.github.com>
…eleniumHQ#15885)

Made ``JsonToWebElementConverter`` methods protected

so that the class can be properly extended

Co-authored-by: Diego Molina <diemol@users.noreply.github.com>
…cstring updates) (SeleniumHQ#15927)

* [py] Adding Note to enable_webextensions() regarding CDP (plus some docstring updates)

* format.sh

* update error message

* Update py/selenium/webdriver/chromium/options.py

Per @navin772 suggestions

Co-authored-by: Navin Chandra <navinchandra772@gmail.com>

---------

Co-authored-by: Navin Chandra <navinchandra772@gmail.com>
Co-authored-by: Diego Molina <diemol@users.noreply.github.com>
* [js] Update dependency ws to ^8.18.2

* Repin dependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Selenium CI Bot <selenium-ci@users.noreply.github.com>
* [js] Update dependency sinon to ^19.0.5

* Repin dependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Selenium CI Bot <selenium-ci@users.noreply.github.com>
* [js] Update dependency multer to v1.4.5-lts.2

* Repin dependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Selenium CI Bot <selenium-ci@users.noreply.github.com>
* [grid] Session can be deleted via Grid UI

* Add notification on the flag to disable session deletion

* Use Node config to disable delete session on UI

* Add unit test

Signed-off-by: Viet Nguyen Duc <nguyenducviet4496@gmail.com>

* Run format

* Disable by default

* Run format

---------

Signed-off-by: Viet Nguyen Duc <nguyenducviet4496@gmail.com>
Co-authored-by: Diego Molina <diemol@users.noreply.github.com>
internal sealed record RemoveUserContextCommandParameters(UserContext UserContext) : CommandParameters;

public record RemoveUserContextOptions : CommandOptions;
public sealed class RemoveUserContextOptions : CommandOptions;
Copy link

Choose a reason for hiding this comment

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

🐛 Correctness Issue

Breaking API change: record to class conversion.

Changing RemoveUserContextOptions from a record to a class removes value equality and immutability, breaking existing code that depends on record semantics.

Current Code (Diff):

- public sealed class RemoveUserContextOptions : CommandOptions;
+ public sealed record RemoveUserContextOptions : CommandOptions;
📝 Committable suggestion

‼️ IMPORTANT
Trust, but verify! 🕵️ Please review this suggestion with the care of a code archaeologist - check that it perfectly replaces the highlighted code, preserves all lines, maintains proper indentation, and won't break anything in production. Your future self will thank you! 🚀

Suggested change
public sealed class RemoveUserContextOptions : CommandOptions;
public sealed record RemoveUserContextOptions : CommandOptions;

internal sealed record HandleUserPromptCommandParameters(BrowsingContext Context, bool? Accept, string? UserText) : CommandParameters;

public record HandleUserPromptOptions : CommandOptions
public sealed class HandleUserPromptOptions : CommandOptions
Copy link

Choose a reason for hiding this comment

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

🐛 Correctness Issue

Breaking API Change: Record to Class Conversion.

Changing HandleUserPromptOptions from a record to a class breaks compatibility with any code relying on record-specific features like value equality or deconstruction.

Current Code (Diff):

- public sealed class HandleUserPromptOptions : CommandOptions
+ public sealed record HandleUserPromptOptions : CommandOptions
📝 Committable suggestion

‼️ IMPORTANT
Trust, but verify! 🕵️ Please review this suggestion with the care of a code archaeologist - check that it perfectly replaces the highlighted code, preserves all lines, maintains proper indentation, and won't break anything in production. Your future self will thank you! 🚀

Suggested change
public sealed class HandleUserPromptOptions : CommandOptions
public sealed record HandleUserPromptOptions : CommandOptions

internal sealed record SetViewportCommandParameters(BrowsingContext Context, Viewport? Viewport, double? DevicePixelRatio) : CommandParameters;

public record SetViewportOptions : CommandOptions
public sealed class SetViewportOptions : CommandOptions
Copy link

Choose a reason for hiding this comment

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

🐛 Correctness Issue

Breaking change: record to sealed class conversion.

Changing SetViewportOptions from a record to a sealed class removes value equality semantics and other record features that dependent code may rely on.

Current Code (Diff):

- public sealed class SetViewportOptions : CommandOptions
+ public sealed record SetViewportOptions : CommandOptions
📝 Committable suggestion

‼️ IMPORTANT
Trust, but verify! 🕵️ Please review this suggestion with the care of a code archaeologist - check that it perfectly replaces the highlighted code, preserves all lines, maintains proper indentation, and won't break anything in production. Your future self will thank you! 🚀

Suggested change
public sealed class SetViewportOptions : CommandOptions
public sealed record SetViewportOptions : CommandOptions

namespace OpenQA.Selenium.BiDi.Communication;

public record CommandOptions
public abstract class CommandOptions
Copy link

Choose a reason for hiding this comment

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

🐛 Correctness Issue

Breaking change: Record to abstract class conversion.

Changing CommandOptions from a record to an abstract class breaks instantiation and equality behavior, potentially causing runtime exceptions in dependent code.

Current Code (Diff):

- public abstract class CommandOptions
+ public record CommandOptions
📝 Committable suggestion

‼️ IMPORTANT
Trust, but verify! 🕵️ Please review this suggestion with the care of a code archaeologist - check that it perfectly replaces the highlighted code, preserves all lines, maintains proper indentation, and won't break anything in production. Your future self will thank you! 🚀

Suggested change
public abstract class CommandOptions
public record CommandOptions

internal sealed record ContinueRequestCommandParameters(Request Request, BytesValue? Body, IEnumerable<CookieHeader>? Cookies, IEnumerable<Header>? Headers, string? Method, string? Url) : CommandParameters;

public record ContinueRequestOptions : CommandOptions
public sealed class ContinueRequestOptions : CommandOptions
Copy link

Choose a reason for hiding this comment

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

🐛 Correctness Issue

Breaking API Change: Record to Class Conversion.

Changing ContinueRequestOptions from record to class removes value equality, immutability, and with-expressions which may break dependent code.

Current Code (Diff):

- public sealed class ContinueRequestOptions : CommandOptions
+ public sealed record ContinueRequestOptions : CommandOptions
📝 Committable suggestion

‼️ IMPORTANT
Trust, but verify! 🕵️ Please review this suggestion with the care of a code archaeologist - check that it perfectly replaces the highlighted code, preserves all lines, maintains proper indentation, and won't break anything in production. Your future self will thank you! 🚀

Suggested change
public sealed class ContinueRequestOptions : CommandOptions
public sealed record ContinueRequestOptions : CommandOptions

}

public record InterceptRequestOptions : AddInterceptOptions;
public sealed class InterceptRequestOptions : AddInterceptOptions;
Copy link

Choose a reason for hiding this comment

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

🐛 Correctness Issue

Breaking change: Record to class conversion.

Changing InterceptRequestOptions from record to sealed class breaks value equality semantics which could cause runtime errors in code comparing these objects

Current Code (Diff):

- public sealed class InterceptRequestOptions : AddInterceptOptions;
+ public sealed record InterceptRequestOptions : AddInterceptOptions;
📝 Committable suggestion

‼️ IMPORTANT
Trust, but verify! 🕵️ Please review this suggestion with the care of a code archaeologist - check that it perfectly replaces the highlighted code, preserves all lines, maintains proper indentation, and won't break anything in production. Your future self will thank you! 🚀

Suggested change
public sealed class InterceptRequestOptions : AddInterceptOptions;
public sealed record InterceptRequestOptions : AddInterceptOptions;

public sealed class InterceptRequestOptions : AddInterceptOptions;

public record InterceptResponseOptions : AddInterceptOptions;
public sealed class InterceptResponseOptions : AddInterceptOptions;
Copy link

Choose a reason for hiding this comment

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

🐛 Correctness Issue

Breaking change: Record to class conversion.

Changing InterceptResponseOptions from record to sealed class breaks value equality semantics which could cause runtime errors in code comparing these objects

Current Code (Diff):

- public sealed class InterceptResponseOptions : AddInterceptOptions;
+ public sealed record InterceptResponseOptions : AddInterceptOptions;
📝 Committable suggestion

‼️ IMPORTANT
Trust, but verify! 🕵️ Please review this suggestion with the care of a code archaeologist - check that it perfectly replaces the highlighted code, preserves all lines, maintains proper indentation, and won't break anything in production. Your future self will thank you! 🚀

Suggested change
public sealed class InterceptResponseOptions : AddInterceptOptions;
public sealed record InterceptResponseOptions : AddInterceptOptions;

public sealed class InterceptResponseOptions : AddInterceptOptions;

public record InterceptAuthOptions : AddInterceptOptions;
public sealed class InterceptAuthOptions : AddInterceptOptions;
Copy link

Choose a reason for hiding this comment

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

🐛 Correctness Issue

Breaking change: Record to class conversion.

Changing InterceptAuthOptions from record to sealed class breaks value equality semantics which could cause runtime errors in code comparing these objects

Current Code (Diff):

- public sealed class InterceptAuthOptions : AddInterceptOptions;
+ public sealed record InterceptAuthOptions : AddInterceptOptions;
📝 Committable suggestion

‼️ IMPORTANT
Trust, but verify! 🕵️ Please review this suggestion with the care of a code archaeologist - check that it perfectly replaces the highlighted code, preserves all lines, maintains proper indentation, and won't break anything in production. Your future self will thank you! 🚀

Suggested change
public sealed class InterceptAuthOptions : AddInterceptOptions;
public sealed record InterceptAuthOptions : AddInterceptOptions;

internal sealed record RemoveInterceptCommandParameters(Intercept Intercept) : CommandParameters;

public record RemoveInterceptOptions : CommandOptions;
public class RemoveInterceptOptions : CommandOptions;
Copy link

Choose a reason for hiding this comment

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

🐛 Correctness Issue

Breaking API Change: Record to Class Conversion.

Converting RemoveInterceptOptions from a record to a class removes value equality, immutability, and other record features that existing code may depend on.

Current Code (Diff):

- public class RemoveInterceptOptions : CommandOptions;
+ public record RemoveInterceptOptions : CommandOptions;
📝 Committable suggestion

‼️ IMPORTANT
Trust, but verify! 🕵️ Please review this suggestion with the care of a code archaeologist - check that it perfectly replaces the highlighted code, preserves all lines, maintains proper indentation, and won't break anything in production. Your future self will thank you! 🚀

Suggested change
public class RemoveInterceptOptions : CommandOptions;
public record RemoveInterceptOptions : CommandOptions;


public class UninstallExtensionParameters {

public final Map<String, Object> extension;
Copy link

Choose a reason for hiding this comment

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

🐛 Correctness Issue

Exposed Mutable State.

The public final Map field allows external modification of its contents, which could lead to unexpected state changes and potential runtime exceptions.

Current Code (Diff):

-   public final Map<String, Object> extension;
+   private final Map<String, Object> extension;
📝 Committable suggestion

‼️ IMPORTANT
Trust, but verify! 🕵️ Please review this suggestion with the care of a code archaeologist - check that it perfectly replaces the highlighted code, preserves all lines, maintains proper indentation, and won't break anything in production. Your future self will thank you! 🚀

Suggested change
public final Map<String, Object> extension;
private final Map<String, Object> extension;

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.