From 319e0f5129f921e6f30e0225c5227be122a81aee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dar=C3=ADo=20Kondratiuk?= Date: Tue, 28 Oct 2025 10:45:32 -0300 Subject: [PATCH 1/2] Bidi: Implement default context --- .../TestExpectations/TestExpectations.local.json | 15 --------------- lib/PuppeteerSharp/Bidi/BidiBrowser.cs | 3 +++ lib/PuppeteerSharp/Bidi/Core/Browser.cs | 2 ++ lib/PuppeteerSharp/Bidi/Core/UserContext.cs | 2 ++ lib/PuppeteerSharp/Browser.cs | 2 +- 5 files changed, 8 insertions(+), 16 deletions(-) diff --git a/lib/PuppeteerSharp.Nunit/TestExpectations/TestExpectations.local.json b/lib/PuppeteerSharp.Nunit/TestExpectations/TestExpectations.local.json index c93e1c722..3dc717be0 100644 --- a/lib/PuppeteerSharp.Nunit/TestExpectations/TestExpectations.local.json +++ b/lib/PuppeteerSharp.Nunit/TestExpectations/TestExpectations.local.json @@ -330,21 +330,6 @@ "FAIL" ] }, - { - "comment": "This is part of organizing the webdriver bidi implementation, We will remove it one by one", - "testIdPattern": "[defaultbrowsercontext.spec] *", - "platforms": [ - "darwin", - "linux", - "win32" - ], - "parameters": [ - "webDriverBiDi" - ], - "expectations": [ - "FAIL" - ] - }, { "comment": "This is part of organizing the webdriver bidi implementation, We will remove it one by one", "testIdPattern": "[browsercontext.spec] *", diff --git a/lib/PuppeteerSharp/Bidi/BidiBrowser.cs b/lib/PuppeteerSharp/Bidi/BidiBrowser.cs index 35ffbab06..575dd43ed 100644 --- a/lib/PuppeteerSharp/Bidi/BidiBrowser.cs +++ b/lib/PuppeteerSharp/Bidi/BidiBrowser.cs @@ -58,6 +58,9 @@ private BidiBrowser(Core.Browser browserCore, LaunchOptions options, ILoggerFact /// public override ITarget Target => _target; + /// + public override IBrowserContext DefaultContext => _browserContexts.FirstOrDefault(b => b.Id == BrowserCore.DefaultUserContext.Id); + internal static string[] SubscribeModules { get; } = [ "browsingContext", diff --git a/lib/PuppeteerSharp/Bidi/Core/Browser.cs b/lib/PuppeteerSharp/Bidi/Core/Browser.cs index 739cca12f..2702ddb68 100644 --- a/lib/PuppeteerSharp/Bidi/Core/Browser.cs +++ b/lib/PuppeteerSharp/Bidi/Core/Browser.cs @@ -49,6 +49,8 @@ internal sealed class Browser(Session session) : IDisposable public string Reason { get; set; } + internal UserContext DefaultUserContext => _userContexts[UserContext.DEFAULT]; + internal ICollection UserContexts => _userContexts.Values; public static async Task From(Session session) diff --git a/lib/PuppeteerSharp/Bidi/Core/UserContext.cs b/lib/PuppeteerSharp/Bidi/Core/UserContext.cs index 0debf81ad..5b553a368 100644 --- a/lib/PuppeteerSharp/Bidi/Core/UserContext.cs +++ b/lib/PuppeteerSharp/Bidi/Core/UserContext.cs @@ -30,6 +30,8 @@ namespace PuppeteerSharp.Bidi.Core; internal class UserContext : IDisposable { + public const string DEFAULT = "default"; + private readonly ConcurrentDictionary _browsingContexts = new(); private string _reason; diff --git a/lib/PuppeteerSharp/Browser.cs b/lib/PuppeteerSharp/Browser.cs index 042679124..c91f87471 100644 --- a/lib/PuppeteerSharp/Browser.cs +++ b/lib/PuppeteerSharp/Browser.cs @@ -47,7 +47,7 @@ public abstract class Browser : IBrowser public abstract bool IsClosed { get; } /// - public IBrowserContext DefaultContext { get; protected set; } + public virtual IBrowserContext DefaultContext { get; protected set; } /// public int DefaultWaitForTimeout { get; set; } = Puppeteer.DefaultTimeout; From 0e00fce0db02cd661eee23cc8cc9704394c891b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dar=C3=ADo=20Kondratiuk?= Date: Tue, 28 Oct 2025 15:00:01 -0300 Subject: [PATCH 2/2] fix --- .../BrowserContextTests/DefaultBrowserContextTests.cs | 4 ---- lib/PuppeteerSharp/Bidi/BidiBrowserContext.cs | 5 ++++- lib/PuppeteerSharp/Bidi/Core/Browser.cs | 3 ++- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/PuppeteerSharp.Tests/BrowserContextTests/DefaultBrowserContextTests.cs b/lib/PuppeteerSharp.Tests/BrowserContextTests/DefaultBrowserContextTests.cs index 37893ad5d..bc09e5049 100644 --- a/lib/PuppeteerSharp.Tests/BrowserContextTests/DefaultBrowserContextTests.cs +++ b/lib/PuppeteerSharp.Tests/BrowserContextTests/DefaultBrowserContextTests.cs @@ -7,10 +7,6 @@ namespace PuppeteerSharp.Tests.BrowserContextTests { public class DefaultBrowserContextTests : PuppeteerPageBaseTest { - public DefaultBrowserContextTests() : base() - { - } - [SetUp] public async Task CreateNewPageAsync() { diff --git a/lib/PuppeteerSharp/Bidi/BidiBrowserContext.cs b/lib/PuppeteerSharp/Bidi/BidiBrowserContext.cs index 67a78b7bc..c43f80ee1 100644 --- a/lib/PuppeteerSharp/Bidi/BidiBrowserContext.cs +++ b/lib/PuppeteerSharp/Bidi/BidiBrowserContext.cs @@ -99,7 +99,10 @@ internal static BidiBrowserContext From( UserContext userContext, BidiBrowserContextOptions options) { - var context = new BidiBrowserContext(browser, userContext, options); + var context = new BidiBrowserContext(browser, userContext, options) + { + Id = userContext.Id, + }; context.Initialize(); return context; } diff --git a/lib/PuppeteerSharp/Bidi/Core/Browser.cs b/lib/PuppeteerSharp/Bidi/Core/Browser.cs index 2702ddb68..b5804353c 100644 --- a/lib/PuppeteerSharp/Bidi/Core/Browser.cs +++ b/lib/PuppeteerSharp/Bidi/Core/Browser.cs @@ -23,6 +23,7 @@ using System; using System.Collections.Concurrent; using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using PuppeteerSharp.Helpers; using WebDriverBiDi.Browser; @@ -49,7 +50,7 @@ internal sealed class Browser(Session session) : IDisposable public string Reason { get; set; } - internal UserContext DefaultUserContext => _userContexts[UserContext.DEFAULT]; + internal UserContext DefaultUserContext => _userContexts.TryGetValue(UserContext.DEFAULT, out var context) ? context : _userContexts.Values.FirstOrDefault(); internal ICollection UserContexts => _userContexts.Values;