Passer au contenu principal

CI/CD

Écrit par Ines
Mis à jour il y a plus d'un mois

Présentation

L'API Thunders fournit un point de terminaison puissant pour l'exécution de tests automatisés basés sur un navigateur. Ce document explique comment utiliser le point de terminaison /api/test-cases/run ou /api/test-sets/run, qui vous permet de déclencher l'exécution de cas de test par programmation, y compris via les workflows GitHub Actions.

Points de terminaison API

POST <https://api.thunders.ai/api/test-cases/run>
POST <https://api.thunders.ai/api/test-sets/run>

Authentification

L'API nécessite une authentification à l'aide d'un jeton Bearer :

Authorization: Bearer YOUR_THUNDER_TEST_TOKEN

Vous devez obtenir un jeton API valide auprès de la plateforme Thunders. Ce jeton doit être stocké de manière sécurisée en tant que secret dans votre environnement ou votre référentiel GitHub.

En-têtes

En-tête

Valeur

Description

Autorisation

Porteur VOTRE_JETON_DE_TEST_THUNDER

Jeton d'authentification

X-MS-API-ROLE

M2M

Indique un appel API machine-à-machine

Content-Type

application/json

Spécifie le format du corps de la requête

Corps de la requête pour l'exécution du scénario de test

Le corps de la requête doit être un objet JSON avec les paramètres répertoriés ci-dessous.

Exemple

{
"ProjectId": "c8e34ec4-2464-43c7-8db8-1b3a47a22337",
"TestCaseIds": ["a836fadc-377a-46fe-96b0-21f37c626bf9", "61015c47-612f-47fa-82a6-41d910832c1b", "8eea2fd3-da6d-4434-a310-176be84c5646"],
"EnvironmentId": "eca24252-e566-40a8-b2b0-707b7efa85d8",
"PersonaId": "70d0ac52-fe94-4d89-aba9-8ef28dd8c04c",
"BrowserSettings": {
"Location": "Paris",
"Resolution": "1440x900",
"DeviceType": "Desktop"
}
}

Paramètres

Paramètre

Type

Obligatoire

Valeur par défaut

Description

ProjectId

chaîne(UUID)

Oui

-

Identifiant unique du projet contenant les cas de test.

TestCaseIds

tableau de chaînes(UUID)

Oui

-

Tableau des identifiants des cas de test à exécuter.

Identifiant d'environnement

chaîne(UUID)

Oui

-

Identifiant unique de l'environnement à utiliser.

PersonaId

chaîne(UUID)

Oui

-

Identifiant unique du persona à utiliser lors de l'exécution des tests

MaxParallelism

int

Non

4

Nombre de tests pouvant être exécutés en parallèle Ce nombre ne dépassera pas la capacité de votre offre 0 signifie : maximal

MaxRetries

int

Non

0

Les tests doivent-ils être réessayés s'ils échouent ? Valeurs valides : 0 à 3

BrowserSettings.Location

« Paris »|« Londres »|« Amsterdam »|« San Francisco »|« New York »

Non

« Paris »

Cluster de géolocalisation pour la session du navigateur.

BrowserSettings.browserType

« Chromium »|« Chrome »|« Firefox »|« Safari »

Non

« Chromium »

Type de navigateur à utiliser pour l'exécution du test

BrowserSettings.DeviceType

« Ordinateur de bureau »|« Mobile »|« Tablette »

Non

« Ordinateur de bureau »

Type d'appareil à émuler pendant l'exécution du test

BrowserSettings.Resolution

chaîne

Non

« 1280x720 »

Résolution de la fenêtre d'affichage du navigateur en pixels, au format « largeurxhauteur »

BrowserSettings.javascript

booléen

Non

vrai

Active ou désactive l'exécution de JavaScript dans le navigateur. Notez que certaines étapes de test dépendent du fait que cette option soit définie sur true.

BrowserSettings.highlightElements

booléen

Non

vrai

Met en surbrillance l'élément cible de chaque action.

BrowserSettings.ignoreHttpsErrors

booléen

Non

faux

Indique s'il faut ignorer les erreurs HTTPS pendant la navigation.

BrowserSettings.darkTheme

booléen

Non

false

Activer ou désactiver le thème sombre pour le navigateur

BrowserSettings.avoidDetection

booléen

Non

faux

Activer les mesures visant à éviter la détection des robots pendant l'exécution des tests

BrowserSettings.deviceScaleFactor

nombre

Non

-

Facteur d'échelle pour l'écran de l'appareil

BrowserSettings.forcedColors

chaîne

Non

-

Forcer un schéma de couleurs spécifique pour les tests d'accessibilité

BrowserSettings.locale

chaîne

Non

-

Paramètre de langue du navigateur (par exemple, « en-US », « fr-FR »)

BrowserSettings.username

chaîne

Non

-

Nom d'utilisateur pour l'authentification

BrowserSettings.password

chaîne

Non

-

