Hi, I'm Ivan 👋
For any questions or inquiries, you can write to me at ivan@buglesstack.com
Implementation Guide
Get your access token from https://app.buglesstack.com before implementing the code.
Wrap your browser automation code in a try...catch/except
block and send error data to Buglesstack:
Puppeteer (JavaScript)
import axios from 'axios';
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
const page = await browser.newPage();
try {
await page.goto('https://www.google.com/search?q=puppeteer');
await page.waitForSelector('[name="q"]');
await page.close();
await browser.close();
}
catch (error) {
// Prepare buglesstack data
const buglesstackData = {
url: page.url(),
screenshot: await page.screenshot({ encoding: 'base64' }),
html: await page.content(),
metadata: {},
message: error.message,
stack: error.stack
};
// Get your access token from https://app.buglesstack.com
const ACCESS_TOKEN = 'HERE_YOUR_ACCESS_TOKEN';
// Send error to buglesstack
await axios.post('https://app.buglesstack.com/api/v1/crashes', buglesstackData, {
headers: {
Authorization: `Bearer ${ACCESS_TOKEN}`,
'Content-Type': 'application/json'
}
});
// Re-throw the error to propagate it
throw error;
}
Playwright (Python)
from playwright.sync_api import sync_playwright
import requests
import traceback
ACCESS_TOKEN = 'HERE_YOUR_ACCESS_TOKEN' # Get your access token from https://app.buglesstack.com
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
try:
page.goto('https://www.google.com/search?q=playwright')
page.wait_for_selector('[name="q"]')
page.close()
browser.close()
except Exception as error:
# Prepare buglesstack data
buglesstack_data = {
'url': page.url,
'screenshot': page.screenshot(type='png', full_page=True), # bytes
'html': page.content(),
'metadata': {},
'message': str(error),
'stack': traceback.format_exc()
}
# Convert screenshot to base64
import base64
buglesstack_data['screenshot'] = base64.b64encode(buglesstack_data['screenshot']).decode('utf-8')
# Send error to buglesstack
headers = {
'Authorization': f'Bearer {ACCESS_TOKEN}',
'Content-Type': 'application/json'
}
requests.post('https://app.buglesstack.com/api/v1/crashes', json=buglesstack_data, headers=headers)
# Re-raise the error to propagate it
raise error
How it works:
- Wrap your browser automation operations in a
try...catch/except
block - When an error occurs, capture relevant data (URL, screenshot, HTML)
- Send the error data to Buglesstack's API
- Re-throw the error to maintain your application's error flow