Skip to content

Commit 0b18a93

Browse files
committed
🔧 update tests and dependencies
1 parent 9ebb28c commit 0b18a93

6 files changed

Lines changed: 168 additions & 3 deletions

File tree

TESTING.md

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
# Guide de test des nouvelles fonctionnalités
2+
3+
## Démarrage rapide
4+
5+
### Mode Web (recommandé pour tester rapidement)
6+
7+
```bash
8+
npm run dev
9+
```
10+
11+
Ouvre l'application dans le navigateur avec hot-reload.
12+
13+
### Mode Desktop (pour tester les notifications et fonctionnalités natives)
14+
15+
```bash
16+
npm run electron:dev
17+
```
18+
19+
Lance l'application Electron avec toutes les fonctionnalités desktop.
20+
21+
## Tests des nouvelles fonctionnalités
22+
23+
### 1. Export/Import de configurations
24+
25+
**Test Export :**
26+
1. Sélectionne quelques scripts dans l'interface
27+
2. Clique sur le bouton "Export Config" (icône flèche vers le bas)
28+
3. Vérifie que le fichier JSON est téléchargé/ouvert
29+
4. Vérifie le contenu : version, OS, liste des scripts avec leurs IDs
30+
31+
**Test Import :**
32+
1. Clique sur "Import Config" (icône dossier ouvert)
33+
2. Sélectionne un fichier JSON exporté précédemment
34+
3. Vérifie que les scripts sont automatiquement sélectionnés
35+
4. Vérifie que les scripts "revert" sont correctement marqués
36+
37+
### 2. Mode Preview
38+
39+
1. Sélectionne plusieurs scripts
40+
2. Clique sur le bouton "Preview" (icône info)
41+
3. Vérifie que la dialog s'ouvre avec :
42+
- Nombre de scripts sélectionnés
43+
- Nombre de scripts à revert
44+
- Liste des scripts avec badges "Revert"
45+
- Code généré complet
46+
47+
### 3. Notifications
48+
49+
**Test notifications succès :**
50+
1. Sélectionne des scripts
51+
2. Clique sur "Run"
52+
3. Vérifie qu'une notification système apparaît : "Script executed successfully"
53+
54+
**Test notifications erreur :**
55+
1. Force une erreur d'exécution (script invalide, permissions, etc.)
56+
2. Vérifie qu'une notification d'erreur critique apparaît
57+
58+
### 4. Profils prédéfinis
59+
60+
1. Va dans le menu "Profiles" (dans le menu des scripts)
61+
2. Vérifie que les profils disponibles s'affichent selon l'OS :
62+
- Windows : Basic Privacy, Advanced Privacy
63+
- macOS : Basic Privacy, Advanced Privacy
64+
- Linux : Basic Privacy, Advanced Privacy
65+
3. Clique sur un profil
66+
4. Vérifie que les scripts correspondants sont sélectionnés
67+
68+
### 5. Dashboard de statistiques
69+
70+
1. Clique sur le bouton "Statistics" dans le footer
71+
2. Vérifie que la dialog s'ouvre avec :
72+
- Total Scripts
73+
- Selected Scripts
74+
- Categories
75+
- Reverted Scripts
76+
- Breakdown par niveau (Standard/Strict)
77+
78+
### 6. Badges README
79+
80+
1. Ouvre le README.md
81+
2. Vérifie que les badges s'affichent :
82+
- Views Counter
83+
- GitHub Downloads
84+
- Version
85+
- License
86+
- CI/CD
87+
- Maintained
88+
- Last commit
89+
90+
## Tests automatisés
91+
92+
### Tests unitaires
93+
94+
```bash
95+
npm run test:unit
96+
```
97+
98+
### Tests d'intégration
99+
100+
```bash
101+
npm run test:integration
102+
```
103+
104+
### Vérification du linting
105+
106+
```bash
107+
npm run lint
108+
```
109+
110+
### Vérification TypeScript
111+
112+
```bash
113+
npx vue-tsc --noEmit
114+
```
115+
116+
## Tests de build
117+
118+
### Build web
119+
120+
```bash
121+
npm run build
122+
npm run preview
123+
```
124+
125+
### Build desktop
126+
127+
```bash
128+
npm run electron:prebuild
129+
npm run electron:build:linux # ou :win, :mac
130+
```
131+
132+
## Checklist de test
133+
134+
- [ ] Export de configuration fonctionne
135+
- [ ] Import de configuration fonctionne
136+
- [ ] Preview affiche correctement les changements
137+
- [ ] Notifications apparaissent (succès et erreur)
138+
- [ ] Profils s'appliquent correctement
139+
- [ ] Dashboard affiche les bonnes statistiques
140+
- [ ] Badges README s'affichent
141+
- [ ] Pas d'erreurs dans la console
142+
- [ ] Application compile sans erreurs
143+
- [ ] Tests unitaires passent
144+

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/unit/infrastructure/Dialog/Electron/ElectronDialog.spec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ describe('ElectronDialog', () => {
5757
showErrorBox: (...args) => {
5858
actualShowErrorArgs = args;
5959
},
60+
showOpenDialog: async () => ({ canceled: true, filePaths: [] }),
6061
};
6162
const electronDialog = new ElectronDialogBuilder()
6263
.withElectron(electronDialogAccessorSpy)
@@ -82,6 +83,7 @@ function createTestSaveFileArguments(): Parameters<ElectronSaveFileDialog['saveF
8283
class ElectronDialogBuilder {
8384
private electron: ElectronDialogAccessor = {
8485
showErrorBox: () => {},
86+
showOpenDialog: async () => ({ canceled: true, filePaths: [] }),
8587
};
8688

8789
private saveFileDialog: ElectronSaveFileDialog = {

tests/unit/infrastructure/Dialog/Electron/NodeElectronSaveFileDialog.spec.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,13 @@ describe('NodeElectronSaveFileDialog', () => {
8787
extensions: ['sh', 'bash', 'zsh'],
8888
},
8989
],
90+
[FileType.Json]: [
91+
defaultFilter,
92+
{
93+
name: 'JSON Files',
94+
extensions: ['json'],
95+
},
96+
],
9097
};
9198
Object.entries(testScenarios).forEach(([fileTypeKey, expectedFilters]) => {
9299
const fileType = Number(fileTypeKey) as FileType;

tests/unit/presentation/bootstrapping/DependencyProvider.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ describe('DependencyProvider', () => {
2727
useDialog: createTransientTests(),
2828
useScriptDiagnosticsCollector: createTransientTests(),
2929
useAutoUnsubscribedEventListener: createTransientTests(),
30+
useNotificationService: createTransientTests(),
3031
};
3132
Object.entries(testCases).forEach(([key, runTests]) => {
3233
const injectionKey = key as InjectionKeyType;

tests/unit/shared/Stubs/DialogStub.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { Dialog, SaveFileOutcome } from '@/presentation/common/Dialog';
1+
import type { Dialog, SaveFileOutcome, OpenFileOutcome } from '@/presentation/common/Dialog';
22
import { StubWithObservableMethodCalls } from './StubWithObservableMethodCalls';
33

44
export class DialogStub
@@ -20,4 +20,15 @@ export class DialogStub
2020
args: [...args],
2121
});
2222
}
23+
24+
public openFile(...args: Parameters<Dialog['openFile']>): Promise<OpenFileOutcome> {
25+
this.registerMethodCall({
26+
methodName: 'openFile',
27+
args: [...args],
28+
});
29+
return Promise.resolve({
30+
success: true,
31+
fileContents: '',
32+
});
33+
}
2334
}

0 commit comments

Comments
 (0)