Protractor: Le débogage ne fonctionne pas dans Protractor

Créé le 14 août 2014  ·  3Commentaires  ·  Source: angular/protractor

J'ai jeté un coup d'œil sur les problèmes passés et, à ma connaissance, cela ne semble pas être résolu (ces problèmes semblent similaires, mais semblent tous clos):

  • # 907
  • # 552 (qui a une discussion plus approfondie sur le problème existant malgré sa fermeture)

Information sur la version:

  • Mac 10.9.4
  • Nœud 0.10.30
  • Rapporteur 1.0.0
  • Coffeescript 1.7.1

Étapes à suivre pour reproduire:

  • Créez la configuration de rapporteur suivante ( e2e.conf.coffee ):
    Copied from https://github.com/angular/protractor/blob/master/docs/referenceConf.js
    exports.config =
      seleniumServerJar: null
      seleniumPort: null
      seleniumArgs: []
      chromeOnly: true
      seleniumAddress: null
      sauceUser: null
      sauceKey: null
      sauceSeleniumAddress: null

      specs: ["e2e/*.coffee"]
      exclude: []
      capabilities:
        browserName: "chrome"
        count: 1
        shardTestFiles: false
        maxInstances: 1

      multiCapabilities: []
      maxSessions: -1
      baseUrl: "http://localhost:8081"
      rootElement: "body"
      allScriptsTimeout: 11000
      getPageTimeout: 10000
      framework: "jasmine"

      jasmineNodeOpts:
        isVerbose: true
        showColors: true
        includeStackTrace: true
        defaultTimeoutInterval: 30000
  • Créez la spécification suivante dans e2e/spec.coffee
    describe 'Page', () ->
      it 'should debug properly', () ->
        browser.get '/'

        x = 'There is only X'
        y = 1
        z = ++y
        browser.debugger()
  • Exécutez la commande suivante: protractor debug e2e.conf.coffee

Résultat attendu:

  • Le point de rupture est défini à l'emplacement correct
  • Les variables de la portée locale sont accessibles en entrant en mode repl et en accédant à une variable

Résultats:
Le point d'arrêt est défini dans timers.js , et ne peut accéder à aucune variable de portée autre que browser :

protractor debug src/test/e2e.conf.coffee
Using ChromeDriver directly...
Hit SIGUSR1 - starting debugger agent.
debugger listening on port 5858
connecting... ok
break in timers.js:79
  77 }
  78
  79 function listOnTimeout() {
  80   var msecs = this.msecs;
  81   var list = this;
debug> repl
Press Ctrl + C to leave debug repl
> x
ReferenceError: x is not defined
> y
ReferenceError: y is not defined
> z
ReferenceError: z is not defined
> browser
{ controlFlow: [Function],
  schedule: [Function],
  getSession: [Function],
  getCapabilities: [Function],
  quit: [Function],
  ...
}
question

Commentaire le plus utile

quel est donc l'intérêt du mode browser.debugger () ci-dessus? Sinon pour déboguer votre test ...

Tous les 3 commentaires

Je comprends pourquoi cela est déroutant, mais cela fonctionne réellement comme prévu. browser.debugger fait

La raison pour laquelle browser.debugger est exposé est précisément parce que nous ne voulons pas définir de point d'arrêt à l'intérieur du bloc it - nous voulons le définir sur le flux de contrôle entre les deux lorsque les commandes s'exécutent.

Vous pouvez toujours utiliser le bon vieux debugger et exécuter avec l'indicateur --debug pour faire une pause dans le bloc it.

Utiliser un bon vieux débogueur et un rapporteur en cours d'exécution avec l'indicateur --debug n'interrompt pas du tout l'exécution pour moi. : - /

quel est donc l'intérêt du mode browser.debugger () ci-dessus? Sinon pour déboguer votre test ...

Cette page vous a été utile?
0 / 5 - 0 notes