Tester rapidement un site mobile avec Behat

Cet article a été publié depuis plus de 6 mois, cela signifie que le contenu peut ne plus être d'actualité.

J'utilise Behat au quotidien pour écrire mes tests fonctionnels. J'ai récemment eu besoin de mettre en place des tests pour un site mobile conjointement aux tests existant sur le projet. N'ayant que peu de temps alloué sur le projet, j'ai dû mettre en place des derniers très rapidement.

Pour cela, la solution qui me semblait la plus évidente était de modifier le user-agent du navigateur utilisé en le remplaçant par celui d'un appareil mobile. Or j'utilise Behat avec le driver Selenium2 qui n'autorise pas cette modification.

Les navigateurs modernes sont capables de gérer différentes configurations au travers d'un gestionnaire de profils. Une autre solution consiste alors à utiliser ces derniers en créant un profil qui aurait le user-agent voulu. Mes tests étant exécutés par Firefox, il suffit de démarrer ce dernier avec l'option -p pour ouvrir le gestionnaire de profil.

Une fois le nouveau profil créé, nous allons accéder à l'interface de configuration de Firefox en saisissant about:config dans la barre d'adresse. Il ne reste plus qu'à ajouter une nouvelle clé de configuration (si elle n'existe pas) nommée general.useragent.override en lui donnant la valeur désirée (dans mon cas un iPhone 4S utilisant Safari Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7).

Il ne reste plus qu'à créer une archive ZIP contenant le profil que l'on vient d'ajouter. Ces derniers se trouvent dans les dossiers suivants :

  • Mac : /Users/<loginUtilisateur>/Library/Application\ Support/Firefox/Profiles/<identifiant.NomDuProfil>
  • Linux : ~/.mozilla/firefox/<identifiant.NomDuProfil>
  • Windows : C:\Users\<loginUtilisateur>\AppData\Roaming\Mozilla\Firefox\Profiles\<identifiant.NomDuProfil>

Maintenant il ne nous reste plus qu'à configurer un nouveau profil Behat pour l'exécution de nos tests avec ce nouvel environnement. Voici une configuration type que j'utilise dans mes projets Symfony2 :

mobile:
    paths:
        features: features/mobile
        bootstrap: %behat.paths.features%/bootstrap
    extensions:
        Behat\Symfony2Extension\Extension:
            mink_driver: true
            kernel:
                env: test
                debug: true
        Behat\MinkExtension\Extension:
            base_url: http://localhost:8000/app_test.php
            browser_name: firefox
            goutte: ~
            selenium2:
                capabilities:
                    firefox:
                        profile: '/chemin/vers/le/profil/firefox-mobile.zip'

Vous pouvez maintenant lancer vos tests avec un navigateur mobile en exécutant behat : bin/behat --profile mobile.

Cette installation rapide est surtout destinée à pouvoir écrire des tests fonctionnels rapidement et peut convenir pour des projets de faibles envergures. De plus elle ne fonctionne que pour des sites Web devant fonctionner sur mobile. Pour des tests plus pérennes ou pour des projets plus conséquents il conviendra d'utiliser des outils spécialisés dans les tests mobiles tels que SauceLabs, Appium, Selendroid, ios-driver.