auto-tests-2022's People
auto-tests-2022's Issues
Ревью
Создание пользователя должно происходить в самом тесте.
Логин вынести в тест.
Логаут вынести в сам тест, в @after, например.
В @BeforeAll вынести.
Реализовано "Один класс - один тест" - это очень хорошо.
Вынести в @after в тесте, вся зачистка после теста делается там.
Это явно должно быть не в самом тесте.
Работа с урлами из пейджей нужно убрать.
Касается всех классов пейджей. Нужно в методе check(), например, сделать все проверки, прохожденые которых нам бы сказало, что страница загрузилась корректно. Не в самом конструкторе это делать.
Вынести в отдельный класс.
Никаких sleep().
Проверка
Плюсы:
- Инициализация логина и пароля для юзера через отдельный файл
1.5. Классные имена несуществующих друзей - Архитектура нормальная, но есть ряд замечаний
- Почти все необходимые паттерны используются
- Почти все фичи JUnit используются
- Есть тест со стримом
- Прикольная фича со статик методом openPage
- Вынесены все SelenideElement'ы
- Есть матчеры
- Есть статические методы проверки чего то на экране, что делает тесты более читабильными
Минусы:
- Нет паттернов: Page element
- Нет JUnit: @Tag/@Disabled/@DisplayName, assertAll(), Таймауты для тестов
- Паттерн билдер User'а очень примитивный
- Кажется излишним в init() сперва открывать дефолтную страницу, а затем в каждом тесте вызывать authorize() и переходить снова на ok.ru
- Можно isOpen проверять внутри самого пейджа в конструкторе и кидать исключение
- Не совсем понятно зачем в searchPerson() в FriendPage вводить посимвольно и ждать 50 мс
- Элементы не проверяются на shoudBe(visible) или подобное перед тем, как с ним взаимодействовать(вероятно, мы должны быть уверенным, что они уже отрисованы)
Пример: У вас в коде: OPEN_POSTING_MENU_BTN.click();
Нужно: OPEN_POSTING_MENU_BTN.shouldBe(visible).click(); - Condition можно импортировать статически для улучшения читаемости кода
- В Page много повторяющихся методов, которые можно вынести в некий абстрактный класс и наследоваться от него и при необходимости переопределять его
- Тесты простоваты.
- Много где имеются неиспользуемые методы, которые стоит удалить, дабы не нагружать код.
- IDEA подсвечивает методы openGuests(), openMessages(), openNotifications(), logout(), как те, которые можно преобразовать в void. Наверное их возвращаемые значения не используются.
- Немного странно выглядит отрывание Page и их последующая проверка в GuestsOpeningTest, LoginTest и некоторых других функций от страниц.
Поясню:
У вас:
authorize().openGuests();
assertThat(GuestsPage.isOpen()).isTrue();
Читаемее для меня было бы:
GuestsPage guestPage = authorize().openGuests();
assertThat(guestPage.isOpen).isTrue();
Скорее это вкусовщина, но к примеру в LikeTest такое хорошо используется у вас.
P.S: В предложенном мной варианте тогда оправдывается, что методы из 13-го пункта возвращают Page. - Не нашёл в LikeTest снятия лайка после теста
- Миксуются разные библиотеки: Selenium и Selenide (У Selenide есть свой метод byXpath, а у вас используется By.xpath()). Опять же не уверен, насколько это критично, но вроде бы говорилось, что нужно выбрать что-то одно.)
- Unused protected static user field in BaseTest (warning IDEA)
Проверяли:
Задороцкас Никита
Жидков Денис
Бакин Даниил
Оценка: 6.5/10
Правки
-
User
Добавить конструктор, геттеры и сеттеры в класс, чтобы можно было использовать. -
Authorized
Сделать классом, а не интерфейсом
Передавать в user логин и пароль.
BufferedReader reader - убрать, для этого класс User().
Переименовать в BaseTest, например.
В before можно следующее написать:
public void init() {
closeWebDriver();
Configuration.baseUrl = baseUrl;
open("/");
}
private static final String baseUrl = "https://ok.ru";
Также метод для открытия урла:
protected void goToUrl(String url){
open(url);
Работу с пейджами убрать, вынести как вариант в before и after самого теста.
- FeedTest
Один класс - один тест @test.
Дать понятные имена классам тестов.
Extends, а не implements.
Нет проверок с assert. Для чего мы делаем действия в тесте, что проверяем?
Относится ко всем пейджам.
1 Переменные (локаторы) пишем через
private static final By EMAIL_INPUT_XPATH = By.xpath("");
2 Как вариант добавить метод void check() .
3 В будущем методе check(), который нужен нам для проверки видимости/нахождения на странице элемента и тд для дальнейшей работы с ним (клик, например), мы делаем следующее:
с помощью assert и ExpectedConditions проверяем присутствие элемента на странице, также не забываем про ожидания (это для селениума).Нужное применить для селенида.
4 Все вынести в переменные, никакого хардкора.
5 Убрать работу с url в пейджах.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.