Mot de passe pour l'authentification

BrowserSettings.proxy

chaîne

Non

-

Configuration du serveur proxy

BrowserSettings.headers

dictionnaire

Non

-

En-têtes HTTP personnalisés à inclure dans les requêtes

Corps de la requête pour l'exécution du jeu de tests

Le corps de la requête doit être un objet JSON avec les paramètres indiqués ci-dessous.

Exemple

{
"ProjectId": "c8e34ec4-2464-43c7-8db8-1b3a47a22337",
"TestSetIds": ["a836fadc-377a-46fe-96b0-21f37c626bf9", "61015c47-612f-47fa-82a6-41d910832c1b", "8eea2fd3-da6d-4434-a310-176be84c5646"],
"EnvironmentId": "eca24252-e566-40a8-b2b0-707b7efa85d8",
"PersonaId": "70d0ac52-fe94-4d89-aba9-8ef28dd8c04c",
"BrowserSettings": {
"Location": "SanFrancisco",
"Resolution": "1440x900",
"browserType": "Firefox"
}
}

Paramètres

Paramètre

Type

Obligatoire

Par défaut

Description

ProjectId

chaîne(UUID)

Oui

-

Identifiant unique du projet contenant les cas de test.

TestSetIds

tableau de chaînes(UUID)

Oui

-

Tableau des identifiants des ensembles de tests à exécuter.

Identifiant d'environnement

chaîne(UUID)

Oui

-

Identifiant unique de l'environnement à utiliser.

PersonaId

chaîne(UUID)

Oui

-

Identifiant unique du persona à utiliser lors de l'exécution des tests

MaxParallelism

int

Non

4

Nombre de tests pouvant être exécutés en parallèle Ce nombre ne dépassera pas la capacité de votre offre 0 signifie : maximal

MaxRetries

int

Non

0

Les tests doivent-ils être réessayés s'ils échouent ? Valeurs valides : 0 à 3

BrowserSettings.browserType

« Chromium » | « Chrome »| « Firefox »| « Safari »

Non

« Chromium »

Type de navigateur à utiliser pour l'exécution du test

BrowserSettings.DeviceType

« Ordinateur de bureau »|« Mobile »|« Tablette »

Non

« Ordinateur de bureau »

Type d'appareil à émuler pendant l'exécution du test

BrowserSettings.Resolution

chaîne

Non

« 1280x720 »

Résolution de la fenêtre d'affichage du navigateur en pixels, au format « largeurxhauteur »

BrowserSettings.javascript

booléen

Non

vrai

Active ou désactive l'exécution de JavaScript dans le navigateur. Notez que certaines étapes de test dépendent du fait que cette option soit définie sur true.

BrowserSettings.highlightElements

booléen

Non

vrai

Met en surbrillance l'élément cible de chaque action.

BrowserSettings.ignoreHttpsErrors

booléen

Non

faux

Indique s'il faut ignorer les erreurs HTTPS pendant la navigation.

BrowserSettings.darkTheme

booléen

Non

false

Activer ou désactiver le thème sombre pour le navigateur

BrowserSettings.avoidDetection

booléen

Non

faux

Activer les mesures visant à éviter la détection des bots pendant l'exécution des tests

BrowserSettings.deviceScaleFactor

nombre

Non

-

Facteur d'échelle pour l'écran de l'appareil

BrowserSettings.forcedColors

chaîne

Non

-

Forcer un schéma de couleurs spécifique pour les tests d'accessibilité

BrowserSettings.locale

chaîne

Non

-

Paramètre de langue du navigateur (par exemple, « en-US », « fr-FR »)

BrowserSettings.username

chaîne

Non

-

Nom d'utilisateur pour l'authentification

BrowserSettings.password

chaîne

Non

-

Mot de passe pour l'authentification

BrowserSettings.proxy

chaîne

Non

-

Configuration du serveur proxy

BrowserSettings.headers

dictionnaire

Non

-

En-têtes HTTP personnalisés à inclure dans les requêtes

Réponse

L'API renvoie une réponse contenant des détails sur l'exécution du test. Le format exact peut varier en fonction des résultats du test, mais comprend généralement :

  • Statut d'exécution du test

  • Résumé des résultats du test

  • Résultats détaillés pour chaque cas de test

  • Toutes les erreurs ou défaillances rencontrées

Gestion des erreurs

L'API utilise les codes d'état HTTP standard pour indiquer la réussite ou l'échec :

  • 200 OK: la requête a abouti et les tests ont été exécutés

  • 400 Bad Request: la requête était mal formée ou il manquait des paramètres obligatoires

  • 401 Non autorisé: l'authentification a échoué ou le jeton n'est pas valide

  • 403 Forbidden: l'utilisateur authentifié n'a pas l'autorisation d'exécuter les tests spécifiés

  • 404 Not Found: une ou plusieurs des ressources spécifiées (projet, cas de test, environnement ou persona) sont introuvables

  • 500 Internal Server Error: une erreur inattendue s'est produite sur le serveur

