Skip to main content
Migrate your Classic tests to Agent 2.0. Your tests become Playwright-compatible code stored in a Git repository (either your own or Stably-managed) while keeping the same visual editing experience.

Why migrate

The modern Stably platform replaces classic no-code tests with real Stably-powered Playwright code, smarter AI agents, and dramatically lower costs. Teams that migrate typically see 50–80% lower AI costs — because tests are resilient from the start and don’t need constant runtime auto-healing.

Full comparison: Classic vs Web Editor + CLI

See the detailed benefits breakdown — cost savings, smarter autofix, less flakiness, and more.
In short:
  • Same visual editing — continue building tests without code using the Web Editor
  • Git-backed storage — tests are stored as Playwright code in addition to a no-code version, enabling version control, code review, and edit anywhere
  • Full Stably SDK — access all AI features including AI assertions, AI actions, and autofix
  • Run anywhere — execute tests in Stably Cloud, your CI/CD, or locally
  • 50–80% lower costs — no more runtime auto-heal burning through credits on every run
Migrated tests use the Stably SDK which is 100% Playwright-compatible. You can continue using the visual Web Editor or work directly with the code.

Migration options

After migration

Once migrated, your tests are accessible in multiple ways:
Open any test in the Web Editor to continue editing visually, just like Classic but with Git-backed version control.
Generate new tests or modify existing ones from your terminal:
npx stably create "Add a test for checkout flow"
# Run in Stably Cloud
npx stably test

# Run locally with Playwright
npx playwright test

# Run in your CI/CD
# Tests work with any CI platform
Since tests are stored as Playwright code in your repository, you can edit them directly in VS Code, Cursor, or any editor. Changes sync to the Web Editor automatically.

What gets migrated

The migration converts your Classic tests to clean Playwright TypeScript:
Classic FeatureMigrated Result
Test stepsPlaywright actions (page.click(), page.fill(), etc.)
AI Actionsagent.act() calls
AI Assertionsexpect(page).aiAssert()
VariablesTypeScript variables with runtime injection
Custom codePreserved as-is
Knowledge itemsExported as knowledge.md

Example migrated test

import { test, expect } from '@stablyai/playwright-test';

test('Login flow with AI validation', async ({ page }) => {
  await page.goto('https://app.example.com/login');
  await page.fill('[name="email"]', 'user@example.com');
  await page.fill('[name="password"]', 'securePassword123');
  await page.click('button[type="submit"]');

  // AI assertion validates the visual state
  await expect(page).aiAssert(
    'The dashboard displays user profile information and recent activity'
  );
});

Troubleshooting

Migration agent can’t start

Ensure your repository is initialized. Go to Agents in the dashboard to set it up, or connect your own repo via Settings > Git.

Unsupported flows

Some Classic features may not have direct equivalents. The migration agent will skip these with test.skip() and explain why. You can ask the agent to implement alternatives or fix them manually.

Next steps

Web Editor Guide

Learn the visual editor and AI assistance

Bring Your Own Repo

Connect your existing GitHub repository

CLI Quickstart

Generate and run tests from your terminal

SDK Overview

Explore all SDK features and capabilities