@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.
- package/DESIGN.md +0 -0
- package/install.js +1 -0
- package/package.json +4 -3
- package/qa-dashboard/app.js +52 -0
- package/qa-dashboard/package-lock.json +1002 -0
- package/qa-dashboard/public/css/style.css +1062 -207
- package/qa-dashboard/public/js/main.js +3 -2
- package/qa-dashboard/routes/export.js +35 -16
- package/qa-dashboard/routes/index.js +38 -1
- package/qa-dashboard/routes/runs.js +58 -6
- package/qa-dashboard/routes/stories.js +59 -15
- package/qa-dashboard/services/cli-bridge.js +47 -3
- package/qa-dashboard/services/project-manager.js +26 -0
- package/qa-dashboard/views/analytics.ejs +226 -153
- package/qa-dashboard/views/index.ejs +241 -82
- package/qa-dashboard/views/layouts/main.ejs +18 -0
- package/qa-dashboard/views/project.ejs +49 -29
- package/qa-dashboard/views/projects.ejs +7 -5
- package/qa-dashboard/views/run.ejs +97 -37
- package/qa-dashboard/views/runs.ejs +29 -38
- package/qa-dashboard/views/stories.ejs +23 -25
- package/qa-dashboard/views/story.ejs +94 -15
- package/qa-dashboard/views/test-data.ejs +24 -24
- package/scripts/executor.js +11 -7
- package/specs/us-expense-01-test-plan.md +55 -0
- package/tests/us-expense-01.spec.ts +30 -0
- package/user-story/Demande-alimentation.md +24 -0
package/scripts/executor.js
CHANGED
|
@@ -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
|
|
34
|
+
args.push('--reporter', 'list,json');
|
|
35
35
|
|
|
36
36
|
if (headed) args.push('--headed');
|
|
37
|
-
if (retries > 0) args.push(
|
|
38
|
-
if (workers) args.push(
|
|
39
|
-
if (timeout) args.push(
|
|
40
|
-
if (screenshots === 'off')
|
|
41
|
-
|
|
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".
|