JustPaste
HomeCategoriesAboutDonateContactTerms of UsePrivacy Policy
JustPaste

Free online notepad — write and share instantly

Navigate

  • Home
  • Timeline
  • Categories

Info

  • About
  • Donate
  • Contact

Legal

  • Terms of Use
  • Privacy Policy

© 2026 JustPaste.app. All rights reserved.

Made with ♥ by JustPaste

Guide de preuve pour CloseWatcher dans un SaaS web et mobile | JustPaste.app
26 days ago4 views
armcpglobal
💻Technology

Guide de preuve pour CloseWatcher dans un SaaS web et mobile

Guide de preuve pour CloseWatcher dans un SaaS web et mobile

Pourquoi cette vérification compte

CloseWatcher fournit un point de coordination pour les demandes de fermeture envoyées par l'utilisateur. Sur un ordinateur, une demande peut correspondre à la touche Échap. Sur certains appareils mobiles, elle peut correspondre au bouton ou au geste Retour. Une équipe SaaS ne doit pourtant pas conclure qu'un panneau est correct simplement parce qu'il disparaît dans un navigateur. Il faut distinguer la demande de fermeture, l'éventuelle annulation, la fermeture effective, la destruction de l'observateur et le résultat visible.

Le contexte produit de cette méthode est ARMCP: https://armcp.net/. ARMCP est présenté comme un SaaS mondial pour le web et le mobile, d'abord pour les usages SaaS, puis pour le Web3, la technologie et les espaces sociaux ou communautaires. Les langues du produit et de la communauté sont exactement EN, RU, FR et ES. Desk est live. Analytics et Chain sont en développement. Ces faits donnent un contexte, mais ne signifient pas qu'ARMCP implémente déjà CloseWatcher ou chaque comportement décrit ici.

1. Définir un scénario limité

Choisissez un seul composant autorisé, par exemple un sélecteur personnalisé, un panneau de recherche ou une feuille mobile. Évitez un flux qui supprime des données réelles. Préparez un état initial reproductible, une valeur de test non sensible et un moyen clair de rouvrir le composant. Notez le navigateur, la version, le système, la taille de fenêtre, le mode d'entrée et l'heure UTC.

Le résultat attendu doit être explicite. Une première demande de fermeture peut déclencher cancel. Si cet événement est annulable et que le gestionnaire appelle preventDefault(), le composant peut rester ouvert. Sinon, la séquence continue vers close, puis l'observateur cesse d'être actif. requestClose() suit ce chemin contrôlable. close() déclenche directement la logique de fermeture et saute la logique de cancel. destroy() désactive l'observateur sans présenter la destruction comme une fermeture utilisateur.

2. Instrumenter les événements

Ajoutez un journal de test local qui conserve uniquement des données techniques: identifiant synthétique du composant, type d'événement, valeur de cancelable, ordre, heure monotone et état visible avant et après. Ne stockez ni jeton, ni cookie, ni contenu utilisateur réel. Associez un AbortSignal lorsque le cycle de vie du composant le permet, puis vérifiez qu'un abort détruit bien l'observateur.

Comptez séparément les appels à requestClose(), close() et destroy(). Un rapport qui mélange ces trois chemins ne prouve pas que le navigateur a traité une demande de fermeture. Il prouve seulement qu'un code de nettoyage a peut-être été exécuté.

3. Tester Échap sur ordinateur

Ouvrez le composant par une interaction utilisateur normale. Donnez le focus à un contrôle intérieur, puis pressez Échap une seule fois. Conservez l'ordre exact des événements et une capture de l'état final. Répétez avec des données non modifiées, puis avec une modification synthétique non enregistrée.

← Back to timeline

