option

Améliore Vitest grâce à Midscene pour permettre des tests d'interface utilisateur basés sur l'IA sur le Web (Playwright), Android (ADB) et iOS (WDA). Il génère des structures de nouveaux projets, convertit les projets existants et permet de créer, mettre à jour, déboguer et exécuter des tests de bout en bout (E2E) à l'aide d'interactions en langage naturel avec l'interface utilisateur. Déclencheurs : écrire un test, ajouter un test, créer un test, mettre à jour un test, corriger un test, déboguer un test, exécuter un test, test de bout en bout, test Midscene, nouveau projet, convertir un projet, initialiser un projet, 写测试, 加测试, 创建测试, 更新测试, 修复测试, 调试测试, 运行测试, 新建工程, 转化工程.

...Développer tout
20
Heure mise à jour 25 août 2026

À propos vitest-midscene-e2e

vitest-midscene-e2e enrichit le framework de test Vitest avec Midscene pour créer des tests d’interface utilisateur de bout en bout, basés sur l’IA et en langage naturel, sur le Web (Playwright Chromium), Android (ADB et scrcpy) et iOS (WebDriverAgent). Il résout la fragilité des tests de bout en bout (E2E) basés sur des sélecteurs : au lieu de décomposer un parcours utilisateur en tapotements et saisies fragiles, le testeur transmet une intention en langage naturel à l’agent de Midscene, qui planifie et exécute l’interaction. Cette compétence permet de créer la structure de nouveaux projets de test, de convertir ceux qui existent déjà, ainsi que de créer, mettre à jour, déboguer et exécuter des tests, à l’aide de phrases déclencheuses bilingues (anglais et chinois).

Le workflow commence par le clonage d’un modèle standard via un script fourni, puis compare le projet actuel à ce modèle et ne complète que ce qui manque pour les plateformes dont l’utilisateur a besoin, sans écraser les configurations existantes, et copie un fichier .env.example dans .env pour que l’utilisateur puisse le remplir. Sa règle centrale est que les étapes d’interface utilisateur décrites par l’utilisateur doivent être implémentées à l’aide de l’API principale aiAct plutôt que par des appels aiTap/aiInput/aiAssert très détaillés, ce qui permet à l’IA de gérer la planification, les assertions, l’extraction de données et les temps d’attente. Il documente des classes d’agents spécifiques à chaque plateforme qui partagent les mêmes méthodes d’IA, le fractionnement par phases des longues invites en fonction des limites de page ou d’étape, les téléchargements de fichiers pilotés par des invites et limités à un répertoire fileChooserAllowedDir (décourageant explicitement l’utilisation de la racine du projet ou du répertoire personnel), une option de prompt système aiActionContext permettant de définir le niveau d’expertise du testeur, les erreurs courantes à éviter en matière de localisation, ainsi qu’un guide de dépannage en cas d’échec.

Les utilisateurs cibles sont les développeurs et les ingénieurs QA qui rédigent des tests E2E multiplateformes et qui souhaitent bénéficier d’une automatisation résiliente en langage naturel sur le Web, Android et iOS. Son exécution nécessite des variables d’environnement configurées (notamment les identifiants du modèle d’IA pour Midscene) et des chaînes d’outils de plate-forme telles que Playwright, ADB ou WebDriverAgent. La compétence exécute un script de clonage et pilote l’exécution des tests, mais son champ d’application se limite aux workflows de test légitimes ; elle recommande de restreindre les répertoires de téléchargement de fichiers plutôt que d’exposer des chemins d’accès trop généraux.

FAQ

Quelles plateformes prend-elle en charge ?

Le Web via Playwright Chromium, Android via ADB et scrcpy, et iOS via WebDriverAgent. Sur le Web, vous disposez à la fois de ctx.agent et de ctx.page ; sur Android et iOS, vous disposez uniquement de ctx.agent. Les trois agents partagent les mêmes méthodes d’IA.

Comment rédiger une étape de test ?

