Migrating from mabl
Two steps: get your tests out of mabl as Playwright code, so nothing is lost, then rewrite the ones you keep maintaining as plain-English tests.
1. Export to Playwright
mabl's CLI exports browser tests as Playwright (TypeScript):mabl tests export --format playwright. Run the result withnpx playwright test to keep your coverage while you move.
Source: mabl help: exporting tests from the CLI (checked 30 September 2026). What an export contains is up to mabl; check a few tests by hand.
2. Rewrite as plain English
Coming There is no mabl importer yet: automatic import is planned. Rewrite each journey from its steps, using the table below (and the Playwright mappingfor the exported code). Then record it once:npx optestra author tests/login.test.md.
| mabl | In a test file |
|---|---|
Test (journey) | a test: one .test.md file, steps in plain English |
Flow (reusable steps) | a flow (kind: flow), included with Use:; flows can include flows |
Variables | data: in the test, or vars per environment ({{env.X}}) |
DataTables | Coming Data-driven runs from a CSV or JSON file: the dataset: field is read today, running every row is coming |
Credentials | secrets: names in the project file, values in .env or your keychain, typed only into their allowed domains |
Two-factor codes | a TOTP secret (type: totp) types the current code |
mabl Mailbox | a test inbox: Mailpit, Mailosaur or MailSlurp, and {{inbox.code}}; hosted inboxes are coming |
Environments / applications | environments in the project file, each with its base URL and allowed domains |
Assertions | Expect: lines, each compiled to a typed check |
Plans (scheduled runs) | Coming the GitHub Action or any CI today; scheduled cloud runs are coming |
A worked example
A login journey (open the login page, type the email and the stored password, submit, see the dashboard) becomes:
---
name: Returning user can log in
start: /login
---
1. Fill "Email" with [email protected]
2. Fill "Password" with {{secret.SHOP_PASSWORD}}
3. Click "Log in"
4. Expect: the page heading is "Dashboard"The password is a secret: the project file names it and the domains it may be typed into, and the value stays in .env or your keychain. Seesecrets.
What's different
- No seat pricing, and running on your own computer or CI is free: pricing.
- The AI isn't tied to our runners: use your own key, a local model or your own Claude or ChatGPT plan, anywhere.
- Your tests are files in your repository and Playwright specs you can walk away with.