Autonomy Docs
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:

Codetext
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

SeleniumAutonomy
One test methodOne test case.
Test classes, groups, tags, markersOptionally, a test plan.
driver.get, click, sendKeys, By.* locators, page objectsFolded 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 rulesDropped.
Login page objects, setup methodsA signed-in step with a saved sign-in attached as an account.
Credentials and config in properties filesSign-ins for accounts; {{env.NAME}} for the rest, marked secret when it's a credential.
Base URLThe environment's Web target.
sendKeys with a file pathA file attachment from the project's Files.
getScreenshotAsA screenshot attachment.
Data providers, parameterized testsOne test case per row only when the rows expect different outcomes.
Grid and browser capabilitiesNot needed. Web runs use a fresh Chrome.

See the migration overview for a worked example.

Didn’t find it?

On this page