[BUG] Requested dimensions leave browser-visible screen at 800x600
What I was trying to do
I was creating an explicit desktop agent session with fixed dimensions and checking that API metadata, the browser window, device metrics, and browser-visible fingerprint fields all describe the same display.
Versions tested
- Steel API 0.5.2 runtime; current
maininspected for the affected metrics path - Chromium 150.0.7871.124
- Node 22.13.0
- Docker on Debian 12, host macOS arm64
Describe the bug
Explicit session dimensions are reflected in API metadata and the outer browser window, but the page still sees an 800x600 screen. This creates a browser-visible contradiction between outerWidth/outerHeight and screen.width/screen.height.
To reproduce
- Create a session with:
{
"dimensions": { "width": 1234, "height": 777 }
}- Evaluate:
({
inner: [innerWidth, innerHeight],
outer: [outerWidth, outerHeight],
screen: [screen.width, screen.height, screen.availWidth, screen.availHeight],
dpr: devicePixelRatio
})- Repeat with a second session using 1111x700.
Actual behavior
The 1234x777 session returned an outer window of 1234x777 and an inner viewport of 1234x690, but:
{ "screen": [800, 600, 800, 600] }The 1111x700 session had the same 800x600 screen result.
Expected behavior
The browser-visible screen metrics, device metrics, outer window, and generated fingerprint metadata should describe one coherent display. If the requested dimensions cannot be represented coherently, session creation should reject them instead of returning contradictory values.
Screenshots
Not required; the evaluated values above are the failure.
Desktop
- OS: Docker on Debian 12, host macOS arm64
- Browser: Chromium 150.0.7871.124
- Steel API: 0.5.2; current
mainretains the affected metrics path - Node: 22.13.0
Smartphone
N/A
Additional context
Applying the fingerprint screen metrics and effective device configuration before exposing the page fixed the contradiction locally. A regression check asserts the same values reach the browser session when an explicit user agent or dimensions object is supplied.
Source: steel-dev/steel-browser