40 votes

intégration de Protractor (pour les tests e2e) avec yeoman dans un fichier grunt pour Angular Js

Je veux intégrer Protractor à Yeoman. Actuellement, dans yeoman, il utilise scenario runner pour les tests e2e. Je veux utiliser Protractor pour les tests e2e. Comment puis-je faire cela ?

Aidez-moi pour cela

85voto

user2172816 Points 725
  1. Installer protractor y grunt-protractor-runner de npm :

    npm install protractor grunt-protractor-runner --save-dev
  2. Créer un fichier de configuration pour protractor ( protractor.conf.js ), changer specs y baseUrl à vos fichiers de test et à votre serveur de test :

    exports.config = {
      seleniumAddress: 'http://localhost:4444/wd/hub',
      specs: ['test/e2e/*_test.js'],
      baseUrl: 'http://localhost:9001' //default test port with Yeoman
    }
  3. Mettez à jour votre Gruntfile.js ajoutez ce qui suit après la tâche karma :

    protractor: {
      options: {
        keepAlive: true,
        configFile: "protractor.conf.js"
      },
      run: {}
    }
  4. Ajouter la tâche du rapporteur en cours de test

    grunt.registerTask('test', [
      'clean:server',
      'concurrent:test',
      'autoprefixer',
      'connect:test',
      'karma',
      'protractor:run'
    ]);
  5. Téléchargez et démarrez le serveur Selenium :

    node_modules/protractor/bin/webdriver-manager update
    node_modules/protractor/bin/webdriver-manager start

    (Dans Windows :)

    node node_modules/protractor/bin/webdriver-manager update
    node node_modules/protractor/bin/webdriver-manager start
  6. Mettez à jour votre package.json ajoutez le texte suivant après "devDependencies" . Ceci exécutera la commande après npm install pour que vous n'ayez pas à vous en souvenir à chaque fois.

    "scripts": {
      "install": "node node_modules/protractor/bin/webdriver-manager update"
    }
  7. Exécuter le test en utilisant grunt

    grunt test

Si vous voulez que protractor démarre le serveur pour vous, supprimez

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

de protractor.conf.js puis en exécutant grunt test démarrera une instance autonome de selenium pendant le test et la quittera après l'exécution de la suite de tests.

10voto

Always Learning Points 203

Une chose à ajouter à la réponse existante ; si vous voulez démarrer le serveur Selenium automatiquement, vous devez également spécifier l'emplacement de votre seleniumServerJar et chromeDriver (si vous utilisez Chrome) de cette façon, sinon les tests ne fonctionneront pas jusqu'à ce que vous démarriez manuellement le serveur Selenium (assurez-vous d'exécuter "webdriver-manager update" à partir de la ligne de commande d'abord) :

protractor: {
        options: {
            keepAlive: false,
            configFile: "test/config/protractor.conf.js",
            noColor: true, // If true, protractor will not use colors in its output.

            args: {
                seleniumServerJar: 'node_modules/protractor/selenium/selenium-server-standalone-2.39.0.jar',
                chromeDriver: 'node_modules/protractor/selenium/chromedriver.exe'
            }
        },
        run: {

        }
    },

5voto

a darren Points 1882

Comme @user2172816 mentions - omissions seleniumAddress: 'http://localhost:4444/wd/hub' de votre configuration Protractor fera généralement en sorte que Protractor démarre une instance Selenium pour vous.

Comme alternative, vous pouvez utiliser grunt-protractor-webdriver pour lancer Selenium :

1) Installer et sauvegarder grunt-protractor-webdriver

npm install grunt-protractor-webdriver --save-dev

2) Ajoutez ensuite ce qui suit dans votre fonction de définition Grunt :

grunt.loadNpmTasks('grunt-protractor-webdriver');

3) Ajoutez ensuite l'exemple suivant de tâche protractor webdriver :

protractor_webdriver: {
        start: {
            options: {
                path: 'node_modules/protractor/bin/',
                command: 'webdriver-manager start'
            }
        }
    }

4) Ajouter protractor_webdriver à votre test avant de lancer Protractor, par exemple.

grunt.registerTask('test', [
    'clean:server',
    'concurrent:test',
    'autoprefixer',
    'connect:test',
    'karma',
    'protractor_webdriver',
    'protractor:run'
]);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X