Docs
Playwright
Playwright
Learn how to log your crashes in Buglesstack using Playwright.
Prerequisites
To get the most out of this guide, you’ll need to:
- Get your access token from https://app.buglesstack.com
1. Wrap your code in a try…catch block.
try:
# Your Playwright code ...
page.goto('https://www.google.com/search?q=playwright')
page.wait_for_selector('[name="q"]')
page.close()
browser.close()
except Exception as error:
pass
2. Capture relevant error data
# Prepare buglesstack data
buglesstack_data = {
'url': page.url, # Page URL
'screenshot': page.screenshot(type='png', full_page=True), # Page screenshot
'html': page.content(), # Page HTML
'metadata': {}, # Any relevant metadata
'message': str(error), # Error message
'stack': traceback.format_exc() # Error stack
}
# Convert screenshot to base64
import base64
buglesstack_data['screenshot'] = base64.b64encode(buglesstack_data['screenshot']).decode('utf-8')
3. Send the error data to Buglesstack’s API
# Get your access token from https://app.buglesstack.com
ACCESS_TOKEN = 'HERE_YOUR_ACCESS_TOKEN'
# 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)
4. Try it yourself
from playwright.sync_api import sync_playwright
import requests
import traceback
# Get your access token from https://app.buglesstack.com
ACCESS_TOKEN = 'HERE_YOUR_ACCESS_TOKEN'
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),
'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