Skip to main content
Migrate your Classic tests to the modern Stably Web Editor platform. 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 Stably Web Editor is the next generation of no-code testing:
  • Same visual editing: Continue building tests without code using the Web Editor
  • Git-backed storage: Tests are stored as Playwright code, enabling version control and code review
  • Edit anywhere: Work in the Web Editor, your IDE, or the CLI. Everything syncs automatically.
  • Full Stably SDK: Access all AI features including AI assertions, AI actions, and auto-heal
  • Run anywhere: Execute tests in Stably Cloud, your CI/CD, or locally
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

Let an AI agent migrate your Classic tests directly into your connected repository with automatic compatibility fixes.
1

Set up your repository

Your project needs a connected GitHub repository. You can either:
  • Use a Stably-managed repo: We create and manage a repository for you (default)
  • Bring your own repo: Connect your existing GitHub repository (learn more)
Go to Agents in the dashboard to initialize if not already set up.
2

Navigate to Migrate settings

Open Settings in the Stably dashboard and select the Migrate tab.
3

Choose target directory (optional)

Specify a subdirectory for the migrated tests (e.g., migrated-classic). Leave empty to migrate to the working directory root.
4

Start migration

Click Migrate Classic Tests to start an AI agent session. The agent will:
  • Import all Classic tests into your repository as Playwright code
  • Apply compatibility fixups automatically
  • Split AI interactions for better maintainability
  • Skip unsupported flows with clear explanations
  • Report any required dependencies
  • Update playwright.config.ts to register the new test suites
5

Review and approve

The agent creates commits for your review. Once approved, your tests appear in the Web Editor and can be edited visually or as code.

Option 2: ZIP Export

Download all your test suites as a ZIP file for manual integration.
1

Navigate to Export settings

Open Settings in the Stably dashboard and select the Export tab.
2

Download the ZIP

Click Export as Playwright ZIP to download all test suites. Each suite becomes a folder, and each test becomes a .spec.ts file.
3

Add to your repository

Extract the ZIP into your connected repository and push the changes. The tests will appear in the Web Editor.

After migration

Once migrated, your tests are accessible in multiple ways:

Continue with the Web Editor

Open any test in the Web Editor to continue editing visually, just like Classic but with Git-backed version control.

Use the Stably CLI

Generate new tests or modify existing ones from your terminal:
npx stably create "Add a test for checkout flow"

Run tests anywhere

# 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

Edit in your IDE

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).toMatchScreenshotPrompt()
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).toMatchScreenshotPrompt(
    '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