diff --git a/src/browser.test.ts b/src/browser.test.ts index b56ae38..e0cbabf 100644 --- a/src/browser.test.ts +++ b/src/browser.test.ts @@ -1243,6 +1243,32 @@ describe('BrowserManager', () => { }); }); +describe('BrowserManager (persistent context / --profile mode)', () => { + let profileBrowser: BrowserManager; + let tmpProfileDir: string; + + beforeAll(async () => { + tmpProfileDir = path.join(os.tmpdir(), `agent-browser-test-profile-${Date.now()}`); + profileBrowser = new BrowserManager(); + await profileBrowser.launch({ headless: true, profile: tmpProfileDir }); + }); + + afterAll(async () => { + await profileBrowser.close(); + rmSync(tmpProfileDir, { recursive: true, force: true }); + }); + + it('should report as launched in persistent context mode', () => { + expect(profileBrowser.isLaunched()).toBe(true); + }); + + it('should create new tab in persistent context mode without throwing', async () => { + const result = await profileBrowser.newTab(); + expect(result.index).toBe(1); + expect(result.total).toBe(2); + }); +}); + describe('getDefaultTimeout', () => { const originalEnv = { ...process.env }; diff --git a/src/browser.ts b/src/browser.ts index c3450af..0e9eb3a 100644 --- a/src/browser.ts +++ b/src/browser.ts @@ -1829,7 +1829,7 @@ export class BrowserManager { * Create a new tab in the current context */ async newTab(): Promise<{ index: number; total: number }> { - if (!this.browser || this.contexts.length === 0) { + if (!this.isLaunched() || this.contexts.length === 0) { throw new Error('Browser not launched'); } @@ -1856,7 +1856,11 @@ export class BrowserManager { total: number; }> { if (!this.browser) { - throw new Error('Browser not launched'); + throw new Error( + this.isPersistentContext + ? 'newWindow is not supported in extension (persistent context) mode' + : 'Browser not launched' + ); } const context = await this.browser.newContext({