web-dev-qa-db-fra.com

Erreur de rapporteur Angular n'a pu être trouvé sur la page

J'essaie de configurer le test End-2-End pour mon site Angular (1.4) à l'aide de rapporteur (2.1.0). Jasmine est installé et les tests unitaires fonctionnent bien. Lorsque j'exécute le rapporteur, la page d'index #/login se charge dans une fenêtre de navigateur, mais aucun code ne s'exécute et le rapporteur signale cette erreur.

Echec: Angular introuvable sur la page http: //localhost/SpectrumGMWeb/index.html#/login : tentatives de recherche du dépassement angulaire

Mon confr rapporteur ressemble à ceci

exports.config = {
    allScriptsTimeout: 11000,
    seleniumAddress: 'http://127.0.0.1:4444/wd/hub',
    specs: [
        '*.js'
    ],
    rootElement:'html',
    capabilities: {
        'browserName': 'chrome'
    },
    baseUrl: 'http://localhost/SpectrumGMWeb/',
    framework: 'jasmine2',
    jasmineNodeOpts: {
        defaultTimeoutInterval: 30000
    },
};

Mon fichier de test est très simple

describe('my app', function() {

    describe('login', function() {

        beforeEach(function() {
            browser.get('index.html#/login');
        });

        it('should render login page when user navigates to login page', function() {
            expect(true).toBe(true);
        });

    });
});

ng-app = "main" est défini sur l'élément html de index.html. Le site Web fonctionne. 

Des idées?

8
nuander

Merci à tous pour votre contribution. J'ai finalement résolu ce problème en copiant tout le contenu du fichier index.html dans un nouveau fichier. Il semble que le fichier ait été corrompu d’une manière que le rapporteur n’a pas aimée. Je sais que cela semble simple, mais j’ai perdu 2 journées complètes sur ce projet, alors espérons que cela aidera quelqu'un.

4
nuander

Essayez de mettre un browser.ignoreSynchronization = true; avant de faire une browser.get() dans votre fonction de connexion.

8
Rahul Vig

Si vous devez naviguer vers une page qui n'utilise pas Angular, ajoutez cette ligne de code avant la ligne browser.get ():

browser.waitForAngularEnabled (false);

Référence: https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular-on-page-load

3
Mukesh Rajput

J'ai aussi reçu cette erreur et je l'ai corrigée en modifiant la variable "scripts" de package.json à partir de:

"scripts": {
    ...
    "pree2e": "webdriver-manager update --standalone false --gecko false",
    "e2e": "protractor"
  }

à 

"scripts": {
    ...
    // REMOVE "pree2e"
    "e2e": "ng e2e"
  }
0
maia

Êtes-vous sûr d'avoir lancé votre serveur à http://localhost/SpectrumGMWeb/?

Le rapporteur fournit cette URL à Selenium et tente d'accéder à votre application à cette adresse. S'il ne fonctionne pas à cette adresse, Protractor n'obtiendra aucune réponse et vous indiquera l'erreur que vous obtenez.

Si vous avez besoin de conseils sur la manière de mettre en place un serveur local pour servir votre projet, je vous recommande grunt-connect , par exemple comme ceci (qui lancera un serveur à http://localhost:9001

module.exports = function(grunt) {

    grunt.initConfig({
        connect: {
            server: {
                options: {
                    port: 9001,
                    base: '', // root folder of your app files
                     keepalive: true
                }
            }
        }
    });

    grunt.loadNpmTasks('grunt-contrib-connect');
    grunt.registerTask('default', ['connect:server'])
}
0
Raphi