ui-test
Teste automatiquement une interface utilisateur dans Chrome : navigation, clics, validation visuelle, tests fonctionnels, responsive, comportement et debug. Génère un rapport détaillé avec screenshots et optionnellement un GIF du parcours.
Best use case
ui-test is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Teste automatiquement une interface utilisateur dans Chrome : navigation, clics, validation visuelle, tests fonctionnels, responsive, comportement et debug. Génère un rapport détaillé avec screenshots et optionnellement un GIF du parcours.
Teams using ui-test should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/ui-test/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How ui-test Compares
| Feature / Agent | ui-test | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Teste automatiquement une interface utilisateur dans Chrome : navigation, clics, validation visuelle, tests fonctionnels, responsive, comportement et debug. Génère un rapport détaillé avec screenshots et optionnellement un GIF du parcours.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Chrome UI Test Skill ## Instructions à Exécuter **IMPORTANT : Exécute ce workflow étape par étape de manière proactive.** ## Usage ``` /chrome-ui-test:ui-test <URL> [options] ``` **Arguments :** - `<URL>` : URL de la page à tester (obligatoire) **Options :** - `--scenario="description"` : Scénario de test à exécuter (ex: "login avec email/password") - `--responsive` : Tester sur 3 tailles d'écran (mobile 375x667 + tablette 768x1024 + desktop 1920x1080) - `--mobile` : Tester uniquement sur mobile (375x667) - `--tablet` : Tester uniquement sur tablette (768x1024) - `--desktop` : Tester uniquement sur desktop (1920x1080) - `--visual` : Capturer des screenshots pour validation visuelle - `--debug` : Activer le mode debug (console logs, network requests) - `--gif` : Enregistrer un GIF du parcours utilisateur - `--viewport=WIDTHxHEIGHT` : Taille de fenêtre custom (ex: 1366x768) - `--help` : Afficher un résumé des actions qui seront effectuées (avec les options actives) et demander confirmation **Exemples :** ```bash # Test simple de navigation /chrome-ui-test:ui-test https://example.com # Test d'un scénario de login avec GIF /chrome-ui-test:ui-test https://app.example.com/login --scenario="login avec credentials valides" --gif # Test responsive (3 tailles : mobile + tablette + desktop) /chrome-ui-test:ui-test https://example.com --responsive --visual # Test mobile uniquement /chrome-ui-test:ui-test https://m.example.com --mobile --visual # Test desktop uniquement /chrome-ui-test:ui-test https://example.com --desktop # Debug d'une page avec erreurs /chrome-ui-test:ui-test https://example.com/broken-page --debug # Voir ce qui sera fait avant de lancer /chrome-ui-test:ui-test https://example.com --mobile --visual --help ``` ## Workflow ### Phase -1 : Mode Aide (si --help) **IMPORTANT : Cette phase s'exécute UNIQUEMENT si l'option --help est présente.** 1. **Analyser l'URL et les options** - URL cible : afficher l'URL qui sera testée - Options actives : lister toutes les options détectées 2. **Générer le résumé des actions** ``` 📋 RÉSUMÉ DU TEST UI 🎯 URL cible : [URL] 📐 Configuration viewport : [Si --responsive] → Tests sur 3 viewports (mobile 375x667, tablette 768x1024, desktop 1920x1080) [Si --mobile] → Test mobile uniquement (375x667) [Si --tablet] → Test tablette uniquement (768x1024) [Si --desktop] → Test desktop uniquement (1920x1080) [Si --viewport=WxH] → Viewport custom WxH [Sinon] → Viewport par défaut (1920x1080) 🎬 Actions prévues : 1. Créer un nouvel onglet Chrome dédié 2. [Si viewport spécifique] Redimensionner la fenêtre 3. [Si --gif] Démarrer l'enregistrement GIF 4. Naviguer vers l'URL 5. [Si --scenario] Exécuter le scénario : [description du scénario] 6. [Sinon] Explorer la page (tests basiques) 7. [Si --visual] Capturer des screenshots à chaque étape 8. [Si --debug] Analyser console logs et network requests 9. [Si --responsive] Répéter tests sur chaque viewport 10. [Si --gif] Arrêter enregistrement et exporter le GIF 11. Générer rapport détaillé ⚙️ Options actives : [Liste toutes les options avec leur signification] 📊 Résultats attendus : - Rapport Markdown : /tmp/claude-*/scratchpad/ui-test-report-[timestamp].md [Si --visual] - Screenshots : /tmp/claude-*/scratchpad/step-*.png [Si --gif] - GIF animé : téléchargé dans Downloads/ui-test-recording-*.gif [Si --responsive] - [X] screenshots (X par viewport) ⏱️ Durée estimée : [estimer selon options : 30s simple, 1-2min avec scénario, 2-3min responsive, etc.] ``` 3. **Demander confirmation** - Afficher : "Voulez-vous lancer ce test ? (oui/non)" - Attendre réponse utilisateur - Si "oui" ou "yes" ou "o" : continuer vers Phase 0 - Si "non" ou "no" ou "n" : arrêter et afficher "Test annulé" - Toute autre réponse : redemander ### Phase 0 : Initialisation (OBLIGATOIRE) 1. **Récupérer le contexte Chrome** ``` Utiliser mcp__claude-in-chrome__tabs_context_mcp avec createIfEmpty=true ``` 2. **Créer un nouvel onglet dédié** ``` Utiliser mcp__claude-in-chrome__tabs_create_mcp Stocker le tabId pour toutes les opérations suivantes ``` 3. **Présenter le plan à l'utilisateur** ``` Utiliser mcp__claude-in-chrome__update_plan avec : - domains: liste des domaines qui seront visités - approach: liste des actions qui seront effectuées ``` 4. **Configurer la fenêtre** - Si `--viewport=WxH` : utiliser `resize_window` avec les dimensions custom - Si `--mobile` : utiliser `resize_window` avec 375x667 - Si `--tablet` : utiliser `resize_window` avec 768x1024 - Si `--desktop` : utiliser `resize_window` avec 1920x1080 - Si `--responsive` : préparer liste des 3 viewports à tester (375x667, 768x1024, 1920x1080) - Sinon (aucune option) : viewport par défaut 1920x1080 5. **Démarrer l'enregistrement GIF (si --gif)** ``` Utiliser gif_creator avec action="start_recording" ``` ### Phase 1 : Navigation et Exploration 1. **Naviguer vers l'URL** ``` Utiliser navigate avec l'URL fournie et le tabId Attendre le chargement complet (wait 2-3 secondes) ``` 2. **Capturer screenshot initial (si --visual ou --gif)** ``` Utiliser computer avec action="screenshot" Sauvegarder avec nom descriptif ``` 3. **Lire la structure de la page** ``` Utiliser read_page pour obtenir l'arbre d'accessibilité Identifier les éléments clés : formulaires, boutons, liens ``` 4. **Mode debug (si --debug)** ``` - Lire console_messages avec pattern pertinent - Lire network_requests pour voir les appels API - Identifier erreurs JavaScript ou requêtes échouées ``` ### Phase 2 : Exécution du Scénario **Si `--scenario` est fourni :** 1. **Analyser le scénario** - Décomposer en étapes atomiques - Identifier les éléments à manipuler - Définir les validations attendues 2. **Exécuter chaque étape** ``` Pour chaque action : a. find ou read_page pour localiser l'élément b. computer (click/type) ou form_input pour interagir c. Attendre réaction (wait 1-2s) d. Vérifier résultat (read_page, console, network) e. Screenshot si --visual ``` 3. **Validations** - Vérifier les changements de page (navigate, URL) - Vérifier les messages d'erreur ou de succès - Vérifier les appels API (network_requests) - Vérifier la console (pas d'erreurs JS) **Sinon (exploration libre) :** 1. **Tests basiques** - Vérifier que la page charge sans erreur 404/500 - Vérifier absence d'erreurs JavaScript console - Tester les liens principaux (clic sur 2-3 liens majeurs) - Vérifier formulaires (remplir et valider un formulaire si présent) ### Phase 3 : Tests Responsive (si --responsive) **Viewports à tester :** - Mobile : 375x667 (iPhone) - Tablette : 768x1024 (iPad) - Desktop : 1920x1080 **Pour chaque viewport :** 1. `resize_window` avec les dimensions 2. `wait` 1 seconde pour le reflow 3. `screenshot` avec nom incluant la taille 4. `read_page` pour vérifier éléments visibles 5. Valider : - Pas d'overflow horizontal - Éléments empilés correctement - Pas d'éléments coupés - Menu mobile fonctionnel (si < 768px) ### Phase 4 : Génération du Rapport 1. **Arrêter l'enregistrement GIF (si --gif)** ``` - gif_creator avec action="stop_recording" - gif_creator avec action="export", download=true - Attendre téléchargement ``` 2. **Compiler les résultats** - Résumé des actions effectuées - Screenshots capturés (liste avec descriptions) - Erreurs détectées (console, network, visuel) - Validations réussies/échouées - Recommandations d'amélioration 3. **Créer rapport Markdown** ```markdown # Rapport de Test UI - [URL] **Date :** [timestamp] **Scénario :** [description ou "exploration libre"] **Viewport(s) :** [liste] ## Résumé - ✅ Tests réussis : X - ❌ Tests échoués : Y - ⚠️ Avertissements : Z ## Actions Effectuées 1. Navigation vers [URL] 2. [liste des actions] ## Résultats par Catégorie ### Navigation et Chargement - Page charge en Xs - [détails] ### Fonctionnalités - [résultats des interactions] ### Console et Erreurs - [erreurs JS trouvées] ### Network - [appels API, erreurs HTTP] ### Visuel (si --visual) - Screenshots : [liste avec chemins] ### Responsive (si --responsive) - Mobile : [résultat] - Tablette : [résultat] - Desktop : [résultat] ## Recommandations 1. [amélioration 1] 2. [amélioration 2] ## Fichiers Générés - GIF : [chemin] (si --gif) - Screenshots : [liste] ``` 4. **Sauvegarder le rapport** ``` Utiliser Write pour créer : /tmp/claude-*/scratchpad/ui-test-report-[timestamp].md ``` ## Gestion des Erreurs ### Erreurs de Navigation - URL invalide → arrêter et signaler - Page 404/500 → noter dans rapport et continuer - Timeout → réessayer 1 fois, puis noter ### Erreurs d'Interaction - Élément introuvable → noter et passer au suivant - Clic échoué → réessayer avec coordonnées ajustées - Formulaire non soumis → vérifier console/network ### Erreurs Chrome - Tab invalide → recreate tab avec tabs_create_mcp - Extension non responsive → attendre 5s max puis timeout ## Bonnes Pratiques 1. **Toujours attendre après interactions** - 1-2s après click/type - 2-3s après navigation - Éviter les race conditions 2. **Screenshots descriptifs** - Nommer : `step-01-homepage.png` - Capturer AVANT et APRÈS actions critiques 3. **GIF Recording** - Démarrer AVANT première action - Arrêter APRÈS dernière validation - Screenshot initial et final pour frames propres 4. **Console Logs** - Utiliser `pattern` pour filtrer (éviter spam) - Chercher `error|warn|failed` si debug - `clear=true` après lecture pour éviter doublons 5. **Network Requests** - Utiliser `urlPattern` si recherche spécifique - Vérifier status codes (4xx, 5xx) - Noter les API lentes (> 2s) ## Exemples de Scénarios ### Login Standard ``` --scenario="Je veux tester le login : 1. Remplir email avec test@example.com 2. Remplir password avec Test123! 3. Cliquer sur bouton Se connecter 4. Vérifier redirection vers dashboard" ``` ### Formulaire Contact ``` --scenario="Tester formulaire contact : 1. Remplir nom, email, message 2. Soumettre 3. Vérifier message de confirmation 4. Vérifier appel API POST réussi" ``` ### Navigation E-commerce ``` --scenario="Parcours d'achat : 1. Chercher 'laptop' 2. Cliquer sur premier résultat 3. Ajouter au panier 4. Aller au panier 5. Vérifier article présent" ``` ## Notes Importantes - **TOUJOURS** créer un nouvel onglet (tabs_create_mcp) au début - **TOUJOURS** utiliser le même tabId pour toutes les opérations - **JAMAIS** réutiliser un tabId d'une session précédente - **TOUJOURS** présenter le plan (update_plan) avant d'agir - Sauvegarder tous les fichiers dans le scratchpad - Mode debug active automatiquement console + network - GIF enregistre toutes les interactions automatiquement
Related Skills
fix-grammar
Fix grammar and spelling errors in one or multiple files while preserving formatting
symfony-framework
Comprehensive Symfony 6.4 development skill for web applications, APIs, and microservices.
symfony:make
Cherche si il existe un maker Symfony pour faire la tache demandée et l'utilise si il existe. Si aucun maker n'existe alors utilise la slash command "/prepare"
phpstan-resolver
Résout automatiquement les erreurs PHPStan en analysant et corrigeant les problèmes de types. Boucle jusqu'à zéro erreur ou stagnation.
elegant-objects
Vérifie la conformité du code PHP aux principes Elegant Objects de Yegor Bugayenko. Analyse un fichier spécifique ou tous les fichiers modifiés dans la branche.
prompt:validate
Vérifie la checklist avant exécution et liste les oublis
prompt:transform
Transforme un prompt en prompt exécutable compatible avec le Task Management System (TaskCreate/TaskUpdate/TaskList)
prompt:team
Orchestre une équipe d'agents spécialisés pour les tâches complexes. Auto-détecte le type, compose l'équipe, coordonne les phases analyse → challenge → implémentation → QA.
prompt:start
Démarre un développement avec un starter léger puis active le mode plan
apex
Systematic implementation using APEX methodology (Analyze-Plan-Execute-eXamine) with parallel agents, self-validation, and optional adversarial review. Use when implementing features, fixing bugs, or making code changes that benefit from structured workflow.
fix-errors
Fix all ESLint and TypeScript errors with parallel processing using snipper agents
prompt-creator
Expert prompt engineering for creating effective prompts for Claude, GPT, and other LLMs. Use when writing system prompts, user prompts, few-shot examples, or optimizing existing prompts for better performance.