Utilisation avec GitHub Actions

Vous pouvez facilement intégrer l'API Thunders à vos workflows GitHub Actions afin d'automatiser l'exécution des tests dans le cadre de votre pipeline CI/CD.

Exemple de workflow GitHub Action

name: Run Thunders Test Cases

on:
workflow_dispatch: # This allows manual triggering from the GitHub UI
# You can add other triggers here as needed, such as:
# push:
# branches: [ main ]
# schedule:
# - cron: '0 0 * * *' # Run daily at midnight

jobs:
run-tests:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Run Thunders API Test Cases
id: run-tests
uses: fjogeleit/http-request-action@v1
with:
url: '<https://api.thunders.ai/api/test-cases/run>'
method: 'POST'
customHeaders: >
{
"Authorization": "Bearer ${{ secrets.THUNDER_TEST_TOKEN }}",
"X-MS-API-ROLE": "M2M",
"Content-Type": "application/json"
}
data: >
{
"ProjectId": "c8e34ec4-2464-43c7-8db8-1b3a47a22337",
"TestCaseIds": [
"a836fadc-377a-46fe-96b0-21f37c626bf9",
"61015c47-612f-47fa-82a6-41d910832c1b",
"8eea2fd3-da6d-4434-a310-176be84c5646"
],
"EnvironmentId": "eca24252-e566-40a8-b2b0-707b7efa85d8",
"PersonaId": "70d0ac52-fe94-4d89-aba9-8ef28dd8c04c",
"BrowserSettings": {
"Location": "Paris",
"BrowserType": "Chromium",
"DeviceType": "Desktop",
"Resolution": "1440x900"
}
}

- name: Output API Response
if: ${{ success() }}
run: echo "API Response - ${{ steps.run-tests.outputs.response }}"

Configuration des secrets GitHub

Pour utiliser l'API Thunders dans votre workflow GitHub Actions, vous devez configurer un secret pour votre jeton API :

  1. Accédez à votre référentiel GitHub

  2. Accédez à Paramètres > Secrets et variables > Actions

  3. Cliquez sur « Nouveau secret de référentiel »

  4. Nom : THUNDER_TEST_TOKEN

  5. Valeur : votre jeton API Thunders

  6. Cliquez sur « Ajouter un secret »

Personnalisation du workflow

Vous pouvez personnaliser le workflow en :

  1. Modifiant les événements déclencheurs (par exemple, sur push, sur planning)

  2. Modifiant les paramètres de test (ProjectId, TestCaseIds, TestSetIds, EnvironmentId, PersonaId)

  3. Ajoutant des étapes supplémentaires pour traiter les résultats des tests

Lot d'actifs de test

La fonctionnalité Test Asset Batch vous permet d'exécuter plusieurs fois le même scénario de test avec différentes variations de données en téléchargeant des fichiers CSV en tant que ressources de test. Chaque ligne du fichier CSV devient un test distinct, ce qui permet d'effectuer des tests basés sur les données à grande échelle.

Comment ça marche

  1. Téléchargez des fichiers CSV en tant qu'actifs de test dans votre projet (via l'application web Thunders ou l'API)

  2. Référencez les fichiers CSV dans votre requête API à l'aide du paramètre testAssetReferences

  3. Chaque ligne CSV génère un test distinct avec ses propres remplacements de variables et paramètres de navigateur

  4. Tous les tests d'un même lot sont regroupés sous un batchId commun

Le paramètre testAssetReferences

Ajoutez le champ testAssetReferences au corps de votre requête d'exécution/file d'attente :

{
"ProjectId": "your-project-id",
"TestCaseIds": ["your-test-case-id"],
"EnvironmentId": "your-environment-id",
"PersonaId": "your-persona-id",
"TestAssetReferences": ["FILE_MYDATA_CSV", "FILE_USERS_CSV"]
}

Format de référence : lorsque vous téléchargez un fichier nommé mydata.csv, sa référence devient FILE_MYDATA_CSV. La convention de nommage est FILE__, où le nom du fichier est en majuscules et les caractères spéciaux (tirets, espaces, points, parenthèses) sont remplacés par des traits de soulignement.

Les références peuvent également être placées entre crochets : [FILE_MYDATA_CSV].

Pour en savoir plus sur la fonctionnalité de traitement par lots, consultez cette documentation

Combinaison de plusieurs fichiers CSV

Vous pouvez passer plusieurs références CSV dans le tableau testAssetReferences. Les lignes de tous les fichiers sont fusionnées séquentiellement en un seul lot avec un indexage continu.

"TestAssetReferences": ["FILE_BROWSERS_CSV", "FILE_MOBILE_CSV"]

Si browsers.csv comporte 3 lignes et mobile.csv 2 lignes, le lot contiendra au total 5 exécutions indexées de 1 à 5.

Avez-vous trouvé la réponse à votre question ?