Docs Autonomy
Migrer

Aperçu

Migrez une suite Playwright, Cypress, Puppeteer, Selenium, Appium, Maestro ou mabl vers Autonomy avec un seul prompt donné à votre agent de code.

Vos tests existants indiquent déjà quels parcours comptent. Les sélecteurs, les attentes, les objets de page et les fixtures qui les entourent sont la partie qui casse. Une migration garde le premier et abandonne le reste : chaque test devient un cas de test Autonomy, rédigé en quelques étapes sous forme de résultats attendus, et l'agent détermine les clics sur le produit en ligne au moment de l'exécution.

Comment ça marche

  1. Connectez votre agent de code à Autonomy via MCP. Voir Connecter un client. Quand il demande un accès, autorisez Create and edit test cases, Create and edit test plans et Start runs. Ajoutez Create and edit environments si vous voulez qu'il ajoute des valeurs d'environnement pour vous.
  2. Ouvrez le dépôt qui contient la suite et collez le prompt de la page de votre framework.
  3. L'agent commence par autonomy_project_list et autonomy_environment_list, vous demande quel projet et quel environnement utiliser, et consulte autonomy_test_case_list pour ne pas dupliquer la couverture existante.
  4. Il crée un cas de test par test avec autonomy_test_case_create, les regroupe éventuellement avec autonomy_test_plan_create, en exécute un et lit le résultat avec autonomy_run_get et autonomy_run_step_actions.

Pour une poignée de tests, vous pouvez aussi utiliser Describe what to test dans le tableau de bord : décrivez le parcours, ou joignez un fichier .feature, et Autonomy rédige un brouillon des étapes. Voir Rédaction.

Ce que devient un test

Dans votre suiteDans Autonomy
Un test, une spec ou un flowUn cas de test, sur la même plateforme : web, Android ou API. Les tests iOS arrivent bientôt.
Ce que le test prouveLes étapes. Chaque étape est un résultat attendu formulé en langage courant, comme « La commande apparaît comme payée ».
Clics, saisies, sélecteurs, objets de pageRien. L'agent les détermine sur le produit en ligne.
Attentes, pauses, nouvelles tentativesRien. L'agent attend ce dont le résultat attendu a besoin.
AssertionsLe texte du résultat attendu. Une valeur sur laquelle porte l'assertion devient une pièce jointe data marquée Exact.
Helper de connexion, état d'authentification stockéUne étape comme « Le propriétaire de la boutique est connecté », avec une connexion enregistrée jointe comme account.
Mots de passe, jetons et clésUne connexion enregistrée, ou une valeur d'environnement secrète utilisée sous la forme {{env.NAME}}. Jamais une valeur littérale dans une étape.
URL de base, builds d'application, configurationL'environnement : ses cibles de plateforme et ses valeurs.
E-mails, noms et mots de passe aléatoiresUne Fresh inbox per run (inbox) et des données générées (data avec une intention).
Fichiers de fixtures à téléverserUne pièce jointe file issue des Files du projet.
Appels de capture d'écranUne pièce jointe screenshot. Pour les comparaisons de design, voir Vérifications visuelles.
Vérifications réseauUn résultat attendu portant sur ce que voit l'utilisateur ou l'API. L'exécution conserve chaque requête dans son onglet Network. Voir API et réseau.
Suites, blocs describe, tagsÉventuellement, un plan de test.

Un cas de test compte jusqu'à 12 étapes dans le tableau de bord et jusqu'à 50 via l'API. Limitez les cas de test migrés à 12 étapes pour que chacun puisse encore les modifier ; découpez un test plus long en plusieurs cas de test.

Exemple

Un test Playwright :

test("sign up and apply a coupon", async ({ page }) => {
  await page.goto("/signup");
  await page.fill("#email", `qa+${Date.now()}@example.com`);
  await page.fill("#password", "Hunter2!Hunter2!");
  await page.click("button[type=submit]");
  await page.goto(await verificationLink());
  await expect(page.getByText("Email verified")).toBeVisible();
  await page.goto("/plans");
  await page.fill("[name=coupon]", "SPRING25");
  await expect(page.locator(".total")).toHaveText("$37.50");
});

devient trois étapes formulées comme des résultats attendus. L'e-mail aléatoire devient une nouvelle boîte de réception, le mot de passe des données générées, et le code promo et le total sont Exact, car c'est sur eux que porte le test :

{
  "projectId": "<project id>",
  "name": "Sign up and apply a coupon",
  "platforms": ["web"],
  "steps": [
    {
      "id": "s1",
      "text": "A new account exists for a fresh email.",
      "attachments": [
        { "id": "a1", "kind": "inbox", "exact": false },
        { "id": "a2", "kind": "data", "label": "Password", "intent": "a strong password", "exact": false }
      ]
    },
    {
      "id": "s2",
      "text": "The verification email arrives and its link verifies the account.",
      "attachments": []
    },
    {
      "id": "s3",
      "text": "On the Plans page, the coupon applies and the total shows $37.50.",
      "attachments": [
        { "id": "a3", "kind": "data", "label": "Coupon", "value": "SPRING25", "exact": true },
        { "id": "a4", "kind": "data", "label": "Total", "value": "$37.50", "exact": true }
      ]
    }
  ]
}

Une pièce jointe account désigne une connexion enregistrée par son nom de compte : { "id": "a5", "kind": "account", "role": "store-owner", "exact": false }. Les connexions sont enregistrées dans le tableau de bord, sous Sign-ins du projet : le prompt vous demande donc leurs noms au lieu de les créer.

Les règles d'une migration honnête

  • Des résultats attendus, pas des instructions. #btn-submit-2 et waitForSelector ne disent rien du produit. « La commande apparaît comme payée », si.
  • Un test, un cas de test. Ne fusionnez pas de tests et n'ajoutez pas d'étapes que le test ne vérifiait pas.
  • Exact uniquement pour ce sur quoi porte le test. Un prix vérifié, un code promo qui doit s'appliquer ou un numéro de téléphone qui doit être refusé sont Exact. Tout le reste est une donnée de test : si le produit indique qu'une valeur est déjà prise, l'agent en utilise une nouvelle.
  • Aucun secret dans les étapes. Les identifiants deviennent des connexions enregistrées ou des valeurs d'environnement secrètes. Les secrets sont renseignés par référence, et l'agent ne les voit jamais.

Guides par framework

Vous n’avez pas trouvé ?

On this page