Protractor: Отладка не работает в транспортире

Созданный на 14 авг. 2014  ·  3Комментарии  ·  Источник: angular/protractor

Я просмотрел прошлые проблемы, и, насколько мне известно, это не решено (эти проблемы кажутся похожими, но все они кажутся закрытыми):

  • # 907
  • # 552 (В котором есть дальнейшее обсуждение проблемы, существующей, несмотря на то, что она закрыта)

Информация о версии:

  • Mac 10.9.4
  • Узел 0.10.30
  • Транспортир 1.0.0
  • Coffeescript 1.7.1

Действия по воспроизведению:

  • Создайте следующую конфигурацию транспортира ( 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
  • Создайте следующую спецификацию в e2e/spec.coffee
    describe 'Page', () ->
      it 'should debug properly', () ->
        browser.get '/'

        x = 'There is only X'
        y = 1
        z = ++y
        browser.debugger()
  • Выполните следующую команду: protractor debug e2e.conf.coffee

Ожидаемый результат:

  • Точка останова установлена ​​в правильном месте
  • Переменные в локальной области доступны при входе в режим repl и доступе к переменной

Полученные результаты:
Точка останова установлена ​​в timers.js , и не может получить доступ ни к каким переменным в области кроме 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

Самый полезный комментарий

в чем же тогда смысл вышеупомянутого режима browser.debugger ()? Если не отлаживать тест ...

Все 3 Комментарий

Я понимаю, почему это сбивает с толку, но на самом деле это работает так, как задумано. browser.debugger приостанавливается за пределами области вашего it-блока, поэтому x, y и z фактически не должны быть определены.

Причина, по которой browser.debugger заключается именно в том, что мы не хотим устанавливать точку останова внутри блока it - мы хотим установить ее в потоке управления между ними, когда команды выполняются.

Вы все еще можете использовать старый добрый debugger и запускать с флагом --debug чтобы фактически приостановить работу в блоке it.

Использование старого доброго отладчика и запуск транспортира с флагом --debug для меня вообще не приостанавливает выполнение. : - /

в чем же тогда смысл вышеупомянутого режима browser.debugger ()? Если не отлаживать тест ...

Была ли эта страница полезной?
0 / 5 - 0 рейтинги