diff --git a/README.md b/README.md index 4c98b6b..9497b9a 100644 --- a/README.md +++ b/README.md @@ -4,3 +4,5 @@ ![img_3.png](img_3.png) +"Идеальная реализация должна позволить в теории создать третий похожий сценарий с другими категориями товаров, не написав ни единой дополнительной строчки Java кода." +- такого не получилось, пришлось добавить один степ для второго сценария \ No newline at end of file diff --git a/src/test/java/ru/ibs/framework/pages/CatalogPage.java b/src/test/java/ru/ibs/framework/pages/CatalogPage.java index f9301cf..c5e3ab4 100644 --- a/src/test/java/ru/ibs/framework/pages/CatalogPage.java +++ b/src/test/java/ru/ibs/framework/pages/CatalogPage.java @@ -21,6 +21,12 @@ public class CatalogPage { categoryLink.click(); } + public void selectCategoryMainMenu(String name) { + WebElement categoryLink = wait.until(ExpectedConditions.elementToBeClickable( + By.xpath("//a/div[text()='" + name + "']"))); + categoryLink.click(); + } + public void closeCookieBannerIfPresent() { try { WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5)); diff --git a/src/test/java/ru/ibs/framework/pages/ListingPage.java b/src/test/java/ru/ibs/framework/pages/ListingPage.java index c18dc43..b5fec28 100644 --- a/src/test/java/ru/ibs/framework/pages/ListingPage.java +++ b/src/test/java/ru/ibs/framework/pages/ListingPage.java @@ -24,13 +24,6 @@ public class ListingPage { waitForJSIdle(); } - public void selectGigabyte() { - WebElement checkbox = wait.until(ExpectedConditions.elementToBeClickable( - By.cssSelector("input[id*='Gigabyte'] + label"))); - checkbox.click(); - waitForJSIdle(); - } - public List getAllProducts() { return driver.findElements(By.cssSelector("div.Card_wrap__hES44")); } @@ -45,4 +38,17 @@ public class ListingPage { ((JavascriptExecutor) driver).executeScript("return document.readyState").equals("complete") ); } + + public void selectManufacturer(String name) { + + WebElement checkbox = wait.until(ExpectedConditions.elementToBeClickable( + By.cssSelector("input[id*='" + name + "'] + label"))); + checkbox.click(); + waitForJSIdle(); + } + + public void waitForSearchResultsToUpdate(int expectedCount) { + wait.until(driver -> getAllProducts().size() <= expectedCount); + waitForJSIdle(); // если хочешь ещё чуть-чуть гарантии + } } diff --git a/src/test/java/ru/ibs/tests/SearchSteps.java b/src/test/java/ru/ibs/tests/SearchSteps.java index 2baf82e..7f77e66 100644 --- a/src/test/java/ru/ibs/tests/SearchSteps.java +++ b/src/test/java/ru/ibs/tests/SearchSteps.java @@ -47,6 +47,11 @@ public class SearchSteps { catalogPage.selectCategory(category); } + @И("Выбираем раздел меню {string}") + public void chooseCategoryMainMenu(String category) { + catalogPage.selectCategoryMainMenu(category); + } + @И("Выбираем подраздел {string}") public void chooseSubCategory(String sub) { catalogPage.selectSubCategory(sub); @@ -59,9 +64,7 @@ public class SearchSteps { @И("Фильтруем по производителю {string}") public void filterByManufacturer(String name) { - if (name.equalsIgnoreCase("Gigabyte")) { - listingPage.selectGigabyte(); - } + listingPage.selectManufacturer(name); } @И("Проверяем, что товаров не более {int}") diff --git a/src/test/resources/features/regard_search_keyboard.feature b/src/test/resources/features/regard_search_keyboard.feature new file mode 100644 index 0000000..0367453 --- /dev/null +++ b/src/test/resources/features/regard_search_keyboard.feature @@ -0,0 +1,15 @@ +# language: ru +Функциональность: Поиск клавиатур с фильтрами и проверкой + + Сценарий: Поиск клавиатуры A4Tech с фильтром по цене + Дано Открываем сайт regard + И Открываем меню Каталог + И Выбираем раздел меню "Периферия" + И Выбираем подраздел "Клавиатуры" + И Задаем цену от "2000" + И Фильтруем по производителю "A4Tech" + И Проверяем, что товаров не более 24 + И Сохраняем наименование первого товара + И Ищем товар по сохраненному имени + Тогда На странице только один товар + И Название товара соответствует сохраненному \ No newline at end of file