Communitygithub.com

vitest-midscene-e2e (web-infra-dev)

Potencia Vitest con Midscene para pruebas de UI impulsadas por IA en Web (Playwright), Android (ADB) e iOS (WDA). Crea, actualiza, depura y ejecuta pruebas E2E usando interacciones en lenguaje natural.

¿Qué es vitest-midscene-e2e (web-infra-dev)?

Esta habilidad integra Midscene en Vitest para habilitar pruebas de interfaz de usuario (UI) E2E impulsadas por inteligencia artificial, permitiendo que los desarrolladores describan interacciones complejas en lenguaje natural sin necesidad de selectores CSS, XPath o IDs específicos. Soporta tres plataformas principales: Web a través de Playwright, Android mediante ADB (Android Debug Bridge) e iOS a través de WDA (WebDriverAgent). La habilidad puede crear proyectos de prueba desde cero (scaffolding), convertir proyectos existentes de Vitest para usar Midscene, y gestionar el ciclo de vida completo de las pruebas E2E: escritura, adición, actualización, depuración y ejecución. Su utilidad principal es reducir drásticamente el tiempo y la complejidad de las pruebas E2E, ya que el usuario solo describe la acción deseada (por ejemplo, "haz clic en el botón de inicio de sesión y escribe una contraseña incorrecta") y Midscene se encarga de la localización del elemento y la ejecución. Es particularmente útil para equipos que ya usan Vitest y buscan una transición suave a un modelo de pruebas más adaptable y mantenible, o para aquellos que quieren arrancar nuevos proyectos con capacidades de IA desde el inicio.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/web-infra-dev/midscene-skills/tree/main/skills/vitest-midscene-e2e

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace vitest-midscene-e2e (web-infra-dev)?

Potencia Vitest con Midscene para realizar pruebas de UI impulsadas por IA en Web (Playwright), Android (ADB) e iOS (WDA). Crea proyectos desde cero, convierte proyectos existentes y genera, actualiza, depura y ejecuta pruebas E2E usando interacciones en lenguaje natural. Disparadores: write test, add test, create test, update test, fix test, debug test, run test, e2e test, midscene test, new project, convert project, init project, 写测试, 加测试, 创建测试, 更新测试, 修复测试, 调试测试, 运行测试, 新建工程, 转化工程.

Características

  • Pruebas en Lenguaje Natural: Describe las interacciones de UI en lenguaje natural (por ejemplo, "haz clic en el botón de inicio de sesión") y Midscene se encarga de localizar y actuar sobre los elementos.
  • Soporte Multiplataforma: Prueba en Web (Playwright), Android (ADB) e iOS (WDA) con el mismo conjunto de pruebas.
  • Inicio Rápido de Proyectos: Crea un nuevo proyecto de pruebas E2E con Vitest y Midscene preconfigurados usando create-midscene.
  • Conversión de Proyectos: Convierte un proyecto existente de Vitest para que soporte Midscene sin perder la configuración actual.
  • Ciclo de Vida Completo de Pruebas: Crea, añade, actualiza, depura y ejecuta pruebas E2E directamente desde el agente de IA.

Instalación

No se requiere instalación manual. El agente de IA gestiona la configuración automáticamente. Para un nuevo proyecto, ejecuta el comando de inicialización:

# El agente ejecutará esto por ti
npx create-midscene@latest

Para un proyecto existente de Vitest, el agente añadirá @midscene/vitest como dependencia de desarrollo y configurará el archivo vitest.config.ts.

Uso

Nuevo Proyecto

  1. Ejecuta el disparador: new project o init project.
  2. El agente creará una estructura de proyecto con:
    • vitest.config.ts con la configuración de Midscene.
    • Un archivo de prueba de ejemplo (example.test.ts).
    • Un archivo midscene.config.ts con las opciones de configuración.

Pruebas en un Proyecto Existente

  1. Selecciona una prueba o pide: add test o write test.
  2. Describe la interacción de UI en lenguaje natural (por ejemplo, "Quiero una prueba que navegue a la página de inicio, busque 'midscene' y verifique que aparezcan resultados").
  3. El agente generará el código de la prueba usando los asistentes de Midscene (page.ai, page.aiQuery, page.aiWaitFor).

Depuración y Ejecución

  • Depurar: Usa debug test para ejecutar la prueba en modo interactivo (por ejemplo, con --ui de Vitest).
  • Ejecutar: Usa run test o e2e test para ejecutar la prueba en modo headless.

Ejemplo de Código Generado

import { describe, it, expect } from 'vitest';
import { getPage } from '@midscene/vitest';

describe('Inicio de sesión', () => {
  it('debería mostrar error con credenciales inválidas', async () => {
    const page = await getPage();
    await page.ai('Navega a https://example.com/login');
    await page.ai('Escribe "usuario_invalido" en el campo de nombre de usuario');
    await page.ai('Escribe "contraseña_incorrecta" en el campo de contraseña');
    await page.ai('Haz clic en el botón "Iniciar sesión"');
    const errorMessage = await page.aiQuery('el mensaje de error');
    expect(errorMessage.text).toContain('Credenciales inválidas');
  });
});

