`I.waitForFile` (FileSystem helper) fails if directory does not exist (yet)
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 72/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Calme
- Stack technique
- javascript, nodejs
- Domaine
- testing
Piste de recherche
Commencez dans lib/helper/FileSystem.js au niveau de isFileExists et suivez la manière dont I.waitForFile gère l’absence du répertoire parent et le nettoyage de son timeout. Confirmez le comportement avec la couverture existante de l’helper FileSystem, si elle est disponible ; c’est terminé lorsque l’attente ne lève pas d’exception alors que le répertoire est initialement absent et détecte toujours le fichier dès qu’il apparaît.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
I.waitForFile sometimes fails and throws weird exceptions if the directory containing the expected file does not exist yet.
Example (all output goes to ${codecept_dir}/output/):
I.handleDownloads('downloads/example.txt');
I.click('button.download');
I.amInPath('output/downloads');
I.waitForFile('example.txt', 5);
If the directory ${codecept_dir}/output/downloads does not exist yet (it will be created by the browser download at some point in time), the function I.waitForFile will throw an exception ReferenceError: Cannot access 'watcher' before initialization and the test will fail.
Root cause is in the function isFileExists of the FileSystem helper. The line const watcher = fs.watch(dir, (eventType, filename) => {... will throw if dir does not exist yet. This exception remains unhandled. Later, the timer for the 5sec timeout detection will try to close the uninitialized watcher, leading to the ReferenceError.
I will try to create a PR.
- Langage dominant
- JavaScript
- Étoiles
- 4.2k
- Forks
- 756
- Merge moyen
- 1 j 6 h
- PR mergées (30 j)
- 19
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de codeceptjs/CodeceptJS
-
stale
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
codeceptjs/CodeceptJS#5358 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
stale
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
codeceptjs/CodeceptJS#4958 · 10 commentaires · 2 réactions ·
Les mainteneurs répondent en général sous 1 jour
-
stale
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
codeceptjs/CodeceptJS#4778 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 68/100
codeceptjs/CodeceptJS#5723 ·
Les mainteneurs répondent en général sous 1 jour
-
stale
Difficulté 4/5 3-5 jours Accessibilité débutants 38/100
codeceptjs/CodeceptJS#5618 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de codeceptjs/CodeceptJS
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
mozilla/bedrock#17413 · 1 réaction ·
Les mainteneurs répondent en général sous 2 jours
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
-
automated issue report
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
lirantal/discoprint#31 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 92/100
meshery/meshery.io#3040 ·
Les mainteneurs répondent en général sous 1 jour
-
Internationalization p5.js 2.0+
Difficulté 1/5 Moins d'une heure Accessibilité débutants 95/100
processing/p5.js#9231 ·
Les mainteneurs répondent en général sous 2 jours