support serverless environments (#29)

* add --executable-path

* tests

* test vercel

* fixes
This commit is contained in:
Chris Tate
2026-01-12 11:41:25 -06:00
committed by GitHub
parent 3cd0ab468f
commit 4f6fd8ec5c
13 changed files with 255 additions and 12 deletions
+10
View File
@@ -22,6 +22,16 @@ describe('BrowserManager', () => {
const page = browser.getPage();
expect(page).toBeDefined();
});
it('should reject invalid executablePath', async () => {
const testBrowser = new BrowserManager();
await expect(
testBrowser.launch({
headless: true,
executablePath: '/nonexistent/path/to/chromium',
})
).rejects.toThrow();
});
});
describe('navigation', () => {
+1
View File
@@ -520,6 +520,7 @@ export class BrowserManager {
// Launch browser
this.browser = await launcher.launch({
headless: options.headless ?? true,
executablePath: options.executablePath,
});
// Create context with viewport
+6 -1
View File
@@ -158,7 +158,12 @@ export async function startDaemon(): Promise<void> {
parseResult.command.action !== 'launch' &&
parseResult.command.action !== 'close'
) {
await browser.launch({ id: 'auto', action: 'launch', headless: true });
await browser.launch({
id: 'auto',
action: 'launch',
headless: true,
executablePath: process.env.AGENT_BROWSER_EXECUTABLE_PATH,
});
}
// Handle close command specially
+1
View File
@@ -12,6 +12,7 @@ export interface LaunchCommand extends BaseCommand {
headless?: boolean;
viewport?: { width: number; height: number };
browser?: 'chromium' | 'firefox' | 'webkit';
executablePath?: string;
}
export interface NavigateCommand extends BaseCommand {