protractorCommencer avec le rapporteur


Remarques

Protractor est un framework de test de bout en bout pour les applications AngularJS.

Protractor est un wrapper (construit sur le dessus) autour de Selenium WebDriver. Il contient donc toutes les fonctionnalités disponibles dans Selenium WebDriver. De plus, Protractor fournit de nouvelles stratégies et fonctions de localisation qui sont très utiles pour automatiser l'application AngularJS. Les exemples incluent des choses comme: waitForAngular, By.binding, By.repeater, By.textarea, By.model, WebElement.all, WebElement.evaluate, etc.

Versions

Version Données de version
0.0.1 2016-08-01

Premier test avec Protractor

Protractor n'a besoin que de deux fichiers pour exécuter le premier test, le fichier de spécifications (code de test) et le fichier de configuration. Le fichier de spécification contient le code de test et l'autre contient les détails de configuration tels que le chemin du fichier de spécification, les détails du navigateur, l'URL de test, les paramètres du framework, etc. , timeout, le framework sera ramassé aux valeurs par défaut.

Le navigateur par défaut pour Protractor est Chrome.

conf.js - Fichier de configuration

exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['spec.js']
};
 

spec.js - Fichier Spec (code de test)

describe('first test in protractor', function() {
  it('should verify title', function() {
    browser.get('https://angularjs.org');

    expect(browser.getTitle()).toEqual('AngularJS — Superheroic JavaScript MVW Framework');
  });
});
 

seleniumAddress - Chemin du serveur sur lequel le serveur webdriver est exécuté.

specs - Un élément de tableau qui contient le chemin des fichiers de test. Les chemins multiples peuvent être spécifiés par des valeurs séparées par des virgules.

describe - Syntaxe du framework Jasmine . describe syntaxe sta

Installation et configuration de Protractor (sous Windows)

Configuration requise: Protractor requiert l'installation des dépendances suivantes avant l'installation:

  • Java JDK 1.7 ou supérieur
  • Node.js v4 ou supérieur

Installation:

Téléchargez et installez Node.js à partir de cette URL: https://nodejs.org/en/

Pour voir si l'installation de Node.js est réussie, vous pouvez aller vérifier les variables d'environnement. Le chemin sous Variables système sera automatiquement mis à jour.

Variable de chemin d'accès pour vérifier l'installation de Node.js


Vous pouvez également vérifier la même chose en tapant la commande npm -version dans l'invite de commande qui vous donnera la version installée.

commande pour vérifier l'installation de Node.js


Maintenant, Protractor peut être installé de deux manières: localement ou globalement.

Nous pouvons installer un rapporteur dans un dossier ou un répertoire de projet spécifique. Si nous installons dans un répertoire de projet, chaque fois que nous courons, nous ne devrions courir que depuis cet emplacement.

Pour installer localement dans le répertoire du projet, accédez au dossier du projet et tapez la commande

npm install protractor


Pour installer Protractor, exécutez globalement la commande:

$ npm install -g protractor
 

Cela installera deux outils de ligne de commande, protractor et webdriver-manager .
Exécutez le protractor --version pour vous assurer que le rapporteur a bien été installé.

webdriver-manager est utilisé pour télécharger les fichiers binaires du pilote du navigateur et démarrer le serveur sélénium.
Téléchargez les fichiers binaires du pilote de navigateur avec:

$ webdriver-manager update
 

Démarrer le serveur de sélénium avec:

$ webdriver-manager start
 

Pour télécharger le pilote Internet Explorer, exécutez la commande webdriver-manager update --ie dans l'invite de commande. Cela va télécharger IEDriverServer.exe dans votre dossier sélénium

Tests en attente

Le rapporteur permet de définir les tests en attente. Cela signifie que le rapporteur n’exécutera pas le test, mais produira à la place:

Pending:
1) Test Name
Temporarily disabled with xit
 

Ou, si désactivé avec xdescribe ():

Pending:
1) Test Name
No reason given
 

Combinaisons

  • Un xit () dans un xdescribe () affichera la réponse xit ().
  • Un xit () dans un fdescribe () sera toujours traité comme étant en attente.
  • Un fit () dans un xdescribe () sera toujours exécuté et aucun test en attente ne produira quoi que ce soit.

Rapporteur: test E2E pour applications angulaires d'entreprise

Installation et configuration du rapporteur

Étape 1 : Téléchargez et installez NodeJS à partir d'ici. Assurez-vous d'avoir la dernière version du noeud. Ici, j'utilise le noeud v7.8.0. Le kit de développement Java (JDK) doit être installé pour exécuter le sélénium.

Étape 2 : Ouvrez votre terminal et entrez la commande suivante pour installer le rapporteur globalement.

npm install -g protractor
 

Cela installera deux outils tels que le rapporteur et le gestionnaire Webdriver. Vous pouvez vérifier l'installation de votre protractor –version. en suivant la commande suivante: protractor –version. Si Protractor est installé avec succès, le système affichera la version installée (c.-à-d. La version 5.1.1). Sinon, vous devrez revérifier l'installation. Étape 3: Mettez à jour le gestionnaire webdriver pour télécharger les fichiers binaires nécessaires.