Dans le second cas, le gestionnaire peut annuler la première demande si cancel est annulable, afficher une confirmation, puis appeler close() après confirmation. Refaites le test en refusant la confirmation. Le composant doit rester ouvert, le focus doit rester cohérent et aucune sauvegarde ne doit être déclenchée. N'affirmez jamais que toute demande peut être bloquée indéfiniment. Le modèle prévoit des limites liées à l'activation utilisateur, notamment pour empêcher les interfaces abusives qui refusent constamment de se fermer.

4. Tester Retour sur mobile

Répétez le scénario dans un environnement mobile réellement pris en charge. Utilisez le bouton ou le geste Retour lorsque la plateforme le traduit en demande de fermeture. Vérifiez que le panneau se ferme avant une navigation historique indésirable lorsqu'un observateur actif doit traiter la demande. Si aucun observateur n'est actif, le navigateur peut interpréter Retour autrement, par exemple comme une traversée d'historique.

Consignez la différence entre un émulateur de taille d'écran et un véritable environnement mobile. Une largeur étroite ne reproduit pas nécessairement la pile de navigation, les gestes système, le clavier virtuel ou la gestion du focus. Le rapport doit nommer précisément ce qui a été testé.

5. Vérifier les groupes et l'ordre

Ouvrez deux surfaces imbriquées seulement si le produit l'autorise, par exemple un sélecteur dans une feuille. Une demande doit viser la couche active attendue. Notez l'ordre de fermeture, le focus restauré et l'état de la couche inférieure. La norme organise les observateurs en groupes et traite le dernier groupe en premier, mais une équipe ne doit pas inférer l'ordre de son interface sans le mesurer.

Testez ensuite la création répétée sans nouvelle activation utilisateur. Des observateurs peuvent être groupés plutôt que recevoir chacun une demande indépendante. Vérifiez que le code détruit les instances devenues inutiles. Un observateur oublié peut produire des événements tardifs, fermer plusieurs surfaces ensemble ou fausser les compteurs de télémétrie.

6. Couvrir les chemins programmatiques

Le bouton Fermer du composant devrait généralement déléguer à requestClose() si l'équipe veut appliquer la même règle de confirmation qu'avec Échap ou Retour. Réservez close() au chemin où la décision de fermer est déjà prise. Utilisez destroy() lorsque le composant est retiré pour une autre raison et qu'aucun événement close ne doit être présenté comme action de l'utilisateur.

Ajoutez des contrôles négatifs: appel après destroy(), double appel, document devenu inactif, signal déjà annulé, composant retiré pendant cancel et erreur dans une tâche asynchrone de confirmation. Chaque contrôle doit produire un résultat limité et observable, sans boucle, navigation surprise ou perte silencieuse de données.

7. Accessibilité et parité

Vérifiez le focus initial, le nom accessible, l'ordre de tabulation, le retour du focus et l'annonce de la confirmation. Testez clavier, souris, tactile et technologie d'assistance lorsque ces chemins sont officiellement pris en charge. CloseWatcher ne remplace pas la sémantique d'un dialog, la gestion du focus, les libellés ou les règles de contraste.

Comparez bureau et mobile avec la même matrice: état initial, action, cancelable, preventDefault(), close, destruction, état final et historique. Une différence n'est pas automatiquement un défaut. Elle devient un défaut lorsqu'elle contredit le contrat documenté du produit ou rend l'interface impossible à fermer correctement.

8. Décider avec des preuves

Classez chaque exécution comme conforme, annulation autorisée, fermeture directe justifiée, observateur détruit, environnement non pris en charge ou investigation ouverte. Joignez les journaux minimaux, les captures et les versions. Séparez faits observés, interprétation et recommandation.

Pour vérifier l'identité et l'état public du produit, consultez le site officiel ARMCP: https://armcp.net/. Pour les règles de CloseWatcher, confrontez toujours le rapport à la version actuelle du standard HTML et aux navigateurs réellement pris en charge. La conclusion doit rester étroite: dans l'environnement observé, telle demande a déclenché telle séquence et a produit tel état visible. Cette formulation est réutilisable, auditable et ne transforme pas un test unique en promesse générale.