Skip to content

Test responsive multi-device ★★ Intermédiaire ~8 min

Contexte

Vérifier que votre application s'affiche correctement sur mobile, tablette et desktop manuellement est fastidieux. Automatiser ces tests visuels permet de détecter rapidement les problèmes de responsive.

Objectif

Tester l'affichage responsive avec :

  • ✅ 3 viewports (mobile 375px, tablet 768px, desktop 1920px)
  • ✅ Screenshots de chaque page critique
  • ✅ Comparaison visuelle
  • ✅ Détection d'overflow/scroll horizontal
  • ✅ Rapport HTML avec grille d'images

Prérequis

Plugins :

Outils :

  • Google Chrome
  • Extension Claude in Chrome
  • Application web responsive

Configuration : Aucune configuration particulière nécessaire.

Workflow Étape par Étape

Phase 1 : Définir les pages à tester

Commande :

bash
/chrome-ui-test:ui-test --responsive

Pages à tester (exemple) :

1. Homepage : /
2. Product list : /products
3. Product detail : /products/1
4. Cart : /cart
5. Contact : /contact

Phase 2 : Test automatique multi-viewport

Que se passe-t-il ?

Pour chaque page, Claude :

  1. Mobile (375x667) :

    • Resize window à 375x667px
    • Navigate vers la page
    • Wait for load
    • Screenshot complet (avec scroll)
    • Check horizontal overflow
    • Check éléments tronqués
  2. Tablet (768x1024) :

    • Resize window à 768x1024px
    • Navigate vers la page
    • Screenshot complet
    • Vérifier layout tablet
  3. Desktop (1920x1080) :

    • Resize window à 1920x1080px
    • Navigate vers la page
    • Screenshot complet
    • Vérifier layout desktop

Output attendu :

📱 Test Responsive Multi-Device

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Page 1/5 : Homepage (/)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📱 Mobile (375x667)
  ✅ Resize window
  ✅ Navigate to /
  ✅ Screenshot : homepage-mobile.png
  ✅ No horizontal overflow
  ✅ Menu burger visible
  ✅ Content readable

📱 Tablet (768x1024)
  ✅ Resize window
  ✅ Navigate to /
  ✅ Screenshot : homepage-tablet.png
  ✅ Layout adapté
  ✅ Images responsive

🖥️  Desktop (1920x1080)
  ✅ Resize window
  ✅ Navigate to /
  ✅ Screenshot : homepage-desktop.png
  ✅ Full navigation visible
  ✅ Content centered

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Page 2/5 : Product list (/products)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📱 Mobile (375x667)
  ✅ Screenshot : products-mobile.png
  ✅ Grid : 1 column
  ✅ Cards stacked

📱 Tablet (768x1024)
  ✅ Screenshot : products-tablet.png
  ✅ Grid : 2 columns
  ⚠️  Warning: Small images

🖥️  Desktop (1920x1080)
  ✅ Screenshot : products-desktop.png
  ✅ Grid : 4 columns
  ✅ Layout optimal

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Page 3/5 : Product detail (/products/1)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📱 Mobile (375x667)
  ✅ Screenshot : product-detail-mobile.png
  ❌ Error: Horizontal scroll detected (420px width)
  ❌ Image overflow container

📱 Tablet (768x1024)
  ✅ Screenshot : product-detail-tablet.png
  ✅ Layout OK

🖥️  Desktop (1920x1080)
  ✅ Screenshot : product-detail-desktop.png
  ✅ Layout OK

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 RÉSULTAT TEST RESPONSIVE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Pages testées : 5
Viewports : 3 (mobile, tablet, desktop)
Screenshots : 15

Statut : ⚠️  ISSUES FOUND

Problèmes détectés :
❌ Product detail - Mobile : Horizontal overflow (420px)
⚠️  Products list - Tablet : Images too small

Fichiers générés :
- responsive-report-2026-02-01.html (grille comparative)
- screenshots/ (15 images)

Ouvrir rapport : file:///path/to/responsive-report-2026-02-01.html

Phase 3 : Rapport HTML visuel

Le rapport HTML généré contient une grille comparative :

