Intégration continue
Actuellement, nous proposons deux produits :
- Repeato Studio : Une application de bureau qui vous permet de créer et de modifier facilement des tests et des lots de tests ➡ Documentation
- Repeato CLI : Une application d’exécution de tests Node.js sans interface, qui vous permet d’exécuter des lots de tests sur un serveur. ➡ Documentation

Nous ne proposons actuellement aucun service cloud pour exécuter vos tests.
Cependant, vous pouvez utiliser notre exécuteur de tests pour exécuter des tests sur des services tiers tels que Github Actions, Bitrise, Codemagic ou CircleCI.
Comme ces services prennent uniquement en charge les appareils virtuels, nous vous recommandons également d’enregistrer vos tests sur ces mêmes appareils virtuels. Vous bénéficierez ainsi d’une stabilité et de performances optimales.
Avant de configurer votre pipeline de tests à distance, vous devrez vous assurer que votre espace de travail de test est envoyé vers un serveur distant (tel que GitHub).
→ Voici comment commencer à versionner votre espace de travail avec Git.
Même si Repeato CLI peut s’exécuter sur pratiquement n’importe quel serveur, nous proposons actuellement 4 guides de configuration (d’autres à venir) :
Configuration
Section intitulée « Configuration »Ajoutez une étape « Repeato Test Runner » à votre workflow dans le Bitrise Workflow Editor. Vous pouvez également exécuter directement l’étape « Repeato Test Runner » avec Bitrise CLI.
Cette étape vérifie la configuration système, installe et démarre le test runner Repeato CLI headless. Après l’exécution des tests, elle définit les variables d’environnement utilisables dans les étapes suivantes.
Étapes de configuration
Section intitulée « Étapes de configuration »- Ajoutez l’étape Repeato Test Runner à votre workflow, parmi les étapes de celui-ci.
- Assurez-vous que votre espace de travail de test est récupéré.
- Définissez le Workspace Path pour pointer vers le répertoire de l’espace de travail Repeato.
- Définissez le Batch Id. L’identifiant du lot de tests que vous souhaitez exécuter.
- Définissez le Repeato Access Token(peut être créé ici).
Veuillez vous assurer que le AVD ou l’émulateur iOS est correctement configuré. De plus, la version de votre application Android/iOS doit être installée sur l’émulateur avant l’exécution du lot de tests. Nous recommandons d’exécuter les tests sur le même appareil ou émulateur que celui utilisé initialement pour les créer. Vous bénéficierez ainsi d’une stabilité et de performances optimales.
Pour les simulateurs iOS, aucune étape ne démarre le simulateur, car la xcodebuild test commande de l’étape de test iOS démarre le simulateur par défaut.
repeato-workspacerepeato-workspaceConseils et dépannage
Section intitulée « Conseils et dépannage »L’émulateur a besoin d’un certain temps pour démarrer. Plus tôt vous placez l’étape dans votre workflow, plus vous pouvez effectuer de tâches, comme le clonage ou la mise en cache, avant que l’émulateur ne commence à fonctionner. Nous vous recommandons également d’ajouter Wait for Android emulator Step (dans le cas d’Android) à votre workflow, car elle empêche le gestionnaire AVD de se lancer trop tôt. Assurez-vous d’ajouter l’ Wait for Android emulator étape AVANT l’ Repeato Test Runner Step afin que notre étape puisse utiliser AVD Manager.
Pipeline de démonstration (Android / Flutter)
Section intitulée « Pipeline de démonstration (Android / Flutter) »Voici notre pipeline de démonstration sur Bitrise, que nous avons configuré pour tester notre étape (bitrise.yml peut être téléchargé ici):