Transmettez l’intention de l’utilisateur sous forme de langage naturel à aiAct, l’API principale, plutôt que de la décomposer en aiTap, aiInput ou aiAssert. aiAct gère également les assertions, l’extraction de données et les temps d’attente ; l’API aiAction, désormais obsolète, doit être remplacée par aiAct.

Quelle configuration est nécessaire ?

Clonez le modèle à l’aide du script fourni, installez les dépendances et configurez un fichier .env (copié à partir de .env.example) avec les variables requises, y compris les identifiants du modèle d’IA pour Midscene. Vous aurez également besoin de la chaîne d’outils de la plateforme concernée (Playwright, ADB/scrcpy ou WebDriverAgent).

Comment les téléchargements de fichiers sont-ils gérés en toute sécurité ?

Lorsqu’une invite aiAct demande de télécharger des fichiers, vous transmettez fileChooserAllowedDir défini sur le répertoire le plus petit contenant les fixtures de ce test. La skill indique explicitement de ne pas utiliser la racine du projet ni le répertoire personnel.

Que faire si une invite comporte plusieurs étapes ?

Divisez-la en appels aiAct distincts en fonction des limites de page ou d’étape afin que l’IA ne perde pas le contexte en cours d’exécution, tout en vous assurant que l’ensemble des phases correspond bien à l’intention initiale. Une guide de dépannage traite des échecs de débogage.

Tous les fichiers

3fichiersSKILL.md7,0KBAfficher scripts/clone-boilerplate.sh1,2KBAfficher references/troubleshooting.md2,2 KBAfficher
Voir sur GitHub

Modules

ModuleRole
VitestTypeScript test framework. Provides describe/it/expect/hooks for test organization, assertions, and lifecycle.
MidsceneAI-driven UI automation. Interacts with UI elements via natural language — no fragile selectors. Core API: aiAct.

Supported platforms:

  • Web — WebTest (Playwright Chromium): ctx.agent + ctx.page
  • Android — AndroidTest (ADB + scrcpy): ctx.agent only
  • iOS — IOSTest (WebDriverAgent): ctx.agent only

Workflow

Step 1: Clone boilerplate & ensure project ready

bash scripts/clone-boilerplate.sh

The boilerplate at ~/.midscene/boilerplate/vitest-all-platforms-demo/ is the canonical reference for project structure, configs, platform context classes, and test conventions. Compare the current project against it. If anything is missing, ask the user which platform(s) they need (Web / Android / iOS), then fill in what's missing using the boilerplate as the target state. Only include files for the requested platform(s). Do NOT overwrite existing configs or files. Copy .env.example from the boilerplate as .env if it doesn't exist, and prompt the user to fill in the env vars.

Step 2: Read the Midscene Agent API section below before writing tests

It contains mandatory rules for using aiAct — the primary API for all UI operations. Do NOT skip this step.

Step 3: Create, update, or run tests

Use the boilerplate's e2e/ directory and src/context/ as reference for patterns and conventions. Before running tests, ensure dependencies are installed and .env is configured. When debugging failures, check troubleshooting.md.

Midscene Agent API

ctx.agent is a platform-specific agent instance. All methods return Promises.

  • Web: PlaywrightAgent from @midscene/web/playwright
  • Android: AndroidAgent from @midscene/android
  • iOS: IOSAgent from @midscene/ios

All three agents share the same AI methods below.

Mandatory Rule: Use aiAct for User-Described Steps

When the user describes a UI action or state confirmation in natural language, you MUST use aiAct to implement it. Do NOT decompose user instructions into aiTap/aiInput/aiAssert or other fine-grained APIs. Pass the user's intent directly to aiAct and let Midscene's AI handle the planning and execution.

// User says: "type iPhone in the search box and click search"// WRONG — manually decomposing into fine-grained APIsawait ctx.agent.aiInput('search box', { value: 'iPhone' });await ctx.agent.aiTap('search button');// CORRECT — pass intent directly to aiActawait ctx.agent.aiAct('type "iPhone" in the search box, then click the search button');

