Выполнение тестов Selenium (Java) в веб-приложениях React-Admin - PullRequest
0 голосов
/ 01 апреля 2020

Кто-нибудь успешно запускает тесты уровня регрессии в приложениях React-admin, использующих Selenium WebDriver?

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

DOM настолько динамичен c, что мне интересно, подходит ли Selenium для веб-приложений, написанных в React-Admin? Буду признателен всем экспертам, которые захотят поделиться своим мнением об этой теме c.

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

@ Test1 1) Проверка существования таблицы 1a) Если таблица существует, удалить все элементы из таблицы

@ Test2 2) Создать новый элемент 2a) Заполнить все поля, связанные с созданием нового элемента 2b ) Нажмите кнопку «Отправить», чтобы сохранить новый элемент. 3) Вернуться на страницу с таблицей элементов.

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

Однако они проходят, только если таблица не существует (нет элементов в таблице) до их запуска. Если в таблице существуют ЛЮБЫЕ элементы, то происходит следующее:

@ Test1, кажется, работает нормально, и я вижу, что флажок «Выбрать ВСЕ» на таблице отмечен, все элементы удаляются, и таблица ясна.

Затем, когда он переходит к @ Test2, я попадаю во 2-е поле процесса создания элемента (это выпадающее меню, в результате которого создается новый ul с множеством элементов li, созданных в DOM), и приложение блокируется индикатором прогресса, показывающим, где обычно находится это раскрывающееся меню, и мой тест в конечном итоге не проходит.

Я перепробовал почти все условия, доступные в условиях явного ожидания, и продолжаю получать тот же результат.

Я также пытался использовать следующий код в начале каждого теста, чтобы убедиться, что страница полностью загружена, но, честно говоря, я не знаю, применяется ли это даже при тестировании на React.

public void waitForPageLoad(WebDriver driver) {
        ExpectedCondition<Boolean> pageLoadCondition = new
                ExpectedCondition<Boolean>() {
                    public Boolean apply(WebDriver driver) {
                        return ((JavascriptExecutor)driver).executeScript("return document.readyState").equals("complete");
                    }
                };
        WebDriverWait wait = new WebDriverWait(driver, 30);
        wait.until(pageLoadCondition);
    }

Если у кого-то есть какие-либо мысли, отзывы, предложения, что-нибудь - по этому поводу, я был бы очень признателен.

Спасибо! Боб

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...