QA The Other WayAssurance qualité à l'ère des tests écrits par l'IA. QA The Other Way.
Pratique QA

Testez le contrat d'envoi du fichier, pas son chemin.

Utilisez un petit fichier inventé pour vérifier la sélection et l'acceptation, puis conservez les preuves de traitement du serveur séparément.

7 min de lectureQA The Other Way
Un diagramme de sélection, d'acceptation et de traitement des fichiers rédigé.
Illustration éditoriale rédigée.
Vidéo d'illustration pour cet article. Texte en anglais à l'écran ; sélectionnez les sous-titres pour cette langue.

Édition traduite. Les identifiants techniques restent sous leur forme originale.

Utilisez un petit fichier inventé pour vérifier la sélection et l'acceptation, puis conservez les preuves de traitement du serveur séparément.
Démo locale illustrative avec des entrées inventées, pas une interface client ou fournisseur.

Un sélecteur de fichiers s'ouvre, le test sélectionne un fichier et la suite déclare le téléchargement terminé. L'application n'a reçu que la sélection d'entrée. Il peut toujours rejeter le format, échouer à la validation ou ne jamais terminer le traitement. Une étape de sélection verte est un résultat plus restreint qu'un document téléchargé utilisable.

Ce guide utilise la documentation d'entrée de Playwright pour créer un petit appareil de fichier texte local. Le fichier contient du contenu inventé. Il ne s'agit pas d'une pièce jointe client, d'une pièce d'identité ou d'un exemple de produit. Nous séparons le contrat de saisie du navigateur de tout traitement effectué par l'application par la suite.

Donner au luminaire une identité lisible

Un appareil de test doit indiquer son nom, son type MIME et son contenu. Pour un petit exemple de texte, une charge utile en mémoire est plus facile à examiner qu'un binaire inexpliqué dans un référentiel. Utilisez des données réalistes et valides pour votre produit, mais évitez les documents de source privée lorsqu'un spécimen contrôlé répondra à la question.

await page.getByLabel('Demo attachment').setInputFiles({
  name: 'demo-note.txt',
  mimeType: 'text/plain',
  buffer: Buffer.from('Invented demo note\n', 'utf8')
});
await expect(page.getByRole('status')).toHaveText('Selected: demo-note.txt');

L'extrait suppose une entrée de fichier accessible et un comportement d'interface utilisateur locale qui signale son nom de fichier sélectionné. L'assertion établit ce comportement, et non un stockage réussi sur le serveur. Conservez cette limite dans le titre du test et dans la figure explicative.

Playwright documente les chemins, plusieurs fichiers, les objets de charge utile et la sélection d'effacement via setInputFiles. Sélectionnez la plus petite forme d'entrée qui correspond à la casse. Un test multi-fichiers nécessite des exigences concernant l'ordre, les limites et les erreurs individuelles ; il ne s'agit pas simplement de la même vérification du chemin heureux répétée avec plus de noms.

Utilisez un événement de sélection uniquement lorsqu'il s'agit de la limite nécessaire

Certaines interfaces créent l'entrée dynamiquement après un clic sur un bouton. Le guide de saisie décrit l'attente de l'événement filechooser avant l'action, puis l'appel de setFiles sur le sélecteur renvoyé. Placez l'attente d'événement en premier afin qu'un sélecteur rapide soit toujours connecté au contrôle initiateur.

const pendingChooser = page.waitForEvent('filechooser');
await page.getByRole('button', { name: 'Choose demo file' }).click();
const chooser = await pendingChooser;
await chooser.setFiles({
  name: 'demo-note.txt',
  mimeType: 'text/plain',
  buffer: Buffer.from('Invented demo note\n', 'utf8')
});

Il s'agit d'approches de sélection alternatives pour différentes interfaces, et non de deux étapes requises en un seul téléchargement. N'automatisez pas une boîte de dialogue native du système d'exploitation en devinant les coordonnées de l'écran lorsque l'entrée documentée ou la limite du sélecteur peut exprimer directement l'action.

La sélection, l'acceptation et le traitement sont des états distincts

Après sélection, l'application peut inspecter le fichier, l'envoyer à un serveur et exécuter un processeur en arrière-plan. Écrivez l'état attendu pour chaque couche pertinente. Le message d'acceptation destiné à l'utilisateur doit signifier ce qu'il dit. Si le traitement est toujours en attente, le test ne doit pas indiquer que l'ensemble de la fonctionnalité est terminé.

Pour un parcours de téléchargement réel, utilisez un stockage intermédiaire approuvé et vérifiez l'enregistrement contrôlé final grâce aux preuves prises en charge par le produit. Vérifiez que le bon document est disponible, et pas seulement qu'une double flèche a disparu. Ne téléchargez pas de tests inventés dans le dossier d'un client réel simplement parce que l'interface utilisateur facilite la tâche.

Un nom de fichier et un type MIME sont des entrées et non une preuve indépendante du contenu du fichier. Une charge utile de texte nommée image.png n'est pas une image valide. Choisissez des échantillons délibérément invalides lors du test de rejet et des échantillons valides lors du test d'acceptation. Expliquez quel contrat chaque spécimen est censé exercer.

Gardez les cas invalides petits et utiles

Le produit peut rejeter un format non pris en charge, une entrée surdimensionnée, un fichier vide ou un doublon. Établissez la politique attendue de la part de l'équipe d'application avant de rédiger ces assertions. N'inventez pas de taille maximale et ne supposez pas qu'un attribut d'acceptation du navigateur constitue l'intégralité de la règle de sécurité.

Vérifiez l'explication et l'action suivante sécurisée pour un fichier rejeté. Un utilisateur doit pouvoir choisir un autre fichier ou supprimer la sélection si telle est la conception prévue. Le nettoyage des tests est également important : un téléchargement intermédiaire accepté peut rester après la fermeture du navigateur, alors organisez la suppression des enregistrements via un itinéraire approuvé.

Conservez les appareils et les artefacts de défaillance qui en résultent sous un examen de confidentialité. Les petits éléments inventés sont plus faciles à inspecter et plus sûrs à distribuer que les documents réels capturés. Les captures d'écran et les traces peuvent révéler les noms de fichiers sélectionnés même lorsque les octets du fichier ne sont pas joints.

AnyTest décrit les agents explorant une application Web et créant des tests de bout en bout pour une évaluation humaine. Utilisez ces limites pour examiner tout parcours de dossier proposé : sélectionné, accepté, traité et disponible. Ce guide ne revendique pas une interface de téléchargement AnyTest particulière ou une intégration de validation. L'avantage est un contrat d'artefact clair qui empêche qu'une action de saisie réussie ne devienne une fausse promesse concernant les résultats du serveur.

Questions courantes

La sélection d'un fichier prouve-t-elle que le téléchargement est terminé ?

Non. La sélection, l'acceptation et le traitement final par le serveur sont des preuves distinctes.

Le luminaire peut-il utiliser un vrai document client ?

Utiliser des spécimens de mise en scène inventés ou approuvés. Évitez les fichiers privés lorsque le contenu contrôlé répond à la question du test.

Sources