Passer au contenu principal

CI/CD

Ines avatar
Écrit par Ines
Mis à jour il y a plus de 2 mois

Vue d'ensemble

L'API Thunders fournit un point de terminaison puissant pour l'exécution de tests automatisés basés sur le 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 des cas de test de manière programmatique, y compris par le biais des flux de travail GitHub Actions.

Points de terminaison de l'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 dépôt GitHub.

En-têtes

En-tête

Valeur

Description

Autorisation

Bearer YOUR_THUNDER_TEST_TOKEN

Jeton d'authentification

X-MS-API-ROLE

M2M

Indique un appel API de machine à machine

Type de contenu

application/json

Spécifie le format du corps de la demande

Corps de la demande pour l'exécution du scénario de test

Le corps de la demande doit être un objet JSON avec les propriétés suivantes :

{   "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": "SanFrancisco", "Resolution": "1440x900", "DeviceType": "Desktop" }
}

Paramètres

Paramètre

Type de projet

Exigée

Défaut

Description de l'objet

ProjectId

chaîne de caractères(UUID)

Oui

-

L'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.

EnvironmentId

chaîne de caractères(UUID)

Oui

-

L'identifiant unique de l'environnement à utiliser.

PersonaId

string(UUID)

Oui

-

L'identifiant unique du persona à utiliser lors de l'exécution des tests.

BrowserSettings.location

"London"

"Amsterdam"

"SanFrancisco"

"FranceDynamic"

BrowserSettings.browserType

"Chromium"

"Chrome"

"Firefox"

"Safari"

BrowserSettings.deviceType

"Desktop"

"Mobile"

"Tablet"

Non

BrowserSettings.resolution

chaîne

Non

"1280x720"

Résolution de la fenêtre du navigateur en pixels, au format "widthxheight".

Paramètres du navigateur.javascript

booléen

Non

true

Active ou désactive l'exécution de JavaScript dans le navigateur. Notez que certaines étapes du test nécessitent que cette option soit réglée sur true.

BrowserSettings.ignoreHttpsErrors

booléen

Non

faux

Ignorer ou non les erreurs HTTPS pendant la navigation

BrowserSettings.darkTheme

booléen

Non

faux

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

BrowserSettings.avoidDetection

booléen

Non

faux

Active 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ètres régionaux du navigateur (par exemple, "en-US", "fr-FR")

BrowserSettings.username

chaîne

Non

-

Nom d'utilisateur pour l'authentification

BrowserSettings.password

string

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 d'un ensemble de tests

Le corps de la requête doit être un objet JSON avec les propriétés suivantes :

{   "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", }
}

Paramètres

Paramètres

Type de projet

Obligatoire

Défaut

Description de l'objet

ProjectId

chaîne de caractères(UUID)

Oui

-

L'identifiant unique du projet contenant les cas de test.

TestSetIds

tableau de chaînes(UUID)

Oui

-

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

EnvironmentId

chaîne de caractères(UUID)

Oui

-

L'identifiant unique de l'environnement à utiliser.

PersonaId

string(UUID)

Oui

-

L'identifiant unique du persona à utiliser lors de l'exécution des tests.

BrowserSettings.location

"London"

"Amsterdam"

"SanFrancisco"

"FranceDynamic"

BrowserSettings.browserType

"Chromium"

"Chrome"

"Firefox"

"Safari"

BrowserSettings.deviceType

"Desktop"

"Mobile"

"Tablet"

Non

BrowserSettings.resolution

chaîne

Non

"1280x720"

Résolution de la fenêtre du navigateur en pixels, au format "widthxheight".

Paramètres du navigateur.javascript

booléen

Non

true

Active ou désactive l'exécution de JavaScript dans le navigateur. Notez que certaines étapes du test nécessitent que cette option soit réglée sur true.

BrowserSettings.ignoreHttpsErrors

booléen

Non

faux

Ignorer ou non les erreurs HTTPS pendant la navigation

BrowserSettings.darkTheme

booléen

Non

faux

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

BrowserSettings.avoidDetection

booléen

Non

faux

Active 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ètres régionaux du navigateur (par exemple, "en-US", "fr-FR")

BrowserSettings.username

chaîne

Non

-

Nom d'utilisateur pour l'authentification

BrowserSettings.password

string

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 il comprend généralement les éléments suivants :

  • État de l'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 le succès ou l'échec :

  • 200 OK: La demande a été acceptée et les tests ont été exécutés.

  • 400 Bad Request (mauvaise demande) : La demande était malformée ou il manquait des paramètres requis.

  • 401 Unauthorized (Non autorisé) : L'authentification a échoué ou le jeton n'est pas valide.

  • 403 Forbidden (Interdit) : L'utilisateur authentifié n'a pas la permission 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) n'ont pas été trouvées.

  • 500 Internal Server Error (erreur interne du serveur): Une erreur inattendue s'est produite sur le serveur

Utilisation avec les actions GitHub

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

Exemple de flux d'actions GitHub

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"
}

- 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 flux de travail GitHub Actions, vous devez configurer un secret pour votre jeton API :

  1. Accédez à votre dépôt GitHub

  2. Naviguez vers Paramètres > Secrets et variables > Actions

  3. Cliquez sur "New repository secret" (Nouveau secret de dépôt)

  4. Nom : THUNDER_TEST_TOKEN

  5. Valeur : Votre jeton API Thunders

  6. Cliquez sur "Ajouter un secret".

Personnalisation du flux de travail

Vous pouvez personnaliser le flux de travail en

  1. Modifier les événements déclencheurs (par exemple, en cas de poussée, en cas de planification)

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

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

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