webdriver-manager update
 

Étape 4: La commande suivante lancera un serveur Selenium. Cette étape exécutera le gestionnaire de pilotes Web en arrière-plan et écoutera tous les tests exécutés via le rapporteur.

webdriver-manager start Vous pouvez voir des informations sur l'état du serveur à l' http://localhost:4444/wd/hub/static/resource/hub.html.

Ecriture du premier cas de test à l'aide du rapporteur:

Avant de passer à l'écriture du scénario de test, nous devons préparer deux fichiers, à savoir le fichier de configuration et le fichier de spécifications.

Dans le fichier de configuration:

//In conf.js
exports.config = {
    baseUrl: ‘http://localhost:8800/adminapp’,
    seleniumAddress: ‘http://localhost:4444/wd/hub',
    specs: [‘product/product_test.js’],
    directConnect : true,
    capabilities :{
        browserName: ‘chrome’
    }
}
 

Compréhension de base des terminologies utilisées dans le fichier de configuration:

baseUrl - Une URL de base pour votre application en cours de test.

seleniumAddress - Pour vous connecter à un serveur Selenium déjà en cours d'exécution.

specs - Emplacement de votre fichier de spécifications

directConnect : true - Pour se connecter directement au navigateur Drivers.

Capacités - Si vous testez sur un seul navigateur, utilisez l'option des fonctionnalités. Si vous testez sur plusieurs navigateurs, utilisez le tableau multiCapabilities.

Vous pouvez trouver plus d'options de configuration à partir d' ici . Ils ont décrit toute la terminologie possible avec sa définition.

Dans le fichier Spec:

//In product_test.js

    describe(‘Angular Enterprise Boilerplate’, function() {
      it('should have a title', function() {
        browser.get('http://localhost:8800/adminapp’);
        expect(browser.getTitle()).toEqual(‘Angular Enterprise Boilerplate’);
      });
    });
 

Compréhension de base des terminologies utilisées dans les fichiers de spécifications:

Par défaut, Protractor utilise le framework jasmine pour son interface de test. La syntaxe 'describe' et 'it' provient du framework Jasmin. Vous pouvez en apprendre plus d'ici. Exécution du premier test:

Avant de lancer le test, assurez-vous que votre gestionnaire webdriver et votre application s'exécutent dans différents onglets de votre terminal.

Maintenant, lancez le test avec:

Protractor app/conf.js
 

Vous devriez voir que le navigateur chrome s'ouvre avec l'URL de votre application et se ferme. Le résultat du test doit être 1 test, 1 assertion, 0 échec.

Bravo! Vous avez réussi votre premier scénario de test.

Tests de fonctionnement sélectif

Protractor peut exécuter des groupes de tests de manière sélective en utilisant fdescribe () au lieu de describe ().

fdescribe('first group',()=>{
    it('only this test will run',()=>{
        //code that will run
    });
});
describe('second group',()=>{
    it('this code will not run',()=>{
        //code that won't run
    });
});
 

Le rapporteur peut exécuter des tests de manière sélective dans des groupes en utilisant fit () au lieu de celui-ci ().

describe('first group',()=>{
    fit('only this test will run',()=>{
        //code that will run
    });
    it('this code will not run',()=>{
        //code that won't run
    });
});
 

S'il n'y a pas de fit () dans un fdescribe (), alors chaque it () sera exécuté. Cependant, un fit () bloquera les appels () dans le même describe () ou fdescribe ().

fdescribe('first group',()=>{
    fit('only this test will run',()=>{
        //code that will run
    });
    it('this code will not run',()=>{
        //code that won't run
    });
});
 

Même si un fit () est dans un describe () au lieu d'un fdescribe (), il s'exécutera. De même, tout it () dans un fdescribe () qui ne contient pas de fit () sera exécuté.

fdescribe('first group',()=>{
    it('this test will run',()=>{
        //code that will run
    });
    it('this test will also run',()=>{
        //code that will also run
    });
});
describe('second group',()=>{
    it('this code will not run',()=>{
        //code that won't run
    });
    fit('this code will run',(){
        //code that will run
    });
});
 

Ecrivez un test du rapporteur

Ouvrez une nouvelle ligne de commande ou une fenêtre de terminal et créez un dossier propre à tester.

Le rapporteur a besoin de deux fichiers à exécuter, un fichier de spécifications et un fichier de configuration.

Commençons par un test simple qui navigue vers l'exemple de liste de tâches sur le site Web AngularJS et ajoute un nouvel élément todo à la liste.

Copiez ce qui suit dans spec.js

describe ('angularjs homepage todo list', function () {it ('devrait ajouter un todo', function () {browser.get (' https://angularjs.org ');

element(by.model('todoList.todoText')).sendKeys('write first protractor test');
element(by.css('[value="add"]')).click();

var todoList = element.all(by.repeater('todo in todoList.todos'));
expect(todoList.count()).toEqual(3);
expect(todoList.get(2).getText()).toEqual('write first protractor test');

// You wrote your first test, cross it off the list
todoList.get(2).element(by.css('input')).click();
var completedAmount = element.all(by.css('.done-true'));
expect(completedAmount.count()).toEqual(2);});});