Assertions, data extraction, and waiting should also be done via aiAct — it handles all of these. Do NOT use aiAssert, aiQuery, aiWaitFor, aiTap, or aiInput separately.

aiAct(taskPrompt, opt?) — Primary API

aiAct is the primary API for all UI operations and state confirmations. It accepts natural language instructions and autonomously plans and executes multi-step interactions.

// UI operationsawait ctx.agent.aiAct('type "iPhone" in the search box, then click the search button');await ctx.agent.aiAct('hover over the user avatar in the top right');// State confirmations / assertions — also use aiActawait ctx.agent.aiAct('verify the page shows "Login successful"');await ctx.agent.aiAct('verify the error message is visible');

Prompt-driven File Uploads (Web only)

When an aiAct prompt asks Midscene to upload files, pass fileChooserAllowedDir explicitly. Use the smallest directory containing that test case's fixtures, and refer to files relative to it in the prompt. Do not use the project root or a home directory. Replace ./fixtures below with the fixture directory relative to the test process working directory.

await ctx.agent.aiAct(  'click the upload button and upload avatar.png',  { fileChooserAllowedDir: './fixtures' },);

Phase splitting: If the task prompt is too long or covers multiple distinct stages, split it into separate aiAct calls — one per phase. Each phase should be a self-contained logical step, and all phases combined must match the user's original intent.

// Incorrect — prompt spans multiple pages and too many steps, AI may lose context mid-wayawait ctx.agent.aiAct('click the settings button in the top nav, go to settings page, find personal info and click into it, change email to "[email protected]", change phone to "13800000000", click save, wait for success');// Correct — split by page/stage boundary, each phase stays within one logical contextawait ctx.agent.aiAct('click the settings button in the top nav, go to settings page, find personal info and click into it');await ctx.agent.aiAct('change email to "[email protected]", change phone to "13800000000", click save');await ctx.agent.aiAct('verify the save success message appears');

aiAction is deprecated. Use aiAct or ai instead.

Common Mistakes

  • Vague locators — 'button' is ambiguous; use 'the blue "Submit" button at the top of the page'
  • Deprecated aiAction — use aiAct instead
  • Ambiguous multi-element targets — specify row/position: 'the delete button in the first product row'

Agent Configuration — aiActionContext

aiActionContext is a system prompt string appended to all AI actions performed by the agent. Use it to define the AI's role and expertise.

// Set via agentOptions in setup()const ctx = WebTest.setup('https://example.com', {  agentOptions: {    aiActionContext: 'You are a Web UI testing expert.',  },});

Good examples:

  • 'You are a Web UI testing expert.'
  • 'You are an Android app testing expert who is familiar with Chinese UI.'

Bad examples:

  • 'Click the login button.' — specific actions belong in aiAct(), not aiActionContext
  • 'The page is in Chinese.' — this is page description, not a system prompt

How to Look Up More

  1. In node_modules/@midscene/web, node_modules/@midscene/android, and node_modules/@midscene/ios, find the type definitions for the agent classes
  2. If types are not enough, follow the source references in the .d.ts files to read the implementation code in node_modules
  3. Download https://midscenejs.com/llms.txt, then use grep to search for the API or concept you need (the file is large, do not read it in full)

Installer vitest-midscene-e2e

Téléchargez et décompressez les fichiers de compétences dans votre répertoire .claude/skills/.

Télécharger le ZIP

Clonez le dépôt et copiez les fichiers de compétence dans votre projet.

git clone https://github.com/web-infra-dev/midscene-skills/blob/main/skills/vitest-midscene-e2e/SKILL.md # Copy SKILL.md to your .claude/skills/ directory

Copier Copier
Configuration rapide: Copiez le dossier de la compétence dans .claude/skills/ ; Claude la détectera automatiquement et l'utilisera.

Compétences similaires

playwright-cli
Heure mise à jour 29 juin 2026
frontend-testing-best-practices
Heure mise à jour 7 juillet 2026
Playwright Browser Automation
Heure mise à jour 29 juin 2026
playwright-generate-test
Heure mise à jour 29 juin 2026
OR