Отладка
Отладка значительно усложняется, когда несколько процессов запускают десятки тестов в нескольких браузерах.
Для начала, крайне полезно ограничить параллелизм, установив maxInstances
в 1
, и нацеливаться только на те спецификации и браузеры, которые нуждаются в отладке.
В wdio.conf
:
export const config = {
// ...
maxInstances: 1,
specs: [
'**/myspec.spec.js'
],
capabilities: [{
browserName: 'firefox'
}],
// ...
}
Команда Debug
Во многих случаях вы можете использовать browser.debug()
для приостановки теста и проверки браузера.
Ваш интерфейс командной строки также переключится в режим REPL. Этот режим позволяет вам экспериментировать с командами и элементами на странице. В режиме REPL вы можете обращаться к объекту browser
или функциям $
и $$
, как в ваших тестах.
При использовании browser.debug()
вам, вероятно, потребуется увеличить таймаут в тест-раннере, чтобы предотвратить завершение теста из-за превышения времени. Например:
В wdio.conf
:
jasmineOpts: {
defaultTimeoutInterval: (24 * 60 * 60 * 1000)
}
Смотрите timeouts для получения дополнительной информации о том, как сделать это с использованием других фреймворков.
Чтобы продолжить тесты после отладки, в оболочке используйте сочетание клавиш ^C
или команду .exit
.
Динамическая конфигурация
Обратите внимание, что wdio.conf.js
может содержать JavaScript. Поскольку вы, вероятно, не хотите навсегда изменить значение таймаута на 1 день, часто бывает полезно изменять эти настройки из командной строки с помощью переменной среды.
Используя этот метод, вы мо жете динамически изменять конфигурацию:
const debug = process.env.DEBUG
const defaultCapabilities = ...
const defaultTimeoutInterval = ...
const defaultSpecs = ...
export const config = {
// ...
maxInstances: debug ? 1 : 100,
capabilities: debug ? [{ browserName: 'chrome' }] : defaultCapabilities,
execArgv: debug ? ['--inspect'] : [],
jasmineOpts: {
defaultTimeoutInterval: debug ? (24 * 60 * 60 * 1000) : defaultTimeoutInterval
}
// ...
}
Затем вы можете добавить префикс debug
к команде wdio
:
$ DEBUG=true npx wdio wdio.conf.js --spec ./tests/e2e/myspec.test.js
...и отлаживать свой файл спецификации с помощью DevTools!