mirror of
https://github.com/steel-dev/cli.git
synced 2026-09-14 20:47:34 +08:00
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.
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.js 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:
- Create a
.envfile in theexamples/steel-playwright-starterdirectory:
STEEL_API_KEY=your_api_key_here
-
Replace
your_api_key_herewith your Steel API key. Don't have one? Get a free key at app.steel.dev/settings/api-keys -
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);
}