Skip to main content

Installation

npm install browsertest-sdk
# or
yarn add browsertest-sdk

Initialization

import { BrowserTest } from 'browsertest-sdk';

// Initialize with API key
const bt = new BrowserTest({
  apiKey: process.env.BROWSERTEST_API_KEY
});

// Test connection
const isConnected = await bt.testConnection();
console.log('Connected:', isConnected);

Screenshots

Simple Screenshot

const screenshot = await bt.screenshot.take({
  url: 'https://example.com'
});

console.log('Screenshot taken:', screenshot.data.screenshot.length, 'bytes');

Full Page Screenshot

const fullPage = await bt.screenshot.take({
  url: 'https://example.com',
  fullPage: true
});

Custom Viewport

const mobile = await bt.screenshot.take({
  url: 'https://example.com',
  width: 375,
  height: 667
});

const tablet = await bt.screenshot.take({
  url: 'https://example.com',
  width: 768,
  height: 1024
});

const desktop = await bt.screenshot.take({
  url: 'https://example.com',
  width: 1920,
  height: 1080
});

Element Screenshot

const element = await bt.screenshot.take({
  url: 'https://example.com',
  selector: '.hero-section'
});

// Or use the convenience method
const hero = await bt.screenshot.element('https://example.com', '.hero-section');

Agentic Testing

Simple Test

const result = await bt.testing.execute({
  instructions: 'Navigate to the homepage and verify the main heading is visible',
  url: 'https://example.com'
});

console.log('Test passed:', result.success);

Login Test

const loginResult = await bt.testing.login(
  'https://example.com/login',
  {
    email: 'user@example.com',
    password: 'password123'
  }
);

Form Filling

const formResult = await bt.testing.fillForm(
  'https://example.com/contact',
  {
    name: 'John Doe',
    email: 'john@example.com',
    message: 'Hello from BrowserTest!'
  }
);

Batch Operations

Batch Screenshots

const batch = await bt.screenshot.takeBatch({
  urls: [
    'https://site1.com',
    'https://site2.com',
    'https://site3.com'
  ],
  fullPage: true
});

console.log(`${batch.meta.successful}/${batch.meta.total} screenshots captured`);

Batch Tests

const tests = await bt.batch.tests([
  {
    instructions: 'Check if homepage loads correctly',
    url: 'https://example.com'
  },
  {
    instructions: 'Verify login form validation',
    url: 'https://example.com/login'
  }
]);

console.log(`${tests.successful}/${tests.total} tests passed`);

Usage Tracking

const usage = await bt.getUsage();
console.log('Plan:', usage.plan);
console.log('Screenshots used:', usage.usage.screenshot.used);
console.log('Agentic tests used:', usage.usage.agentic.used);

Error Handling

try {
  const result = await bt.screenshot.take({ url: 'https://example.com' });
} catch (error) {
  if (error.name === 'BrowserTestAuthError') {
    console.log('Invalid API key');
  } else if (error.name === 'BrowserTestQuotaError') {
    console.log('Quota exceeded');
  } else {
    console.log('Error:', error.message);
  }
}

Complete Example

import { BrowserTest } from 'browsertest-sdk';

async function example() {
  // Initialize
  const bt = new BrowserTest({
    apiKey: process.env.BROWSERTEST_API_KEY
  });

  try {
    // Test connection
    const connected = await bt.testConnection();
    if (!connected) throw new Error('Connection failed');

    // Take a screenshot
    const screenshot = await bt.screenshot.take({
      url: 'https://example.com',
      fullPage: true
    });

    // Run a test
    const testResult = await bt.testing.execute({
      instructions: 'Verify the page title and main navigation',
      url: 'https://example.com'
    });

    // Check usage
    const usage = await bt.getUsage();

    console.log('✅ All operations completed successfully!');
    console.log('Screenshot size:', screenshot.meta.size, 'bytes');
    console.log('Test passed:', testResult.success);
    console.log('Usage:', usage.usage.screenshot.used, 'screenshots,', usage.usage.agentic.used, 'tests');

  } catch (error) {
    console.error('❌ Error:', error.message);
  }
}

example();