Skip to content

Commit c0fbc51

Browse files
set default viewport when running on browserbase (#1114)
# why - need to set default viewport when running on browserbase. previously, we only defined the default inside the exported `StagehandConfig` # what changed - set default viewport to 1288 * 711 when running on browserbase # test plan - tested locally, - regression evals
1 parent ec5317c commit c0fbc51

File tree

4 files changed

+49
-4
lines changed

4 files changed

+49
-4
lines changed

.changeset/funky-showers-rush.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@browserbasehq/stagehand": patch
3+
---
4+
5+
configure default viewport when running on browserbase

lib/api.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import {
2828
StagehandResponseParseError,
2929
} from "../types/stagehandApiErrors";
3030
import makeFetchCookie from "fetch-cookie";
31+
import { applyDefaultBrowserSettingsViewport } from "./browserbaseDefaults";
3132
import { STAGEHAND_VERSION } from "./version";
3233

3334
export class StagehandAPI {
@@ -64,7 +65,10 @@ export class StagehandAPI {
6465
}
6566
this.modelApiKey = modelApiKey;
6667

67-
const region = browserbaseSessionCreateParams?.region;
68+
const sessionCreateParams = applyDefaultBrowserSettingsViewport(
69+
browserbaseSessionCreateParams,
70+
);
71+
const region = sessionCreateParams?.region;
6872
if (region && region !== "us-west-2") {
6973
return { sessionId: browserbaseSessionID ?? null, available: false };
7074
}
@@ -84,7 +88,7 @@ export class StagehandAPI {
8488
selfHeal,
8589
waitForCaptchaSolves,
8690
actionTimeoutMs,
87-
browserbaseSessionCreateParams,
91+
browserbaseSessionCreateParams: sessionCreateParams,
8892
browserbaseSessionID,
8993
}),
9094
});

lib/browserbaseDefaults.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import Browserbase from "@browserbasehq/sdk";
2+
3+
export type BrowserbaseSessionCreateParams = Omit<
4+
Browserbase.Sessions.SessionCreateParams,
5+
"projectId"
6+
> & { projectId?: string };
7+
8+
export const DEFAULT_BROWSERBASE_VIEWPORT = {
9+
width: 1288,
10+
height: 711,
11+
} as const;
12+
13+
export function applyDefaultBrowserSettingsViewport(
14+
params?: BrowserbaseSessionCreateParams,
15+
): BrowserbaseSessionCreateParams {
16+
const paramsWithDefaults = {
17+
...(params ?? {}),
18+
} as BrowserbaseSessionCreateParams;
19+
20+
const viewport = paramsWithDefaults.browserSettings?.viewport ?? {
21+
width: DEFAULT_BROWSERBASE_VIEWPORT.width,
22+
height: DEFAULT_BROWSERBASE_VIEWPORT.height,
23+
};
24+
25+
return {
26+
...paramsWithDefaults,
27+
browserSettings: {
28+
...(paramsWithDefaults.browserSettings ?? {}),
29+
viewport,
30+
},
31+
};
32+
}

lib/index.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import { StagehandAgentHandler } from "./handlers/stagehandAgentHandler";
4545
import { StagehandLogger } from "./logger";
4646
import { connectToMCPServer } from "./mcp/connection";
4747
import { resolveTools } from "./mcp/utils";
48+
import { applyDefaultBrowserSettingsViewport } from "./browserbaseDefaults";
4849
import { isRunningInBun, loadApiKeyFromEnv } from "./utils";
4950

5051
dotenv.config({ path: ".env" });
@@ -158,11 +159,14 @@ async function getBrowser(
158159
);
159160
}
160161

162+
const sessionCreateParams = applyDefaultBrowserSettingsViewport(
163+
browserbaseSessionCreateParams,
164+
);
161165
const session = await browserbase.sessions.create({
162166
projectId,
163-
...browserbaseSessionCreateParams,
167+
...sessionCreateParams,
164168
userMetadata: {
165-
...(browserbaseSessionCreateParams?.userMetadata || {}),
169+
...(sessionCreateParams?.userMetadata || {}),
166170
stagehand: "true",
167171
},
168172
});

0 commit comments

Comments
 (0)