web-dev-qa-db-fra.com

Impossible d'exécuter le rapporteur - ECONNREFUSED connect ECONNREFUSED

J'essaie d'apprendre AngularJS. Dans ce cadre, je souhaite apprendre à utiliser des tests de bout en bout. Actuellement, j'ai une structure de répertoire comme celle-ci:

node_modules
  .bin
  ...
  protractor
    ...
    node_modules
       .bin
       adam-Zip
       glob
       minijasminenode
       optimist
       saucelabs
       Selenium-webdriver
protractor
  config.js
src
  tests
    test.e2e.js

Mon fichier config.js ressemble à ceci:

exports.config = {
    seleniumAddress: 'http://localhost:4444/wd/hub',

    capabilities: {
        'browserName': 'chrome'
    },

    specs: [
        '../src/tests/test.e2e.js'
    ],

    jasmineNodeOpts: {
        showColors: true,
        defaultTimeoutInterval: 30000
    }
};

test.e2e.js ressemble à ceci:

'use strict';

describe('My Sample', function () {
    driver = protractor.getInstance();

    beforeEach(function () {
        driver.get('#/');
    });

    it('My First Test', function () {
        message = "Hello.";
        expect(message).toEqual('World.');
    });
});

Lorsque je tente d'exécuter mes tests de bout en bout à l'aide de rapporteur, j'exécute la commande suivante à partir de la ligne de commande:

node_modules\.bin\protractor protractor\config.js

Lorsque j'exécute cette commande, le message d'erreur suivant s'affiche:

C:\Src\MyProject\node_modules\protractor\node_modules\Selenium-webdriver\lib\webdriver\promise.js:1542
      throw error;
            ^
Error: ECONNREFUSED connect ECONNREFUSED
    at ClientRequest.<anonymous> (C:\Src\MyProject\node_modules\protractor\node_modules\Selenium-webdriver\http\index.js:12
7:16)
    at ClientRequest.EventEmitter.emit (events.js:95:17)
    at Socket.socketErrorListener (http.js:1528:9)
    at Socket.EventEmitter.emit (events.js:95:17)
    at net.js:441:14
    at process._tickCallback (node.js:415:13)
==== async task ====
WebDriver.createSession()
    at Function.webdriver.WebDriver.acquireSession_ (C:\Src\MyProject\node_modules\protractor\node_modules\Selenium-webdriv
er\lib\webdriver\webdriver.js:130:49)
    at Function.webdriver.WebDriver.createSession (C:\Src\MyProject\node_modules\protractor\node_modules\Selenium-webdriver
\lib\webdriver\webdriver.js:110:30)
    at Builder.build (C:\Src\MyProject\node_modules\protractor\node_modules\Selenium-webdriver\builder.js:105:20)
    at runJasmineTests (C:\Src\MyProject\node_modules\protractor\lib\runner.js:191:45)
    at C:\Src\MyProject\node_modules\protractor\lib\runner.js:255:5
    at C:\Src\MyProject\node_modules\protractor\node_modules\Selenium-webdriver\lib\goog\base.js:1178:15
    at webdriver.promise.ControlFlow.runInNewFrame_ (C:\Src\MyProject\node_modules\protractor\node_modules\Selenium-webdriv
er\lib\webdriver\promise.js:1438:20)
    at notify (C:\Src\MyProject\node_modules\protractor\node_modules\Selenium-webdriver\lib\webdriver\promise.js:328:12)
    at then (C:\Src\MyProject\node_modules\protractor\node_modules\Selenium-webdriver\lib\webdriver\promise.js:377:7)

Qu'est-ce que je fais mal? 

34
SL Dev

J'ai résolu ce problème avec --standalone:

webdriver-manager start --standalone

63
juanignaciosl

Je l'ai obtenu en supprimant la ligne suivante de mon config.js

seleniumAddress: 'http://localhost:4444/wd/hub',

29
Shashank Avusali

Utilisez-vous un serveur Selenium? Le git README indique ce qui suit:

WebdriverJS n'inclut pas nativement le serveur Selenium - vous devez démarrer un serveur Selenium autonome. Tout ce dont vous avez besoin est la dernière version de Selenium-server-standalone.

source: https://github.com/angular/protractor

13
annalogarhythm

Le message d'erreur est dû à ce qui suit:

[ECONNREFUSED] La tentative de connexion a été ignorée (car la cible n'écoute pas les connexions) ou explicitement rejetée.

Vérifiez l'URL du gestionnaire Webdriver. L'URL par défaut est:

http://localhost:4444/wd/hub

Utilisez un processus en arrière-plan pour exécuter webdriver-manager, puis exécutez rapporteur:

Start-Process webdriver-manager start -passthru
protractor conf.js

Cela démarrera un serveur Selenium et générera une série de journaux d’informations. Votre test de Protractor enverra des demandes à ce serveur pour contrôler un navigateur local. Laissez ce serveur en marche

Références

5
Paul Sweatte

Pour moi, cela était dû à des versions incompatibles de Node and Protractor.

Mon fix-

  1. Mise à jour du nœud vers la dernière version (v7.0.0 dans mon cas)

Suivez les étapes indiquées ici https://stackoverflow.com/a/19333717/1902831

  1. Installez la dernière version du rapporteur (4.0.10 dans mon cas) en utilisant: 

npm install -g rapporteur

  1. Ouvrez un autre terminal et exécutez ces commandes:

mise à jour de webdriver-manager

webdriver-manager start

  1. Exécutez des tests dans un autre terminal en utilisant:

rapporteur conf.js

4
Shardul

J'ai également rencontré le même problème, le truc qui a fonctionné pour moi est d'utiliser deux fenêtres de commande, en gardant celle ouverte après avoir tapé webdriver-manager start et sans appuyer sur enter key (si la touche entrée est enfoncée, le serveur Selenium est arrêté, don ' sais pas pourquoi) ouvre une autre fenêtre cmd et appelle tes tests.

2
kavinhuh

Si vous utilisez le plugin npm protractor-webdriver grunt ( https://www.npmjs.org/package/grunt-protractor-webdriver ), vous pouvez provoquer le même type d'erreur . Ceci est dû à webdriver résiliation juste avant la fin du test. Le test s'exécute avec succès et vous recevez un message du type:

Session deleted: Going to shut down the Selenium server
Shutting down Selenium server: http://127.0.0.1:4444
Shut down Selenium server: http://127.0.0.1:4444 (OKOK)

d:\Projets\Clouderial\nodeProjects\cld-apps\node_modules\grunt-protractor-runner\node_modules\protractor\node_modules\Selenium-webdriver\http\index.js:145
      callback(new Error(message));
               ^
Error: ECONNREFUSED connect ECONNREFUSED
    at ClientRequest.<anonymous> (d:\Projets\Clouderial\nodeProjects\cld-apps\node_modules\grunt-protractor-runner\node_modules\protractor\node_modules\Selenium-webdriver\http\index.js:145:16)
    at ClientRequest.EventEmitter.emit (events.js:95:17)
    at Socket.socketErrorListener (http.js:1547:9)
    at Socket.EventEmitter.emit (events.js:95:17)
    at net.js:440:14
    at process._tickCallback (node.js:419:13)

Je résous cela en utilisant l'option keepAlive dans le plugin grunt.

Voici ma config Gruntfile.js:

protractor_webdriver: {
        options: {
            keepAlive : true   // True to keep the webdriver alive
        },
        start: {
        },
    },
...

J'espère que cela aidera quelqu'un.

JM.

2
jmcollin92

Dans l'espoir que cela puisse aider quelqu'un: J'avais le même problème: rencontrer ECONNREFUSED à l'aide de grunt-protractor-runner. La nuance de mon cas est que j'exécutais tout mon environnement E2E (fichiers de test, application Web et backend complet) dans un conteneur Docker. 

J'ai essayé de courir rapporteur

  • avec et sans la tâche grunt-protractor-webdriver supplémentaire pour que Webdriver soit opérationnel manuellement (aucune différence);
  • avec et sans l'activation des paramètres directConnect et keepAlive (en contournant Selenium et en provoquant des accidents liés à Chromedriver, dont l'un a été décrit ici ).

La solution était assez simple: augmenter la quantité de mémoire allouée au conteneur. Sur mon ordinateur hôte Windows 10, j'ai effectué les étapes suivantes:

  1. Exécutez VBoxManage.exe modifyvm default --memory 8192 (via un script shell personnalisé) avant de démarrer le docker-machine (via le script Docker Quickstart, équivalent à docker-machine start). (Merci à this SO de répondre ).
  2. Changer mon script Shell pour exécuter mon conteneur par défaut, en ajoutant l'argument --shm-size=4G à ma commande docker run. ( Voir docs )
    • Vous pouvez vérifier si cela a fonctionné en exécutant df -h sur votre ordinateur invité, en vérifiant la quantité de mémoire montée sur /dev/shm.

En conséquence, je n'ai plus d'erreurs apparemment inexplicables telles qu'ECONNREFUSED.

1
David Remie

@ Alexandros Spyropoulos, il m'a fallu un certain temps pour comprendre comment exécuter un rapporteur et je pense que nous avons eu le même problème. Vous devez ouvrir un onglet de terminal et exécuter webdriver-manager start --standalone. Ensuite, ouvrez une autre étiquette de terminal et exécutez le rapporteur ***. Conf.js 

1
minisand

Si vous exécutez la démo de rapporteur fournie, vous devriez essayer d'exécuter la configuration du rapporteur dans la même invite de commande que Selenium. Essayez d’exécuter le serveur et le rapporteur Selenium séparément.

Assurez-vous que le premier sélénium s'exécute en suivant la commande.

webdriver-manager start --standalone

Et exécutez le rapporteur dans une fenêtre de commande séparée.

protractor conf.js

(Dans mon cas, conf.js était le fichier de configuration)

0
Vicky Rajkumar

J'ai rencontré un problème similaire à celui de @David Remie, confronté à la grille/autonome Selenium Docker. Avec un minimum de RAM/CPU, les tests commenceraient avant que le WebDriver soit en place. Une approche moins consommatrice de ressources consiste à attendre quelques secondes avant de tester (exécutez 'sommeil 5' ou quelque chose comme ça). 

Augmenter RAM était parfois suffisant comme solution de contournement au problème, mais le vrai problème était que le sélénium CMD (/opt/bin/entry_point.sh, démarre un superviseur qui exécute le pilote Web) à partir de l'image basée sur https://hub.docker.com/r/Selenium/node-base/dockerfile prenait le temps de démarrer le WebDriver Selenium.

0
Nahshon paz