Protractor: webdriver-manager stdout maxBuffer dépasse

Créé le 7 mai 2014  ·  3Commentaires  ·  Source: angular/protractor

Bonjour à tous

J'utilise Protractor et webdriver-manager start dans une seule tâche grunt, car dans ci je ne peux pas utiliser 2 fenêtres de terminal.

Spécifications : Windows 7, node v0.10.26, Protractor 0.22.0, grunt protractor runner (Qui utilise Protractor 0.22.0)

J'utilise grunt simultanément avec 2 tâches - grunt shell webdriver-manager start et rapporteur. En exécutant les tests un par un, ils réussissent toujours. Exécution de tous les tests,
les premiers tests réussissent, mais au 4ème ou 5ème test ça échoue avec ce message .....Attention : stdout maxBuffer dépassé. Utilisez --force pour continuer.
Il semble que la limite de la mémoire tampon de la commande spawn soit dépassée et la tâche enfant se termine.

J'ai résolu ce problème en modifiant la commande spawn webdriver-manager.

dans Webdriver-manager j'ai changé
return childProcess.spawn(winCommand, finalArgs,
{ stdio : 'hériter' });

à:
return childProcess.spawn(winCommand, finalArgs,
{ stdio : 'ignorer' });

Existe-t-il une autre solution pour que webdriver-manager ne dépasse pas le tampon, ou cela peut-il être configurable ? La fonctionnalité permettant de désactiver la journalisation du spawn peut-elle être incluse dans une future version de Protractor.

Commentaire le plus utile

Désolé pour la lenteur de la réponse. Je suis à peu près sûr que cette erreur est due au fait que le shell grunt utilise la commande child_process.exec de Node. Cela permet une option personnalisée maxBuffer , que vous devriez augmenter. Vous pouvez faire ceci comme:

grunt.initConfig({
    shell: {
        foo: {
            command: 'webdriver-manager start',
            options: {
                stderr: false,
                execOptions: {
                    maxBuffer: 400*1024 // or whatever other large value you want
                }
            }
        }
    }
});

Fermeture car il s'agit d'un problème de grognement.

Tous les 3 commentaires

Désolé pour la lenteur de la réponse. J'ai l'impression que c'est un problème avec grunt - tout ce que fait webdriver-manager est de transmettre la sortie. Je ne suis pas particulièrement familier avec la façon dont grunt gère la sortie, mais peut-être pouvez-vous dire à grunt d'ignorer stdout ?

Bonjour Julie
Sans succès, j'ai pu ignorer stdout du processus enfant dans webdriver-manager. Bien que dans la sortie de la tâche grunt, aucun journal n'apparaisse, après quelques tests, le même message d'erreur est apparu "stdout maxBuffer dépassé". Je n'ai pu contourner le problème qu'en exécutant une tâche de remplacement grunt pour changer le stdio dans le gestionnaire de pilotes Web.

Désolé pour la lenteur de la réponse. Je suis à peu près sûr que cette erreur est due au fait que le shell grunt utilise la commande child_process.exec de Node. Cela permet une option personnalisée maxBuffer , que vous devriez augmenter. Vous pouvez faire ceci comme:

grunt.initConfig({
    shell: {
        foo: {
            command: 'webdriver-manager start',
            options: {
                stderr: false,
                execOptions: {
                    maxBuffer: 400*1024 // or whatever other large value you want
                }
            }
        }
    }
});

Fermeture car il s'agit d'un problème de grognement.

Cette page vous a été utile?
0 / 5 - 0 notes