2017-07-11 3 views
0

Je suis confronté à un problème ennuyeux avec un rapporteur tout en essayant de lancer un test.Protractor "- Échec: Impossible de lire la propriété 'ver' de null"

Version Protractor: 5.1.2

protractor.conf.js

var SpecReporter = require('jasmine-spec-reporter'); 

exports.config = { 
    allScriptsTimeout: 11000, 
    specs: [ 
    './e2e/**/*.e2e-spec.ts' 
    ], 
    capabilities: { 
    'browserName': 'chrome' 
    }, 
    directConnect: true, 
    baseUrl: 'http://localhost:8080/src/', 
    framework: 'jasmine', 
    jasmineNodeOpts: { 
    showColors: true, 
    defaultTimeoutInterval: 30000, 
    print: function() {} 
    }, 
    useAllAngular2AppRoots: true, 
    beforeLaunch: function() { 
    require('ts-node').register({ 
     project: 'e2e' 
    }); 
    }, 
    onPrepare: function() { 
    jasmine.getEnv().addReporter(new SpecReporter()); 
    }, 
    rootElement: '*[ng-app]', 
}; 

Le fichier de test de bout en bout "app.comp.e2e-spec.js"

import { browser, element, by, $ } from 'protractor'; 

describe('testproject App', function() { 

    it('should display message saying app works', (done) => { 
    browser.get('/'); 
    expect($('.my-span').isPresent()).toBe(true); 
    return done(); 
    }); 

}); 

Chaque fois que je lance le test (protractor protractor.conf.js), je rencontre ce message d'erreur:

1) testproject App should display message saying app works 
- Failed: Cannot read property 'ver' of null 

Executed 1 of 1 spec (1 FAILED) in 0.984 sec. 
[11:27:52] I/launcher - 0 instance(s) of WebDriver still running 
[11:27:52] I/launcher - chrome #01 failed 1 test(s) 
[11:27:52] I/launcher - overall: 1 failed spec(s) 
[11:27:52] E/launcher - Process exited with error code 1 

J'ai bien sûr une application Angular qui s'exécute sur localhost: 8080/index et fonctionne parfaitement lorsque vous accédez manuellement avec un navigateur. Quelqu'un aurait-il une idée pour résoudre ce problème? Merci d'avance

+0

Thnx pour toutes les informations, mais est-ce vraiment tout le journal que vous avez, n'y at-il aucune référence à un fichier dans le journal? – wswebcreation

+0

@wswebcreation Veuillez trouver la sortie complète de la commande ici: https://pastebin.com/3tLdGGvw – Bil5

+0

Comme je me souviens il y a une option dans le 'jasmine-spec-reporter' pour activer stacktrace dans le journal, pouvez-vous activer ou désactiver le 'jasmine-spec-reporter' et placer le journal ici encore? – wswebcreation

Répondre

-1
expect($('.my-span').isPresent()).toBe(true); 

isPresent() renvoie une promesse non vraie ou fausse.

Pour vérifier élément est présent, utilisez la valeur qui promettent des rendements:

element(anyFinder).isPresent().then(function(isPresent) { 
    if (isPresent) { 
    // The element is present 
    } else { 
    // The element is not present 
} 
}); 
+2

C'est partiellement vrai. Avec Jasmine vous pouvez toujours utiliser 'expect ($ ('. My-span'). IsPresent()). ToBe (true);', il le résoudra de Jasmine – wswebcreation

+1

Merci Dharam mais comme dit wswebcreation, il est encore possible de utiliser l'autre façon, de toute façon avec votre code j'ai le même message d'erreur – Bil5

+0

Ajouter un peu de vous attendre code et et aussi vérifier en utilisant .isDisplayed()) .Equal (faux); – Dharam

0

Dans mon cas, cette erreur a été soulevée lorsqu'un message d'alerte inattendu a été déclenché lors de la configuration de l'application/charge. Cela s'est produit en raison de l'échec de communiquer avec un système externe, ce qui est arrivé uniquement dans Travis CI. Comme c'était le seul message d'erreur, il a fallu beaucoup de temps pour déterminer la cause réelle. (Le moment de l'eureka était quand j'ai suivi l'appel de browser.get() avec un .then() avec des tests espérés délibérément séparés() dans les gestionnaires normal et error, ceci a remplacé l'échec 'ver' avec un plus instructif et utile message d'échec concernant une alerte inattendue.)

La solution consistait à supprimer la dépendance au système externe (qui n'aurait pas dû être dans la configuration de test en premier lieu).