Skip to content

Add Browser.ScreensAsync, AddScreenAsync, and RemoveScreenAsync methods (#14445)#3132

Merged
kblok merged 2 commits intomasterfrom
implement-upstream-change-14445
Feb 15, 2026
Merged

Add Browser.ScreensAsync, AddScreenAsync, and RemoveScreenAsync methods (#14445)#3132
kblok merged 2 commits intomasterfrom
implement-upstream-change-14445

Conversation

@kblok
Copy link
Member

@kblok kblok commented Feb 13, 2026

Summary

Port of upstream Puppeteer PR #14445.

  • Adds Browser.ScreensAsync() to get a list of screen info objects
  • Adds Browser.AddScreenAsync(AddScreenParams) to add a new screen (headless only)
  • Adds Browser.RemoveScreenAsync(string screenId) to remove a screen (headless only)
  • Uses the Emulation.getScreenInfos, Emulation.addScreen, and Emulation.removeScreen CDP commands in CdpBrowser
  • Throws NotSupportedException in BidiBrowser (not yet supported by WebDriver BiDi)

New Types

  • ScreenInfo - Contains screen properties (dimensions, orientation, DPR, etc.)
  • ScreenOrientationInfo - Screen orientation angle and type
  • AddScreenParams - Parameters for adding a new screen
  • WorkAreaInsets - Work area insets for screen configuration

Test plan

  • ScreensTests.ShouldReturnDefaultScreenInfo - Chrome/CDP passes
  • AddRemoveScreenTests.ShouldAddAndRemoveAScreen - Chrome/CDP passes
  • Both tests properly skipped for Firefox/BiDi (via upstream test expectations)
  • Full BrowserTests suite passes (9/9)

🤖 Generated with Claude Code

kblok and others added 2 commits February 13, 2026 16:48
…ds (#14445)

Port of upstream puppeteer PR #14445. Adds browser-level screen management
methods for headless screen configuration via the Emulation CDP domain.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant