Je suis nouveau sur AngularJS. J'essaie d'apprendre et de faire des tests de bout en bout avec Protractor. J'ai parcouru les informations fournies ici . Je suis coincé quand j'arrive à la partie qui dit "Run with protractor myConf.js
".
Le rapporteur est-il un programme en ligne de commande? Ou quoi? Ce que j'essaie d'identifier, c'est dans quel environnement dois-je exécuter "rapporteur maConf.js" à l'intérieur. Je ne veux pas installer un rapporteur globalement. Je voudrais exécuter le module dans un contexte local. Est-ce une option?
Je vous remercie,
Ce sont les documents de démarrage:
https://github.com/angular/protractor/blob/master/docs/getting-started.md
Vous devez avoir node.js installé sur votre machine, ainsi que le paquet npm node. Une fois ces deux éléments installés, vous pouvez suivre le reste des instructions dans la documentation ci-dessus.
Cela ne devrait prendre que 5 à 10 minutes d’installation avant que vous ayez Protractor opérationnel. Faites-moi savoir si vous êtes toujours bloqué.
Vous devez l'exécuter via noeud.
Donc à partir de la base de votre projet;
node node_modules\protractor\bin\protractor test\myConf.js
Vous pouvez installer Protractor globalement via:
$ npm install -g protractor
Ensuite, il devrait être disponible sur la ligne de commande (Windows/Linux)
$ protractor protractor.conf.js
Pour installer uniquement pour le projet actuel:
$ npm install protractor --save-dev
Il peut être exécuté via le node_modules
comme ceci (Windows/Linux):
$ ./node_modules/.bin/protractor protractor.conf.js
Vous pouvez l'ajouter à votre package.json
pour une exécution plus facile:
"scripts": {
"test": "./node_modules/.bin/protractor protractor.conf.js"
}
Puis plus tard:
$ npm test
Vous devez utiliser npm-run-all (ou concurrently
, parallelshell
), car il permet de mieux contrôler les commandes de démarrage et d’exécution.
Une fois que npm-run-once
, protractor
, http-server
est installé localement, vous pouvez modifier package.json de la manière suivante:
scripts: {
"webdriver-start": "./node_modules/protractor/bin/webdriver-manager update && ./node_modules/protractor/bin/webdriver-manager start",
"protractor": "./node_modules/protractor/bin/protractor ./tests/protractor.conf.js",
"http-server": "./node_modules/http-server/bin/http-server -a localhost -p 8000",
"python-example": "python -m SimpleHTTPServer",
"test1": "npm-run-all -p -r webdriver-start http-server protractor",
"test2": "npm-run-all -p -r webdriver-start python-example protractor"
}
-p = Exécuter des commandes en parallèle.
-r = Élimine toutes les commandes lorsque l’une d’entre elles se termine par zéro.
Lancer npm run test1
lancera le pilote Selenium, démarrera le serveur http (pour vous servir des fichiers) et exécutera des tests de rapporteur. Une fois tous les tests terminés, le serveur http et le pilote Selenium seront fermés.
Voici des exemples utilisant TypeScript, mais si ce n'est pas votre cas, vous pouvez simplement supprimer tous les éléments 'tsc'. Configurez votre package.json scripts section pour ressembler à ceci:
"scripts": {
"postinstall": "node node_modules/protractor/bin/webdriver-manager update",
"pretest": "npm run tsc",
"test": "npm run eslint && npm run protractor",
"eslint": "node node_modules/eslint/bin/eslint.js '*.js' 'test/**/*.js' 'test/**/*.ts'",
"protractor": "node node_modules/protractor/bin/protractor",
"start": "node node_modules/protractor/bin/webdriver-manager start",
"tsc": "node node_modules/TypeScript/bin/tsc"
}
et exécutez npm start
dans un terminal et npm test
dans un autre.
Je pense que la meilleure façon d’exécuter rapporteur est de l’installer localement dans votre projet, puis de l’exécuter avec des scripts npm.
En sauvegardant une étape, npm utilise lui-même une hiérarchie basée sur le système de fichiers pour rechercher les modules exécutables. Si vous tapez npm bin
, npm vous indiquera le premier endroit où il cherchera quelque chose d’exécutable (par exemple, [project]/node_modules/.bin
). Si vous incluez un rapporteur dans votre package.json, lorsque vous effectuez une installation npm, ce dernier ajoutera un lien symbolique dans votre répertoire .bin pour le rapporteur et pour webdriver-manager.
Vous pouvez utiliser cette information de différentes manières pour exécuter le rapporteur. La meilleure façon, à mon avis, est d'utiliser des scripts npm. Lorsque vous utilisez des scripts npm, npm charge automatiquement le rapporteur à partir du répertoire local .bin.
package.json
{
"name": "awesomeapp",
"version": "1.0.0",
"devDependencies": {
"protractor": "latest"
},
"scripts": {
"test-e2e": "protractor protractor.conf",
"Selenium": "webdriver-manager start"
}
}
Alors maintenant, vous pouvez exécuter votre serveur Selenium avec npm run Selenium
, puis exécuter vos tests de rapporteur avec npm run test-e2e
.
Ceci est également multi-plateforme, donc si vous utilisez Mac ou Windows, vous serez couvert d'une manière ou d'une autre.
NOTE: Vous pouvez faire des choses dans ces scripts qui ne sont pas multi-plateformes ( npm docs ) donc si être multi-plateforme est important pour vous et que vous voulez faire quelque chose d'extraordinaire, je vous recommanderais d'utiliser shelljs .
P.P.S. Vous ne voulez pas encombrer le point ci-dessus, mais npm possède également des points d'ancrage pré et post afin que vous puissiez mettre à jour et exécuter Selenium avec une seule commande.
"scripts": {
"preselenium": "webdriver-manager update",
"Selenium": "webdriver-manager start"
}
Théoriquement Windows devrait supporter &&
afin que vous puissiez aussi le faire, mais ymmv ...
"scripts": {
"Selenium": "webdriver-manager update && webdriver-manager start"
}
J'ai un générateur de code qui crée un projet de rapporteur vide. Les instructions doivent être faciles à suivre:
Oui, il est possible d’exécuter un rapporteur en utilisant la commande suivante:
npm install protractor
et vous pouvez alors y accéder par:
./node_modules/.bin/protractor conf.js
Pour plus d'informations, rendez-vous sur: Protractor - Tests de bout en bout pour AngularJS . C'est un très bon endroit pour commencer.
Ici, nous avons un tutoriel complet pour débutants: Rapporteur pour vidéo débutant
Nous avons examiné Protractor avec Chrome sans tête, plusieurs navigateurs s'intégrant à Sauce Labs . Nous allons examiner les rapports d'exécution de l'automatisation des tests et voir comment nous pouvons l'intégrer.
qA génial
npm est distribué avec Node.js, ce qui signifie que lorsque vous téléchargez Node.js, vous obtenez automatiquement npm installé sur votre ordinateur.
1. Install nodejs
Tout d’abord, installez globalement le rapporteur sur votre système: Installez le rapporteur en tant que dépendance de développement:
2. run npm install -g Protractor
3. run npm install protractor --save-dev
Pour installer et démarrer manuellement le serveur autonome Selenium, utilisez l'outil de ligne de commande webdriver-manager, fourni avec Protractor ..__, qui installera le serveur et ChromeDriver.
4. run npm install -g webdriver-manager
5. run updated webdriver-manager
Cela va démarrer le serveur. Vous verrez beaucoup de journaux de sortie, en commençant par INFO. La dernière ligne sera 'Info - Started org.openqa.jetty.jetty.Server'.
5. run start webdriver-manager
Laissez le serveur en marche pendant que vous menez vos sessions de test ..___ Dans votre fichier de configuration, définissez seleniumAddress sur l'adresse du serveur en cours d'exécution. La valeur par défaut est http: // localhost: 4444/wd/hub .
6. Finally run your script - Protractor<location of your config file>conf.js
Commander github: https://github.com/shahing/Protractor-Web-Automation
Vous devez d’abord installer le fichier node.js à partir de https://nodejs.org/en/download/ , puis installer protractor à l’aide de "npm install -g protractor". Cela installera le rapporteur globalement. J'ai rencontré des problèmes lorsque j'ai installé le rapporteur localement. Mieux vaut l'installer globalement. Ou vous pouvez fournir toutes vos dépendances dans le fichier package.json comme ci-dessous:
{
"dependencies": {
"protractor": "4.0.3",//any latest versions of these.
"protractor-jasmine2-screenshot-reporter": "0.3.2",
"jasmine-terminal-reporter": "1.0.3"
},
"scripts": {
"postinstall": "node node_modules\\protractor\\bin\\webdriver-manager update"
}
}
Il existe également des dépendances pour la communication des résultats de test dans le fichier package.json ci-dessus. Et vous devez exécuter la mise à jour webdriver-manager. Il s’agit d’un outil auxiliaire permettant d’exécuter une instance d’un serveur Selenium.
Vous pouvez tout mettre dans le fichier package.json et exécuter "npm install" pour installer toutes les dépendances. Cela créera un dossier "node_modules" pour vous.
Maintenant, créez un fichier de configuration ex: conf.js. Cela peut être quelque chose comme ça.
// An example configuration file. There are the reporters which are used to give the test results. There are many reporters. You can use which ever is convenient. The below reporters are for example to show how to configure them.
var HtmlScreenshotReporter = require('protractor-jasmine2-screenshot-reporter');
var JasmineTerminalReporter = require('jasmine-terminal-reporter');
//To get the Current Date and Time. To make the test output more clear, you can give date.
var currentDate = new Date(),
currentHoursIn24Hour = currentDate.getHours(),
month = currentDate.getMonth() + 1,
totalDateString = currentDate.getDate() + '-' + month + '-' + currentDate.getFullYear() +
'-' + currentHoursIn24Hour + 'h-' + currentDate.getMinutes() + 'm';
var htmlReporter = new HtmlScreenshotReporter({
pathBuilder: function (currentSpec, suites, browserCapabilities) {
'use strict';
return currentSpec._suite.description + totalDateString + '/' + browserCapabilities.get('browserName') + '/' + currentSpec.description;
},
dest: 'TestOutput',
cleanDestination: false,
showSummary: true,
showQuickLinks: true
});
exports.config = {
directConnect: true,//If you make this flag true, it connects the browser directly.
capabilities: {
'browserName': 'chrome'
},
//this is to bring up the test dependencies. Some kind of setup. run once
beforeLaunch: function () {
'use strict';
return new Promise(function (resolve) {
htmlReporter.beforeLaunch(resolve);
});
},
//once per capabilities.
onPrepare: function () {
jasmine.getEnv().addReporter(htmlReporter);
jasmine.getEnv().addReporter(new JasmineTerminalReporter({
isVerbose: true,
showColors: true
}));
},
//A callback function called once all tests have finished running and
// the WebDriver instance has been shut down.
afterLaunch: function (exitCode){
return new Promise(function(resolve){
htmlReporter.afterLaunch(resolve.bind(this, exitCode));
});
},
getPageTimeout: 120000,
allScriptsTimeout: 120000,
specs: ['../TestScripts/*.js']//This contains the test files.
};
Une fois l'installation terminée, créez un fichier de test. Les tests sont écrits en utilisant jasmine framework qui contient "decrire" et "it". "décrire" tiendra "il" qui a les tests en elle. Vous pouvez passer par ceci: http://www.protractortest.org/#/
Maintenant, lancez le test avec "Protractor conf.js". Cela exécutera les tests et générera les rapports également dans le dossier TestOutput que nous avons configuré dans le fichier de configuration.
Si vous avez une suite dans config.js
essayez ceci
suites: {
TESTCASES_RELATED_TO_SUITE1: ['TEST_CASES/Suite1/**/*spec.js'],
TESTCASES_RELATED_TO_SUITE2: ['TEST_CASES/Suite2/**/*spec.js']
},
Les tests peuvent être exécutés à partir de la ligne de commande comme ci-dessous:
<path>protractor config.js --suite TESTCASES_RELATED_TO_SUITE1
Cela n'exécutera qu'une seule suite de tests.
J'utilise IntelliJ pour les tests de rapporteur. Notez également que pour cela, IntelliJ Ultimate Edition est requis avec les installations de node.js et de rapporteur.
Vous trouverez les détails ici Configuration du rapporteur sous IntelliJ