Webdriverio: Совет, как не пройти тест, если есть ошибки javascript

Созданный на 8 авг. 2017  ·  4Комментарии  ·  Источник: webdriverio/webdriverio

Эта проблема

Кратко опишите проблему, с которой вы столкнулись (или функцию, которую вы хотите добавить в WebdriverIO). Расскажите нам, что вы пытались сделать и что произошло вместо этого. Помните, это _не_ место, чтобы задавать вопросы. Для этого присоединяйтесь к чату Gitter (Gitter )!

Я пробовал использовать Gitter, но никто не ответил.

Среда

  • Версия WebdriverIO: 4.8.0
  • Версия Node.js: 7.7.2
  • Автономный режим или wdio testrunner : wdio
  • если wdio testrunner, запуск синхронных или асинхронных тестов: mocha
  • Используемые дополнительные пакеты wdio (если применимо): нет данных

Подробности

При необходимости опишите более подробно проблему, с которой вы столкнулись.

Я бы хотел, чтобы мой тест не прошел, если на странице есть ошибки javascript.

Ссылка на журналы Selenium / WebdriverIO

NA? Тесты проходят нормально, вот в чем проблема.

Код для воспроизведения проблемы [хорошо иметь]

Пожалуйста, запомните это с помощью примера кода; проще воспроизвести ошибку и гораздо быстрее исправить ее.
Может быть, загрузить страницу и onload = function () {throw "провалить этот тест!" }
Затем запустите тест, который просто посещает эту страницу, и увидите, что тест все еще проходит, даже если в консоли будут созданы ошибки javascript.

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

Мне кажется, что это очень простой вариант использования. Я считаю, что у .Net selenium есть возможность для этого. В PHP и Codeception я прикрепляюсь к каждому «шагу», как и каждая команда в wdio, будь то waitFor *, getText или url (), и каждый шаг я проверяю на наличие ошибок, которые всплывают до window.onerror. Есть ли способ запускать функцию на каждом шаге в wdio?

Полагаю, можно было бы сделать что-то вроде:

window.onerror = function () {
document.write('');
}

Это приведет к тому, что следующий шаг потерпит неудачу. Но это кажется немного ненадежным.
Это, конечно, будет совпадать с командой:

beforeSuite(() => browser.execute(...));

Есть ли способ запускать функцию на каждом шаге в wdio?

Да, у wdio testrunner есть для этого хук

Присоединяйтесь к нашемуGitter на подобные вопросы. Это не обязательно проблема.

Отлично спасибо! Я отправлю свое решение, чтобы оно не прошло тест
и, возможно, мы сможем найти пример использования в документации !!

Любые предложения о том, как не пройти тест, если есть ошибки?

Я попробовал поговорить в чате, но меня проигнорировали.

Это проблема, потому что это очень распространенный вариант использования, который полностью недокументирован.

Вот что я придумал для средства проверки ошибок javascript, которое я использовал на другом сайте, и Codeception, теперь работает с Angular и wdio:

    beforeCommand: function (commandName, args) {
        if (browser.getUrl().indexOf(this.baseUrl) > -1) {
            browser.execute(function () {
                if (window.wdioErrorHandler !== window.onerror) {
                    const oldHandler = window.onerror;
                    window.windowErrors = [];
                    window.onerror = window.wdioErrorHandler = function (err) {
                        window.windowErrors.push(err + '');
                        if (typeof oldHandler === 'function') {
                            oldHandler.apply(this, arguments);
                        }
                    }
                }
            })
        }
    },

    afterCommand: function (commandName, args, result, error) {
        if (browser.getUrl().indexOf(this.baseUrl) > -1) {
            const errors = browser.execute(function () {
                return window.windowErrors;
            });
            if (errors.value !== null && errors.value.length > 0) {
                throw new Error('Javascript errors! ' + errors.value);
            }
        }
    }

Как я намеренно не выполняю команду из блока afterCommand? Мне нужно, чтобы тест не прошел, но даже с throw там все равно говорится, что тест пройден.

Есть ли где-нибудь в документации примеры использования хуков? Может в разделе отладки?

Этот поиск действительно не показывает ничего полезного: https://www.google.com/search?q=wdio+hooks+example

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