Files
khadhroony-bot3/docs/validation/WEBSOCKET_LIFECYCLE_VALIDATION_SCENARIO.md
2026-08-01 11:28:43 +02:00

117 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- file: docs/validation/WEBSOCKET_LIFECYCLE_VALIDATION_SCENARIO.md -->
<!-- version: 2 -->
# Validation du cycle de vie WebSocket desktop
## Objectif
Prouver quune session WebSocket appartient à lapplication et non à la fenêtre `demo_ws`.
## Préparation
1. Configurer un endpoint WebSocket Devnet dans le profil utilisé.
2. Activer une route de logs contenant au minimum `kb-app-demo-desktop` et `kb-onchain-transport` au niveau `debug`.
3. Lancer :
```bash
cargo tauri dev -c kb-app-demo-desktop/tauri.conf.json 2>&1 | tee /tmp/kbot3-pre075-ws.log
```
4. Ouvrir la fenêtre **WebSocket standard**.
5. Rafraîchir les endpoints et vérifier quun rôle compatible est disponible.
## Souscription principale recommandée
Utiliser `logsSubscribe`, car elle permet de filtrer les transactions mentionnant un Program ID.
| Champ | Valeur |
|-------------|----------------------------------------------------------------|
| Rôle | rôle WebSocket standard Devnet disponible |
| Méthode | `logsSubscribe` |
| Target | vide |
| Filter JSON | `{"mentions":["TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"]}` |
| Config JSON | `{"commitment":"confirmed"}` |
Le Program ID choisi est SPL Token classique. Il peut être remplacé par Token-2022 :
```text
TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
```
## Scénario A — fermeture et réouverture de la fenêtre
1. Cliquer **Souscrire**.
2. Noter lidentifiant de subscription et vérifier :
- statut connecté ;
- `subscriptionCount = 1` ;
- méthode `logsSubscribe`.
3. Attendre au moins une notification ou, à défaut, conserver la réponse de subscription.
4. Fermer uniquement la fenêtre `demo_ws` avec le bouton de la fenêtre.
5. Ne pas cliquer sur **Unsubscribe** ni **Déconnecter socket**.
6. Attendre 15 à 30 secondes.
7. Rouvrir **WebSocket standard** depuis le menu principal.
8. Vérifier immédiatement :
- statut connecté ;
- même endpoint ;
- subscription toujours présente ;
- même identifiant distant ou identifiant remappé explicitement après reconnexion ;
- nouveaux messages reçus si le réseau en produit.
### Critère de réussite
La fenêtre restaurée affiche létat réel de la session persistante. Aucun événement `Disconnected` ne doit être provoqué par la fermeture de `demo_ws`.
## Scénario B — unsubscribe explicite
1. Sélectionner la subscription active.
2. Cliquer **Unsubscribe sélectionnée**.
3. Vérifier :
- `subscriptionCount = 0` ;
- socket encore connectée ;
- message de désinscription ;
- absence de nouvelles notifications pour cette subscription.
## Scénario C — nouvelle subscription puis déconnexion explicite
1. Souscrire de nouveau avec le même filtre.
2. Vérifier `subscriptionCount = 1`.
3. Cliquer **Déconnecter socket**.
4. Vérifier :
- statut déconnecté ;
- aucune subscription active ;
- événement ou diagnostic de déconnexion dans les logs.
## Scénario D — arrêt global de lapplication
1. Souscrire de nouveau.
2. Fermer la fenêtre `demo_ws`.
3. Fermer ensuite la fenêtre principale de lapplication.
4. Vérifier dans `/tmp/kbot3-pre075-ws.log` que la déconnexion globale est exécutée.
5. Vérifier que le processus Tauri se termine sans rester en arrière-plan.
## Scénario optionnel — `programSubscribe`
Pour observer les changements de comptes appartenant à Token-2022 :
| Champ | Valeur |
|-------------|--------------------------------------------------|
| Méthode | `programSubscribe` |
| Target | `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb` |
| Filter JSON | vide |
| Config JSON | `{"commitment":"confirmed","encoding":"base64"}` |
Cette souscription peut être très active. Les limites de débit et de taille de linterface doivent rester fonctionnelles.
## Preuves à archiver
Fournir une archive contenant :
- `/tmp/kbot3-pre075-ws.log` ;
- copie du statut avant fermeture ;
- copie du statut après réouverture ;
- identifiants de subscription ;
- résultat unsubscribe ;
- résultat disconnect ;
- heure approximative de chaque étape ;
- anomalie éventuelle et reproduction minimale.