- AVD Manager
- Cloner le dépôt Git
- Installation de Flutter pour compiler notre application basée sur Flutter.
- Récupération du cache Bitrise
- Envoi vers le cache Bitrise
- Attendre l’émulateur Androind
- Script - Comme notre prochaine et dernière étape Repeato nécessite un émulateur entièrement prêt et configuré, nous utilisons des commandes pour compiler l’APK (
flutter build apk --split-per-abi) et l’envoyer à l’émulateur à l’aide deadb install(assurez-vous d’envoyer/installer l’APK compatible avec les paramètres de votre émulateurx86_64 or arm64etc…). Vous devrez peut-être configurer une étape différente pour effectuer la compilation et l’envoyer à l’appareil (selon votre application). Assurez-vous également que, avant l’étape suivante, workspace-tests est cloné (s’il se trouve dans un dépôt distinct) — consultez laUseful linkssection ci-dessous. - Étape Repeato Test Runner
- Déployer sur Bitrise.io – Artefacts L’étape Repeato copie le fichier
batch-reportszip et le fichier XML JUnit dans le répertoire de téléversement Bitrise ($BITRISE_DEPLOY_DIR). Vous pouvez utiliser cette étape pour téléverser les rapports dans la section des artefacts de test. Vous pouvez également utiliser FTP Upload ou une étape Deploy to S3 pour téléverser les rapports. - Exporter les résultats des tests vers le module complémentaire Test Reports Cette étape exporte les résultats vers le module complémentaire Test Reports. Elle crée le fichier test-info.json requis et déploie les résultats des tests dans le répertoire approprié pour l’exportation.
Liens utiles
Section intitulée « Liens utiles »GitHub Actions
Section intitulée « GitHub Actions »Intégration de Repeato CLI avec GitHub Actions
Section intitulée « Intégration de Repeato CLI avec GitHub Actions »Ce guide explique comment intégrer Repeato CLI avec GitHub Actions et remplacer l’espace de travail de démonstration par défaut par votre propre espace de travail Repeato.
Prérequis
Section intitulée « Prérequis »Avant de commencer, assurez-vous de disposer des éléments suivants :
Section intitulée « Avant de commencer, assurez-vous de disposer des éléments suivants : »- Un compte GitHub
- Repeato Studio installé
- Un espace de travail Repeato
- Un fichier APK Android
- Un jeton d’accès Repeato
Étape 1 : ouvrir l’espace de travail Repeato
Section intitulée « Étape 1 : ouvrir l’espace de travail Repeato »- Ouvrez Repeato Studio
- Cliquez sur Espace de travail dans le menu supérieur
- Copiez le Workspace Path
Exemple :
C:\Users\UserName\RepeatoWorkspaceÉtape 2 : initialiser Git dans l’espace de travail Repeato
Section intitulée « Étape 2 : initialiser Git dans l’espace de travail Repeato »Ouvrez Terminal / invite de commandes et accédez à votre espace de travail.
Exécutez : cd [workspace-path]
Exemple : cd C:\Users\UserName\RepeatoWorkspace
Initialiser Git :
git init- ```git add .`
git commit -m "Initial commit"Cette commande transforme votre espace de travail Repeato en dépôt Git.
Étape 3 : créer un dépôt GitHub
Section intitulée « Étape 3 : Créer un dépôt GitHub »- Ouvrir GitHub
- Cliquez sur Nouveau dépôt
- Créer un nouveau dépôt
Exemple de nom de dépôt :
repeato-workspaceN’ajoutez pas de fichier README lors de la création du dépôt.
Étape 4 : Envoyer l’espace de travail vers GitHub
Section intitulée « Étape 4 : Envoyer l’espace de travail vers GitHub »Copiez l’URL de votre dépôt GitHub.
Exemple : https://github.com/yourusername/repeato-workspace.git
Exécutez :
git branch -M maingit remote add origin https://github.com/yourusername/repeato-workspace.gitgit push -u origin mainÉtape 5 : Ajouter le jeton d’accès Repeato dans GitHub
Section intitulée « Étape 5 : Ajouter le jeton d’accès Repeato dans GitHub »-
Connectez-vous au centre client Repeato
-
Accédez à :
Account → Access Tokens -
Cliquez sur l’ icône de copie à côté de votre jeton.
-
Ouvrez votre dépôt GitHub.
-
Accédez à :
Settings → Secrets and variables → Actions -
Cliquez sur Nouveau secret de dépôt
Ajoutez les éléments suivants :
Nom du secret-REPEATO_ACCESS_TOKEN
Valeur du secret- Collez le jeton d’accès Repeato copié.
- Cliquez sur Ajouter le secret.
Votre GitHub Action pourra désormais s’authentifier auprès de Repeato CLI.
Si votre workflow contient :
env:REPEATO_ACCESS_TOKEN: ${{ secrets.REPEATO_ACCESS_TOKEN }}GitHub utilisera automatiquement le jeton enregistré dans les secrets du dépôt.
**Important :**Ne collez pas directement le jeton d’accès dans le fichier YAML. Enregistrez-le toujours dans les secrets GitHub pour des raisons de sécurité.
Étape 6 : Créer le fichier de workflow
Section intitulée « Étape 6 : Créer le fichier de workflow »Dans votre dépôt GitHub, créez cette structure de dossiers : .github/workflows/
Créez un fichier : workflow.yml
Étape 7 : Ajouter la configuration du workflow GitHub
Section intitulée « Étape 7 : Ajouter la configuration du workflow GitHub »Collez la configuration suivante dans workflow.yml.
name: Integration with REPEATO CLIon: [push, workflow_dispatch]permissions: contents: write
jobs: repeato-cli: name: Build and run repeato tests using Repeato CLI runs-on: ubuntu-latest steps: # Configure Node.js. Version 20 required by @repeato/cli-testrunner >= 1.9 (sharp dependency) - uses: actions/setup-node@v4 with: node-version: '20'
# Validate Repeato access token - name: Validate Repeato access token env: REPEATO_ACCESS_TOKEN: ${{ secrets.REPEATO_ACCESS_TOKEN }} run: | if [ -z "$REPEATO_ACCESS_TOKEN" ]; then echo "REPEATO_ACCESS_TOKEN secret is not set." exit 1 fi
# Check out the app source code - uses: actions/checkout@v4
# Check out the Repeato test workspace - name: Checkout workspace repo uses: actions/checkout@v4 with: repository: repeato-qa/demo-workspace path: workspace-tests clean: false
# Enable KVM for hardware-accelerated Android emulation on Ubuntu - name: Enable KVM group perms run: | echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules sudo udevadm control --reload-rules sudo udevadm trigger --name-match=kvm mkdir -p ~/.android/avd
# Start emulator and run the tests via npx @repeato/cli-testrunner - name: run tests uses: reactivecircus/android-emulator-runner@d7b53ddc6e44254e1f4cf4a6ad67345837027a66 timeout-minutes: 20 env: REPEATO_ACCESS_TOKEN: ${{ secrets.REPEATO_ACCESS_TOKEN }} ANDROID_AVD_HOME: /home/runner/.android/avd with: api-level: 29 arch: x86_64 target: google_apis profile: pixel_3a force-avd-creation: false emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none -no-metrics disable-animations: true script: | adb kill-server adb start-server npx @repeato/cli-testrunner --workspaceDir "${GITHUB_WORKSPACE}/workspace-tests" --batchId 0 --accessToken "$REPEATO_ACCESS_TOKEN" --outputDir "${GITHUB_WORKSPACE}/batch-report"
# Upload the batch test report (screenshots + results) even on failure, for debugging - name: Upload test report if: always() uses: actions/upload-artifact@v4 with: name: batch-report path: batch-report/Étape 8 : Mettre à jour le nom du dépôt
Section intitulée « Étape 8 : Mettre à jour le nom du dépôt »Remplacez cette ligne : repository: yourusername/repeato-workspace
Étape 9 : Valider et envoyer les modifications
Section intitulée « Étape 9 : Valider et envoyer les modifications »Exécutez :
git add .git commit -m "Added Repeato GitHub workflow"git pushÉtape 10 : Vérifier GitHub Action
Section intitulée « Étape 10 : Vérifier GitHub Action »- Ouvrez votre dépôt GitHub
- Cliquez sur Actions
Vous devriez voir :Integration with REPEATO CLI s’exécuter automatiquement.
Le workflow va :
- Lancer l’émulateur Android
- Télécharger l’espace de travail Repeato
- Exécuter les tests Repeato
- Générer le rapport de test
- Téléverser l’artefact du rapport de lot
Remarques importantes
Section intitulée « Remarques importantes »- Remplacez l’URL du dépôt GitHub par celle de votre propre dépôt.
- Remplacez
repeato-workspacepar le nom réel de votre dépôt d’espace de travail, s’il est différent. - Vérifiez que
REPEATO_ACCESS_TOKENest ajouté aux secrets GitHub. - La version de Node.js
20est requise pour les versions plus récentes de Repeato CLI.
Codemagic
Section intitulée « Codemagic »Codemagic est un service cloud d’intégration et de livraison continues (CI/CD) qui permet aux développeurs de compiler, tester et déployer leurs applications mobiles sur plusieurs plateformes. Il fait partie de l’ écosystème Flutter et prend en charge les applications Flutter et React Native. Codemagic peut aider les développeurs à automatiser de nombreuses tâches liées à la création d’applications mobiles, notamment les tests, la compilation et le déploiement vers les boutiques d’applications.
Étapes de configuration
Section intitulée « Étapes de configuration »Voici les étapes à suivre :
- Accédez à www.codemagic.io, et créez un compte si vous n’en avez pas déjà un
- Créez un projet Codemagic et sélectionnez votre dépôt Git.
- Choisissez la plateforme pour laquelle vous souhaitez compiler (iOS, Android ou les deux).
- Configurez les paramètres de compilation, notamment le type de compilation, le numéro de version et l’identifiant de bundle.
- Ajoutez les variables d’environnement ou les secrets requis.
- Testez votre workflow : créez une compilation et attendez qu’elle se termine.
Exemples de workflows
Section intitulée « Exemples de workflows »Voici ce que fait le workflow dès que vous envoyez des modifications vers votre dépôt Git :
- Workflow de compilation :
Configuration de l’environnement 2. Configuration/installation de Flutter 3. Flutter Compilation de l’APK 4. Ajout de l’APK généré aux artefacts de compilation
Workflow d’exécution des tests
- Configurer l’environnement avec les versions de Node et de Flutter
- Lancer l’émulateur
- Installer l’application dans l’émulateur
- Exécuter les Repeato tests
- Publier les Repeato rapports de test dans lebucket S3
- Envoyer éventuellement une notification sur Slack à la fin de la compilation
- Si la compilation échoue, vous recevrez une notification et pourrez rechercher la cause du problème.
workflows: build-workflow: name: Build Workflow instance_type: mac_pro max_build_duration: 120 environment: node: 16.19.0 flutter: 3.0.1 groups: - standard scripts: - name: Set up local.properties script: | #!/usr/bin/env zsh echo "flutter.sdk=$HOME/programs/flutter" > "$CM_BUILD_DIR/android/local.properties" - name: Get Flutter packages script: flutter packages pub get - name: Build apk with Flutter script: flutter build apk publishing: scripts: - name: List exported files script: | ls -la $CM_EXPORT_DIR artifacts: - build/**/outputs/apk/**/*.apk test-android-workflow: name: Test Workflow instance_type: mac_pro max_build_duration: 120 environment: node: 16.19.0 flutter: 3.0.1 groups: - standard scripts: - name: Set up local.properties script: | #!/usr/bin/env zsh echo "flutter.sdk=$HOME/programs/flutter" > "$CM_BUILD_DIR/android/local.properties" - name: Launch emulator script: | emulator @emulator & # Use `emulator -list-avds` to list all emulators adb wait-for-device # wait for the emulator to finish loading - name: Install app script: | adb install app.apk - name: Wait for 20 seconds script: sleep $((20*1)) - name: Run Repeato tests script: | npx @repeato/cli-testrunner \ --workspaceDir "demo-workspace" \ --logLevel "DEBUG" \ --batchId 0 \ --accessToken "$REPEATO_ACCESS_TOKEN" \ --waitDurationBetweenSteps 2000 \ --timeoutFactor 1.5 \ --outputDir "$CM_EXPORT_DIR/batch-report" publishing: scripts: - name: List exported files script: | ls -la $CM_EXPORT_DIR ls -la $CM_EXPORT_DIR/batch-report - name: Publish to S3 bucket script: | sudo pip3 install awscli --upgrade aws s3 sync "$CM_EXPORT_DIR/batch-report" s3://repeato-batch-result-demo/batch-report echo "open report here: https://repeato-batch-result-demo.s3.eu-central-1.amazonaws.com/batch-report/index.html" slack: channel: '#dev' notify_on_build_start: false # To receive a notification when a build starts notify: success: true failure: true- Repeato CLI n’est actuellement officiellement pris en charge que sur les machines Mac de Codemagic.
Appcircle
Section intitulée « Appcircle »Appcircle est une plateforme cloud d’intégration et de livraison continues (CI/CD) qui aide à automatiser les processus de compilation, de test et de déploiement des applications mobiles. Elle propose un ensemble complet d’outils et de fonctionnalités pour automatiser et simplifier ces processus.
Avec Appcircle auto-hébergé, vous pouvez également héberger l’infrastructure CI/CD sur vos propres serveurs ou dans un environnement cloud privé, ce qui vous offre un contrôle et une propriété complets de l’infrastructure.
Prérequis
Section intitulée « Prérequis »Avant de commencer, assurez-vous de disposer des éléments suivants :
- Un compte actif sur Appcircle et Repeato
- L’accès à votre projet dans Appcircle et Repeato
- Le code source de votre application mobile stocké dans un système de contrôle de version (par ex. GitHub, Bitbucket, GitLab)
Configuration du workflow CI/CD
Section intitulée « Configuration du workflow CI/CD »- Dans Appcircle, accédez à la page de compilation de votre projet et sélectionnez l’onglet « Workflows ».
- Pour intégrer Repeato au workflow, cliquez sur « Manage Workflow » et ajoutez « Repeato Test Runner » depuis la liste des étapes disponibles.
- Ajoutez l’étape « Xcodebuild for iOS Simulator » pour iOS ou « Wait for Android Emulator » pour Android, avant l’étape « Repeato Test Runner ».
- Ajoutez l’étape « Test Reports » après l’étape « Repeato Test Runner ». Les résultats des tests pourront ainsi être affichés sur la page de compilation.
- Configurez l’étape Repeato en fournissant les paramètres nécessaires, tels que « Batch ID », « Access Token » et « CLI Version », avec les informations fournies par Repeato.
- Configurez les champs restants, « Workspace Path » et « Log Level », avec les informations nécessaires.
- Enregistrez la configuration du workflow.
Remarque importante: pour l’étape « Test Reports », veillez à activer l’option « Always run this step even if the previous steps fail ». Cela garantit la réception des rapports pour les tests réussis comme pour les tests échoués.
Exécution du workflow CI/CD
Section intitulée « Exécution du workflow CI/CD »- Déclenchez le workflow manuellement ou configurez des déclencheurs automatiques, par exemple lors d’un commit ou d’une fusion, selon vos préférences.
- Appcircle lancera le workflow, qui comprend les étapes de compilation, de test et de déploiement.
- L’étape Repeato du workflow exécutera les cas de test et les workflows spécifiés à l’aide de l’API Repeato.
- Appcircle fournira des journaux et des rapports détaillés pour chaque étape, y compris les résultats des tests Repeato.
Obtenez encore plus d’informations et de conseils sur le site web d’Appcircle