Table of Contents | ||||
---|---|---|---|---|
|
Pré-requis
Configurer le téléphone pour exécuter les tests : Settings > Developer > cocher « Enable UI Automation »
Télécharger l’environnement de développement pour macOS Xcode (disponible sur App Store)
Disposer de versions compatibles de Xcode, macOS et iOS : https://developer.apple.com/fr/support/xcode/ (éviter la version 13.3.1 d’iOS)
Pour tester un téléphone avec iOS 15.4, il est nécessaire d’avoir Xcode 13.3 et un macOS 12.3 Monterey. Cette version de macOS est disponible sur les MacBook Pro commercialisés à partir de 2015. Elle permet également de tester les téléphones ayant une version d’iOS antérieure.
Etape 1 : Installation du WebDriverAgent
WebDriverAgent est un serveur WebDriver initié par Facebook puis repris par Appium pour automatiser des actions utilisateur sur les appareils iOS. Ce projet constitue la base de notre solution d’automatisation.
...
Le projet Xcode se trouve alors dans le répertoire node_modules : /usr/local: [NPM_ROOT_PATH]/appium-webdriveragent/WebDriverAgent.xcodeproj
Il faut remplacer NPM_ROOT_PATH par le résultat de la commande npm root -g
.
Exemple :
Résultat de la commande
npm root -g
: /opt/homebrew/lib/node_modulesPath du projet Xcode : /opt/homebrew/lib/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj
Etape 2 : Préparation du WebDriverAgent sur Xcode pour la première utilisation
Ouvrir un terminal et aller où se trouve le projet :
Code Block |
---|
cd /usr/local/lib/node_modules[NPM_ROOT_PATH]/appium-webdriveragent/ |
Ouvrir le projet :
...
Faire les mêmes actions en sélectionnant IntegrationApp parmi les targets.
Dans le choix de la cible en haut de Xcode, choisir WebDriverAgentRunner et le bon téléphone.
...
Etape 3 : Installation du WebDriverAgent sur le téléphone [Commencer directement à cette étape si Xcode est déjà configuré]
Info |
---|
Vérifier si la connexion se fait automatiquement entre le téléphone et le Mac dans Xcode > Window > Devices and Simulators. Une icône “planète” doit apparaître à côté du nom du téléphone. Si ce n’est pas le cas :
|
Compiler le projet : Product > Build
Lancer le WebDriverAgent (WDA) : Product > Perform Action > Test Without Building
Le WDA est installé sur le téléphone. On s’attend à une erreur car le développeur n’est pas identifié sur le téléphone. On l’autorise à partir de l’iPhone : Settings > General > Device management. On relance le test depuis Xcode : Product > Perform Action > Test Without Building. Le WebDriverAgent est alors prêt à recevoir des requêtes pour l’automatisationArrêter le test en cliquant sur l’icône carré.
...
Etape
...
4 : Lancement du WebDriverAgent à partir du testrunner
Récupérer le testrunner sur https://app.greenspector.com, dans l’onglet Modules, et le placer dans un dossier (par exemple “testrunner_files”).
Ajouter dans ce dossier les fichiers de configuration config_ios.yml et job_ios.yml, ainsi qu'un script gdsl avec l’extension “testgb”.
Modifier ces fichiers pour qu’ils correspondent à la mesure souhaitée.
Exemple d’un fichier config_ios.yml :
Code Block | ||||
---|---|---|---|---|
| ||||
platform: ios # The platform you are testing on [mobile | pc] resultPath: ./greenspector # The path where you want the Testrunner to save the tests results. defaults to ./greenspector/measures target: # target bloc for iOS mode ip: 192.168.10.52 #Olivier’s iPhone udid: 42df71bb47bb61cca72559672128f1fbb5184a62 #Olivier’s iPhone name: Olivier's iPhone lang: en paths: webDriverAgent: /usr/local/lib/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj # Full path to WebDriverAgent xcodeproject ios-deploy: /usr/local/bin/ios-deploy # Path to ios-deploy. Leave this empty if ios-deploy is in your PATH greenspector: server: https://app.greenspector.com # URL of your Greenspector instance token: XXXXX # Your private token registered on Greenspectors |
Le champ udid correspond à l'identifiant unique de l'appareil, trouvable grâce à Xcode (Window > Devices and Simulators).
Exemple d’un fichier job_ios.yml :
Code Block | ||||
---|---|---|---|---|
| ||||
mode: custom # apk | url | custom greenspector: application: name: TestLeo # Your application's name version: "REFERENCE (iOS)" # Your application's version job: # Custom job android apk testsSuites: - name: suite1 testFiles: - "./testreference.testgb" iterations: 1 # Number of iteration for each test case testTimeout: 30m0s # Timeout for the total duration of the test, default value is 30m, max value is 60m online: true # [true, false] modules: hardware_probe: false |
Exemple d’un script gdsl simple testant l’application YouTube :
...
Ouvrir un terminal à l’intérieur de ce dossier
Autoriser l’exécution du testrunner
...
language | bash |
---|
Lancer le testrunner :
Code Block | ||
---|---|---|
| ||
./testrunner --jobFile job_ios.yml --config config_ios.yml |
Info |
---|
Lors du 1er lancement du testrunner, il est nécessaire d’autoriser son exécution :
|
Outils pour inspecter les applications et les sites web sur iOS
Appium Desktop Server GUI : https://github.com/appium/appium-desktop
Appium Inspector : https://github.com/appium/appium-inspector
...
Ouvrir le projet WebDriverAgent sur Xcode
Lancer l’automatisation : Product > Perform Action > Test Without Building
Ouvrir Appium DesktopServer GUI
Cliquer sur “Start Server”
Ouvrir Appium Inspector
Compléter le champ “Remote Path” : /wd/hub
Compléter le champ “Json Representation” avec les informations relatives à votre téléphone :
...
Sur Appium Inspector, l'écran du téléphone apparaît. Il est alors possible de sélectionner les éléments de l'écran pour visualiser leurs informations (name, label…), mais aussi de réaliser directement des scrolls et des clics. Les fonctions du type clickByText, searchByText, waitUntilText et setTextByText recherchent le label des éléments, puis le name.
Documentation du GDSL sur iOS
Erreurs possibles
Warning |
---|
A test configuration must be provided to _XCTestMain” sur Xcode |
...
→ Désinstaller le WebDriverAgent sur le téléphone, et le réinstaller en suivant la procédure habituelle (Voir la fin de l'étape 2 à partir de la compilation du projet3).
Warning |
---|
xcodebuild: error: Unable to find a destination matching the provided destination specifier. |
...