Files

Steel + Playwright Starter

This template shows you how to use Steel with Playwright to run browser automations in the cloud. It includes session management, error handling, and a basic example you can customize.

Open in StackBlitz Open Replit Template

Installation

Clone this repository, navigate to the examples/steel-playwright-starter, and install dependencies:

git clone https://github.com/steel-dev/steel-cookbook
cd steel-cookbook/examples/steel-playwright-starter
npm install

Quick start

The example script in index.ts shows you how to:

  • Create and manage a Steel browser session
  • Connect Playwright to the session
  • Navigate to a website (Hacker News in this example)
  • Extract data from the page (top 5 stories)
  • Handle errors and cleanup properly
  • View your live session in Steel's session viewer

To run it:

  1. Create a .env file in the examples/steel-playwright-starter directory:
STEEL_API_KEY=your_api_key_here
  1. Replace your_api_key_here with your Steel API key. Don't have one? Get a free key at app.steel.dev/settings/api-keys

  2. From the same directory, run the command:

npm start

Writing your automation

Find this section in index.ts:

// ============================================================
// Your Automations Go Here!
// ============================================================

// Example automation (you can delete this)
await page.goto("https://news.ycombinator.com");
// ... rest of example code

You can replace the code here with whatever automation scripts you want to run.

Configuration

The template includes common Steel configurations you can enable:

const session = await client.sessions.create({
  useProxy: true, // Use Steel's proxy network
  solveCaptcha: true, // Enable CAPTCHA solving
  sessionTimeout: 1800000, // 30 minute timeout (default: 5 mins)
  userAgent: "custom-ua", // Custom User-Agent
});

Error handling

The template includes error handling and cleanup:

try {
  // Your automation code
} finally {
  // Cleanup runs even if there's an error
  if (browser) await browser.close();
  if (session) await client.sessions.release(session.id);
}

Support