You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The new setup uses two async calls in sequence (AsBiDiAsync and GetTreeAsync) where previously only one was used. This could potentially introduce timing issues in tests.
Add error handling around GetTreeAsync() call since it could return an empty array, leading to a potential null reference exception when accessing index [0]
Why: The suggestion addresses a critical potential null reference exception by adding proper error handling when no browsing contexts are available. This is an important defensive programming practice that could prevent runtime crashes.
High
Learned best practice
Add parameter validation to prevent null reference exceptions by checking required parameters at method entry points
Add null validation for the webDriver parameter at the start of AsBiDiAsync method to prevent potential NullReferenceException when accessing its properties. Use ArgumentNullException.ThrowIfNull for clear error messaging.
public static async Task<BiDi> AsBiDiAsync(this IWebDriver webDriver)
{
+ ArgumentNullException.ThrowIfNull(webDriver, nameof(webDriver));
var webSocketUrl = webDriver.GetWebSocketUrl();
if (webSocketUrl is null) throw new BiDiException("The driver is not compatible with bidirectional protocol or \"webSocketUrl\" not enabled in driver options.");
[To ensure code accuracy, apply this suggestion manually]
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
User description
Motivation and Context
Fixes the 4th point to contribute to #14530. Any helpers we can introduce later.
Types of changes
Checklist
PR Type
Enhancement, Bug fix
Description
Removed
AsBiDiContextAsynchelper to address disposal issues.Updated
BiDiFixtureto useAsBiDiAsyncandBrowsingContext.GetTreeAsync.Simplified BiDi connection management by removing redundant helper methods.
Changes walkthrough 📝
WebDriver.Extensions.cs
Removed `AsBiDiContextAsync` helper method.dotnet/src/webdriver/BiDi/WebDriver.Extensions.cs
AsBiDiContextAsynchelper method.AsBiDiAsync.BiDiFixture.cs
Updated BiDiFixture to use `AsBiDiAsync`.dotnet/test/common/BiDi/BiDiFixture.cs
AsBiDiContextAsyncwithAsBiDiAsyncin setup.BrowsingContext.GetTreeAsync.