Configuración Adicional

Variables de Entorno

  • MIDSCENE_MODEL_NAME: Nombre del modelo de IA a usar (por defecto: gpt-4o).
  • MIDSCENE_API_KEY: Clave API para el modelo de IA.
  • MIDSCENE_DEVICE: Dispositivo de destino (web, android, ios).

Archivo midscene.config.ts

import { defineConfig } from '@midscene/vitest';

export default defineConfig({
  model: 'gpt-4o',
  apiKey: process.env.MIDSCENE_API_KEY,
});

Solución de Problemas

  • La prueba falla en Android/iOS: Asegúrate de que el emulador o dispositivo físico esté conectado y que ADB (para Android) o WDA (para iOS) esté funcionando.
  • Midscene no encuentra el elemento: Verifica que el modelo de IA tenga una descripción clara de la acción. Usa page.aiWaitFor para esperar a que un elemento esté visible.
  • Problemas de autenticación: Configura la variable de entorno MIDSCENE_API_KEY correctamente.

Más Información

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

web-infra-dev/android-device-automation

Vision-driven Android device automation using Midscene. Operates entirely from screenshots — no DOM or accessibility labels required. Can interact with all visible elements on screen regardless of technology stack. Control Android devices with natural language commands via ADB. Perform taps, swipes, text input, app launches, screenshots, and more. Trigger keywords: android, phone, mobile app, tap, swipe, install app, open app on phone, android device, mobile automation, adb, launch app, mobile screen, test android app, verify mobile app, QA on phone, check the app on android, test on device, see if the app works on phone, end-to-end test on android, visual verification on mobile Powered by Midscene.js (https://midscenejs.com)

web-infra-dev/browser-automation

Vision-driven browser automation using Midscene. Operates from screenshots — no DOM or accessibility labels needed. Runs in headless Puppeteer — does NOT take over the user's mouse or keyboard. Also supports CDP mode and Bridge mode to connect to an existing Chrome. Use this skill when the user wants to: - Browse, navigate, or open web pages - Scrape, extract, or collect data from websites - Fill out forms, click buttons, or interact with web elements - Verify, validate, test, or QA frontend UI behavior - Take screenshots of web pages - Automate multi-step web workflows - Test what was just built, see if it works in browser - Connect to Chrome via CDP, DevTools Protocol, or remote debugging - Connect to user's Chrome browser, control my browser, operate my Chrome Powered by Midscene.js (https://midscenejs.com)

web-infra-dev/desktop-computer-automation

Vision-driven desktop automation using Midscene. Control your local desktop (macOS, Windows, Linux) or a remote Windows desktop over RDP with natural language commands. Operates entirely from screenshots — no DOM or accessibility labels required. Can interact with all visible elements on screen regardless of technology stack. ⚠️ In local mode this takes over the user's real mouse and keyboard. For web apps, prefer "Browser Automation" instead. Only use this for desktop-native apps (Electron, Qt, native macOS/Windows/Linux) that cannot run in a browser, or for driving a remote Windows host via RDP. Triggers: open app, press key, desktop, computer, click on screen, type text, screenshot desktop, launch application, switch window, desktop automation, control computer, mouse click, keyboard shortcut, screen capture, find on screen, read screen, verify window, close app, test Electron app, rdp, remote desktop, windows server, connect via rdp Powered by Midscene.js (https://midscenejs.com)

web-infra-dev/harmonyos-device-automation

Vision-driven HarmonyOS NEXT device automation using Midscene. Operates entirely from screenshots — no DOM or accessibility labels required. Can interact with all visible elements on screen regardless of technology stack. Control HarmonyOS devices with natural language commands via HDC. Perform taps, swipes, text input, app launches, screenshots, and more. Trigger keywords: harmony, harmonyos, 鸿蒙, hdc, huawei device, harmony app, harmony automation, harmony phone, harmony tablet, test harmony app, verify on harmonyos, QA on 鸿蒙, check the app on harmony, test on huawei device, see if the app works on harmony, end-to-end test on harmonyos, visual verification on 鸿蒙 Powered by Midscene.js (https://midscenejs.com)

web-infra-dev/ios-device-automation

Vision-driven iOS device automation using Midscene CLI. Operates entirely from screenshots — no DOM or accessibility labels required. Can interact with all visible elements on screen regardless of technology stack. Control iOS devices with natural language commands via WebDriverAgent. Triggers: ios, iphone, ipad, ios app, tap on iphone, swipe, mobile app ios, ios device, ios testing, iphone automation, ipad automation, ios screen, ios navigate, test ios app, verify on iphone, QA on ipad, check the app on ios, test on ios device, see if the app works on iphone, end-to-end test on ios, visual verification on ios Powered by Midscene.js (https://midscenejs.com)

Skills relacionados