Skip to main content
Beta Feature — Browser automation is currently in beta. Please report any issues to founders@morphllm.com.
Browser Testing Test your web apps with natural language. “Test checkout flow” or “Verify mobile menu works”—Morph runs it with a real browser.

Quick Start

Install and run your first browser test in 30 seconds:
Use remote URLs only (Vercel previews, e2b.dev tunnels, staging). Cannot access localhost—see why.

Why Morph Browser?

Built specifically for testing AI-generated code changes:
  • 10x cheaper than Claude Sonnet (0.30vs0.30 vs 3.00 per 1M input tokens)
  • 250% faster inference (200 tok/s vs 60 tok/s)
  • Live session streaming - Watch tests execute in real-time
  • Rich debugging - URLs, actions, errors auto-captured
  • Agent self-assessment - Real success detection, not just completion
Per 1M tokens. Morph models are optimized for browser automation and testing.

Common Patterns

Basic Testing

Test any web flow with natural language:

Watch Tests Live

Get live URL immediately, watch execution in real-time:

Test Responsive Layouts

Use built-in tools to test different screen sizes:

Site Authentication

Test sites that require login with the auth parameter:
The agent sees placeholders (x_user, x_pass) in the task. Real values are injected when filling forms.
Scope credentials to specific domains:

Browser Profiles (Persistent Logins)

Profiles let you sign in once (manually) and reuse that authenticated state across test runs. Profiles are scoped to a repo.

List available repos

Create a profile (returns a live URL)

Use a profile in browser tasks

Update a profile (add more logins)

List and delete profiles

Debug with Recordings

Enable video and logs for failed tests:

CI/CD Integration

Track tests with reference IDs:

Live Sessions

Stream browser execution in real-time at 25 fps. Perfect for debugging, monitoring, or human-in-the-loop workflows.

Basic Live Streaming

Embed in Dashboard

Live URLs are unauthenticated. Anyone with the URL can view (and control if interactive=true) the session. Add your own auth for production use.

Built-in Tools

The agent automatically uses tools when needed based on your task description.

Responsive Testing

Test layouts at different screen sizes—just mention dimensions in your task:
Common dimensions:
  • Desktop: 1920x1080, 1440x900, 1280x720
  • Tablet: 1024x768 (iPad), 768x1024 (iPad Portrait)
  • Mobile: 375x667 (iPhone SE), 414x896 (iPhone 11), 390x844 (iPhone 12/13)
More tools coming: file uploads, API interactions, human-in-the-loop. All tools are globally available.

Recordings

Enable recordVideo: true to capture full session details:
What you get:
  • Video file (MP4/WebM)
  • Interactive DOM replay (rrweb)
  • Network logs (all requests/responses)
  • Console logs (JS output)
  • Screenshots (per step)

Get Animated WebP

Convert recordings to animated WebP for embedding in PRs or dashboards:
With file size budget:
When maxSizeMb is set, the output is guaranteed to stay under that size. For long recordings with tight budgets, the video is automatically sped up to fit. Cached in S3—subsequent calls return instantly.

Get Errors with Screenshots

Choosing a Model

Specify which model to use for browser automation with the model parameter:

Available Models

morph-computer-use-v1 is the default and recommended for most use cases. Use gemini-3-flash-preview if you prefer Google’s Gemini model (requires GOOGLE_API_KEY on the server).

API Reference

execute()

Synchronous execution—waits for completion (~30-60s).
Returns:

createTask()

Async execution—returns immediately with live URL (~2s).

Writing Good Tasks

Be specific—the agent performs better with clear instructions. ✅ Good (specific):
  • “Navigate to pricing and verify all three tiers display”
  • “Add item to cart, go to checkout, verify subtotal matches”
  • “Test login with test@example.com / password123”
❌ Bad (vague):
  • “test the app”
  • “check if everything works”
  • “make sure there are no bugs”
Choosing maxSteps:
  • 5-10 steps: Simple navigation and verification
  • 10-15 steps: Form submissions, multi-step flows
  • 15-30 steps: Complex journeys (checkout, onboarding)

Remote URLs Only

The browser runs on our infrastructure—it cannot access localhost. ✅ Use these:
  • https://3000-abc.e2b.dev (e2b tunnel)
  • https://preview-abc.vercel.app (Vercel preview)
  • https://staging.myapp.com (staging environment)
❌ Don’t use:
  • localhost:3000
  • 127.0.0.1
  • 192.168.x.x or any local IPs
