@mostajs/kind-catalog 0.1.0 → 0.1.1
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/CHANGELOG.md +23 -0
- package/docs/DEVTEST-PLAN.kind-catalog.json +14 -0
- package/package.json +1 -1
- package/src/projection.js +19 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
**Auteur** : Dr Hamid MADANI <drmdh@msn.com>
|
|
4
4
|
|
|
5
|
+
## 0.1.1 — 2026-09-03
|
|
6
|
+
|
|
7
|
+
### Ajouté — `bind` : lier une épreuve à l'essai qui la couvre DÉJÀ
|
|
8
|
+
|
|
9
|
+
Constaté **en instanciant pour la première fois**, dans ATC. Une application qui reprend une fiche
|
|
10
|
+
l'éprouve déjà, la plupart du temps : ATC vérifiait la garde de périmètre par cinq essais avant que
|
|
11
|
+
la fiche n'existe.
|
|
12
|
+
|
|
13
|
+
Sans liaison, la projection ajoutait **cinq essais `automated` sans renvoi** — c'est-à-dire cinq
|
|
14
|
+
trous dans la porte qualité de l'application, et une invitation à réécrire ce qui existe.
|
|
15
|
+
|
|
16
|
+
```js
|
|
17
|
+
toDevtest(kinds, { project, prefix: 'ATC', bind: {
|
|
18
|
+
'KIND-PERIMETRE-01': ['test-scripts/unit/portail.test.mjs::T-POR-2', null, …],
|
|
19
|
+
}})
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Une épreuve non liée devient `manual`, et c'est voulu** : elle reste visible dans le suivi comme
|
|
23
|
+
un travail à faire, sans mentir sur son état. La déclarer `automated` sans renvoi prétendrait qu'un
|
|
24
|
+
essai la couvre.
|
|
25
|
+
|
|
26
|
+
`T-KC-6b` tient les deux cas. 23 essais.
|
|
27
|
+
|
|
5
28
|
## Non publié — 2026-09-02 (soir) · le corpus double par EXPLORATION du parc
|
|
6
29
|
|
|
7
30
|
Sept applications du parc ont été relues — CRM/TRADING, LabTrax, CollabTrax, LabTraxAdmin, SofTrax,
|
|
@@ -407,6 +407,20 @@
|
|
|
407
407
|
"expected": "au moins trois incidents, issus de projets DISTINCTS — une exigence rencontrée dans trois projets indépendants n'est plus une opinion d'auteur, c'est un fait du métier"
|
|
408
408
|
}
|
|
409
409
|
]
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
"ref": "T-KC-6b",
|
|
413
|
+
"specRef": "SPEC-KC-03",
|
|
414
|
+
"type": "automated",
|
|
415
|
+
"priority": "critical",
|
|
416
|
+
"title": "T-KC-6b — une épreuve LIÉE devient automatisée ; non liée, elle reste MANUELLE",
|
|
417
|
+
"autoRef": "test-scripts/unit/catalogue.test.mjs::T-KC-6b",
|
|
418
|
+
"steps": [
|
|
419
|
+
{
|
|
420
|
+
"action": "projeter une fiche à deux épreuves, dont une seule liée à un essai réel",
|
|
421
|
+
"expected": "la liée est `automated` avec son renvoi ; l'autre est `manual` sans renvoi — la déclarer automatisée prétendrait qu'un essai la couvre, et ouvrirait un trou dans la porte qualité de l'application"
|
|
422
|
+
}
|
|
423
|
+
]
|
|
410
424
|
}
|
|
411
425
|
]
|
|
412
426
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mostajs/kind-catalog",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Catalogue de KINDS — fiches d'exigence réutilisables, projetables en plan mostajs-devtest/1 lisible par qatrax. N'exécute rien, ne stocke rien.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "AGPL-3.0-or-later",
|
package/src/projection.js
CHANGED
|
@@ -27,8 +27,20 @@ const corps = (ref) => propre(ref).replace(/^KIND-/, '');
|
|
|
27
27
|
* @param {{key:string,name:string,description?:string}} o.project le projet, au sens qatrax
|
|
28
28
|
* @param {string} o.prefix préfixe des références — `ATC`, `RESTO`… ISOLE deux applications qui
|
|
29
29
|
* reprennent la même fiche : sans lui, leurs plans se marcheraient dessus dans le même qatrax.
|
|
30
|
+
* @param {object} [o.bind] ce que l'application COUVRE DÉJÀ : `{ 'KIND-X': [autoRef|null, …] }`,
|
|
31
|
+
* une entrée par épreuve de la fiche, dans l'ordre.
|
|
32
|
+
*
|
|
33
|
+
* ⚠️ POURQUOI `bind` EXISTE — constaté le 03/09/2026, en instanciant pour la première fois.
|
|
34
|
+
* Une application qui reprend une fiche l'éprouve DÉJÀ, la plupart du temps : ATC vérifiait la
|
|
35
|
+
* garde de périmètre par cinq essais avant que la fiche n'existe. Sans `bind`, la projection
|
|
36
|
+
* ajoutait cinq essais `automated` SANS renvoi — c'est-à-dire cinq trous dans la porte qualité,
|
|
37
|
+
* et une invitation à réécrire ce qui existe.
|
|
38
|
+
*
|
|
39
|
+
* ⚠️ UNE ÉPREUVE NON LIÉE DEVIENT `manual`, ET C'EST VOULU. Elle reste visible dans le suivi
|
|
40
|
+
* comme un travail à faire, sans mentir sur son état : la déclarer `automated` sans renvoi
|
|
41
|
+
* prétendrait qu'un essai la couvre.
|
|
30
42
|
*/
|
|
31
|
-
export function toDevtest(kinds = [], { project, prefix = 'APP' } = {}) {
|
|
43
|
+
export function toDevtest(kinds = [], { project, prefix = 'APP', bind = {} } = {}) {
|
|
32
44
|
if (!project?.key || !project?.name) throw new Error('toDevtest: `project` { key, name } requis');
|
|
33
45
|
const p = propre(prefix).toUpperCase();
|
|
34
46
|
const plan = { plan: PLAN_VERSION, project: { ...project }, specs: [], realisations: [], tests: [] };
|
|
@@ -61,13 +73,18 @@ export function toDevtest(kinds = [], { project, prefix = 'APP' } = {}) {
|
|
|
61
73
|
status: 'todo',
|
|
62
74
|
});
|
|
63
75
|
|
|
76
|
+
const lie = Array.isArray(bind?.[k.ref]) ? bind[k.ref] : [];
|
|
64
77
|
k.test.forEach((t, i) => {
|
|
78
|
+
const renvoi = propre(lie[i]) || null;
|
|
65
79
|
plan.tests.push({
|
|
66
80
|
ref: `T-${p}-${corps(k.ref)}-${i + 1}`,
|
|
67
81
|
specRef,
|
|
68
82
|
title: `T-${p}-${corps(k.ref)}-${i + 1} — ${t.action}`,
|
|
69
|
-
|
|
83
|
+
// Lié à un essai réel → automatisé. Non lié → MANUEL : un travail à faire, pas un
|
|
84
|
+
// essai qu'on prétend avoir écrit.
|
|
85
|
+
type: renvoi ? 'automated' : 'manual',
|
|
70
86
|
priority: 'critical',
|
|
87
|
+
...(renvoi ? { autoRef: renvoi } : {}),
|
|
71
88
|
steps: [{ action: t.action, expected: t.attendu }],
|
|
72
89
|
});
|
|
73
90
|
});
|