Skip to main content
Le fichier de configuration QAOS est un document JSON qui spécifie entièrement une exécution de test. Sauvegardez-le n’importe où sur votre système et passez son chemin à qaos run --config.

Exemple complet

qaos-config.json
{
  "name": "Audit complet du site — v2.1",
  "projectId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "envFile": ".env.test",
  "agentInfo": {
    "environment": "staging",
    "triggeredBy": "ci-pipeline",
    "branch": "main"
  },
  "tasks": [
    {
      "id": "auth-login",
      "description": "Naviguer vers la page de connexion et se connecter avec les identifiants admin@example.com / password123",
      "context": "Utiliser le compte de test. La page de connexion dispose d'un formulaire standard nom d'utilisateur/mot de passe.",
      "startUrl": "https://staging.example.com/login",
      "subAgents": ["security", "uiux"]
    },
    {
      "id": "dashboard",
      "description": "Parcourir le tableau de bord principal et interagir avec les tableaux de données",
      "startUrl": "https://staging.example.com/dashboard",
      "subAgents": ["security", "uiux"]
    },
    {
      "id": "admin-panel",
      "description": "Accéder au panneau d'administration et tenter d'effectuer des actions d'administration en tant qu'utilisateur ordinaire",
      "startUrl": "https://staging.example.com/admin",
      "subAgents": ["security"]
    },
    {
      "id": "user-settings",
      "description": "Naviguer vers les paramètres du compte utilisateur, modifier le profil et changer le mot de passe",
      "startUrl": "https://staging.example.com/settings",
      "subAgents": ["security", "uiux"]
    }
  ]
}

Champs de niveau racine

name requis

Type : string Un libellé lisible pour cette exécution, affiché dans le tableau de bord et les rapports. Utilisez des noms descriptifs qui identifient la portée et le contexte.
"name": "Audit de sécurité de production — T1 2025"

projectId requis

Type : string (UUID) L’ID du projet QAOS auquel cette exécution appartient. Trouvez les IDs de projet dans le Tableau de bord sous Projets → Paramètres.
"projectId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"

envFile optionnel

Type : string Chemin vers un fichier .env à charger avant le démarrage de l’exécution. Utile pour injecter des identifiants, des URLs d’API ou des valeurs spécifiques à l’environnement.
"envFile": ".env.staging"
Le chemin est résolu relativement à l’emplacement du fichier de configuration.

agentInfo optionnel

Type : object Métadonnées clé-valeur arbitraires attachées à l’exécution et visibles dans le rapport. Utilisez cela pour suivre le contexte comme le nom de l’environnement, les infos du pipeline CI ou l’utilisateur déclencheur.
"agentInfo": {
  "environment": "staging",
  "commit": "abc1234",
  "triggeredBy": "github-actions"
}

tasks requis

Type : array La liste des tâches de test à exécuter. Les tâches s’exécutent séquentiellement dans l’ordre où elles sont définies. Au moins une tâche est requise.

Champs de tâche

Chaque objet dans le tableau tasks :

id requis

Type : string Un identifiant unique pour cette tâche au sein de l’exécution. Utilisé dans les journaux et les rapports. Doit être unique parmi toutes les tâches dans la même configuration.
"id": "checkout-flow"

description requis

Type : string Une description en langage naturel de ce que cette tâche doit faire. L’agent l’interprète pour décider quelles actions entreprendre, vers quelles pages naviguer et quoi rechercher. Des descriptions plus précises donnent de meilleurs résultats.
"description": "Aller sur la page de paiement, ajouter l'article #SKU-001 au panier, procéder au paiement et vérifier le formulaire de paiement pour les problèmes de sécurité"

context optionnel

Type : string Informations supplémentaires dont l’agent doit être conscient lors de l’exécution de cette tâche. Utile pour fournir des identifiants, expliquer un comportement spécifique à l’application ou signaler des limitations connues.
"context": "Utiliser les identifiants de test test@example.com / testpass123. Le tableau de bord peut prendre 2-3 secondes pour charger les données."

startUrl requis

Type : string L’URL vers laquelle l’agent navigue au début de cette tâche. Doit être une URL absolue valide incluant le protocole.
"startUrl": "https://app.example.com/login"

subAgents requis

Type : array de "security" | "uiux" Les modules d’agents à activer pour cette tâche. Accepte un tableau contenant une ou les deux valeurs.
"subAgents": ["security", "uiux"]  // exécuter les deux
"subAgents": ["security"]             // sécurité uniquement
"subAgents": ["uiux"]              // UI/UX uniquement
AgentCe qu’il vérifie
"security"Contrôle d’accès, injection, cryptographie, gestion des sessions, divulgation d’information
"uiux"Accessibilité, utilisabilité des formulaires, navigation au clavier, contraste des couleurs, conception réactive

Modèles courants

Flux d’authentification en plusieurs étapes

{
  "tasks": [
    {
      "id": "login",
      "description": "Se connecter avec le nom d'utilisateur admin@example.com et le mot de passe TestPass123",
      "startUrl": "https://app.example.com/login",
      "subAgents": ["security", "uiux"]
    },
    {
      "id": "post-login",
      "description": "Parcourir le tableau de bord authentifié et la page de profil utilisateur",
      "startUrl": "https://app.example.com/dashboard",
      "subAgents": ["security", "uiux"]
    }
  ]
}

Audit d’administration axé sur la sécurité

{
  "tasks": [
    {
      "id": "admin-access",
      "description": "Tenter d'accéder au panneau d'administration à /admin sans authentification",
      "startUrl": "https://app.example.com/admin",
      "subAgents": ["security"]
    },
    {
      "id": "privilege-check",
      "description": "Se connecter en tant qu'utilisateur ordinaire et tenter d'accéder aux endpoints réservés aux administrateurs",
      "startUrl": "https://app.example.com/login",
      "context": "Identifiants utilisateur ordinaire : user@example.com / UserPass123",
      "subAgents": ["security"]
    }
  ]
}

Vérification d’accessibilité uniquement

{
  "tasks": [
    {
      "id": "homepage-a11y",
      "description": "Examiner la page d'accueil pour les problèmes d'accessibilité",
      "startUrl": "https://app.example.com/",
      "subAgents": ["uiux"]
    },
    {
      "id": "forms-a11y",
      "description": "Parcourir le formulaire d'inscription et le formulaire de contact pour les problèmes d'accessibilité",
      "startUrl": "https://app.example.com/register",
      "subAgents": ["uiux"]
    }
  ]
}