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
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
Installer protractor
y grunt-protractor-runner
de npm
:
npm install protractor grunt-protractor-runner --save-dev
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
}
Mettez à jour votre Gruntfile.js
ajoutez ce qui suit après la tâche karma :
protractor: {
options: {
keepAlive: true,
configFile: "protractor.conf.js"
},
run: {}
}
Ajouter la tâche du rapporteur en cours de test
grunt.registerTask('test', [
'clean:server',
'concurrent:test',
'autoprefixer',
'connect:test',
'karma',
'protractor:run'
]);
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
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"
}
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.
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: {
}
},
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 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.