v21.0.0
New Features
- WebDriver BiDi protocol support for Firefox!!!!! PuppeteerSharp now supports the WebDriver BiDi protocol, enabling Firefox automation alongside existing Chrome/Chromium CDP support. Select the protocol via
LaunchOptions.Protocol. - New ProtocolType enum: ProtocolType.Cdp (default) and ProtocolType.WebdriverBiDi.
Breaking Changes
- AcceptInsecureCerts removed from IBrowser: This property was removed from the public interface. Insecure certs are now handled internally via the Security.setIgnoreCertificateErrors CDP command during browser creation.
- Non-generic EvaluateExpressionAsync() and EvaluateFunctionAsync() return type changed: Changed from Task<JsonElement?> to Task (void). If you need a return value, use the generic overloads EvaluateExpressionAsync() /
EvaluateFunctionAsync(). - IBrowserContext now extends IDisposable and IAsyncDisposable: Browser contexts should now be properly disposed.
- Several protected methods on Page changed to internal: OnFrameAttached, OnFrameDetached, OnFrameNavigated, OnRequestFailed, OnRequestFinished, OnRequestServedFromCache, OnResponse, OnDOMContentLoaded, OnLoad. These were
internal event-raising methods that should never have been protected. - CDPSession.Close() signature changed: From internal abstract void Close() to public abstract void Close(string closeReason).
Minor Changes
- Dependency updates: System.Text.Json upgraded to 10.0.0, Microsoft.Bcl.AsyncInterfaces upgraded to 10.0.0.
- New dependency: WebDriverBiDi-Relaxed 0.0.40-beta.1 added for BiDi protocol support.
- Custom query handlers are now global: CustomQuerySelectorRegistry changed from connection-scoped to a global singleton.
- Frame.AddScriptTagAsync() is now a concrete implementation on the base Frame class instead of abstract.
- Package now includes README.md in the NuGet package.
- Fix flaky ShouldReportScriptsAcrossNavigationsWhenDisabled test: Added WaitForNetworkIdleAsync() between navigations to prevent coverage data loss.