Migrate
Selenium
Turn Selenium WebDriver tests in Java, Python, C# or JavaScript into Autonomy test cases of outcome steps, without page objects and explicit waits.
Selenium suites differ by language, but they share a shape: a driver, locators, explicit waits and page objects. The migration doesn't depend on the language, because the coding agent reads what each test checks, not its bindings.
Prompt
Paste this into a coding agent connected to the Autonomy MCP server, from inside the repository:
Migrate the Selenium tests in this repository to Autonomy with the Autonomy MCP tools.
Setup
1. Call autonomy_project_list and ask me which project to use. Call autonomy_environment_list with its projectId and ask me which environment to run in.
2. Call autonomy_test_case_list with the projectId. Skip tests that an existing test case already covers.
For each test
3. Create ONE test case with autonomy_test_case_create: projectId, name = the test method or display name, platforms = ["web"].
4. Write each step as an outcome: what is true when the step is done, in plain words ("A new account exists for a fresh email"). Say what the test proves, not how: no clicks, locators, waits, retries or assert calls. One step can cover several actions that serve one outcome. Use 12 steps or fewer; split a longer test into several test cases.
5. Each step is {id, text, attachments[]}. Each attachment has id, kind and exact. Kinds: account {role}, inbox (no address = a fresh inbox per run), phone, file, screenshot, data {label, value} or {label, intent} for generated data.
6. Never write a password, token or key into a step. For each account the suite signs in as (login page objects, setup methods, properties files), ask me to save it in the dashboard (the project's Sign-ins, New sign-in) and tell you its account name, then start the test with a step such as "The store owner is signed in" with that account attached. For other secrets in config files or environment variables, propose names and reference them as {{env.NAME}}; add them as secret values with autonomy_environment_upsert only after I agree.
7. Values the test is about (the text getText() returns to an assert, a coupon that must apply, input that must be refused): a data attachment with exact: true. Other config: {{env.NAME}}.
8. Sign-up data (emails, names, passwords, random suffixes): a fresh inbox and generated data, never a fixed value.
9. Inline page-object methods into what the test proves; drop their locators. Drop WebDriverWait, ExpectedConditions, Thread.sleep and retry rules. For data-driven tests, create one test case per row only when the rows expect different outcomes; otherwise use test data.
Afterwards
10. If the suite groups tests (classes, TestNG groups, JUnit tags, pytest markers), offer to create a test plan per group with autonomy_test_plan_create.
11. Run one migrated test case with autonomy_run_trigger in the environment I picked. Follow it with autonomy_run_get (pass the last cursor and waitMs) until it ends. For any step that didn't pass, read autonomy_run_step_actions and tell me what happened.
12. Finish with a table: source test, test case ID, number of steps, and anything you couldn't map.Mapping
| Selenium | Autonomy |
|---|---|
| One test method | One test case. |
| Test classes, groups, tags, markers | Optionally, a test plan. |
driver.get, click, sendKeys, By.* locators, page objects | Folded into the step's outcome. The agent finds the controls. |
assertEquals("Order placed", el.getText()) | The outcome, with Order placed as a data attachment marked Exact. |
WebDriverWait, ExpectedConditions, sleeps, retry rules | Dropped. |
| Login page objects, setup methods | A signed-in step with a saved sign-in attached as an account. |
| Credentials and config in properties files | Sign-ins for accounts; {{env.NAME}} for the rest, marked secret when it's a credential. |
| Base URL | The environment's Web target. |
sendKeys with a file path | A file attachment from the project's Files. |
getScreenshotAs | A screenshot attachment. |
| Data providers, parameterized tests | One test case per row only when the rows expect different outcomes. |
| Grid and browser capabilities | Not needed. Web runs use a fresh Chrome. |
See the migration overview for a worked example.
Didn’t find it?