# Migrating from Cypress to TestOwl

:::lead
How to convert Cypress `.cy.js` and `.cy.ts` test specs, custom commands, and fixtures into native TestOwl Test Cases and Flows.
:::

Cypress revolutionized developer-centric testing with fast feedback and time-travel debugging. However, Cypress test suites frequently suffer from test flakiness in CI environments, complex iframe workarounds, and heavy maintenance burdens when UI designs change.

## Key Mapping Concepts

| Cypress Concept | TestOwl Equivalent |
|---|---|
| `describe()` block | **Test Suite** |
| `it()` test spec | **Test Case** |
| Custom Commands (`Cypress.Commands.add`) | **Reusable Flows** |
| Fixtures (`cypress/fixtures/*.json`) | **Variables & Test Data** |
| `cy.get().click()` | **Click Step with Self-Healing Locators** |
| `cy.intercept()` / Mocking | **Network Rules in Environment Settings** |

## Migration Steps

1. **Upload Cypress Specs:** Navigate to **Import Wizard** and choose **Cypress**.
2. **Automated Conversion:** TestOwl translates command chains into visual execution steps, preserves step sequence, and automatically extracts reusable authentication commands into modular Flows.
3. **Configure Environments:** Replace `baseUrl` in `cypress.config.js` with structured TestOwl [Environments](/docs/environments/overview) to execute against localhost, staging, or production seamlessly.
4. **Execute Cloud Verification:** Run your converted suite across multi-browser configurations (Chromium, Firefox, WebKit) without local runner setup.

Compare framework strengths in our [Selenium vs Cypress Guide](https://testowl.ai/compare/selenium-vs-cypress).
