Gérer les CAPTCHA dans vos tests automatisés avec Wolfpack

Les CAPTCHA sont conçus pour détecter les utilisateurs humains et éviter les robots malveillants, mais ils peuvent être un obstacle lors de l'automatisation des tests. Ce guide vous aidera à gérer les CAPTCHA dans vos tests avec Wolfpack, en vous donnant des astuces et des solutions de contournement.

Solution 1 (recommandée) - Configurer le service CAPTCHA pour les tests automatisés sur les environnements de test

Pour contourner les CAPTCHA lors de tests automatisés, il est également possible de configurer le service CAPTCHA pour reconnaître les requêtes de test et les bypasser. Voici quelques approches que vous pouvez utiliser selon votre fournisseur de CAPTCHA :

  • Clés de test : Certains services CAPTCHA proposent des clés spécifiques destinées aux environnements de test. Ces clés permettent d'utiliser les fonctionnalités CAPTCHA sans empêcher les tests automatisés.
  • Configuration d'environnement : Configurez votre service CAPTCHA pour désactiver la vérification dans des environnements spécifiques (comme un environnement de staging). De cette manière, les CAPTCHA ne seront pas un obstacle pendant vos tests automatisés.
  • Utilisation de whitelists : Si votre service CAPTCHA le permet, ajoutez les adresses IP de vos environnements de test à une whitelist pour éviter la présentation de CAPTCHA pendant les tests.

Focus sur reCAPTCHA

Si vous utilisez reCAPTCHA, voici quelques stratégies spécifiques pour faciliter les tests automatisés :

  • Utiliser la clé de test reCAPTCHA (V2 uniquement): Google propose des clés de test publiques qui renvoient toujours des réponses valides ou invalides pour faciliter l'automatisation des tests. Vous pouvez utiliser les clés suivantes :
    • Site Key : 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
    • Secret Key : 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWeCes clés fonctionnent uniquement en mode test et ne sont pas destinées à un usage en production.
  • Désactiver reCAPTCHA en environnement de staging : Ajoutez une logique conditionnelle dans votre application pour désactiver reCAPTCHA lorsque l'application est exécutée dans un environnement de staging ou de test.
  • Simuler les réponses : Pour les tests locaux, vous pouvez simuler des réponses de reCAPTCHA directement dans votre code, en fonction de certains headers ou paramètres de requête indiquant qu'il s'agit d'un test automatisé.

Ces solutions permettent de gérer efficacement les CAPTCHA dans des contextes de tests automatisés, sans altérer la sécurité de votre application en production.

Solution 2 (si vous devez absolument tester en mode production) - Utiliser les headers personnalisés pour bypasser les CAPTCHA

2.2 Configurez votre projet pour utiliser le header de bypass

Dans Wolfpack, vous pouvez ajouter des headers personnalisés dans les réglages de votre projet, dans l'onglet Browser. Pour contourner les CAPTCHA lors de vos tests, il est possible d'utiliser un header spécifique qui vous permet d'indiquer que la requête provient d'un test automatisé.

Voici les étapes à suivre :

  1. Allez dans les réglages de votre projet, puis dans l'onglet Browser.
  2. Ajoutez un header personnalisé, par exemple :
    • Clé : x-test-auth
    • Valeur : votre-token-secret

Assurez-vous que votre serveur reconnaisse ce header pour décider de bypasser le CAPTCHA.

2.1 Modifier le code de votre app pour faciliter les tests

Pour faciliter l'automatisation de vos tests sur votre propre site, en mode production, vous pouvez ajouter une logique qui permet de contourner le CAPTCHA uniquement pour des comptes de test autorisés. Voici un exemple de code que vous pouvez implémenter dans votre serveur pour y parvenir :

    
// Configuration des comptes de test autorisés
const secureTestUsers = {
  email: ['test@votredomaine.com'],
  token: ['votre-token-secret']
};

// Middleware de vérification
const bypassSecurityForTests = async (req, res, next) => {
  const testHeader = req.headers['x-test-auth'];
  const userEmail = req.body.email;

  if (
    process.env.ALLOW_TEST_BYPASS === 'true' &&
    secureTestUsers.token.includes(testHeader) &&
    secureTestUsers.email.includes(userEmail)
  ) {
    // Bypass sécurité uniquement pour les comptes de test autorisés
    req.skipRecaptcha = true;
    return next();
  }
  // Sinon, continuer avec la sécurité normale
  next();
};
    

Avec ce middleware, lorsque la variable d'environnement ALLOW_TEST_BYPASS est activée, les requêtes provenant de comptes de test autorisés (identifiés par l'email et le token secret) peuvent bypasser les CAPTCHA, facilitant ainsi vos tests automatisés.

3. Bonnes pratiques pour les tests automatisés avec CAPTCHA

  • Utilisez des environnements de test : Si possible, déployez votre application dans un environnement de test où les CAPTCHA sont désactivés.
  • Utilisez des comptes de test : Limitez le contournement des CAPTCHA à des comptes de test spécifiques pour garantir la sécurité de votre application.
  • Gardez une trace des évolutions : Les services CAPTCHA peuvent évoluer. Assurez-vous de mettre à jour votre logique de bypass en fonction des changements effectués.

4. Limitations

Gardez à l'esprit que bypasser les CAPTCHA nécessite souvent des modifications du code serveur et peut ne pas être possible pour les services tiers. Pour les sites que vous ne contrôlez pas, envisagez d'utiliser des solutions de contournement spécifiques, comme l'utilisation de services tiers pour résoudre les CAPTCHA manuellement.

managing-captcha-in-your-automated-tests-with-wolfpack