трудность в поимки AJAX сообщения об ошибке

codeception
webdriver
Теги: #<Tag:0x00007fedbfd77620> #<Tag:0x00007fedbfd77468>

(Konstantin) #1

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

Вопрос: как отлавливать такие ошибки в автотестах?

У меня была идея воспользоваться встроенным хуком _beforeStep и проверять перед каждым стером $I->dontSeeElement(); но почему-то _beforeStep у меня не работает, либо я незнаю как им пользоваться.

Прошу помощи с _beforeStep либо у кого-то есть более умный вариант?


(Ray Romanov) #2

Посмотри здесь: http://codeception.com/docs/08-Customization#Events


(Konstantin) #3

решил проблему так:

написал модуль который перед каждым степом проверяет нету ли AJAX окна с ошибкой

class CheckAjaxErrors extends CodeceptionModule
{
    public function _beforeStep() {
        try {
            $ajaxError = $this->getModule('WebDriver')->webDriver->findElement(WebDriverBy::className('bg-danger'));
        } catch (\Exception $e) {
            /* do nothing, ajax window is not present, assert is passed */
        }

        if (!empty($ajaxError)){
            throw new ModuleException($this, "AJAX Error window appeared on the page");
        }
    }
}

и затем подключил в конфиг сьюта. Незнаю насколько правельнео и красиво получилось, но работает.