html
<!DOCTYPE html>
<html>
<head>
  <title>Responsive Test Report</title>
  <style>
    .grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
    .card { border: 1px solid #ddd; padding: 10px; }
    .card img { width: 100%; }
    .error { border-color: red; }
    .warning { border-color: orange; }
    .success { border-color: green; }
  </style>
</head>
<body>
  <h1>Responsive Test Report</h1>

  <h2>Homepage (/)</h2>
  <div class="grid">
    <div class="card success">
      <h3>📱 Mobile (375x667)</h3>
      <img src="homepage-mobile.png" />
      <p>✅ All checks passed</p>
    </div>
    <div class="card success">
      <h3>📱 Tablet (768x1024)</h3>
      <img src="homepage-tablet.png" />
      <p>✅ All checks passed</p>
    </div>
    <div class="card success">
      <h3>🖥️ Desktop (1920x1080)</h3>
      <img src="homepage-desktop.png" />
      <p>✅ All checks passed</p>
    </div>
  </div>

  <h2>Product detail (/products/1)</h2>
  <div class="grid">
    <div class="card error">
      <h3>📱 Mobile (375x667)</h3>
      <img src="product-detail-mobile.png" />
      <p>❌ Horizontal overflow: 420px</p>
      <p>❌ Image overflow container</p>
    </div>
    <!-- ... -->
  </div>
</body>
</html>

Exemple Complet

Scénario : E-commerce responsive

Pages critiques :

  1. Homepage
  2. Category page
  3. Product detail
  4. Cart
  5. Checkout

Commande :

bash
/chrome-ui-test:ui-test --responsive --pages="/,/category/laptops,/product/123,/cart,/checkout"

Problèmes détectés :

Mobile :

  • ❌ Product detail : image déborde (600px dans container 375px)
  • ❌ Checkout : formulaire tronqué
  • ⚠️ Cart : boutons trop petits (< 44px touch target)

Tablet :

  • ⚠️ Homepage : hero image pixelisée
  • ✅ Autres pages OK

Desktop :

  • ✅ Toutes pages OK

Corrections appliquées :

1. Image responsive (product detail) :

css
/* Avant */
.product-image {
  width: 600px;
}

/* Après */
.product-image {
  width: 100%;
  max-width: 600px;
  height: auto;
}

2. Formulaire checkout (mobile) :

css
/* Avant */
.checkout-form {
  width: 500px;
}

/* Après */
.checkout-form {
  width: 100%;
  max-width: 500px;
  padding: 0 15px;
}

@media (max-width: 767px) {
  .checkout-form input {
    font-size: 16px; /* Évite zoom iOS */
  }
}

3. Touch targets (cart) :

css
/* Avant */
.cart-button {
  padding: 5px 10px;
}

/* Après */
@media (max-width: 767px) {
  .cart-button {
    padding: 12px 20px; /* Min 44x44px */
    min-height: 44px;
  }
}

Résultat après corrections :

📱 Test Responsive - Après corrections

Pages testées : 5
Issues : 0 ❌ → ✅
Warnings : 2 ⚠️ → 0 ✅

✅ PASSED - Application fully responsive

Variantes

Viewports personnalisés

bash
/chrome-ui-test:ui-test --viewports="320x568,375x667,414x896,768x1024,1366x768,1920x1080"

Viewports courants :

  • iPhone SE : 320x568
  • iPhone 12 : 390x844
  • iPhone 12 Pro Max : 428x926
  • iPad : 768x1024
  • iPad Pro : 1024x1366
  • Desktop HD : 1920x1080
  • Desktop 4K : 3840x2160

Test landscape/portrait

bash
/chrome-ui-test:ui-test --orientations

Teste chaque viewport en portrait ET landscape.

Comparaison visuelle

bash
/chrome-ui-test:ui-test --visual-diff

Compare screenshots avec baseline et détecte différences visuelles.

Troubleshooting

Horizontal scroll détecté

Symptôme : Horizontal overflow: 420px in 375px viewport

Debug :

javascript
// Trouver l'élément qui déborde
javascript_tool(`
  const elements = document.querySelectorAll('*');
  elements.forEach(el => {
    if (el.scrollWidth > window.innerWidth) {
      console.log('Overflow:', el, 'Width:', el.scrollWidth);
      el.style.outline = '2px solid red';
    }
  });
`)

Solutions courantes :

css
/* Fix global */
* {
  box-sizing: border-box;
}

body {
  overflow-x: hidden; /* Dernier recours */
}

/* Fix images */
img {
  max-width: 100%;
  height: auto;
}

/* Fix containers */
.container {
  width: 100%;
  max-width: 1200px;
  padding: 0 15px;
}

Screenshots incomplets

Symptôme : Screenshot ne capture que le viewport, pas la page complète

Solution :

bash
/chrome-ui-test:ui-test --full-page-screenshots

Éléments cachés en mobile

Symptôme : Navigation desktop visible en mobile

Solution :

css
/* Desktop menu */
@media (min-width: 768px) {
  .mobile-menu { display: none; }
  .desktop-menu { display: block; }
}

/* Mobile menu */
@media (max-width: 767px) {
  .desktop-menu { display: none; }
  .mobile-menu { display: block; }
}

Images pixelisées

Symptôme : Images floues sur tablet/desktop

Solution :

html
<!-- Avant -->
<img src="image-small.jpg" />

<!-- Après : srcset responsive -->
<img
  src="image-medium.jpg"
  srcset="
    image-small.jpg 400w,
    image-medium.jpg 800w,
    image-large.jpg 1600w
  "
  sizes="
    (max-width: 767px) 100vw,
    (max-width: 1023px) 50vw,
    33vw
  "
  alt="Product"
/>

Liens Connexes

Use cases :

Plugins :

Documentation externe :

Tips & Best Practices

✅ Bonnes pratiques

Mobile-first :

css
/* Base styles (mobile) */
.card {
  width: 100%;
  padding: 15px;
}

/* Tablet */
@media (min-width: 768px) {
  .card {
    width: 50%;
  }
}

/* Desktop */
@media (min-width: 1024px) {
  .card {
    width: 33.333%;
  }
}

Touch targets :

  • Minimum 44x44px (iOS/Android guidelines)
  • Espacement 8px entre éléments cliquables
  • Éviter hover-only interactions

Performance :

html
<!-- Lazy load images hors viewport -->
<img loading="lazy" src="image.jpg" />

<!-- Preload critical images -->
<link rel="preload" as="image" href="hero.jpg" />

🔍 Breakpoints recommandés

Framework-agnostic :

css
/* Mobile small */
@media (min-width: 320px) { }

/* Mobile large */
@media (min-width: 375px) { }

/* Tablet portrait */
@media (min-width: 768px) { }

/* Tablet landscape / Desktop small */
@media (min-width: 1024px) { }

/* Desktop medium */
@media (min-width: 1280px) { }

/* Desktop large */
@media (min-width: 1920px) { }

Tailwind CSS :

  • sm: 640px
  • md: 768px
  • lg: 1024px
  • xl: 1280px
  • 2xl: 1536px

Bootstrap :

  • xs: < 576px
  • sm: ≥ 576px
  • md: ≥ 768px
  • lg: ≥ 992px
  • xl: ≥ 1200px
  • xxl: ≥ 1400px

🎯 Checklist responsive

Layout :

  • [ ] Pas de scroll horizontal
  • [ ] Contenu lisible sans zoom
  • [ ] Navigation accessible
  • [ ] Formulaires utilisables

Images :

  • [ ] Responsive (max-width: 100%)
  • [ ] srcset pour HD displays
  • [ ] Lazy loading
  • [ ] Alt text présent

Performance :

  • [ ] Fonts web optimisées
  • [ ] CSS minifié
  • [ ] Images compressées
  • [ ] Critical CSS inline

Accessibilité :

  • [ ] Touch targets ≥ 44px
  • [ ] Contraste suffisant
  • [ ] Texte redimensionnable
  • [ ] Navigation clavier

Checklist Validation

Avant le test :

  • [ ] Pages critiques identifiées
  • [ ] Viewports définis
  • [ ] Application accessible

Pendant le test :

  • [ ] Screenshots capturés pour chaque viewport
  • [ ] Overflow détecté
  • [ ] Layout vérifié
  • [ ] Touch targets validés

Après le test :

  • [ ] Rapport HTML généré
  • [ ] Problèmes documentés
  • [ ] Corrections appliquées
  • [ ] Re-test après fixes
  • [ ] 0 erreur responsive

Publié sous licence MIT