Session Lifecycle
// 1. Connect
const session = await playwright.connect({ apiKey: '...' });
// 2. Use
await session.page.goto('https://example.com');
// 3. Close
await session.close();
Session Options
const session = await playwright.connect({
apiKey: process.env.BCTRL_API_KEY,
sessionOptions: {
// Browser setup
screen: { width: 1920, height: 1080 },
timeoutMinutes: 30,
// Stealth & anti-detection
useStealth: true,
humanize: true,
// Proxy
useProxy: true,
proxyCountry: 'US'
}
});
Browser Contexts (Playwright)
Contexts provide isolated browser environments:
const session = await playwright.connect({ apiKey: '...' });
// Default context
const defaultContext = session.context;
// Create new isolated context
const newContext = await session.browser.newContext();
const page = await newContext.newPage();
// Each context has separate:
// - Cookies
// - Local storage
// - Session storage
Multiple Pages
// Open multiple pages
const page1 = session.page;
const page2 = await session.context.newPage();
// Work with both
await page1.goto('https://site1.com');
await page2.goto('https://site2.com');
// Transfer data between pages
const data = await page1.evaluate(() => localStorage.getItem('token'));
await page2.evaluate((token) => localStorage.setItem('token', token), data);
Cookie Management
// Add cookies
await session.context.addCookies([
{ name: 'session', value: 'abc123', domain: 'example.com' }
]);
// Get cookies
const cookies = await session.context.cookies();
// Clear cookies
await session.context.clearCookies();
// Get storage state (cookies + localStorage)
const state = await session.context.storageState();
Session Timeout
Sessions automatically close after the timeout period:
const session = await playwright.connect({
apiKey: '...',
sessionOptions: {
timeoutMinutes: 60 // 1 hour
}
});
Always call session.close() when done to free up resources immediately.