Using a Browser Session with Playwright
After creating a session with the AgentGo SDK, you can connect Playwright to that session for browser automation. This guide shows how to use your session ID to get a Playwright browser object.
Prerequisites
- A session created using the AgentGo SDK (see Create a Browser Session)
- Playwright installed:
npm i playwright-core
Connecting Playwright to Your Session
Here’s how to use a session ID to get a Playwright browser object:
import { AgentGo } from '@agentgo-dev/sdk';
import { chromium } from 'playwright-core';
const client = new AgentGo({
apiKey: 'your_api_key_here',
});
const session = await client.sessions.create({
region: 'us'
});
const options = {
_apikey: 'your_api_key_here',
_sessionId: session.id,
_region: 'us',
_disable_proxy: false
};
const urlOptionValue = encodeURIComponent(JSON.stringify(options));
const serverUrl = 'wss://app.browsers.live?launch-options=' + urlOptionValue;
const browser = await chromium.connect(serverUrl);
Connection Options
When connecting Playwright to your session, you can use these options:
| Option | Description | Required | Default |
|---|
_apikey | Your AgentGo API key | Yes | None |
_sessionId | Session ID from SDK | No | Auto-generated |
_region | Geographic region code (lowercase) | No | ”us” |
_disable_proxy | Disable proxy usage | No | false |
Complete Integration Example
import { AgentGo } from '@agentgo-dev/sdk';
import { chromium } from 'playwright-core';
async function automateWithSession() {
const client = new AgentGo({
apiKey: 'your_api_key_here',
});
const session = await client.sessions.create({
region: 'us'
});
console.log('Session created:', session.id);
const options = {
_apikey: 'your_api_key_here',
_sessionId: session.id,
_region: 'us',
_disable_proxy: false
};
const urlOptionValue = encodeURIComponent(JSON.stringify(options));
const serverUrl = 'wss://app.browsers.live?launch-options=' + urlOptionValue;
const browser = await chromium.connect(serverUrl);
const page = await browser.newPage();
await page.goto('https://example.com');
await page.fill('#search', 'AgentGo');
await page.press('#search', 'Enter');
await page.waitForSelector('.results');
await page.screenshot({ path: 'example.png' });
await browser.close();
const sessionDetails = await client.sessions.retrieve(session.id);
console.log('Final session status:', sessionDetails.status);
}
automateWithSession().catch(console.error);
Reusing Existing Sessions
You can also connect to existing sessions by their ID:
const existingSessionId = 'session-abc123';
const options = {
_apikey: 'your_api_key_here',
_sessionId: existingSessionId,
_region: 'us'
};
const urlOptionValue = encodeURIComponent(JSON.stringify(options));
const serverUrl = 'wss://app.browsers.live?launch-options=' + urlOptionValue;
const browser = await chromium.connect(serverUrl);
Session Status Monitoring
Monitor your session during automation:
async function monitorSession(client, sessionId) {
const details = await client.sessions.retrieve(sessionId);
console.log(`Session ${sessionId} status: ${details.status}`);
return details;
}
const sessionStatus = await monitorSession(client, session.id);
if (sessionStatus.status === 'RUNNING') {
await page.goto('https://another-site.com');
}
Common Playwright Operations
Once connected, use standard Playwright operations:
await page.goto('https://example.com');
await page.click('#button');
await page.fill('input[name="username"]', 'myuser');
await page.selectOption('select[name="country"]', 'US');
await page.waitForSelector('.loading', { state: 'hidden' });
await page.waitForLoadState('networkidle');
const title = await page.textContent('h1');
const links = await page.$$eval('a', els => els.map(el => el.href));
await page.screenshot({ path: 'screenshot.png', fullPage: true });
Error Handling
Handle connection and automation errors:
try {
const browser = await chromium.connect(serverUrl);
const page = await browser.newPage();
await page.goto('https://example.com');
} catch (error) {
console.error('Connection or automation failed:', error);
const sessionDetails = await client.sessions.retrieve(session.id);
console.log('Session status:', sessionDetails.status);
}
Region Examples
You can create sessions in different regions based on your target audience or compliance requirements:
const usSession = await client.sessions.create({ region: 'us' });
const caSession = await client.sessions.create({ region: 'ca' });
const ukSession = await client.sessions.create({ region: 'uk' });
const deSession = await client.sessions.create({ region: 'de' });
const frSession = await client.sessions.create({ region: 'fr' });
const jpSession = await client.sessions.create({ region: 'jp' });
const sgSession = await client.sessions.create({ region: 'sg' });
const inSession = await client.sessions.create({ region: 'in' });
const auSession = await client.sessions.create({ region: 'au' });
See the Create Browser Session guide for the complete list of supported regions.
Best Practices
- Always specify _sessionId when you have a specific session to use
- Match regions between SDK session creation and Playwright connection
- Choose regions close to your target websites for better performance
- Monitor session status during long-running automations
- Close browser connections to free up resources
Session Limitations
- Maximum of 4 concurrent pages per browser session
- File upload/download operations are not supported
- Sessions timeout after 120 seconds of inactivity
- Use appropriate waiting strategies instead of fixed timeouts