[dotnet] Support UnhandledPromptBehavior option as string and map (breaking change)#16557
Conversation
PR Compliance Guide 🔍Below is a summary of compliance checks for this PR:
Compliance status legend🟢 - Fully Compliant🟡 - Partial Compliant 🔴 - Not Compliant ⚪ - Requires Further Human Verification 🏷️ - Compliance label |
||||||||||||||||||||||||||||||||
PR Code Suggestions ✨Explore these optional code suggestions:
|
|||||||||||||||
RenderMichael
left a comment
There was a problem hiding this comment.
A breaking change like this should be well-tested. Could we add tests here?
I have no capacity to test the functionality which was not indented to be tested. You can "request changes", please propose. |
I propose new tests for this functionality. |
|
Existing tests don't satisfy you? You ask me to increase the coverage. But what is coverage? |
|
@RenderMichael welcome to #15536 UPD: is it only one concern from your side? |
|
Generally, looks good, @nvborisenko. What I don't like is a nullability of properties and parameters ( |
There was a problem hiding this comment.
Pull request overview
Adds a new .NET representation for the W3C unhandledPromptBehavior capability so it can serialize either as a single string value or as a per-prompt-type dictionary, addressing BiDi/Chrome 137+ requirements.
Changes:
- Introduces
OpenQA.Selenium.UserPromptHandler(withUniformandPerPromptType) and moves/updatesUnhandledPromptBehaviorenum (withDefaultmarked obsolete). - Updates
DriverOptions.UnhandledPromptBehaviorto use the new handler type and serializes viaToCapabilities(). - Updates alert-related tests to cover
nulland per-type handler usage; minor whitespace cleanup.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| dotnet/src/webdriver/DriverOptions.cs | Switches UnhandledPromptBehavior to the new handler type and updates capability serialization + merge-conflict logic. |
| dotnet/src/webdriver/UserPromptHandler.cs | Adds the new handler model and serialization (string vs map) for unhandledPromptBehavior. |
| dotnet/test/webdriver/UnexpectedAlertBehaviorTests.cs | Updates tests to use null and per-type handler variants. |
| dotnet/test/webdriver/AlertsTests.cs | Removes trailing whitespace at EOF. |
Comments suppressed due to low confidence (1)
dotnet/src/webdriver/DriverOptions.cs:267
GetMergeResultcurrently flags a merge conflict whenever the twoUnhandledPromptBehaviorvalues are not equal. This is stricter than the previous behavior and will incorrectly reject scenarios where only one options object sets the capability (e.g., must-match leaves it unset/null and first-match sets it). It will also treatnullandnew UserPromptHandler.Uniform(UnhandledPromptBehavior.Default)as conflicting even though both serialize to “unset”. Consider only reporting a conflict when both sides specify a non-null capability value (ideally based on the serialized capability viaToCapabilities()).
if (this.UnhandledPromptBehavior != other.UnhandledPromptBehavior)
{
result.IsMergeConflict = true;
result.MergeConflictOptionName = "UnhandledPromptBehavior";
return result;
Updated [Microsoft.AspNetCore.Components.Authorization](https://github.com/dotnet/aspnetcore) from 8.0.26 to 8.0.27. <details> <summary>Release notes</summary> _Sourced from [Microsoft.AspNetCore.Components.Authorization's releases](https://github.com/dotnet/aspnetcore/releases)._ ## 8.0.27 [Release](https://github.com/dotnet/core/releases/tag/v8.0.27) ## What's Changed * [release/8.0] Update branding to 8.0.27 by @vseanreesermsft in dotnet/aspnetcore#66205 * [release/8.0] Update NPM dependencies by @wtgodbe in dotnet/aspnetcore#66052 * [release/8.0] Move off of dead-lettered Windows preview helix queue by @wtgodbe in dotnet/aspnetcore#66220 * [release/8.0] (deps): Bump src/submodules/googletest from `73a63ea` to `d72f9c8` by @dependabot[bot] in dotnet/aspnetcore#66087 * [release/8.0] Replace dn-bot-dnceng-build-rw-code-rw PAT with WIF service connection in mirror-within-azdo by @missymessa in dotnet/aspnetcore#66115 * [release/8.0] Update dependencies from dotnet/source-build-externals by @dotnet-maestro[bot] in dotnet/aspnetcore#66216 * [release/8.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/aspnetcore#66081 * [release/8.0] Update dependencies from dotnet/source-build-reference-packages by @dotnet-maestro[bot] in dotnet/aspnetcore#66131 * [release/8.0] Update @azure/msal-browser from 2.x to 4.x by @wtgodbe in dotnet/aspnetcore#66236 * [release/8.0] Use source-build-assets repo by @NikolaMilosavljevic in dotnet/aspnetcore#66276 * Merging internal commits for release/8.0 by @vseanreesermsft in dotnet/aspnetcore#66317 **Full Changelog**: dotnet/aspnetcore@v8.0.26...v8.0.27 Commits viewable in [compare view](dotnet/aspnetcore@v8.0.26...v8.0.27). </details> Updated [Microsoft.AspNetCore.Components.WebAssembly](https://github.com/dotnet/aspnetcore) from 8.0.26 to 8.0.27. <details> <summary>Release notes</summary> _Sourced from [Microsoft.AspNetCore.Components.WebAssembly's releases](https://github.com/dotnet/aspnetcore/releases)._ ## 8.0.27 [Release](https://github.com/dotnet/core/releases/tag/v8.0.27) ## What's Changed * [release/8.0] Update branding to 8.0.27 by @vseanreesermsft in dotnet/aspnetcore#66205 * [release/8.0] Update NPM dependencies by @wtgodbe in dotnet/aspnetcore#66052 * [release/8.0] Move off of dead-lettered Windows preview helix queue by @wtgodbe in dotnet/aspnetcore#66220 * [release/8.0] (deps): Bump src/submodules/googletest from `73a63ea` to `d72f9c8` by @dependabot[bot] in dotnet/aspnetcore#66087 * [release/8.0] Replace dn-bot-dnceng-build-rw-code-rw PAT with WIF service connection in mirror-within-azdo by @missymessa in dotnet/aspnetcore#66115 * [release/8.0] Update dependencies from dotnet/source-build-externals by @dotnet-maestro[bot] in dotnet/aspnetcore#66216 * [release/8.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/aspnetcore#66081 * [release/8.0] Update dependencies from dotnet/source-build-reference-packages by @dotnet-maestro[bot] in dotnet/aspnetcore#66131 * [release/8.0] Update @azure/msal-browser from 2.x to 4.x by @wtgodbe in dotnet/aspnetcore#66236 * [release/8.0] Use source-build-assets repo by @NikolaMilosavljevic in dotnet/aspnetcore#66276 * Merging internal commits for release/8.0 by @vseanreesermsft in dotnet/aspnetcore#66317 **Full Changelog**: dotnet/aspnetcore@v8.0.26...v8.0.27 Commits viewable in [compare view](dotnet/aspnetcore@v8.0.26...v8.0.27). </details> Updated [Microsoft.AspNetCore.Components.WebAssembly.DevServer](https://github.com/dotnet/dotnet) from 10.0.7 to 10.0.8. <details> <summary>Release notes</summary> _Sourced from [Microsoft.AspNetCore.Components.WebAssembly.DevServer's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Microsoft.AspNetCore.Http.Abstractions](https://github.com/dotnet/aspnetcore) from 2.3.9 to 2.3.10. <details> <summary>Release notes</summary> _Sourced from [Microsoft.AspNetCore.Http.Abstractions's releases](https://github.com/dotnet/aspnetcore/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/aspnetcore/commits). </details> Updated [Microsoft.AspNetCore.Mvc.Testing](https://github.com/dotnet/aspnetcore) from 8.0.26 to 8.0.27. <details> <summary>Release notes</summary> _Sourced from [Microsoft.AspNetCore.Mvc.Testing's releases](https://github.com/dotnet/aspnetcore/releases)._ ## 8.0.27 [Release](https://github.com/dotnet/core/releases/tag/v8.0.27) ## What's Changed * [release/8.0] Update branding to 8.0.27 by @vseanreesermsft in dotnet/aspnetcore#66205 * [release/8.0] Update NPM dependencies by @wtgodbe in dotnet/aspnetcore#66052 * [release/8.0] Move off of dead-lettered Windows preview helix queue by @wtgodbe in dotnet/aspnetcore#66220 * [release/8.0] (deps): Bump src/submodules/googletest from `73a63ea` to `d72f9c8` by @dependabot[bot] in dotnet/aspnetcore#66087 * [release/8.0] Replace dn-bot-dnceng-build-rw-code-rw PAT with WIF service connection in mirror-within-azdo by @missymessa in dotnet/aspnetcore#66115 * [release/8.0] Update dependencies from dotnet/source-build-externals by @dotnet-maestro[bot] in dotnet/aspnetcore#66216 * [release/8.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/aspnetcore#66081 * [release/8.0] Update dependencies from dotnet/source-build-reference-packages by @dotnet-maestro[bot] in dotnet/aspnetcore#66131 * [release/8.0] Update @azure/msal-browser from 2.x to 4.x by @wtgodbe in dotnet/aspnetcore#66236 * [release/8.0] Use source-build-assets repo by @NikolaMilosavljevic in dotnet/aspnetcore#66276 * Merging internal commits for release/8.0 by @vseanreesermsft in dotnet/aspnetcore#66317 **Full Changelog**: dotnet/aspnetcore@v8.0.26...v8.0.27 Commits viewable in [compare view](dotnet/aspnetcore@v8.0.26...v8.0.27). </details> Updated [Microsoft.AspNetCore.OpenApi](https://github.com/dotnet/aspnetcore) from 8.0.26 to 8.0.27. <details> <summary>Release notes</summary> _Sourced from [Microsoft.AspNetCore.OpenApi's releases](https://github.com/dotnet/aspnetcore/releases)._ ## 8.0.27 [Release](https://github.com/dotnet/core/releases/tag/v8.0.27) ## What's Changed * [release/8.0] Update branding to 8.0.27 by @vseanreesermsft in dotnet/aspnetcore#66205 * [release/8.0] Update NPM dependencies by @wtgodbe in dotnet/aspnetcore#66052 * [release/8.0] Move off of dead-lettered Windows preview helix queue by @wtgodbe in dotnet/aspnetcore#66220 * [release/8.0] (deps): Bump src/submodules/googletest from `73a63ea` to `d72f9c8` by @dependabot[bot] in dotnet/aspnetcore#66087 * [release/8.0] Replace dn-bot-dnceng-build-rw-code-rw PAT with WIF service connection in mirror-within-azdo by @missymessa in dotnet/aspnetcore#66115 * [release/8.0] Update dependencies from dotnet/source-build-externals by @dotnet-maestro[bot] in dotnet/aspnetcore#66216 * [release/8.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/aspnetcore#66081 * [release/8.0] Update dependencies from dotnet/source-build-reference-packages by @dotnet-maestro[bot] in dotnet/aspnetcore#66131 * [release/8.0] Update @azure/msal-browser from 2.x to 4.x by @wtgodbe in dotnet/aspnetcore#66236 * [release/8.0] Use source-build-assets repo by @NikolaMilosavljevic in dotnet/aspnetcore#66276 * Merging internal commits for release/8.0 by @vseanreesermsft in dotnet/aspnetcore#66317 **Full Changelog**: dotnet/aspnetcore@v8.0.26...v8.0.27 Commits viewable in [compare view](dotnet/aspnetcore@v8.0.26...v8.0.27). </details> Updated [Microsoft.EntityFrameworkCore](https://github.com/dotnet/efcore) from 9.0.15 to 9.0.16. <details> <summary>Release notes</summary> _Sourced from [Microsoft.EntityFrameworkCore's releases](https://github.com/dotnet/efcore/releases)._ ## 9.0.16 [Release](https://github.com/dotnet/core/releases/tag/v9.0.16) ## What's Changed * Merging internal commits for release/8.0 by @vseanreesermsft in dotnet/efcore#37900 * [release/9.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/efcore#37969 * [release/8.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/efcore#38034 * [release/8.0] Update branding to 8.0.27 by @vseanreesermsft in dotnet/efcore#38062 * [release/9.0] Update branding to 9.0.16 by @vseanreesermsft in dotnet/efcore#38063 * [release/9.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/efcore#38053 * [automated] Merge branch 'release/8.0' => 'release/9.0' by @github-actions[bot] in dotnet/efcore#37908 * Merging internal commits for release/8.0 by @vseanreesermsft in dotnet/efcore#38099 * [automated] Merge branch 'release/8.0' => 'release/9.0' by @github-actions[bot] in dotnet/efcore#38101 * Merging internal commits for release/9.0 by @vseanreesermsft in dotnet/efcore#38098 * [release/9.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/efcore#38170 **Full Changelog**: dotnet/efcore@v9.0.15...v9.0.16 Commits viewable in [compare view](dotnet/efcore@v9.0.15...v9.0.16). </details> Updated [Microsoft.EntityFrameworkCore.Design](https://github.com/dotnet/efcore) from 9.0.15 to 9.0.16. <details> <summary>Release notes</summary> _Sourced from [Microsoft.EntityFrameworkCore.Design's releases](https://github.com/dotnet/efcore/releases)._ ## 9.0.16 [Release](https://github.com/dotnet/core/releases/tag/v9.0.16) ## What's Changed * Merging internal commits for release/8.0 by @vseanreesermsft in dotnet/efcore#37900 * [release/9.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/efcore#37969 * [release/8.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/efcore#38034 * [release/8.0] Update branding to 8.0.27 by @vseanreesermsft in dotnet/efcore#38062 * [release/9.0] Update branding to 9.0.16 by @vseanreesermsft in dotnet/efcore#38063 * [release/9.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/efcore#38053 * [automated] Merge branch 'release/8.0' => 'release/9.0' by @github-actions[bot] in dotnet/efcore#37908 * Merging internal commits for release/8.0 by @vseanreesermsft in dotnet/efcore#38099 * [automated] Merge branch 'release/8.0' => 'release/9.0' by @github-actions[bot] in dotnet/efcore#38101 * Merging internal commits for release/9.0 by @vseanreesermsft in dotnet/efcore#38098 * [release/9.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/efcore#38170 **Full Changelog**: dotnet/efcore@v9.0.15...v9.0.16 Commits viewable in [compare view](dotnet/efcore@v9.0.15...v9.0.16). </details> Updated [Microsoft.EntityFrameworkCore.InMemory](https://github.com/dotnet/efcore) from 9.0.15 to 9.0.16. <details> <summary>Release notes</summary> _Sourced from [Microsoft.EntityFrameworkCore.InMemory's releases](https://github.com/dotnet/efcore/releases)._ ## 9.0.16 [Release](https://github.com/dotnet/core/releases/tag/v9.0.16) ## What's Changed * Merging internal commits for release/8.0 by @vseanreesermsft in dotnet/efcore#37900 * [release/9.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/efcore#37969 * [release/8.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/efcore#38034 * [release/8.0] Update branding to 8.0.27 by @vseanreesermsft in dotnet/efcore#38062 * [release/9.0] Update branding to 9.0.16 by @vseanreesermsft in dotnet/efcore#38063 * [release/9.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/efcore#38053 * [automated] Merge branch 'release/8.0' => 'release/9.0' by @github-actions[bot] in dotnet/efcore#37908 * Merging internal commits for release/8.0 by @vseanreesermsft in dotnet/efcore#38099 * [automated] Merge branch 'release/8.0' => 'release/9.0' by @github-actions[bot] in dotnet/efcore#38101 * Merging internal commits for release/9.0 by @vseanreesermsft in dotnet/efcore#38098 * [release/9.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/efcore#38170 **Full Changelog**: dotnet/efcore@v9.0.15...v9.0.16 Commits viewable in [compare view](dotnet/efcore@v9.0.15...v9.0.16). </details> Updated [Microsoft.EntityFrameworkCore.Relational](https://github.com/dotnet/efcore) from 9.0.15 to 9.0.16. <details> <summary>Release notes</summary> _Sourced from [Microsoft.EntityFrameworkCore.Relational's releases](https://github.com/dotnet/efcore/releases)._ ## 9.0.16 [Release](https://github.com/dotnet/core/releases/tag/v9.0.16) ## What's Changed * Merging internal commits for release/8.0 by @vseanreesermsft in dotnet/efcore#37900 * [release/9.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/efcore#37969 * [release/8.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/efcore#38034 * [release/8.0] Update branding to 8.0.27 by @vseanreesermsft in dotnet/efcore#38062 * [release/9.0] Update branding to 9.0.16 by @vseanreesermsft in dotnet/efcore#38063 * [release/9.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/efcore#38053 * [automated] Merge branch 'release/8.0' => 'release/9.0' by @github-actions[bot] in dotnet/efcore#37908 * Merging internal commits for release/8.0 by @vseanreesermsft in dotnet/efcore#38099 * [automated] Merge branch 'release/8.0' => 'release/9.0' by @github-actions[bot] in dotnet/efcore#38101 * Merging internal commits for release/9.0 by @vseanreesermsft in dotnet/efcore#38098 * [release/9.0] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/efcore#38170 **Full Changelog**: dotnet/efcore@v9.0.15...v9.0.16 Commits viewable in [compare view](dotnet/efcore@v9.0.15...v9.0.16). </details> Updated [Microsoft.Extensions.Caching.Abstractions](https://github.com/dotnet/dotnet) from 10.0.7 to 10.0.8. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.Caching.Abstractions's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Microsoft.Extensions.Configuration](https://github.com/dotnet/dotnet) from 10.0.7 to 10.0.8. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.Configuration's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Microsoft.Extensions.Configuration.Binder](https://github.com/dotnet/dotnet) from 10.0.7 to 10.0.8. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.Configuration.Binder's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Microsoft.Extensions.Hosting](https://github.com/dotnet/dotnet) from 10.0.7 to 10.0.8. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.Hosting's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Microsoft.Extensions.Http](https://github.com/dotnet/dotnet) from 10.0.7 to 10.0.8. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.Http's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Microsoft.Extensions.Options.DataAnnotations](https://github.com/dotnet/dotnet) from 10.0.7 to 10.0.8. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.Options.DataAnnotations's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Selenium.Support](https://github.com/SeleniumHQ/selenium) from 4.43.0 to 4.44.0. <details> <summary>Release notes</summary> _Sourced from [Selenium.Support's releases](https://github.com/SeleniumHQ/selenium/releases)._ ## 4.44.0 ## Detailed Changelogs by Component <img src="https://www.selenium.dev/images/programming/java.svg" width="20" height="20"> **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)** | <img src="https://www.selenium.dev/images/programming/python.svg" width="20" height="20"> **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)** | <img src="https://www.selenium.dev/images/programming/dotnet.svg" width="20" height="20"> **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)** | <img src="https://www.selenium.dev/images/programming/ruby.svg" width="20" height="20"> **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)** | <img src="https://www.selenium.dev/images/programming/javascript.svg" width="20" height="20"> **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)** <br> <!-- Release notes generated using configuration in .github/release.yml at da2039bd1456a161d0c284de16f9f4f179f1e8ca --> ## What's Changed <details> <summary>Click to see all the changes included in this release</summary> * fix(documentation): update artifact naming for generated docs by @diemol in SeleniumHQ/selenium#17332 * fix(ruby): retrieve devtools version dynamically for package verification by @diemol in SeleniumHQ/selenium#17335 * [dotnet] Don't truncate internal log messages at error/warn levels by @nvborisenko in SeleniumHQ/selenium#17333 * [dotnet] Safe modifications of internal log handlers by @nvborisenko in SeleniumHQ/selenium#17334 * [dotnet] Remove planned obsoleted members for 4.44 by @nvborisenko in SeleniumHQ/selenium#17328 * [dotnet] [bidi] Statically declare commands by @nvborisenko in SeleniumHQ/selenium#17330 * [dotnet] [bidi] Statically declared events by @nvborisenko in SeleniumHQ/selenium#17331 * [dotnet] Add C# 14 extension to polyfill `ArgumentNullException.ThrowIfNull` by @RenderMichael in SeleniumHQ/selenium#16697 * [dotnet] [bidi] Align SetDownloadBehavior command by @nvborisenko in SeleniumHQ/selenium#17336 * [dotnet] [bidi] Align ContinueWithAuth command by @nvborisenko in SeleniumHQ/selenium#17337 * [dotnet] [bidi] Align SetGeolocation polymorphic command by @nvborisenko in SeleniumHQ/selenium#17338 * [dotnet] [test] In-process test webserver by @nvborisenko in SeleniumHQ/selenium#17339 * [java] deprecate the 'native' methods inside the HttpClient interface by @joerg1985 in SeleniumHQ/selenium#17340 * CDDL 2 Python generator by @AutomatedTester in SeleniumHQ/selenium#16914 * Fix py:local_dev rake task by @cgoldberg in SeleniumHQ/selenium#17342 * [grid] Accept legacy session-closed event payloads by @VietND96 in SeleniumHQ/selenium#17343 * [java] specify nullability in package `org.openqa.selenium.remote` by @asolntsev in SeleniumHQ/selenium#17325 * fix NPE when response status is null by @asolntsev in SeleniumHQ/selenium#17348 * [java] fix NoSuchElementException for custom By locators by @Chandan25sharma in SeleniumHQ/selenium#17287 * [py] Update docs with pytest example and minor formatting fixes by @cgoldberg in SeleniumHQ/selenium#17351 * [dotnet] Fix stopping of network monitoring via DevTools by @nvborisenko in SeleniumHQ/selenium#17352 * [dotnet] [test] Update tests to target .NET 10 by @nvborisenko in SeleniumHQ/selenium#17353 * [build] Clean extra tools from GHA runner to free disk space by @cgoldberg in SeleniumHQ/selenium#17360 * Initial Creation of the Selenium CLI Tool by @AutomatedTester in SeleniumHQ/selenium#17327 * [java] fix some nullability warnings by @asolntsev in SeleniumHQ/selenium#17362 * [py] Use generated Bidi files instead of hand curated ones by @AutomatedTester in SeleniumHQ/selenium#17266 * [docs] Add AI-assisted contribution policy by @titusfortner in SeleniumHQ/selenium#17043 * [Agents] Update agents to make sure do linting. by @AutomatedTester in SeleniumHQ/selenium#17366 * [py] Bump dependencies by @cgoldberg in SeleniumHQ/selenium#17368 * [git] update gitignore to exclude mempalace by @AutomatedTester in SeleniumHQ/selenium#17369 * [java] remove field `ChromiumDriver.capabilities` by @asolntsev in SeleniumHQ/selenium#17363 * [spec] Use http_file for the cddl files by @AutomatedTester in SeleniumHQ/selenium#17372 * [dotnet] [bidi] Obsolete Type(string) method in Input module by @nvborisenko in SeleniumHQ/selenium#17377 * Fix Network failures by @AutomatedTester in SeleniumHQ/selenium#17381 * [java] [test] Unignore bidi network conditions tests for Firefox by @nvborisenko in SeleniumHQ/selenium#17385 * [dotnet] [test] Unignore network conditions tests for Firefox by @nvborisenko in SeleniumHQ/selenium#17386 * [dotnet] [test] Migrate to MTP by @nvborisenko in SeleniumHQ/selenium#17384 * [dotnet] Support `UnhandledPromptBehavior` option as string and map (breaking change) by @nvborisenko in SeleniumHQ/selenium#16557 ... (truncated) Commits viewable in [compare view](SeleniumHQ/selenium@selenium-4.43.0...selenium-4.44.0). </details> Updated [Selenium.WebDriver](https://github.com/SeleniumHQ/selenium) from 4.43.0 to 4.44.0. <details> <summary>Release notes</summary> _Sourced from [Selenium.WebDriver's releases](https://github.com/SeleniumHQ/selenium/releases)._ ## 4.44.0 ## Detailed Changelogs by Component <img src="https://www.selenium.dev/images/programming/java.svg" width="20" height="20"> **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)** | <img src="https://www.selenium.dev/images/programming/python.svg" width="20" height="20"> **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)** | <img src="https://www.selenium.dev/images/programming/dotnet.svg" width="20" height="20"> **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)** | <img src="https://www.selenium.dev/images/programming/ruby.svg" width="20" height="20"> **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)** | <img src="https://www.selenium.dev/images/programming/javascript.svg" width="20" height="20"> **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)** <br> <!-- Release notes generated using configuration in .github/release.yml at da2039bd1456a161d0c284de16f9f4f179f1e8ca --> ## What's Changed <details> <summary>Click to see all the changes included in this release</summary> * fix(documentation): update artifact naming for generated docs by @diemol in SeleniumHQ/selenium#17332 * fix(ruby): retrieve devtools version dynamically for package verification by @diemol in SeleniumHQ/selenium#17335 * [dotnet] Don't truncate internal log messages at error/warn levels by @nvborisenko in SeleniumHQ/selenium#17333 * [dotnet] Safe modifications of internal log handlers by @nvborisenko in SeleniumHQ/selenium#17334 * [dotnet] Remove planned obsoleted members for 4.44 by @nvborisenko in SeleniumHQ/selenium#17328 * [dotnet] [bidi] Statically declare commands by @nvborisenko in SeleniumHQ/selenium#17330 * [dotnet] [bidi] Statically declared events by @nvborisenko in SeleniumHQ/selenium#17331 * [dotnet] Add C# 14 extension to polyfill `ArgumentNullException.ThrowIfNull` by @RenderMichael in SeleniumHQ/selenium#16697 * [dotnet] [bidi] Align SetDownloadBehavior command by @nvborisenko in SeleniumHQ/selenium#17336 * [dotnet] [bidi] Align ContinueWithAuth command by @nvborisenko in SeleniumHQ/selenium#17337 * [dotnet] [bidi] Align SetGeolocation polymorphic command by @nvborisenko in SeleniumHQ/selenium#17338 * [dotnet] [test] In-process test webserver by @nvborisenko in SeleniumHQ/selenium#17339 * [java] deprecate the 'native' methods inside the HttpClient interface by @joerg1985 in SeleniumHQ/selenium#17340 * CDDL 2 Python generator by @AutomatedTester in SeleniumHQ/selenium#16914 * Fix py:local_dev rake task by @cgoldberg in SeleniumHQ/selenium#17342 * [grid] Accept legacy session-closed event payloads by @VietND96 in SeleniumHQ/selenium#17343 * [java] specify nullability in package `org.openqa.selenium.remote` by @asolntsev in SeleniumHQ/selenium#17325 * fix NPE when response status is null by @asolntsev in SeleniumHQ/selenium#17348 * [java] fix NoSuchElementException for custom By locators by @Chandan25sharma in SeleniumHQ/selenium#17287 * [py] Update docs with pytest example and minor formatting fixes by @cgoldberg in SeleniumHQ/selenium#17351 * [dotnet] Fix stopping of network monitoring via DevTools by @nvborisenko in SeleniumHQ/selenium#17352 * [dotnet] [test] Update tests to target .NET 10 by @nvborisenko in SeleniumHQ/selenium#17353 * [build] Clean extra tools from GHA runner to free disk space by @cgoldberg in SeleniumHQ/selenium#17360 * Initial Creation of the Selenium CLI Tool by @AutomatedTester in SeleniumHQ/selenium#17327 * [java] fix some nullability warnings by @asolntsev in SeleniumHQ/selenium#17362 * [py] Use generated Bidi files instead of hand curated ones by @AutomatedTester in SeleniumHQ/selenium#17266 * [docs] Add AI-assisted contribution policy by @titusfortner in SeleniumHQ/selenium#17043 * [Agents] Update agents to make sure do linting. by @AutomatedTester in SeleniumHQ/selenium#17366 * [py] Bump dependencies by @cgoldberg in SeleniumHQ/selenium#17368 * [git] update gitignore to exclude mempalace by @AutomatedTester in SeleniumHQ/selenium#17369 * [java] remove field `ChromiumDriver.capabilities` by @asolntsev in SeleniumHQ/selenium#17363 * [spec] Use http_file for the cddl files by @AutomatedTester in SeleniumHQ/selenium#17372 * [dotnet] [bidi] Obsolete Type(string) method in Input module by @nvborisenko in SeleniumHQ/selenium#17377 * Fix Network failures by @AutomatedTester in SeleniumHQ/selenium#17381 * [java] [test] Unignore bidi network conditions tests for Firefox by @nvborisenko in SeleniumHQ/selenium#17385 * [dotnet] [test] Unignore network conditions tests for Firefox by @nvborisenko in SeleniumHQ/selenium#17386 * [dotnet] [test] Migrate to MTP by @nvborisenko in SeleniumHQ/selenium#17384 * [dotnet] Support `UnhandledPromptBehavior` option as string and map (breaking change) by @nvborisenko in SeleniumHQ/selenium#16557 ... (truncated) Commits viewable in [compare view](SeleniumHQ/selenium@selenium-4.43.0...selenium-4.44.0). </details> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
User description
🔗 Related Issues
Fixes #16102
💥 What does this PR do?
This PR changes
UnhandledPromptBehaviorproperty return type to custom type, supporting bothstringandmaprepresentation at serialization phase.🔧 Implementation Notes
It is not a breaking change at compilation level! One file change to emphasize that users are not affected.
💡 Additional Considerations
I intentionally didn't introduce new property in Options class, it would lead to a mess in my opinion.
🔄 Types of changes
PR Type
Enhancement
Description
Support
UnhandledPromptBehavioras both string and dictionary representationsIntroduce abstract record hierarchy for flexible prompt behavior configuration
Enable per-prompt-type behavior specification via
UnhandledPromptBehaviorMultiOptionMaintain backward compatibility with existing enum-based API
Diagram Walkthrough
File Walkthrough
DriverOptions.cs
Add flexible prompt behavior option types with dual serializationdotnet/src/webdriver/DriverOptions.cs
UnhandledPromptBehaviorOptionwith twosealed implementations:
UnhandledPromptBehaviorSingleOption(forstring representation) and
UnhandledPromptBehaviorMultiOption(fordictionary representation with per-prompt-type settings)
Single(),Multi()) forconvenient instantiation
UnhandledPromptBehaviorproperty type from enum to nullableUnhandledPromptBehaviorOptionGenerateDesiredCapabilities()tohandle both single and multi-option cases, converting to appropriate
capability format
comparison
UnhandledPromptBehaviorToString()