Set Active Browser Instance
Sets a specific browser instance as the active instance, making it the default target for all subsequent browser operations that don't specify an explicit instanceId.
Syntax
const success = await codebolt.setActiveBrowserInstance(instanceId);
Parameters
- instanceId (
string): The unique identifier of the browser instance to set as active
Return Value
Returns a promise that resolves to a boolean:
trueif the instance was successfully set as activefalseif the instance was not found
Examples
Set Active Instance
import codebolt from '@codebolt/codeboltjs';
const instanceId = "browser-1234567890-abc123";
const success = await codebolt.setActiveBrowserInstance(instanceId);
if (success) {
console.log(`Instance ${instanceId} is now active`);
// Subsequent operations will use this instance by default
await codebolt.browser.goToPage('https://example.com');
await codebolt.browser.screenshot();
} else {
console.log(`Failed to set instance ${instanceId} as active (not found)`);
}
Switch Between Instances
async function switchBetweenInstances(instanceId1, instanceId2) {
// Set first instance as active
const success1 = await codebolt.setActiveBrowserInstance(instanceId1);
if (success1) {
console.log('Switched to instance 1');
await codebolt.browser.goToPage('https://example.com');
}
// Switch to second instance
const success2 = await codebolt.setActiveBrowserInstance(instanceId2);
if (success2) {
console.log('Switched to instance 2');
await codebolt.browser.goToPage('https://google.com');
}
}
Active Instance Management
class BrowserInstanceManager {
constructor() {
this.activeInstance = null;
}
async setActive(instanceId) {
const success = await codebolt.setActiveBrowserInstance(instanceId);
if (success) {
this.activeInstance = instanceId;
console.log(`Active instance set to: ${instanceId}`);
} else {
throw new Error(`Instance ${instanceId} not found`);
}
}
async getCurrentActive() {
const instances = await codebolt.listBrowserInstances();
return instances.find(inst => inst.isActive);
}
async switchAndNavigate(instanceId, url) {
await this.setActive(instanceId);
await codebolt.browser.goToPage(url);
console.log(`Navigated ${url} on instance ${instanceId}`);
}
}
// Usage
const manager = new BrowserInstanceManager();
await manager.switchAndNavigate("browser-123", "https://example.com");
Safe Instance Switching
async function safeSetActiveInstance(instanceId) {
// First verify instance exists
const instance = await codebolt.getBrowserInstance(instanceId);
if (!instance) {
throw new Error(`Instance ${instanceId} not found`);
}
if (!instance.isReady) {
throw new Error(`Instance ${instanceId} is not ready`);
}
// Set as active
const success = await codebolt.setActiveBrowserInstance(instanceId);
if (!success) {
throw new Error(`Failed to set instance ${instanceId} as active`);
}
console.log(`Successfully set ${instanceId} as active instance`);
return instance;
}
// Usage
try {
const activeInstance = await safeSetActiveInstance("browser-1234567890-abc123");
await codebolt.browser.screenshot();
} catch (error) {
console.error('Failed to set active instance:', error.message);
}
Round-Robin Instance Usage
class RoundRobinBrowser {
constructor(instanceIds) {
this.instanceIds = instanceIds;
this.currentIndex = 0;
}
async switchToNext() {
const instanceId = this.instanceIds[this.currentIndex];
const success = await codebolt.setActiveBrowserInstance(instanceId);
if (success) {
console.log(`Switched to instance: ${instanceId}`);
this.currentIndex = (this.currentIndex + 1) % this.instanceIds.length;
return instanceId;
} else {
throw new Error(`Failed to switch to instance: ${instanceId}`);
}
}
async performOnEach(operation) {
const results = [];
for (const instanceId of this.instanceIds) {
await codebolt.setActiveBrowserInstance(instanceId);
const result = await operation();
results.push({ instanceId, result });
}
return results;
}
}
// Usage
const roundRobin = new RoundRobinBrowser([
"browser-123",
"browser-456",
"browser-789"
]);
await roundRobin.switchToNext();
await codebolt.browser.goToPage('https://example.com');
Use Cases
Task Switching
Switch between different browser instances for different tasks.
Load Balancing
Distribute browser operations across multiple instances.
Context Management
Maintain separate contexts for different websites or tasks.
Resource Management
Control which instance is currently being used.
Error Handling
async function setActiveWithErrorHandling(instanceId) {
try {
const success = await codebolt.setActiveBrowserInstance(instanceId);
if (!success) {
// Instance not found - list available instances
const instances = await codebolt.listBrowserInstances();
console.log('Available instances:');
instances.forEach(inst => console.log(`- ${inst.instanceId}`));
throw new Error(`Instance ${instanceId} not found`);
}
console.log(`Successfully set ${instanceId} as active`);
} catch (error) {
console.error('Failed to set active instance:', error.message);
throw error;
}
}
Notes
- Global State: Affects all subsequent browser operations without explicit instanceId
- Validation: Returns false if instance doesn't exist (doesn't throw error)
- Immediate Effect: Changes take effect immediately for subsequent operations
- Single Active: Only one instance can be active at a time
Best Practices
- Verify Instance: Check instance exists before setting as active
- Error Handling: Handle cases where instance is not found
- State Tracking: Keep track of which instance is currently active
- Cleanup: Reset active instance when closing instances
Related Functions
listBrowserInstances()- List all instancesgetBrowserInstance()- Get specific instanceopenNewBrowserInstance()- Create new instancecloseBrowserInstance()- Close instance