@ai-qa/workflow 2.0.1 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- const { DIRS, CONFIG, ensureDir, timestamp, log } = require('./utils');
1
+ const { DIRS, CONFIG, ensureDir, timestamp, log, writeMarkdown } = require('./utils');
2
2
  const path = require('path');
3
3
  const fs = require('fs');
4
4
  const { execSync, spawn } = require('child_process');
@@ -31,14 +31,18 @@ function executeTests(testName, options = {}) {
31
31
  }
32
32
  }
33
33
 
34
- args.push('--reporter=list,json');
34
+ args.push('--reporter', 'list,json');
35
35
 
36
36
  if (headed) args.push('--headed');
37
- if (retries > 0) args.push(`--retries=${retries}`);
38
- if (workers) args.push(`--workers=${workers}`);
39
- if (timeout) args.push(`--timeout=${timeout}`);
40
- if (screenshots === 'off') args.push('--screenshot=off');
41
- if (screenshots === 'only-on-failure') args.push('--screenshot=only-on-failure');
37
+ if (retries > 0) args.push('--retries', retries.toString());
38
+ if (workers) args.push('--workers', workers.toString());
39
+ if (timeout) args.push('--timeout', timeout.toString());
40
+ if (screenshots === 'off') {
41
+ args.push('--screenshot', 'off');
42
+ }
43
+ if (screenshots === 'only-on-failure') {
44
+ args.push('--screenshot', 'only-on-failure');
45
+ }
42
46
 
43
47
  const outputPath = path.join(runDir, 'execution-output.json');
44
48
  const resultPath = path.join(runDir, 'execution-result.json');
@@ -0,0 +1,55 @@
1
+ # Test Plan: Demande d'Alimentation de Compte
2
+
3
+ **ID**: PLAN-US-EXPENSE-01
4
+ **Feature**: Soumission de Demande d'Alimentation de Compte Professionnel
5
+ **Status**: Draft
6
+ **User Story Ref**: US-EXPENSE-01
7
+ **Generated**: 2026-05-18
8
+
9
+ ---
10
+
11
+ ## 1. Overview
12
+
13
+ En tant que collaborateur d'entreprise, je souhaite soumettre une demande d'alimentation pour mon compte de dépenses professionnel afin de couvrir les frais liés à mes déplacements clients sans avancer de fonds personnels.
14
+
15
+ ---
16
+
17
+ ## 2. Preconditions
18
+
19
+ - L'utilisateur est authentifié sur le portail collaborateur.
20
+ - Le compte de l'utilisateur est actif et rattaché à un centre de coût valide.
21
+ - Le solde actuel du compte de dépenses est inférieur à 500 EUR.
22
+
23
+
24
+ ---
25
+
26
+ ## 3. Test Scenarios
27
+
28
+ ### 3.1 Scenario: Scenario 1
29
+ **Steps**:
30
+ 1. **Accès au formulaire** : Un bouton "Nouvelle Demande d'Alimentation" doit être visible depuis le tableau de bord principal.
31
+ 2. **Saisie des informations** : Le formulaire doit comporter les champs obligatoires suivants :
32
+ 3. *Montant demandé* (valeur numérique positive)
33
+ 4. *Motif de la demande* (texte, minimum 15 caractères)
34
+ 5. *Projet associé* (sélection dans une liste déroulante active)
35
+ 6. **Contrôles de validation de surface** :
36
+ 7. Le montant demandé doit être compris entre 10 EUR et 5 000 EUR.
37
+ 8. Les messages d'erreur de validation doivent s'afficher en temps réel sous les champs incorrects.
38
+ 9. **Soumission et Historique** : Après soumission réussie, un spinner de chargement doit s'afficher temporairement, suivi d'un toast de succès. L'utilisateur doit être redirigé vers l'historique où la demande doit apparaître avec le statut "En attente de validation".
39
+
40
+ **Expected Results**:
41
+ - Feature behaves as described in acceptance criteria
42
+ - No errors or unexpected behavior
43
+
44
+ ---
45
+
46
+ ## 4. Success Criteria
47
+ - All scenarios pass without errors
48
+ - Screenshots are captured for key verification points
49
+ - Allure report is generated with test results
50
+
51
+ ---
52
+
53
+ > **AI Instructions**: Review this test plan. Verify scenarios cover all acceptance criteria.
54
+ > Add edge cases, negative scenarios, and boundary tests where applicable.
55
+ > Update status from "Draft" to "Reviewed" once validated.
@@ -0,0 +1,30 @@
1
+ import { test, expect } from '@playwright/test';
2
+ import { chromium } from '@playwright/test';
3
+
4
+ test.describe('Soumission de Demande d\'Alimentation de Compte Professionnel', () => {
5
+
6
+ test.beforeEach(async () => {
7
+ // const browser = await chromium.launch({ headless: !process.env.HEADED });
8
+ // const page = await browser.newPage();
9
+ // global.page = page;
10
+ });
11
+
12
+ test.afterEach(async () => {
13
+ // Cleanup if needed
14
+ });
15
+
16
+ test('Scenario 1', async () => {
17
+ // TODO: Implement test steps from plan
18
+ // Reference: specs/us-expense-01-test-plan.md (Scenario 3.1)
19
+ //
20
+ // Step 1: *Montant demandé* (valeur numérique positive)
21
+ // Step 2: *Motif de la demande* (texte, minimum 15 caractères)
22
+ // Step 3: *Projet associé* (sélection dans une liste déroulante active)
23
+ // Step 4: Le montant demandé doit être compris entre 10 EUR et 5 000 EUR.
24
+ // Step 5: Les messages d'erreur de validation doivent s'afficher en temps réel sous les champs incorrects.
25
+ //
26
+ // Expected: Workflow completes successfully
27
+
28
+ });
29
+
30
+ });
@@ -0,0 +1,24 @@
1
+ # Soumission de Demande d'Alimentation de Compte Professionnel
2
+
3
+ **Story ID**: US-EXPENSE-01
4
+ **Title**: Demande d'Alimentation de Compte
5
+ **Author**: QA Automation Team
6
+
7
+ ## Description
8
+ En tant que collaborateur d'entreprise, je souhaite soumettre une demande d'alimentation pour mon compte de dépenses professionnel afin de couvrir les frais liés à mes déplacements clients sans avancer de fonds personnels.
9
+
10
+ ## Preconditions
11
+ - L'utilisateur est authentifié sur le portail collaborateur.
12
+ - Le compte de l'utilisateur est actif et rattaché à un centre de coût valide.
13
+ - Le solde actuel du compte de dépenses est inférieur à 500 EUR.
14
+
15
+ ## Acceptance Criteria
16
+ 1. **Accès au formulaire** : Un bouton "Nouvelle Demande d'Alimentation" doit être visible depuis le tableau de bord principal.
17
+ 2. **Saisie des informations** : Le formulaire doit comporter les champs obligatoires suivants :
18
+ - *Montant demandé* (valeur numérique positive)
19
+ - *Motif de la demande* (texte, minimum 15 caractères)
20
+ - *Projet associé* (sélection dans une liste déroulante active)
21
+ 3. **Contrôles de validation de surface** :
22
+ - Le montant demandé doit être compris entre 10 EUR et 5 000 EUR.
23
+ - Les messages d'erreur de validation doivent s'afficher en temps réel sous les champs incorrects.
24
+ 4. **Soumission et Historique** : Après soumission réussie, un spinner de chargement doit s'afficher temporairement, suivi d'un toast de succès. L'utilisateur doit être redirigé vers l'historique où la demande doit apparaître avec le statut "En attente de validation".