Tunnel local servers with e2b.dev, ngrok, or deploy to Vercel for instant preview URLs.

Python SDK

Morph is OpenAI-compatible. Use with browser-use Python SDK:
Get browser-use’s Python interface with Morph’s 10x cheaper pricing. See the full guide.

Setting Up Test Accounts

Use a separate development environment for browser automation testing. This lets you freely disable 2FA, bot protection, and other security features without affecting production.
Most auth providers (Clerk, Auth0, Supabase, Firebase) support creating separate development/staging instances. Create your test accounts there, where you can:
  • Disable 2FA/MFA on test accounts
  • Turn off bot protection and CAPTCHA
  • Skip email verification
  • Add preview URL wildcards to allowed origins (e.g., https://*.vercel.app)

Quick Setup by Provider

  1. Create a Development instance in Clerk Dashboard
  2. Create test user: Dashboard → Users → Create user
  3. Disable bot protection: Configure → Attack Protection → Bot Protection
  4. Add allowed origins: Configure → Paths → add https://*.vercel.app
  5. Use development keys in preview environment:
  1. Create a Development tenant in Auth0
  2. Create test user: User Management → Users → Create User
  3. Disable MFA: Security → Multi-factor Auth → disable or add rule to skip for test emails
  4. Add allowed origins: Applications → Settings → Allowed Web Origins
  5. Use development tenant in preview:
  1. Create a separate Supabase project for staging
  2. Create test user via Dashboard or SQL
  3. Disable email confirmation: Authentication → Providers → Email
  4. Disable CAPTCHA: Authentication → Settings
  5. Add redirect URLs: Authentication → URL Configuration → add https://*.vercel.app/**
  1. Create a separate Firebase project for development
  2. Create test user and mark email as verified
  3. Add authorized domains: Authentication → Settings → Authorized domains
  4. For CI/CD, consider using Firebase Auth Emulator

Vercel Environment Variables

Configure different auth credentials per environment:
Then use with Morph:

FAQ

The browser runs on our servers, not your machine.Won’t work: localhost:3000, 127.0.0.1, 192.168.x.xSolutions:
  • Deploy to Vercel/Netlify for instant preview URLs
  • Tunnel with e2b.dev or ngrok
  • Use a staging environment
execute() - Waits for completion (~30-60s)
createTask() - Returns immediately (~2s)
Use createTask() to watch from the start or get the live URL for monitoring/debugging.
Every task returns rich debugging data automatically:
You get: agent self-assessment, all URLs visited, every action taken, per-step errors, and optional video/logs.
Each browser action = 1 step:
  • Click → 1 step
  • Fill form → 1 step
  • Navigate → 1 step
  • Wait → 1 step
Sizing:
  • 5-10 steps: Simple tasks
  • 10-15 steps: Forms, multi-step
  • 15-30 steps: Complex flows
Hit the limit? Increase maxSteps or simplify the task.
Yes—use Zod schemas with createTask():
Enable recordVideo: true to get:
  • Video (MP4/WebM) - Visual playback
  • rrweb replay - Interactive DOM timeline
  • Network logs - All HTTP requests
  • Console logs - JS console output
  • Screenshots - Per step
Stored in S3 with 7-day presigned URLs.
WebRTC streaming at 25 fps. Use cases:Monitoring:
Human takeover:
Debugging:
Compatibility: Chrome 90+, Firefox 90+, Safari 14.1+
Yes—works with any OpenAI SDK:
Works with: browser-use, Browserbase, Browserless, Steel, and more.
Link tests to your systems with reference IDs:
All fields optional. Filter by these IDs in the dashboard.
Use the auth parameter with username/password or cookies:
Reference credentials in your task as x_user and x_pass.
Third-party auth providers like Clerk, Auth0, and Supabase Auth often block requests from unfamiliar origins or automated browsers.Solutions:
  1. Use cookie-based auth (recommended):
    Export cookies from your browser’s DevTools after logging in manually.
  2. Add preview URL to your auth provider’s allowed origins:
    • Clerk: Dashboard → API Keys → Allowed origins → Add your preview URL
    • Auth0: Applications → Settings → Allowed Origins → Add preview URL
    • Supabase: Authentication → URL Configuration → Add preview URL
    Example: Add https://your-preview-abc.vercel.app to allowed origins.
Cookie auth is more reliable since it bypasses the login flow entirely.

Need Help?