Нужна оценка кода (WebDriver, PageObject)

Добрый день.
Решил так сказать бурно взяться за написание норм. кода (используя WebDriver, PageObject). Есть сайт, нужно пройти по вкладкам и добраться до списка всех телефонов, затем с первых 3-х страниц, взять названия и цену всех телефонов которые с пометкой “Топ продаж” и запомнить эту инфу (я записываю её в txt файл), вот как то так )).
Буду благодарен за норм критику и подсказки по совершенствованию кода.

ссылка на код: GitHub - comrozetka/first

Так при беглом рассмотрении:
Пакеты называйте мальенькими буквами(code conventions)
Зачем храните в переменных класса станицы?

Надо конечно глубже смотреть.

Зачем храните в переменных класса станицы?
Чтобы не загромождать код тестового метода

И загромождать код класса)) если переменная нужна только в методе - заводите ее в методе.

Еще вопрос, обязательно ли нужно возвращать в методе перехода на другую страницу, объект второй страницы?

Скорее да.

Ну а по большому оно то ни на что не влияет, просто хороший тон!

Это вы про что? Про возвращение обьектов? Это не хороший тон, а правильный подход. Тем самым вы как бы говорите - после исполнения этого метода переходим на другую страницу

Просто в некоторых реализациях встречал без возвращения объекта следующей страницы

Я тоже так сказать начинающий и тоже сделано без возвращения новой страницы. Работает и так, а в чем разница не знаю. Мой подход:

//Steps on page 1
accoutPage = new AccoutPage(driver);
accoutPage.navigateAccounts();
accoutPage.switchToiFrame2();
accoutPage.typeSearch(accname);
Assert.assertEquals(userOne, accoutPage.getOwner());

//Steps on page 2
contactPage = new ContactPage(driver);
contactPage.navigateContacts();
contactPage.switchToiFrame1();
contactPage.typeSearch(contname);
Assert.assertEquals(userTwo, contactPage.getOwner());

без возвращения новой страницы теряется контекст, после вызова метода - не понятно на какой странице вы находитесь.

Это тот случай когда PageObject(а точнее ООП), вам помогает писать тесты которые выглядят посимпатичнее так сказать.
Согласитесь вот так(пример c#) выглядит лучше

new Pages.MainPage(driver)
   .Register()
   .OpenMenu()
   .SendNewMail();

Нежели

MainPage mainpage = new MainPage(driver);
mainpage.Register();
ClientPage openmenu = new ClientPage(driver);
openmenu.OpenMenu();

ну и т.п.

Спасибо за разьяснение. Это толко с “эстетической стороны красивее” или это влияет както на скорость выполнения кода / использования ресурсов