Skip to content

Commit 315a375

Browse files
kblokclaude
andcommitted
fix: don't force DevTools tab target to Type=Other; sync TargetManager test
With the previous commit's filter, tab targets auto-attach. The DevTools tab target's URL matches isDevToolsPageTarget so we wrap it as a CdpDevToolsTarget — and that class hard-overrode Type to TargetType.Other, making Targets()/PagesAsync() treat the tab as a page, then try to send Page.enable on a tab session. Removing the override matches upstream (DevToolsTarget extends PageTarget with no type override). ShouldHandleTargets was written for the pre-filter world where tabs weren't attached. Synced it to upstream's version, which accounts for the tab/page pair on each new page. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent e0483a7 commit 315a375

2 files changed

Lines changed: 10 additions & 10 deletions

File tree

lib/PuppeteerSharp.Tests/TargetManagerTests/TargetManagerTests.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,38 +30,41 @@ public TargetManagerTests() : base()
3030
public async Task ShouldHandleTargets()
3131
{
3232
var targetManager = (Browser as CdpBrowser)!.TargetManager;
33-
Assert.That(targetManager.GetAvailableTargets().Values, Has.Count.EqualTo(2));
33+
var initialTargetCount = targetManager.GetAvailableTargets().Values.Count;
34+
35+
// There could be an conditional extra prerender target.
36+
Assert.That(initialTargetCount, Is.EqualTo(3).Or.EqualTo(4));
3437

3538
Assert.That(await Context.PagesAsync(), Is.Empty);
36-
Assert.That(targetManager.GetAvailableTargets().Values, Has.Count.EqualTo(2));
39+
Assert.That(targetManager.GetAvailableTargets().Values, Has.Count.EqualTo(initialTargetCount));
3740

3841
var page = await Context.NewPageAsync();
3942
Assert.That((await Context.PagesAsync()), Has.Length.EqualTo(1));
40-
Assert.That(targetManager.GetAvailableTargets().Values, Has.Count.EqualTo(3));
43+
Assert.That(targetManager.GetAvailableTargets().Values, Has.Count.EqualTo(initialTargetCount + 2));
4144

4245
await page.GoToAsync(TestConstants.EmptyPage);
4346
Assert.That((await Context.PagesAsync()), Has.Length.EqualTo(1));
44-
Assert.That(targetManager.GetAvailableTargets().Values, Has.Count.EqualTo(3));
47+
Assert.That(targetManager.GetAvailableTargets().Values, Has.Count.EqualTo(initialTargetCount + 2));
4548

4649
var frameTask = page.WaitForFrameAsync(target => target.Url == TestConstants.EmptyPage);
4750
await FrameUtils.AttachFrameAsync(page, "frame1", TestConstants.EmptyPage);
4851
await frameTask.WithTimeout();
4952
Assert.That((await Context.PagesAsync()), Has.Length.EqualTo(1));
50-
Assert.That(targetManager.GetAvailableTargets().Values, Has.Count.EqualTo(3));
53+
Assert.That(targetManager.GetAvailableTargets().Values, Has.Count.EqualTo(initialTargetCount + 2));
5154
Assert.That(page.Frames, Has.Length.EqualTo(2));
5255

5356
frameTask = page.WaitForFrameAsync(target => target.Url == TestConstants.CrossProcessUrl + "/empty.html");
5457
await FrameUtils.AttachFrameAsync(page, "frame2", TestConstants.CrossProcessUrl + "/empty.html");
5558
await frameTask.WithTimeout();
5659
Assert.That((await Context.PagesAsync()), Has.Length.EqualTo(1));
57-
Assert.That(targetManager.GetAvailableTargets().Values, Has.Count.EqualTo(4));
60+
Assert.That(targetManager.GetAvailableTargets().Values, Has.Count.EqualTo(initialTargetCount + 3));
5861
Assert.That(page.Frames, Has.Length.EqualTo(3));
5962

6063
frameTask = page.WaitForFrameAsync(target => target.Url == TestConstants.CrossProcessUrl + "/empty.html");
6164
await FrameUtils.AttachFrameAsync(page, "frame3", TestConstants.CrossProcessUrl + "/empty.html");
6265
await frameTask.WithTimeout();
6366
Assert.That((await Context.PagesAsync()), Has.Length.EqualTo(1));
64-
Assert.That(targetManager.GetAvailableTargets().Values, Has.Count.EqualTo(5));
67+
Assert.That(targetManager.GetAvailableTargets().Values, Has.Count.EqualTo(initialTargetCount + 4));
6568
Assert.That(page.Frames, Has.Length.EqualTo(4));
6669
}
6770
}

lib/PuppeteerSharp/Cdp/CdpDevToolsTarget.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,5 @@ internal CdpDevToolsTarget(
2020
: base(targetInfo, session, context, targetManager, sessionFactory, defaultViewport, screenshotTaskQueue)
2121
{
2222
}
23-
24-
/// <inheritdoc/>
25-
public override TargetType Type => TargetType.Other;
2623
}
2724
}

0 commit comments

Comments
 (0)