Перейти к основному содержимому

Как отладить работу теста

Проблема

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

Давайте разберемся, какие возможности есть у разработчика testplane-тестов.

Решение 1: опция --inspect или --inspect-brk

Для того чтобы видеть как тест выполняется шаг за шагом, в testplane существует режим отладки. Этот режим опирается на интеграцию V8 инспектора с Node.js.

Про интеграцию V8 инспектора с Node.js

Интеграция с инспектором V8 позволяет подключать Chrome DevTools к инстансу Node.js для отладки и профилирования. Для этого используется протокол Chrome DevTools.

Инспектор V8 можно включить, передав опцию --inspect при запуске приложения на Node.js. Также можно указать пользовательский порт с этой опцией, например, --inspect=9222 будет принимать подключения DevTools на порту 9222.

Чтобы остановить выполнение кода на первой строке приложения, вместо опции --inspect используйте опцию --inspect-brk.

$ node --inspect index.js
Debugger listening on ws://127.0.0.1:9229/dc9010dd-f8b8-4ac5-a510-c1a114ec7d29
For help, see: https://nodejs.org/en/docs/inspector

В приведенном выше примере UUID dc9010dd-f8b8-4ac5-a510-c1a114ec7d29 в конце URL'а генерируется «на лету», и отличается в разных сеансах отладки.

Если браузер Chrome старше 66.0.3345.0, используйте inspector.html вместо js_app.html в приведенном выше URL-адресе.

Chrome DevTools пока не поддерживает отладку рабочих потоков. Для их отладки можно использовать ndb.

Чтобы запустить тест в этом режиме, используйте опцию --inspect. Если вы хотите, чтобы отладчик остановился на первой строке кода, то используйте опцию --inspect-brk.

Пример:

testplane path/to/mytest.js --inspect
к сведению

В режиме отладки запускается только один рабочий процесс, и все тесты выполняются только в нем. Используйте этот режим с параметром sessionsPerBrowser=1 для отладки тестов по одному за раз.

Ключевые слова

  • --inspect
  • --inspect-brk