Skip to content

Commit def2fd9

Browse files
authored
fix: inherit current viewport for recordings (#718)
1 parent d678058 commit def2fd9

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

src/browser.test.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ import { describe, it, expect, beforeAll, afterAll, beforeEach, afterEach, vi }
22
import { BrowserManager, getDefaultTimeout } from './browser.js';
33
import { executeCommand } from './actions.js';
44
import { chromium } from 'playwright-core';
5+
import os from 'node:os';
6+
import path from 'node:path';
7+
import { existsSync, rmSync } from 'node:fs';
58

69
describe('BrowserManager', () => {
710
let browser: BrowserManager;
@@ -636,6 +639,25 @@ describe('BrowserManager', () => {
636639
expect(size?.height).toBe(1080);
637640
});
638641

642+
it('should inherit the current viewport when starting a recording', async () => {
643+
const recordingPath = path.join(os.tmpdir(), `agent-browser-recording-${Date.now()}.webm`);
644+
645+
await browser.setViewport(440, 956);
646+
647+
try {
648+
await browser.startRecording(recordingPath);
649+
const recordingPage = (browser as any).recordingPage;
650+
expect(recordingPage.viewportSize()).toEqual({ width: 440, height: 956 });
651+
} finally {
652+
if (browser.isRecording()) {
653+
await browser.stopRecording();
654+
}
655+
if (existsSync(recordingPath)) {
656+
rmSync(recordingPath, { force: true });
657+
}
658+
}
659+
});
660+
639661
it('should disable viewport when --start-maximized is in args', async () => {
640662
const testBrowser = new BrowserManager();
641663
await testBrowser.launch({ headless: true, args: ['--start-maximized'] });

src/browser.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2333,8 +2333,8 @@ export class BrowserManager {
23332333

23342334
this.recordingOutputPath = outputPath;
23352335

2336-
// Create a new context with video recording enabled and restored state
2337-
const viewport = { width: 1280, height: 720 };
2336+
// Reuse the active page viewport when available so recording matches the current layout.
2337+
const viewport = currentPage?.viewportSize() ?? { width: 1280, height: 720 };
23382338
this.recordingContext = await this.browser.newContext({
23392339
viewport,
23402340
recordVideo: {

0 commit comments

Comments
 (0)