From bc0b98da60127754ab366c81b5524c88205fe7d4 Mon Sep 17 00:00:00 2001 From: Uwe Friedel Date: Fri, 9 Apr 2021 08:54:26 +0200 Subject: [PATCH 01/35] isExpectedPage() changed --- src/test/java/posters/cucumber/support/OpenPageFlows.java | 4 +--- .../java/posters/pageobjects/pages/AbstractPageObject.java | 3 ++- .../java/posters/pageobjects/pages/browsing/CategoryPage.java | 3 ++- .../java/posters/pageobjects/pages/browsing/HomePage.java | 3 ++- .../posters/pageobjects/pages/browsing/ProductdetailPage.java | 3 ++- .../pageobjects/pages/checkout/BillingAddressPage.java | 3 ++- .../java/posters/pageobjects/pages/checkout/CartPage.java | 3 ++- .../pageobjects/pages/checkout/NewBillingAddressPage.java | 3 ++- .../posters/pageobjects/pages/checkout/NewPaymentPage.java | 3 ++- .../pageobjects/pages/checkout/NewShippingAddressPage.java | 3 ++- .../java/posters/pageobjects/pages/checkout/PaymentPage.java | 3 ++- .../posters/pageobjects/pages/checkout/PlaceOrderPage.java | 3 ++- .../pageobjects/pages/checkout/ShippingAddressPage.java | 3 ++- .../posters/pageobjects/pages/user/AccountOverviewPage.java | 3 ++- .../posters/pageobjects/pages/user/DeleteAccountPage.java | 3 ++- src/test/java/posters/pageobjects/pages/user/LoginPage.java | 3 ++- .../java/posters/pageobjects/pages/user/OrderHistoryPage.java | 3 ++- .../java/posters/pageobjects/pages/user/PersonalDataPage.java | 3 ++- .../java/posters/pageobjects/pages/user/RegisterPage.java | 3 ++- 19 files changed, 37 insertions(+), 21 deletions(-) diff --git a/src/test/java/posters/cucumber/support/OpenPageFlows.java b/src/test/java/posters/cucumber/support/OpenPageFlows.java index 15705b2..010cb1e 100644 --- a/src/test/java/posters/cucumber/support/OpenPageFlows.java +++ b/src/test/java/posters/cucumber/support/OpenPageFlows.java @@ -22,9 +22,7 @@ public static HomePage homepage() clearBrowserCookies(); // open home page open(Neodymium.configuration().url()); - HomePage homePage = new HomePage(); - homePage.isExpectedPage(); - return homePage; + return new HomePage().isExpectedPage(); }; @Given("^login page is loaded$") diff --git a/src/test/java/posters/pageobjects/pages/AbstractPageObject.java b/src/test/java/posters/pageobjects/pages/AbstractPageObject.java index 1229a3e..63d95ef 100644 --- a/src/test/java/posters/pageobjects/pages/AbstractPageObject.java +++ b/src/test/java/posters/pageobjects/pages/AbstractPageObject.java @@ -16,8 +16,9 @@ public abstract class AbstractPageObject { public Title title = new Title(); - public void isExpectedPage() + public AbstractPageObject isExpectedPage() { + return this; } abstract public void validateStructure(); diff --git a/src/test/java/posters/pageobjects/pages/browsing/CategoryPage.java b/src/test/java/posters/pageobjects/pages/browsing/CategoryPage.java index 574b9d8..2d6c7b1 100644 --- a/src/test/java/posters/pageobjects/pages/browsing/CategoryPage.java +++ b/src/test/java/posters/pageobjects/pages/browsing/CategoryPage.java @@ -32,9 +32,10 @@ public class CategoryPage extends AbstractBrowsingPage @Override @Step("ensure this is a category page") - public void isExpectedPage() + public CategoryPage isExpectedPage() { productOverview.should(exist); + return this; } @Step("validate category name \"{categoryName}\" on category page") diff --git a/src/test/java/posters/pageobjects/pages/browsing/HomePage.java b/src/test/java/posters/pageobjects/pages/browsing/HomePage.java index e6ea557..4bc78d8 100644 --- a/src/test/java/posters/pageobjects/pages/browsing/HomePage.java +++ b/src/test/java/posters/pageobjects/pages/browsing/HomePage.java @@ -17,9 +17,10 @@ public class HomePage extends AbstractBrowsingPage { @Override @Step("ensure this is a home page") - public void isExpectedPage() + public HomePage isExpectedPage() { $("#titleIndex").should(exist); + return this; } @Step("validate home page structure") diff --git a/src/test/java/posters/pageobjects/pages/browsing/ProductdetailPage.java b/src/test/java/posters/pageobjects/pages/browsing/ProductdetailPage.java index 4f198d8..47bf8e0 100644 --- a/src/test/java/posters/pageobjects/pages/browsing/ProductdetailPage.java +++ b/src/test/java/posters/pageobjects/pages/browsing/ProductdetailPage.java @@ -29,9 +29,10 @@ public class ProductdetailPage extends AbstractBrowsingPage @Override @Step("ensure this is a product detail page") - public void isExpectedPage() + public ProductdetailPage isExpectedPage() { $("#addToCartForm").should(exist); + return this; } @Override diff --git a/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java index 29230c7..b755c4a 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java @@ -21,9 +21,10 @@ public class BillingAddressPage extends AbstractCheckoutPage @Override @Step("ensure this is a billing address page") - public void isExpectedPage() + public BillingAddressPage isExpectedPage() { headline.should(exist); + return this; } @Override diff --git a/src/test/java/posters/pageobjects/pages/checkout/CartPage.java b/src/test/java/posters/pageobjects/pages/checkout/CartPage.java index 6c72082..98ac0f4 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/CartPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/CartPage.java @@ -36,9 +36,10 @@ public class CartPage extends AbstractBrowsingPage @Override @Step("ensure this is a cart page") - public void isExpectedPage() + public CartPage isExpectedPage() { cartTable.should(exist); + return this; } @Step("validate subtotal in the cart") diff --git a/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java index 17aa1ad..e789d10 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java @@ -40,9 +40,10 @@ public class NewBillingAddressPage extends AbstractCheckoutPage @Override @Step("ensure this is a new billing address page") - public void isExpectedPage() + public NewBillingAddressPage isExpectedPage() { headline.should(exist); + return this; } @Override diff --git a/src/test/java/posters/pageobjects/pages/checkout/NewPaymentPage.java b/src/test/java/posters/pageobjects/pages/checkout/NewPaymentPage.java index 81247aa..2d7027c 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/NewPaymentPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/NewPaymentPage.java @@ -34,9 +34,10 @@ public class NewPaymentPage extends AbstractCheckoutPage @Override @Step("ensure this is a new payment page") - public void isExpectedPage() + public NewPaymentPage isExpectedPage() { headline.should(exist); + return this; } @Override diff --git a/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java index 358a7b6..ec5c58b 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java @@ -41,9 +41,10 @@ public class NewShippingAddressPage extends AbstractCheckoutPage @Override @Step("ensure this is a new shipping address page") - public void isExpectedPage() + public NewShippingAddressPage isExpectedPage() { headline.should(exist); + return this; } @Override diff --git a/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java b/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java index e719355..e05e04d 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java @@ -31,9 +31,10 @@ public class PaymentPage extends AbstractCheckoutPage @Override @Step("ensure this is a payment page") - public void isExpectedPage() + public PaymentPage isExpectedPage() { headline.should(exist); + return this; } @Override diff --git a/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java b/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java index 4386026..f800cb5 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java @@ -37,9 +37,10 @@ public class PlaceOrderPage extends AbstractCheckoutPage @Override @Step("ensure this is a place order page") - public void isExpectedPage() + public PlaceOrderPage isExpectedPage() { headline.should(exist); + return this; } @Override diff --git a/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java index 2833013..d7d5e06 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java @@ -37,9 +37,10 @@ public class ShippingAddressPage extends AbstractCheckoutPage @Override @Step("ensure this is a shipping address page") - public void isExpectedPage() + public ShippingAddressPage isExpectedPage() { headline.should(exist); + return this; } @Override diff --git a/src/test/java/posters/pageobjects/pages/user/AccountOverviewPage.java b/src/test/java/posters/pageobjects/pages/user/AccountOverviewPage.java index 36994c3..ddce91d 100644 --- a/src/test/java/posters/pageobjects/pages/user/AccountOverviewPage.java +++ b/src/test/java/posters/pageobjects/pages/user/AccountOverviewPage.java @@ -20,9 +20,10 @@ public class AccountOverviewPage extends AbstractBrowsingPage @Override @Step("ensure this is an account overview page") - public void isExpectedPage() + public AccountOverviewPage isExpectedPage() { headline.should(exist); + return this; } @Override diff --git a/src/test/java/posters/pageobjects/pages/user/DeleteAccountPage.java b/src/test/java/posters/pageobjects/pages/user/DeleteAccountPage.java index 740499d..c7a5fe1 100644 --- a/src/test/java/posters/pageobjects/pages/user/DeleteAccountPage.java +++ b/src/test/java/posters/pageobjects/pages/user/DeleteAccountPage.java @@ -29,9 +29,10 @@ public class DeleteAccountPage extends AbstractBrowsingPage @Override @Step("ensure this is a delete account page") - public void isExpectedPage() + public DeleteAccountPage isExpectedPage() { deleteForm.should(exist); + return this; } @Override diff --git a/src/test/java/posters/pageobjects/pages/user/LoginPage.java b/src/test/java/posters/pageobjects/pages/user/LoginPage.java index ff48f73..7b9271e 100644 --- a/src/test/java/posters/pageobjects/pages/user/LoginPage.java +++ b/src/test/java/posters/pageobjects/pages/user/LoginPage.java @@ -35,9 +35,10 @@ public class LoginPage extends AbstractBrowsingPage @Override @Step("ensure this is a login page") - public void isExpectedPage() + public LoginPage isExpectedPage() { loginForm.should(exist); + return this; } @Override diff --git a/src/test/java/posters/pageobjects/pages/user/OrderHistoryPage.java b/src/test/java/posters/pageobjects/pages/user/OrderHistoryPage.java index e79a19b..dd821f5 100644 --- a/src/test/java/posters/pageobjects/pages/user/OrderHistoryPage.java +++ b/src/test/java/posters/pageobjects/pages/user/OrderHistoryPage.java @@ -18,9 +18,10 @@ public class OrderHistoryPage extends AbstractBrowsingPage @Override @Step("ensure this is an order history page") - public void isExpectedPage() + public OrderHistoryPage isExpectedPage() { headline.should(exist); + return this; } @Step("validate product is in the order") diff --git a/src/test/java/posters/pageobjects/pages/user/PersonalDataPage.java b/src/test/java/posters/pageobjects/pages/user/PersonalDataPage.java index bdebae5..8918819 100644 --- a/src/test/java/posters/pageobjects/pages/user/PersonalDataPage.java +++ b/src/test/java/posters/pageobjects/pages/user/PersonalDataPage.java @@ -24,9 +24,10 @@ public class PersonalDataPage extends AbstractBrowsingPage @Override @Step("ensure this is a personal data page") - public void isExpectedPage() + public PersonalDataPage isExpectedPage() { headline.should(exist); + return this; } @Override diff --git a/src/test/java/posters/pageobjects/pages/user/RegisterPage.java b/src/test/java/posters/pageobjects/pages/user/RegisterPage.java index 064340b..448879a 100644 --- a/src/test/java/posters/pageobjects/pages/user/RegisterPage.java +++ b/src/test/java/posters/pageobjects/pages/user/RegisterPage.java @@ -38,9 +38,10 @@ public class RegisterPage extends AbstractBrowsingPage @Override @Step("ensure this is a register page") - public void isExpectedPage() + public RegisterPage isExpectedPage() { registerForm.should(exist); + return this; } @Override From eb3934eeac0f1655244ebfb1e4e41aab8272e6fb Mon Sep 17 00:00:00 2001 From: Uwe Friedel Date: Mon, 12 Apr 2021 10:24:51 +0200 Subject: [PATCH 02/35] javadoc removed --- .../cucumber/support/BrowseRandomVisualAssertSupport.java | 2 +- src/test/java/posters/cucumber/support/CartSupport.java | 6 +++--- src/test/java/posters/cucumber/support/GlobalStorage.java | 3 --- src/test/java/posters/dataobjects/Address.java | 3 --- src/test/java/posters/dataobjects/CreditCard.java | 3 --- src/test/java/posters/dataobjects/Product.java | 3 --- src/test/java/posters/dataobjects/User.java | 3 --- .../java/posters/pageobjects/components/CheckoutHeader.java | 3 --- src/test/java/posters/pageobjects/components/MiniCart.java | 3 --- .../java/posters/pageobjects/components/TopNavigation.java | 3 --- src/test/java/posters/pageobjects/components/UserMenu.java | 3 --- .../posters/pageobjects/pages/browsing/CategoryPage.java | 3 --- .../pageobjects/pages/browsing/ProductdetailPage.java | 3 --- .../pageobjects/pages/checkout/AbstractCheckoutPage.java | 3 --- .../pageobjects/pages/checkout/BillingAddressPage.java | 3 --- .../java/posters/pageobjects/pages/checkout/CartPage.java | 3 --- .../pageobjects/pages/checkout/NewBillingAddressPage.java | 3 --- .../posters/pageobjects/pages/checkout/NewPaymentPage.java | 3 --- .../pageobjects/pages/checkout/NewShippingAddressPage.java | 3 --- .../posters/pageobjects/pages/checkout/PaymentPage.java | 3 --- .../posters/pageobjects/pages/checkout/PlaceOrderPage.java | 3 --- .../pageobjects/pages/checkout/ShippingAddressPage.java | 3 --- .../posters/pageobjects/pages/user/DeleteAccountPage.java | 3 --- src/test/java/posters/pageobjects/pages/user/LoginPage.java | 3 --- .../posters/pageobjects/pages/user/PersonalDataPage.java | 3 --- .../java/posters/pageobjects/pages/user/RegisterPage.java | 3 --- src/test/java/posters/pageobjects/utility/PriceHelper.java | 3 --- 27 files changed, 4 insertions(+), 79 deletions(-) diff --git a/src/test/java/posters/cucumber/support/BrowseRandomVisualAssertSupport.java b/src/test/java/posters/cucumber/support/BrowseRandomVisualAssertSupport.java index a4aca02..e6ea435 100644 --- a/src/test/java/posters/cucumber/support/BrowseRandomVisualAssertSupport.java +++ b/src/test/java/posters/cucumber/support/BrowseRandomVisualAssertSupport.java @@ -37,7 +37,7 @@ public void openRandomSubCategoryAndValidate(String seed) random = new Random(Long.valueOf(seed)); } String categoryName = new HomePage().topNav.getRandomSubcategoryName(random); - CategoryPage categoryPage = new HomePage().topNav.clickSubcategoryByName(categoryName); + var categoryPage = new HomePage().topNav.clickSubcategoryByName(categoryName); categoryPage.isExpectedPage(); categoryPage.validateAndVisualAssert(categoryName); } diff --git a/src/test/java/posters/cucumber/support/CartSupport.java b/src/test/java/posters/cucumber/support/CartSupport.java index 2e9ba5a..de62f75 100644 --- a/src/test/java/posters/cucumber/support/CartSupport.java +++ b/src/test/java/posters/cucumber/support/CartSupport.java @@ -20,7 +20,7 @@ public CartSupport(GlobalStorage storage) @When("^I open the cart$") public void openCart() { - CartPage cartPage = new ProductdetailPage().miniCart.openCartPage(); + var cartPage = new ProductdetailPage().miniCart.openCartPage(); cartPage.isExpectedPage(); } @@ -41,7 +41,7 @@ public void validateProductsInTheCart() @Then("^I can change amount of the \"([^\"]*)\" with \"([^\"]*)\" and \"([^\"]*)\" to (\\d+)$") public void updateCountOfProduct(String productName, String size, String style, int amount) { - CartPage cartPage = new CartPage(); + var cartPage = new CartPage(); cartPage.updateProductCountByName(productName, style, size, amount); for (Product product : storage.products) { @@ -57,7 +57,7 @@ public void updateCountOfProduct(String productName, String size, String style, @Then("^I can remove \"([^\"]*)\" with \"([^\"]*)\" and \"([^\"]*)\"$") public void removeProduct(String productName, String size, String style) { - CartPage cartPage = new CartPage(); + var cartPage = new CartPage(); cartPage.removeProductByName(productName, style, size); storage.removeProduct(productName, style, size); diff --git a/src/test/java/posters/cucumber/support/GlobalStorage.java b/src/test/java/posters/cucumber/support/GlobalStorage.java index df949e3..dcab602 100644 --- a/src/test/java/posters/cucumber/support/GlobalStorage.java +++ b/src/test/java/posters/cucumber/support/GlobalStorage.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.cucumber.support; import java.util.ArrayList; diff --git a/src/test/java/posters/dataobjects/Address.java b/src/test/java/posters/dataobjects/Address.java index e3b9bfa..43eb2e8 100644 --- a/src/test/java/posters/dataobjects/Address.java +++ b/src/test/java/posters/dataobjects/Address.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.dataobjects; /** diff --git a/src/test/java/posters/dataobjects/CreditCard.java b/src/test/java/posters/dataobjects/CreditCard.java index 6c37296..d0dbb9b 100644 --- a/src/test/java/posters/dataobjects/CreditCard.java +++ b/src/test/java/posters/dataobjects/CreditCard.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.dataobjects; /** diff --git a/src/test/java/posters/dataobjects/Product.java b/src/test/java/posters/dataobjects/Product.java index baf5931..a98a45e 100644 --- a/src/test/java/posters/dataobjects/Product.java +++ b/src/test/java/posters/dataobjects/Product.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.dataobjects; import com.xceptance.neodymium.util.Neodymium; diff --git a/src/test/java/posters/dataobjects/User.java b/src/test/java/posters/dataobjects/User.java index 93bda3d..f119bfc 100644 --- a/src/test/java/posters/dataobjects/User.java +++ b/src/test/java/posters/dataobjects/User.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.dataobjects; /** diff --git a/src/test/java/posters/pageobjects/components/CheckoutHeader.java b/src/test/java/posters/pageobjects/components/CheckoutHeader.java index 253e961..97dc196 100644 --- a/src/test/java/posters/pageobjects/components/CheckoutHeader.java +++ b/src/test/java/posters/pageobjects/components/CheckoutHeader.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.components; import static com.codeborne.selenide.Condition.exist; diff --git a/src/test/java/posters/pageobjects/components/MiniCart.java b/src/test/java/posters/pageobjects/components/MiniCart.java index 2101231..0e37d3e 100644 --- a/src/test/java/posters/pageobjects/components/MiniCart.java +++ b/src/test/java/posters/pageobjects/components/MiniCart.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.components; import static com.codeborne.selenide.Condition.exactText; diff --git a/src/test/java/posters/pageobjects/components/TopNavigation.java b/src/test/java/posters/pageobjects/components/TopNavigation.java index dc1236a..a47e86f 100644 --- a/src/test/java/posters/pageobjects/components/TopNavigation.java +++ b/src/test/java/posters/pageobjects/components/TopNavigation.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.components; import static com.codeborne.selenide.Condition.exist; diff --git a/src/test/java/posters/pageobjects/components/UserMenu.java b/src/test/java/posters/pageobjects/components/UserMenu.java index 885611b..283a365 100644 --- a/src/test/java/posters/pageobjects/components/UserMenu.java +++ b/src/test/java/posters/pageobjects/components/UserMenu.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.components; import static com.codeborne.selenide.Condition.cssClass; diff --git a/src/test/java/posters/pageobjects/pages/browsing/CategoryPage.java b/src/test/java/posters/pageobjects/pages/browsing/CategoryPage.java index 2d6c7b1..928d71f 100644 --- a/src/test/java/posters/pageobjects/pages/browsing/CategoryPage.java +++ b/src/test/java/posters/pageobjects/pages/browsing/CategoryPage.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.pages.browsing; import static com.codeborne.selenide.CollectionCondition.sizeGreaterThan; diff --git a/src/test/java/posters/pageobjects/pages/browsing/ProductdetailPage.java b/src/test/java/posters/pageobjects/pages/browsing/ProductdetailPage.java index 47bf8e0..8425837 100644 --- a/src/test/java/posters/pageobjects/pages/browsing/ProductdetailPage.java +++ b/src/test/java/posters/pageobjects/pages/browsing/ProductdetailPage.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.pages.browsing; import static com.codeborne.selenide.Condition.exactText; diff --git a/src/test/java/posters/pageobjects/pages/checkout/AbstractCheckoutPage.java b/src/test/java/posters/pageobjects/pages/checkout/AbstractCheckoutPage.java index d6b616f..17d448d 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/AbstractCheckoutPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/AbstractCheckoutPage.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.pages.checkout; import posters.pageobjects.components.CheckoutHeader; diff --git a/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java index b755c4a..b475b32 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.pages.checkout; import static com.codeborne.selenide.Condition.exist; diff --git a/src/test/java/posters/pageobjects/pages/checkout/CartPage.java b/src/test/java/posters/pageobjects/pages/checkout/CartPage.java index 98ac0f4..6cd8e24 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/CartPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/CartPage.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.pages.checkout; import static com.codeborne.selenide.Condition.exactText; diff --git a/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java index e789d10..843c872 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.pages.checkout; import static com.codeborne.selenide.Condition.exactText; diff --git a/src/test/java/posters/pageobjects/pages/checkout/NewPaymentPage.java b/src/test/java/posters/pageobjects/pages/checkout/NewPaymentPage.java index 2d7027c..aa6b952 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/NewPaymentPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/NewPaymentPage.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.pages.checkout; import static com.codeborne.selenide.Condition.exactText; diff --git a/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java index ec5c58b..b91d076 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.pages.checkout; import static com.codeborne.selenide.Condition.exactText; diff --git a/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java b/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java index e05e04d..e4c61a2 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.pages.checkout; import static com.codeborne.selenide.Condition.exist; diff --git a/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java b/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java index f800cb5..24a36dd 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.pages.checkout; import static com.codeborne.selenide.Condition.exactText; diff --git a/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java index d7d5e06..2443eb4 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.pages.checkout; import static com.codeborne.selenide.Condition.exist; diff --git a/src/test/java/posters/pageobjects/pages/user/DeleteAccountPage.java b/src/test/java/posters/pageobjects/pages/user/DeleteAccountPage.java index c7a5fe1..029fc56 100644 --- a/src/test/java/posters/pageobjects/pages/user/DeleteAccountPage.java +++ b/src/test/java/posters/pageobjects/pages/user/DeleteAccountPage.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.pages.user; import static com.codeborne.selenide.Condition.exactText; diff --git a/src/test/java/posters/pageobjects/pages/user/LoginPage.java b/src/test/java/posters/pageobjects/pages/user/LoginPage.java index 7b9271e..f3d4972 100644 --- a/src/test/java/posters/pageobjects/pages/user/LoginPage.java +++ b/src/test/java/posters/pageobjects/pages/user/LoginPage.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.pages.user; import static com.codeborne.selenide.Condition.exactText; diff --git a/src/test/java/posters/pageobjects/pages/user/PersonalDataPage.java b/src/test/java/posters/pageobjects/pages/user/PersonalDataPage.java index 8918819..3e03932 100644 --- a/src/test/java/posters/pageobjects/pages/user/PersonalDataPage.java +++ b/src/test/java/posters/pageobjects/pages/user/PersonalDataPage.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.pages.user; import static com.codeborne.selenide.Condition.exist; diff --git a/src/test/java/posters/pageobjects/pages/user/RegisterPage.java b/src/test/java/posters/pageobjects/pages/user/RegisterPage.java index 448879a..566c1b4 100644 --- a/src/test/java/posters/pageobjects/pages/user/RegisterPage.java +++ b/src/test/java/posters/pageobjects/pages/user/RegisterPage.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.pages.user; import static com.codeborne.selenide.Condition.exactText; diff --git a/src/test/java/posters/pageobjects/utility/PriceHelper.java b/src/test/java/posters/pageobjects/utility/PriceHelper.java index 1bc6563..85f6692 100644 --- a/src/test/java/posters/pageobjects/utility/PriceHelper.java +++ b/src/test/java/posters/pageobjects/utility/PriceHelper.java @@ -1,6 +1,3 @@ -/** - * - */ package posters.pageobjects.utility; import java.text.DecimalFormat; From e85219c6951de6c3b401f6d79269341758684039 Mon Sep 17 00:00:00 2001 From: Uwe Friedel Date: Mon, 12 Apr 2021 11:00:14 +0200 Subject: [PATCH 03/35] type changed to var --- .../BrowseRandomVisualAssertSupport.java | 2 +- .../posters/cucumber/support/CartSupport.java | 2 +- .../cucumber/support/GlobalStorage.java | 4 +- .../cucumber/support/HomePageSupport.java | 2 +- .../cucumber/support/OpenPageFlows.java | 4 +- .../cucumber/support/OrderSupport.java | 50 +++++++++---------- .../cucumber/support/RegisterSupport.java | 18 +++---- .../pageobjects/pages/browsing/HomePage.java | 6 +-- 8 files changed, 44 insertions(+), 44 deletions(-) diff --git a/src/test/java/posters/cucumber/support/BrowseRandomVisualAssertSupport.java b/src/test/java/posters/cucumber/support/BrowseRandomVisualAssertSupport.java index e6ea435..2aa56a8 100644 --- a/src/test/java/posters/cucumber/support/BrowseRandomVisualAssertSupport.java +++ b/src/test/java/posters/cucumber/support/BrowseRandomVisualAssertSupport.java @@ -21,7 +21,7 @@ public class BrowseRandomVisualAssertSupport @Given("^homepage is open") public void openHomePageAndValidate() { - HomePage homepage = OpenPageFlows.homepage(); + var homepage = OpenPageFlows.homepage(); homepage.validateAndVisualAssert(); } diff --git a/src/test/java/posters/cucumber/support/CartSupport.java b/src/test/java/posters/cucumber/support/CartSupport.java index de62f75..5c74824 100644 --- a/src/test/java/posters/cucumber/support/CartSupport.java +++ b/src/test/java/posters/cucumber/support/CartSupport.java @@ -28,7 +28,7 @@ public void openCart() public void validateProductsInTheCart() { double subtotal = 0.0; - CartPage cartPage = new CartPage(); + var cartPage = new CartPage(); for (Product product : storage.products) { diff --git a/src/test/java/posters/cucumber/support/GlobalStorage.java b/src/test/java/posters/cucumber/support/GlobalStorage.java index dcab602..9293524 100644 --- a/src/test/java/posters/cucumber/support/GlobalStorage.java +++ b/src/test/java/posters/cucumber/support/GlobalStorage.java @@ -35,7 +35,7 @@ public Product addProduct(Product product) // increase amount of product if already there or add the whole product if (products.contains(product)) { - Product updatedProduct = products.get(products.indexOf(product)); + var updatedProduct = products.get(products.indexOf(product)); updatedProduct.setAmount(updatedProduct.getAmount() + 1); return updatedProduct; } @@ -48,7 +48,7 @@ public Product addProduct(Product product) public void removeProduct(String productName, String style, String size) { - for (Product product : products) + for (var product : products) { if (product.getName().equals(productName) && product.getSize().equals(size) && product.getStyle().equals(style)) diff --git a/src/test/java/posters/cucumber/support/HomePageSupport.java b/src/test/java/posters/cucumber/support/HomePageSupport.java index 9dc8369..901038c 100644 --- a/src/test/java/posters/cucumber/support/HomePageSupport.java +++ b/src/test/java/posters/cucumber/support/HomePageSupport.java @@ -10,7 +10,7 @@ public class HomePageSupport @Step("validate homepage") public void validateHomePage(String title) { - HomePage homePage = new HomePage(); + var homePage = new HomePage(); homePage.isExpectedPage(); homePage.title.validateTitle(title); homePage.validateStructure(); diff --git a/src/test/java/posters/cucumber/support/OpenPageFlows.java b/src/test/java/posters/cucumber/support/OpenPageFlows.java index 010cb1e..13da35d 100644 --- a/src/test/java/posters/cucumber/support/OpenPageFlows.java +++ b/src/test/java/posters/cucumber/support/OpenPageFlows.java @@ -30,7 +30,7 @@ public static HomePage homepage() public static LoginPage loginPage() { // open login page and check for expected page - LoginPage loginPage = homepage().userMenu.openLogin(); + var loginPage = homepage().userMenu.openLogin(); loginPage.isExpectedPage(); return loginPage; }; @@ -40,7 +40,7 @@ public static LoginPage loginPage() public static RegisterPage registerPage() { // open login page and check for expected page - RegisterPage registerPage = homepage().userMenu.openRegister(); + var registerPage = homepage().userMenu.openRegister(); registerPage.isExpectedPage(); return registerPage; }; diff --git a/src/test/java/posters/cucumber/support/OrderSupport.java b/src/test/java/posters/cucumber/support/OrderSupport.java index c5b9c5d..ad338c4 100644 --- a/src/test/java/posters/cucumber/support/OrderSupport.java +++ b/src/test/java/posters/cucumber/support/OrderSupport.java @@ -33,11 +33,11 @@ public OrderSupport(GlobalStorage storage) @Given("^new user with \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\" is registered and logged in$") public void registerAndLogIn(String firstName, String lastName, String email, String password) { - RegisterPage registerPage = OpenPageFlows.registerPage(); + var registerPage = OpenPageFlows.registerPage(); registerPage.isExpectedPage(); storage.user = new User(firstName, lastName, email, password); registerPage.sendRegisterForm(firstName, lastName, email, password, password); - LoginPage loginPage = registerPage.userMenu.openLogin(); + var loginPage = registerPage.userMenu.openLogin(); loginPage.isExpectedPage(); loginPage.sendLoginform(email, password); } @@ -45,12 +45,12 @@ public void registerAndLogIn(String firstName, String lastName, String email, St @Then("^all the products are to find in order history$") public void validateOrderInOrderHistory() { - AccountOverviewPage accountOverview = new HomePage().userMenu.openAccountOverview(); - accountOverview.isExpectedPage(); - OrderHistoryPage orderHistory = accountOverview.openOrderHistory(); + var accountOverviewPage = new HomePage().userMenu.openAccountOverview(); + accountOverviewPage.isExpectedPage(); + var orderHistoryPage = accountOverviewPage.openOrderHistory(); for (Product product : storage.products) { - orderHistory.validateContainsProduct(product); + orderHistoryPage.validateContainsProduct(product); } } @@ -65,25 +65,25 @@ public void openProductPageAndAddItoTheCart(String productUrl, String size, Stri @When("I add this product with size \"([^\"]*)\" and style \"([^\"]*)\" to the cart$") public void addProductToCart(String size, String style) { - ProductdetailPage productPage = new ProductdetailPage(); - productPage.setSize(size); - productPage.setStyle(style); + var productDetailPage = new ProductdetailPage(); + productDetailPage.setSize(size); + productDetailPage.setStyle(style); - Product product = storage.addProduct(productPage.getProduct()); + var product = storage.addProduct(productDetailPage.getProduct()); - productPage.addToCart(); - productPage.miniCart.openMiniCart(); - productPage.miniCart.validateMiniCartByProduct(product); + productDetailPage.addToCart(); + productDetailPage.miniCart.openMiniCart(); + productDetailPage.miniCart.validateMiniCartByProduct(product); } @When("^I specify the shipping address \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\" and use it for billing$") public void openFillAndSendShippingFormUseForBilling(String name, String company, String address, String city, String state, String zip, String country) { - CartPage cartPage = new ProductdetailPage().miniCart.openCartPage(); + var cartPage = new ProductdetailPage().miniCart.openCartPage(); cartPage.isExpectedPage(); - ShippingAddressPage shippingPage = cartPage.openShippingPage(); - shippingPage.isExpectedPage(); - shippingPage.sendShippingAddressForm(name, company, address, city, state, zip, country, true); + var shippingAddressPage = cartPage.openShippingPage(); + shippingAddressPage.isExpectedPage(); + shippingAddressPage.sendShippingAddressForm(name, company, address, city, state, zip, country, true); storage.shippingAddress = new Address(name, company, address, city, state, zip, country); storage.billingAddress = new Address(name, company, address, city, state, zip, country); new PaymentPage().isExpectedPage(); @@ -92,31 +92,31 @@ public void openFillAndSendShippingFormUseForBilling(String name, String company @When("^I enter payment data \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\"$") public void fillAndSendPaymentForm(String name, String cardNumber, String month, String year) { - PaymentPage paymentPage = new PaymentPage(); + var paymentPage = new PaymentPage(); paymentPage.isExpectedPage(); - PlaceOrderPage placeOrder = paymentPage.sendPaymentForm(cardNumber, name, month, year); + var placeOrderPage = paymentPage.sendPaymentForm(cardNumber, name, month, year); storage.creditcard = new CreditCard(name, cardNumber, "xxxx xxxx xxxx " + cardNumber.substring(12, 16), month, year); - placeOrder.isExpectedPage(); + placeOrderPage.isExpectedPage(); } @Then("^I see all the products in order overview$") public void validateContainsAllProductsWithCorrectPricesAndAmount() { double subtotal = 0.0; - PlaceOrderPage placeOrder = new PlaceOrderPage(); + var placeOrderPage = new PlaceOrderPage(); for (Product product : storage.products) { - placeOrder.validateContainsProduct(product); + placeOrderPage.validateContainsProduct(product); subtotal += product.getTotalPrice(); } - placeOrder.validateSubtotal(PriceHelper.format(subtotal)); + placeOrderPage.validateSubtotal(PriceHelper.format(subtotal)); } @Then("^my shipping and billing addresses as well as payment data are displayed correctly") public void validateAddressesAndPaymentData() { - PlaceOrderPage placeOrder = new PlaceOrderPage(); - placeOrder.validateAddressesAndPayment(storage.shippingAddress, storage.billingAddress, storage.creditcard); + var placeOrderPage = new PlaceOrderPage(); + placeOrderPage.validateAddressesAndPayment(storage.shippingAddress, storage.billingAddress, storage.creditcard); } @Then("^my order is successfully placed$") diff --git a/src/test/java/posters/cucumber/support/RegisterSupport.java b/src/test/java/posters/cucumber/support/RegisterSupport.java index cde20d6..2ec593e 100644 --- a/src/test/java/posters/cucumber/support/RegisterSupport.java +++ b/src/test/java/posters/cucumber/support/RegisterSupport.java @@ -42,9 +42,9 @@ public void registerUserSetup() @Step("delete user flow") public LoginPage deleteUser() { - HomePage homePage = new HomePage(); + var homePage = new HomePage(); // ensure that the user is logged in - LoginPage loginPage; + var loginPage = new LoginPage(); if (!homePage.userMenu.isLoggedIn()) { loginPage = homePage.userMenu.openLogin(); @@ -54,7 +54,7 @@ public LoginPage deleteUser() // needed since there is a bug in posters if (homePage.miniCart.getTotalCount() > 0) { - CartPage cartPage = homePage.miniCart.openCartPage(); + var cartPage = homePage.miniCart.openCartPage(); while (cartPage.hasProductsInCart()) { cartPage.removeProduct(1); @@ -62,15 +62,15 @@ public LoginPage deleteUser() } // goto account page - AccountOverviewPage accountOverviewPage = homePage.userMenu.openAccountOverview(); + var accountOverviewPage = homePage.userMenu.openAccountOverview(); accountOverviewPage.validateStructure(); // goto personal data page - PersonalDataPage personalDataPage = accountOverviewPage.openPersonalData(); + var personalDataPage = accountOverviewPage.openPersonalData(); personalDataPage.validateStructure(); // goto account deletion page - DeleteAccountPage deleteAccountPage = personalDataPage.openDeleteAccount(); + var deleteAccountPage = personalDataPage.openDeleteAccount(); deleteAccountPage.validateStructure(); // delete the account @@ -88,9 +88,9 @@ public LoginPage deleteUser() public static LoginPage registerUser(User user) { - RegisterPage registerPage = OpenPageFlows.registerPage(); + var registerPage = OpenPageFlows.registerPage(); registerPage.isExpectedPage(); - LoginPage loginPage = registerPage.sendRegisterForm(user, user.getPassword()); + var loginPage = registerPage.sendRegisterForm(user, user.getPassword()); loginPage.isExpectedPage(); return loginPage; @@ -100,7 +100,7 @@ public static LoginPage registerUser(User user) @Step("set up user and register him") public void registerUser(String firstName, String lastName, String email, String password) { - RegisterPage registerPage = new RegisterPage(); + var registerPage = new RegisterPage(); registerPage.isExpectedPage(); storage.user = new User(firstName, lastName, email, password); registerPage.sendRegisterForm(firstName, lastName, email, password, password); diff --git a/src/test/java/posters/pageobjects/pages/browsing/HomePage.java b/src/test/java/posters/pageobjects/pages/browsing/HomePage.java index 4bc78d8..c5b8a97 100644 --- a/src/test/java/posters/pageobjects/pages/browsing/HomePage.java +++ b/src/test/java/posters/pageobjects/pages/browsing/HomePage.java @@ -103,8 +103,8 @@ public void validateAndVisualAssert() public ProductdetailPage clickOnPresentedProduct(String productName) { $$("#productList .thumbnail .pName").filter(exactText(productName)).shouldHaveSize(1).first().click(); - ProductdetailPage productdetailPage = new ProductdetailPage(); - productdetailPage.isExpectedPage(); - return productdetailPage; + var productDetailPage = new ProductdetailPage(); + productDetailPage.isExpectedPage(); + return productDetailPage; } } From 82964a0e7039465cec64c2329901c8f2b2990e9c Mon Sep 17 00:00:00 2001 From: ufjena <77679064+ufjena@users.noreply.github.com> Date: Wed, 28 Apr 2021 09:31:45 +0200 Subject: [PATCH 04/35] step annotations changed --- .../posters/pageobjects/components/MiniCart.java | 6 +++--- .../java/posters/pageobjects/components/Search.java | 6 +++--- .../pageobjects/components/SuccessMessage.java | 2 +- .../pageobjects/components/TopNavigation.java | 6 +++--- .../posters/pageobjects/components/UserMenu.java | 2 +- .../pageobjects/pages/browsing/CategoryPage.java | 12 ++++++------ .../pages/browsing/ProductdetailPage.java | 6 +++--- .../posters/pageobjects/pages/checkout/CartPage.java | 6 +++--- .../pageobjects/pages/checkout/PlaceOrderPage.java | 4 ++-- 9 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/test/java/posters/pageobjects/components/MiniCart.java b/src/test/java/posters/pageobjects/components/MiniCart.java index 0e37d3e..42b8052 100644 --- a/src/test/java/posters/pageobjects/components/MiniCart.java +++ b/src/test/java/posters/pageobjects/components/MiniCart.java @@ -112,14 +112,14 @@ public void validateSubtotal(String subtotal) * @param product */ - @Step("validate \"{product}\" in the mini cart") + @Step("validate '{product}' in the mini cart") public void validateMiniCart(int position, Product product) { validateMiniCart(position, product.getName(), product.getStyle(), product.getSize(), product.getAmount(), PriceHelper.format(product.getTotalPrice())); } - @Step("validate \"{product}\" in the mini cart by name") + @Step("validate '{product}' in the mini cart by name") public void validateMiniCartByProduct(Product product) { SelenideElement productContainer = $$(".cartItems").filter(matchText(product.getCartRowRegex())).shouldHaveSize(1).first(); @@ -137,7 +137,7 @@ public void validateMiniCartByProduct(Product product) * @param productAmount * @param productTotalPrice */ - @Step("validate \"{product}\" in the mini cart") + @Step("validate '{product}' in the mini cart") public void validateMiniCart(int position, Product product, int productAmount, String productTotalPrice) { validateMiniCart(position, product.getName(), product.getStyle(), product.getSize(), productAmount, productTotalPrice); diff --git a/src/test/java/posters/pageobjects/components/Search.java b/src/test/java/posters/pageobjects/components/Search.java index dea7f79..8a27cee 100644 --- a/src/test/java/posters/pageobjects/components/Search.java +++ b/src/test/java/posters/pageobjects/components/Search.java @@ -20,21 +20,21 @@ public void isComponentAvailable() searchField.should(exist); } - @Step("search for \"{searchTerm}\" without result") + @Step("search for '{searchTerm}' without result") public NoHitsPage noResult(String searchTerm) { search(searchTerm); return new NoHitsPage(); } - @Step("search for \"{searchTerm}\" with result") + @Step("search for '{searchTerm}' with result") public CategoryPage categoryPageResult(String searchTerm) { search(searchTerm); return new CategoryPage(); } - @Step("search for \"{searchTerm}\"") + @Step("search for '{searchTerm}'") public void search(String searchTerm) { openSearch(); diff --git a/src/test/java/posters/pageobjects/components/SuccessMessage.java b/src/test/java/posters/pageobjects/components/SuccessMessage.java index 67abbe7..cd0047d 100644 --- a/src/test/java/posters/pageobjects/components/SuccessMessage.java +++ b/src/test/java/posters/pageobjects/components/SuccessMessage.java @@ -18,7 +18,7 @@ public void isComponentAvailable() successMessage.should(exist); } - @Step("validate that the success message \"{message}\" is visible") + @Step("validate that the success message '{message}' is visible") public void validateSuccessMessage(String message) { // Wait until javascript makes the success message visible diff --git a/src/test/java/posters/pageobjects/components/TopNavigation.java b/src/test/java/posters/pageobjects/components/TopNavigation.java index a47e86f..5fb2794 100644 --- a/src/test/java/posters/pageobjects/components/TopNavigation.java +++ b/src/test/java/posters/pageobjects/components/TopNavigation.java @@ -44,14 +44,14 @@ public CategoryPage clickSubCategoryByPosition(int categoryPosition, int subCate return new CategoryPage(); } - @Step("click on \"{categoryName}\" category") + @Step("click on '{categoryName}' category") public CategoryPage clickCategory(String categoryName) { $(By.linkText(categoryName)).scrollTo().click(); return new CategoryPage(); } - @Step("click on a \"{subCategoryName}\" subcategory within \"{categoryName}\"") + @Step("click on a '{subCategoryName}' subcategory within '{categoryName}'") public CategoryPage clickSubCategoryByNames(String categoryName, String subCategoryName) { // Open the category page @@ -66,7 +66,7 @@ public CategoryPage clickSubCategoryByNames(String categoryName, String subCateg * @param subCategoryName * @return */ - @Step("click on a product by name \"{productName}\"") + @Step("click on a product by name '{productName}'") public CategoryPage clickSubcategoryByName(String subCategoryName) { categoryMenu.find(".dropdown-menu li > a[title='" + subCategoryName + "']").parent().parent().parent().hover(); diff --git a/src/test/java/posters/pageobjects/components/UserMenu.java b/src/test/java/posters/pageobjects/components/UserMenu.java index 283a365..0aa89c1 100644 --- a/src/test/java/posters/pageobjects/components/UserMenu.java +++ b/src/test/java/posters/pageobjects/components/UserMenu.java @@ -79,7 +79,7 @@ public RegisterPage openRegister() /** * @param firstName */ - @Step("validate that \"{firstName}\" is logged in") + @Step("validate that '{firstName}' is logged in") public void validateLoggedInName(String firstName) { // Click on the mini user menu symbol diff --git a/src/test/java/posters/pageobjects/pages/browsing/CategoryPage.java b/src/test/java/posters/pageobjects/pages/browsing/CategoryPage.java index 928d71f..b746363 100644 --- a/src/test/java/posters/pageobjects/pages/browsing/CategoryPage.java +++ b/src/test/java/posters/pageobjects/pages/browsing/CategoryPage.java @@ -35,7 +35,7 @@ public CategoryPage isExpectedPage() return this; } - @Step("validate category name \"{categoryName}\" on category page") + @Step("validate category name '{categoryName}' on category page") public void validateCategoryName(String categoryName) { // Category name @@ -103,7 +103,7 @@ public ProductdetailPage clickProductByPosition(int position) * @param productName * @return */ - @Step("click on a product by name \"{productName}\"") + @Step("click on a product by name '{productName}'") public ProductdetailPage clickProductByName(String productName) { // Open the product detail page @@ -129,7 +129,7 @@ public String getProductNameByPosition(int position) * @param searchTerm * @param searchTermExpectedCount */ - @Step("validate search results for \"{searchTerm}\" on category page") + @Step("validate search results for '{searchTerm}' on category page") public void validateSearchHits(String searchTerm, int searchTermExpectedCount) { $("#titleSearchText").should(exist); @@ -155,7 +155,7 @@ public void validateSearchHits(String searchTerm, int searchTermExpectedCount) /** * @param productName */ - @Step("validate product \"{productName}\" is visible on category page") + @Step("validate product '{productName}' is visible on category page") public void validateProductVisible(String productName) { $("#productOverview .thumbnails .thumbnail a > img.pImage[title='" + productName + "']").shouldBe(visible); @@ -164,7 +164,7 @@ public void validateProductVisible(String productName) /** * @param categoryName */ - @Step("validate category page of category \"{categoryName}\"") + @Step("validate category page of category '{categoryName}'") public void validate(String categoryName) { validateStructure(); @@ -174,7 +174,7 @@ public void validate(String categoryName) /** * @param categoryName */ - @Step("validate category page of category \"{categoryName}\" and assert visually") + @Step("validate category page of category '{categoryName}' and assert visually") public void validateAndVisualAssert(String categoryName) { validateStructureAndVisual(); diff --git a/src/test/java/posters/pageobjects/pages/browsing/ProductdetailPage.java b/src/test/java/posters/pageobjects/pages/browsing/ProductdetailPage.java index 8425837..5910c4f 100644 --- a/src/test/java/posters/pageobjects/pages/browsing/ProductdetailPage.java +++ b/src/test/java/posters/pageobjects/pages/browsing/ProductdetailPage.java @@ -80,7 +80,7 @@ public void addToCart() } - @Step("add product with size:\"{size}\" and style:\"{style}\" to cart") + @Step("add product with size:'{size}' and style:'{style}' to cart") public void addToCart(String size, String style) { // Style @@ -130,7 +130,7 @@ public Product getProduct() /** * @param productName */ - @Step("validate the product detail page of \"{productName}\"") + @Step("validate the product detail page of '{productName}'") public void validate(String productName) { validateStructure(); @@ -140,7 +140,7 @@ public void validate(String productName) /** * @param productName */ - @Step("validate the product detail page of \"{productName}\" and assert visually") + @Step("validate the product detail page of '{productName}' and assert visually") public void validateAndVisualAssert(String productName) { validateStructureAndVisual(); diff --git a/src/test/java/posters/pageobjects/pages/checkout/CartPage.java b/src/test/java/posters/pageobjects/pages/checkout/CartPage.java index 6cd8e24..e0c685e 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/CartPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/CartPage.java @@ -92,7 +92,7 @@ public void validateShippingCosts(String shippingCosts) /** * @param shippingCosts */ - @Step("validate cart page with shipping costs: \"{shippingCosts}\"") + @Step("validate cart page with shipping costs: '{shippingCosts}'") public void validate(String shippingCosts) { validateStructure(); @@ -103,7 +103,7 @@ public void validate(String shippingCosts) * @param position * @param product */ - @Step("validate \"{product}\" in on the cart page") + @Step("validate '{product}' in on the cart page") public void validateCartItem(int position, Product product) { validateCartItem(position, product.getName(), product.getStyle(), product.getSize(), product.getAmount(), @@ -115,7 +115,7 @@ public void validateCartItem(int position, Product product) * @param product * @param productAmount */ - @Step("validate \"{product}\" in on the cart page") + @Step("validate '{product}' in on the cart page") public void validateCartItem(int position, Product product, int productAmount) { validateCartItem(position, product.getName(), product.getStyle(), product.getSize(), diff --git a/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java b/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java index 24a36dd..25cd76f 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java @@ -59,7 +59,7 @@ public void validateStructure() * @param product * The product */ - @Step("validate order contains product \"{product.name}\"") + @Step("validate order contains product '{product.name}'") public void validateContainsProduct(Product product) { SelenideElement productContainer = $$("div.hidden-xs").filter((matchText(product.getRowRegex()))).shouldHaveSize(1).first() @@ -79,7 +79,7 @@ public void validateSubtotal(String subtotal) $$("#checkoutSummaryList li").findBy(text("Subtotal")).find(".text-right").shouldBe(exactText(subtotal)); } - @Step("validate product \"{productName}\" on place order page") + @Step("validate product '{productName}' on place order page") public void validateProduct(int position, String productName, int productCount, String productStyle, String productSize) { final int index = position - 1; From 410e80c927256f1ff5ee2fde5124f170267e264e Mon Sep 17 00:00:00 2001 From: ufjena <77679064+ufjena@users.noreply.github.com> Date: Wed, 28 Apr 2021 15:03:36 +0200 Subject: [PATCH 05/35] pageobjects changed --- .../BrowseRandomVisualAssertSupport.java | 4 +-- .../posters/cucumber/support/CartSupport.java | 4 +-- .../cucumber/support/OpenPageFlows.java | 10 ++++---- .../cucumber/support/OrderSupport.java | 12 +++------ .../cucumber/support/ProductSupport.java | 6 ++--- .../cucumber/support/RegisterSupport.java | 4 --- .../pageobjects/components/MiniCart.java | 13 ++++------ .../pageobjects/components/Pagination.java | 2 +- .../pageobjects/components/Search.java | 2 +- .../pageobjects/components/TopNavigation.java | 6 ++--- .../pageobjects/components/UserMenu.java | 6 ++--- .../pageobjects/pages/AbstractPageObject.java | 2 +- .../pages/browsing/CategoryPage.java | 15 +++++------ .../pageobjects/pages/browsing/HomePage.java | 9 +++---- ...detailPage.java => ProductDetailPage.java} | 9 ++++--- .../pages/checkout/BillingAddressPage.java | 4 +-- .../pageobjects/pages/checkout/CartPage.java | 19 +++++++------- .../pages/checkout/NewBillingAddressPage.java | 23 +++++++++-------- .../pages/checkout/NewPaymentPage.java | 11 ++++---- .../checkout/NewShippingAddressPage.java | 25 +++++++++++-------- .../pages/checkout/PaymentPage.java | 7 +++--- .../pages/checkout/PlaceOrderPage.java | 20 +++++++++------ .../pages/checkout/ShippingAddressPage.java | 7 +++--- .../pages/user/AccountOverviewPage.java | 7 +++--- .../pages/user/DeleteAccountPage.java | 7 +++--- .../pageobjects/pages/user/LoginPage.java | 9 ++++--- .../pages/user/OrderHistoryPage.java | 3 ++- .../pages/user/PersonalDataPage.java | 5 ++-- .../pageobjects/pages/user/RegisterPage.java | 13 +++++----- 29 files changed, 135 insertions(+), 129 deletions(-) rename src/test/java/posters/pageobjects/pages/browsing/{ProductdetailPage.java => ProductDetailPage.java} (96%) diff --git a/src/test/java/posters/cucumber/support/BrowseRandomVisualAssertSupport.java b/src/test/java/posters/cucumber/support/BrowseRandomVisualAssertSupport.java index 2aa56a8..8e30b92 100644 --- a/src/test/java/posters/cucumber/support/BrowseRandomVisualAssertSupport.java +++ b/src/test/java/posters/cucumber/support/BrowseRandomVisualAssertSupport.java @@ -10,7 +10,7 @@ import io.cucumber.java.en.When; import posters.pageobjects.pages.browsing.CategoryPage; import posters.pageobjects.pages.browsing.HomePage; -import posters.pageobjects.pages.browsing.ProductdetailPage; +import posters.pageobjects.pages.browsing.ProductDetailPage; public class BrowseRandomVisualAssertSupport { @@ -52,7 +52,7 @@ public void openRandomProduct() @Then("^I see correct product") public void validateProduct() { - new ProductdetailPage().validateAndVisualAssert(productName); + new ProductDetailPage().validateAndVisualAssert(productName); } } diff --git a/src/test/java/posters/cucumber/support/CartSupport.java b/src/test/java/posters/cucumber/support/CartSupport.java index 5c74824..cd86f7a 100644 --- a/src/test/java/posters/cucumber/support/CartSupport.java +++ b/src/test/java/posters/cucumber/support/CartSupport.java @@ -3,7 +3,7 @@ import io.cucumber.java.en.Then; import io.cucumber.java.en.When; import posters.dataobjects.Product; -import posters.pageobjects.pages.browsing.ProductdetailPage; +import posters.pageobjects.pages.browsing.ProductDetailPage; import posters.pageobjects.pages.checkout.CartPage; import posters.pageobjects.utility.PriceHelper; @@ -20,7 +20,7 @@ public CartSupport(GlobalStorage storage) @When("^I open the cart$") public void openCart() { - var cartPage = new ProductdetailPage().miniCart.openCartPage(); + var cartPage = new ProductDetailPage().miniCart.openCartPage(); cartPage.isExpectedPage(); } diff --git a/src/test/java/posters/cucumber/support/OpenPageFlows.java b/src/test/java/posters/cucumber/support/OpenPageFlows.java index 13da35d..33e0b8b 100644 --- a/src/test/java/posters/cucumber/support/OpenPageFlows.java +++ b/src/test/java/posters/cucumber/support/OpenPageFlows.java @@ -8,7 +8,7 @@ import io.cucumber.java.en.Given; import io.qameta.allure.Step; import posters.pageobjects.pages.browsing.HomePage; -import posters.pageobjects.pages.browsing.ProductdetailPage; +import posters.pageobjects.pages.browsing.ProductDetailPage; import posters.pageobjects.pages.user.LoginPage; import posters.pageobjects.pages.user.RegisterPage; @@ -47,17 +47,17 @@ public static RegisterPage registerPage() @Given("^product page \"([^\"]*)\" is open$") @Step("open product page with cleared cookes") - public static ProductdetailPage openProductdetailsPageWithClearedCookes(String url) + public static ProductDetailPage openProductdetailsPageWithClearedCookes(String url) { clearBrowserCookies(); open(Neodymium.configuration().url() + url); - return new ProductdetailPage(); + return new ProductDetailPage(); } @Step("open product page without cleared cookes") - public static ProductdetailPage openProductdetailsPage(String url) + public static ProductDetailPage openProductdetailsPage(String url) { open(Neodymium.configuration().url() + url); - return new ProductdetailPage(); + return new ProductDetailPage(); } } diff --git a/src/test/java/posters/cucumber/support/OrderSupport.java b/src/test/java/posters/cucumber/support/OrderSupport.java index ad338c4..ce6755c 100644 --- a/src/test/java/posters/cucumber/support/OrderSupport.java +++ b/src/test/java/posters/cucumber/support/OrderSupport.java @@ -9,15 +9,9 @@ import posters.dataobjects.Product; import posters.dataobjects.User; import posters.pageobjects.pages.browsing.HomePage; -import posters.pageobjects.pages.browsing.ProductdetailPage; -import posters.pageobjects.pages.checkout.CartPage; +import posters.pageobjects.pages.browsing.ProductDetailPage; import posters.pageobjects.pages.checkout.PaymentPage; import posters.pageobjects.pages.checkout.PlaceOrderPage; -import posters.pageobjects.pages.checkout.ShippingAddressPage; -import posters.pageobjects.pages.user.AccountOverviewPage; -import posters.pageobjects.pages.user.LoginPage; -import posters.pageobjects.pages.user.OrderHistoryPage; -import posters.pageobjects.pages.user.RegisterPage; import posters.pageobjects.utility.PriceHelper; public class OrderSupport @@ -65,7 +59,7 @@ public void openProductPageAndAddItoTheCart(String productUrl, String size, Stri @When("I add this product with size \"([^\"]*)\" and style \"([^\"]*)\" to the cart$") public void addProductToCart(String size, String style) { - var productDetailPage = new ProductdetailPage(); + var productDetailPage = new ProductDetailPage(); productDetailPage.setSize(size); productDetailPage.setStyle(style); @@ -79,7 +73,7 @@ public void addProductToCart(String size, String style) @When("^I specify the shipping address \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\" and use it for billing$") public void openFillAndSendShippingFormUseForBilling(String name, String company, String address, String city, String state, String zip, String country) { - var cartPage = new ProductdetailPage().miniCart.openCartPage(); + var cartPage = new ProductDetailPage().miniCart.openCartPage(); cartPage.isExpectedPage(); var shippingAddressPage = cartPage.openShippingPage(); shippingAddressPage.isExpectedPage(); diff --git a/src/test/java/posters/cucumber/support/ProductSupport.java b/src/test/java/posters/cucumber/support/ProductSupport.java index 6293cfe..ea448d7 100644 --- a/src/test/java/posters/cucumber/support/ProductSupport.java +++ b/src/test/java/posters/cucumber/support/ProductSupport.java @@ -3,12 +3,12 @@ import io.cucumber.java.en.Then; import io.cucumber.java.en.When; import posters.pageobjects.pages.browsing.CategoryPage; -import posters.pageobjects.pages.browsing.ProductdetailPage; +import posters.pageobjects.pages.browsing.ProductDetailPage; public class ProductSupport { @When("^product \"([^\"]*)\" is opened$") - public ProductdetailPage clickProductByName(String productName) + public ProductDetailPage clickProductByName(String productName) { return new CategoryPage().clickProductByName(productName); } @@ -16,6 +16,6 @@ public ProductdetailPage clickProductByName(String productName) @Then("^a product detail page shows the headline \"([^\"]*)\"$") public void validateProductName(String name) { - new ProductdetailPage().validateProductName(name); + new ProductDetailPage().validateProductName(name); } } diff --git a/src/test/java/posters/cucumber/support/RegisterSupport.java b/src/test/java/posters/cucumber/support/RegisterSupport.java index 2ec593e..7011c3f 100644 --- a/src/test/java/posters/cucumber/support/RegisterSupport.java +++ b/src/test/java/posters/cucumber/support/RegisterSupport.java @@ -7,11 +7,7 @@ import io.qameta.allure.Step; import posters.dataobjects.User; import posters.pageobjects.pages.browsing.HomePage; -import posters.pageobjects.pages.checkout.CartPage; -import posters.pageobjects.pages.user.AccountOverviewPage; -import posters.pageobjects.pages.user.DeleteAccountPage; import posters.pageobjects.pages.user.LoginPage; -import posters.pageobjects.pages.user.PersonalDataPage; import posters.pageobjects.pages.user.RegisterPage; public class RegisterSupport diff --git a/src/test/java/posters/pageobjects/components/MiniCart.java b/src/test/java/posters/pageobjects/components/MiniCart.java index 42b8052..835bcbf 100644 --- a/src/test/java/posters/pageobjects/components/MiniCart.java +++ b/src/test/java/posters/pageobjects/components/MiniCart.java @@ -39,8 +39,8 @@ public void isComponentAvailable() @Step("open the mini cart") public void openMiniCart() { - // Click the mini cart icon - headerCart.scrollTo().click(); + // Hover over the cart icon + headerCart.hover(); // Wait for mini cart to appear // Wait for the mini cart to show miniCart.waitUntil(visible, Neodymium.configuration().selenideTimeout()); @@ -49,8 +49,6 @@ public void openMiniCart() @Step("close the mini cart") public void closeMiniCart() { - // Click the mini cart icon again - headerCart.scrollTo().click(); // Move the mouse out of the area $("#brand").hover(); // Wait for mini cart to disappear @@ -63,8 +61,8 @@ public CartPage openCartPage() { // Open the cart // Click on the button to go to the Cart - miniCart.find(".goToCart").scrollTo().click(); - return new CartPage(); + miniCart.find(".goToCart").click(); + return new CartPage().isExpectedPage(); } @Step("get the total product count from mini cart") @@ -82,7 +80,6 @@ public void validateTotalCount(int totalCount) @Step("get the subtotal price from mini cart") public String getSubtotal() { - // Store the mini cart subtotal // Open mini cart openMiniCart(); @@ -101,7 +98,7 @@ public void validateSubtotal(String subtotal) // Open mini cart openMiniCart(); // Verify subtotal equals specified subtotal - // Compare the subTotal to the parameter + // Compare the subtotal to the parameter subOrderPrice.shouldHave(exactText(subtotal)); // Close Mini Cart closeMiniCart(); diff --git a/src/test/java/posters/pageobjects/components/Pagination.java b/src/test/java/posters/pageobjects/components/Pagination.java index 3272814..69ffddf 100644 --- a/src/test/java/posters/pageobjects/components/Pagination.java +++ b/src/test/java/posters/pageobjects/components/Pagination.java @@ -41,6 +41,6 @@ public CategoryPage clickOnRandomSite(Random random) chosenPaginationLink.scrollTo(); chosenPaginationLink.click(); - return new CategoryPage(); + return new CategoryPage().isExpectedPage(); } } diff --git a/src/test/java/posters/pageobjects/components/Search.java b/src/test/java/posters/pageobjects/components/Search.java index 8a27cee..95cce0a 100644 --- a/src/test/java/posters/pageobjects/components/Search.java +++ b/src/test/java/posters/pageobjects/components/Search.java @@ -31,7 +31,7 @@ public NoHitsPage noResult(String searchTerm) public CategoryPage categoryPageResult(String searchTerm) { search(searchTerm); - return new CategoryPage(); + return new CategoryPage().isExpectedPage(); } @Step("search for '{searchTerm}'") diff --git a/src/test/java/posters/pageobjects/components/TopNavigation.java b/src/test/java/posters/pageobjects/components/TopNavigation.java index 5fb2794..b9bfada 100644 --- a/src/test/java/posters/pageobjects/components/TopNavigation.java +++ b/src/test/java/posters/pageobjects/components/TopNavigation.java @@ -41,14 +41,14 @@ public CategoryPage clickSubCategoryByPosition(int categoryPosition, int subCate // Clicks the subcategory with position @{subCategoryPosition} // belonging to the category with position @{categoryPosition} topCat.find(".dropdown-menu a", subCategoryPosition - 1).click(); - return new CategoryPage(); + return new CategoryPage().isExpectedPage(); } @Step("click on '{categoryName}' category") public CategoryPage clickCategory(String categoryName) { $(By.linkText(categoryName)).scrollTo().click(); - return new CategoryPage(); + return new CategoryPage().isExpectedPage(); } @Step("click on a '{subCategoryName}' subcategory within '{categoryName}'") @@ -72,7 +72,7 @@ public CategoryPage clickSubcategoryByName(String subCategoryName) categoryMenu.find(".dropdown-menu li > a[title='" + subCategoryName + "']").parent().parent().parent().hover(); categoryMenu.find(By.linkText(subCategoryName)).click(); - return new CategoryPage(); + return new CategoryPage().isExpectedPage(); } @Step("get a random sub category name ") diff --git a/src/test/java/posters/pageobjects/components/UserMenu.java b/src/test/java/posters/pageobjects/components/UserMenu.java index 0aa89c1..61070d5 100644 --- a/src/test/java/posters/pageobjects/components/UserMenu.java +++ b/src/test/java/posters/pageobjects/components/UserMenu.java @@ -57,7 +57,7 @@ public LoginPage openLogin() { openUserMenu(); userMenu.find(".goToLogin").scrollTo().click(); - return new LoginPage(); + return new LoginPage().isExpectedPage(); } @Step("open account page from user menu") @@ -65,7 +65,7 @@ public AccountOverviewPage openAccountOverview() { openUserMenu(); userMenu.find(".goToAccountOverview").scrollTo().click(); - return new AccountOverviewPage(); + return new AccountOverviewPage().isExpectedPage(); } @Step("open register page from user menu") @@ -73,7 +73,7 @@ public RegisterPage openRegister() { openUserMenu(); userMenu.find(".goToRegistration").scrollTo().click(); - return new RegisterPage(); + return new RegisterPage().isExpectedPage(); } /** diff --git a/src/test/java/posters/pageobjects/pages/AbstractPageObject.java b/src/test/java/posters/pageobjects/pages/AbstractPageObject.java index 63d95ef..8d38231 100644 --- a/src/test/java/posters/pageobjects/pages/AbstractPageObject.java +++ b/src/test/java/posters/pageobjects/pages/AbstractPageObject.java @@ -18,7 +18,7 @@ public abstract class AbstractPageObject public AbstractPageObject isExpectedPage() { - return this; + return this; } abstract public void validateStructure(); diff --git a/src/test/java/posters/pageobjects/pages/browsing/CategoryPage.java b/src/test/java/posters/pageobjects/pages/browsing/CategoryPage.java index b746363..d9f1fd1 100644 --- a/src/test/java/posters/pageobjects/pages/browsing/CategoryPage.java +++ b/src/test/java/posters/pageobjects/pages/browsing/CategoryPage.java @@ -31,8 +31,9 @@ public class CategoryPage extends AbstractBrowsingPage @Step("ensure this is a category page") public CategoryPage isExpectedPage() { + super.isExpectedPage(); productOverview.should(exist); - return this; + return this; } @Step("validate category name '{categoryName}' on category page") @@ -63,13 +64,13 @@ public void validateStructure() * @return */ @Step("click on a product by position in grid") - public ProductdetailPage clickProductByPosition(int row, int column) + public ProductDetailPage clickProductByPosition(int row, int column) { // Open the product detail page // Clicks a product by position. Because of the html code, this requires x and y coordinates. SelenideElement rowContainer = $$("#productOverview > .row").get(row - 1); rowContainer.find(".thumbnail", column - 1).scrollTo().click(); - return new ProductdetailPage(); + return new ProductDetailPage().isExpectedPage(); } /** @@ -89,14 +90,14 @@ public String getProductNameByPosition(int row, int column) * @return */ @Step("click on a product by position") - public ProductdetailPage clickProductByPosition(int position) + public ProductDetailPage clickProductByPosition(int position) { final int index = position - 1; // Open the product detail page // Click on the product's image and open the product overview page // Click the product link to open the product detail page $("#product" + index + " img").scrollTo().click(); - return new ProductdetailPage(); + return new ProductDetailPage().isExpectedPage(); } /** @@ -104,13 +105,13 @@ public ProductdetailPage clickProductByPosition(int position) * @return */ @Step("click on a product by name '{productName}'") - public ProductdetailPage clickProductByName(String productName) + public ProductDetailPage clickProductByName(String productName) { // Open the product detail page // Click on the product's image and open the product overview page // Click the product link to open the product detail page $("#productOverview .thumbnails .thumbnail a > img.pImage[title='" + productName + "']").scrollTo().click(); - return new ProductdetailPage(); + return new ProductDetailPage().isExpectedPage(); } /** diff --git a/src/test/java/posters/pageobjects/pages/browsing/HomePage.java b/src/test/java/posters/pageobjects/pages/browsing/HomePage.java index c5b8a97..1f22965 100644 --- a/src/test/java/posters/pageobjects/pages/browsing/HomePage.java +++ b/src/test/java/posters/pageobjects/pages/browsing/HomePage.java @@ -19,8 +19,9 @@ public class HomePage extends AbstractBrowsingPage @Step("ensure this is a home page") public HomePage isExpectedPage() { + super.isExpectedPage(); $("#titleIndex").should(exist); - return this; + return this; } @Step("validate home page structure") @@ -100,11 +101,9 @@ public void validateAndVisualAssert() footer.validate(); } - public ProductdetailPage clickOnPresentedProduct(String productName) + public ProductDetailPage clickOnPresentedProduct(String productName) { $$("#productList .thumbnail .pName").filter(exactText(productName)).shouldHaveSize(1).first().click(); - var productDetailPage = new ProductdetailPage(); - productDetailPage.isExpectedPage(); - return productDetailPage; + return new ProductDetailPage().isExpectedPage(); } } diff --git a/src/test/java/posters/pageobjects/pages/browsing/ProductdetailPage.java b/src/test/java/posters/pageobjects/pages/browsing/ProductDetailPage.java similarity index 96% rename from src/test/java/posters/pageobjects/pages/browsing/ProductdetailPage.java rename to src/test/java/posters/pageobjects/pages/browsing/ProductDetailPage.java index 5910c4f..3d64f0c 100644 --- a/src/test/java/posters/pageobjects/pages/browsing/ProductdetailPage.java +++ b/src/test/java/posters/pageobjects/pages/browsing/ProductDetailPage.java @@ -14,7 +14,7 @@ /** * @author pfotenhauer */ -public class ProductdetailPage extends AbstractBrowsingPage +public class ProductDetailPage extends AbstractBrowsingPage { private SelenideElement addToCartButton = $("#btnAddToCart"); @@ -26,10 +26,11 @@ public class ProductdetailPage extends AbstractBrowsingPage @Override @Step("ensure this is a product detail page") - public ProductdetailPage isExpectedPage() + public ProductDetailPage isExpectedPage() { + super.isExpectedPage(); $("#addToCartForm").should(exist); - return this; + return this; } @Override @@ -135,7 +136,7 @@ public void validate(String productName) { validateStructure(); validateProductName(productName); - }; + } /** * @param productName diff --git a/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java index b475b32..d51d204 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java @@ -21,7 +21,7 @@ public class BillingAddressPage extends AbstractCheckoutPage public BillingAddressPage isExpectedPage() { headline.should(exist); - return this; + return this; } @Override @@ -54,6 +54,6 @@ public PaymentPage selectBillingAddress(int position) // Clicks the continue button $("#btnUseBillAddress").scrollTo().click(); - return new PaymentPage(); + return new PaymentPage().isExpectedPage(); } } diff --git a/src/test/java/posters/pageobjects/pages/checkout/CartPage.java b/src/test/java/posters/pageobjects/pages/checkout/CartPage.java index e0c685e..98cc3d8 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/CartPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/CartPage.java @@ -19,7 +19,7 @@ import io.qameta.allure.Step; import posters.dataobjects.Product; import posters.pageobjects.pages.browsing.AbstractBrowsingPage; -import posters.pageobjects.pages.browsing.ProductdetailPage; +import posters.pageobjects.pages.browsing.ProductDetailPage; import posters.pageobjects.utility.PriceHelper; /** @@ -35,15 +35,15 @@ public class CartPage extends AbstractBrowsingPage @Step("ensure this is a cart page") public CartPage isExpectedPage() { - cartTable.should(exist); - return this; + super.isExpectedPage(); + $("#titleCart").shouldBe(visible); + return this; } @Step("validate subtotal in the cart") public void validateSubtotal(String subtotal) { $$("#cartSummaryList li").findBy(text("Subtotal")).find(".text-right").shouldHave(exactText(subtotal)); - } @Override @@ -73,7 +73,6 @@ public void validateContainsProduct(Product product) { SelenideElement productContainer = $$("div.hidden-xs").filter((matchText(product.getRowRegex()))).shouldHaveSize(1).first() .parent().parent(); - productContainer.find(".productName").shouldHave(exactText(product.getName())); productContainer.find(".productSize").shouldHave(exactText(product.getSize())); productContainer.find(".productStyle").shouldHave(exactText(product.getStyle())); @@ -227,7 +226,7 @@ public String getProductTotalUnitPrice(int position) public Product getProduct(int position) { return new Product(getProductName(position), getProductUnitPrice(position), getProductStyle(position), getProductSize(position), Integer.parseInt(getProductCount(position))); - }; + } /** * @param position @@ -312,10 +311,10 @@ public void validateSubAndLineItemTotalAfterRemove(String oldSubTotal, String ol * @param position */ @Step("click on a product on the cart page") - public ProductdetailPage openProductPage(int position) + public ProductDetailPage openProductPage(int position) { $("#product" + (position - 1) + " img").scrollTo().click(); - return new ProductdetailPage(); + return new ProductDetailPage().isExpectedPage(); } private void clickCheckoutButton() @@ -327,14 +326,14 @@ private void clickCheckoutButton() public NewShippingAddressPage openNewShippingPage() { clickCheckoutButton(); - return new NewShippingAddressPage(); + return new NewShippingAddressPage().isExpectedPage(); } @Step("open shipping address from the cart page") public ShippingAddressPage openShippingPage() { clickCheckoutButton(); - return new ShippingAddressPage(); + return new ShippingAddressPage().isExpectedPage(); } /** diff --git a/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java index 843c872..11843b1 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java @@ -39,8 +39,9 @@ public class NewBillingAddressPage extends AbstractCheckoutPage @Step("ensure this is a new billing address page") public NewBillingAddressPage isExpectedPage() { + super.isExpectedPage(); headline.should(exist); - return this; + return this; } @Override @@ -57,37 +58,37 @@ public void validateStructure() $("#formAddBillAddr").shouldBe(visible); // Name // Asserts the label next to the name field shows the right text - $("label[for=\"fullName\"]").shouldHave(exactText(Neodymium.localizedText("General.addresses.fullname"))); + $("label[for='fullName']").shouldHave(exactText(Neodymium.localizedText("General.addresses.fullname"))); // Asserts the name field is there nameField.shouldBe(visible); // Company // Asserts the label next to the company field shows the right text - $("label[for=\"company\"]").shouldHave(exactText(Neodymium.localizedText("General.addresses.company"))); + $("label[for='company']").shouldHave(exactText(Neodymium.localizedText("General.addresses.company"))); // Asserts the company field is there companyField.shouldBe(visible); // Address // Asserts the label next to the address field shows the right text - $("label[for=\"addressLine\"]").shouldHave(exactText(Neodymium.localizedText("General.addresses.address"))); + $("label[for='addressLine']").shouldHave(exactText(Neodymium.localizedText("General.addresses.address"))); // Asserts the address field is there addressField.shouldBe(visible); // City // Asserts the label next to the city field shows the right text - $("label[for=\"city\"]").shouldHave(exactText(Neodymium.localizedText("General.addresses.city"))); + $("label[for='city']").shouldHave(exactText(Neodymium.localizedText("General.addresses.city"))); // Asserts the city field is there cityField.shouldBe(visible); // State // Asserts the label next to the state field shows the right text - $("label[for=\"state\"]").shouldHave(exactText(Neodymium.localizedText("General.addresses.state"))); + $("label[for='state']").shouldHave(exactText(Neodymium.localizedText("General.addresses.state"))); // Asserts the state field is there stateField.shouldBe(visible); // Zip // Asserts the label next to the zip field shows the right text - $("label[for=\"zip\"]").shouldHave(exactText(Neodymium.localizedText("General.addresses.zip"))); + $("label[for='zip']").shouldHave(exactText(Neodymium.localizedText("General.addresses.zip"))); // Asserts the zip field is there zipField.shouldBe(visible); // Country // Asserts the label next to the country field shows the right text - $("label[for=\"country\"]").shouldHave(exactText(Neodymium.localizedText("General.addresses.country"))); + $("label[for='country']").shouldHave(exactText(Neodymium.localizedText("General.addresses.country"))); // Asserts the country field is there countryField.shouldBe(visible); // Continue Button @@ -142,7 +143,7 @@ public NewPaymentPage sendBillingAddressForm(String name, String company, String // Click on Continue addBillingButton.scrollTo().click(); - return new NewPaymentPage(); + return new NewPaymentPage().isExpectedPage(); } /** @@ -151,7 +152,9 @@ public NewPaymentPage sendBillingAddressForm(String name, String company, String */ public NewPaymentPage sendBillingAddressForm(Address billingAddress) { - return sendBillingAddressForm(billingAddress.getFullName(), billingAddress.getCompany(), billingAddress.getAddressLine(), + String fullName = billingAddress.getFirstName() + " " + billingAddress.getLastName(); + + return sendBillingAddressForm(fullName, billingAddress.getCompany(), billingAddress.getStreet(), billingAddress.getCity(), billingAddress.getState(), billingAddress.getZip(), billingAddress.getCountry()); } diff --git a/src/test/java/posters/pageobjects/pages/checkout/NewPaymentPage.java b/src/test/java/posters/pageobjects/pages/checkout/NewPaymentPage.java index aa6b952..c6707d2 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/NewPaymentPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/NewPaymentPage.java @@ -33,8 +33,9 @@ public class NewPaymentPage extends AbstractCheckoutPage @Step("ensure this is a new payment page") public NewPaymentPage isExpectedPage() { + super.isExpectedPage(); headline.should(exist); - return this; + return this; } @Override @@ -51,17 +52,17 @@ public void validateStructure() $("#formAddPayment").should(exist); // Credit Card Number // Makes sure the label next to the card number field shows the correct text - $("label[for=\"creditCardNumber\"]").shouldHave(exactText(Neodymium.localizedText("General.payment.cardnumber"))); + $("label[for='creditCardNumber']").shouldHave(exactText(Neodymium.localizedText("General.payment.cardnumber"))); // Makes sure the card number field is there creditCardNumber.shouldBe(visible); // Name // Makes sure the label next to the card holder field shows the correct text - $("label[for=\"name\"]").shouldHave(exactText(Neodymium.localizedText("General.payment.cardholdername"))); + $("label[for='name']").shouldHave(exactText(Neodymium.localizedText("General.payment.cardholdername"))); // Makes sure the card holder field is there creditCardName.shouldBe(visible); // Expiration // Makes sure the label next to the expiration date fields shows the correct text - $("label[for=\"expirationDateMonth\"]").shouldHave(exactText(Neodymium.localizedText("General.payment.expirationdate"))); + $("label[for='expirationDateMonth']").shouldHave(exactText(Neodymium.localizedText("General.payment.expirationdate"))); // Makes sure the expiration month field is there expirationMonth.shouldBe(visible); // Makes sure the expiration year field is there @@ -99,7 +100,7 @@ public PlaceOrderPage sendPaymentForm(String number, String name, String month, // Clicks the Continue button addPaymentButton.scrollTo().click(); - return new PlaceOrderPage(); + return new PlaceOrderPage().isExpectedPage(); } /** diff --git a/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java index b91d076..cb3cb12 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java @@ -40,8 +40,9 @@ public class NewShippingAddressPage extends AbstractCheckoutPage @Step("ensure this is a new shipping address page") public NewShippingAddressPage isExpectedPage() { + super.isExpectedPage(); headline.should(exist); - return this; + return this; } @Override @@ -58,42 +59,42 @@ public void validateStructure() $("#formAddDelAddr").shouldBe(visible); // Name // Asserts the label next to the name field shows the right text - $("label[for=\"fullName\"]").shouldHave(exactText(Neodymium.localizedText("General.addresses.fullname"))); + $("label[for='fullName']").shouldHave(exactText(Neodymium.localizedText("General.addresses.fullname"))); // Asserts the name field is there nameField.shouldBe(visible); // Company // Asserts the label next to the company field shows the right text - $("label[for=\"company\"]").shouldHave(exactText(Neodymium.localizedText("General.addresses.company"))); + $("label[for='company']").shouldHave(exactText(Neodymium.localizedText("General.addresses.company"))); // Asserts the company field is there companyField.shouldBe(visible); // Address // Asserts the label next to the address field shows the right text - $("label[for=\"addressLine\"]").shouldHave(exactText(Neodymium.localizedText("General.addresses.address"))); + $("label[for='addressLine']").shouldHave(exactText(Neodymium.localizedText("General.addresses.address"))); // Asserts the address field is there addressField.shouldBe(visible); // City // Asserts the label next to the city field shows the right text - $("label[for=\"city\"]").shouldHave(exactText(Neodymium.localizedText("General.addresses.city"))); + $("label[for='city']").shouldHave(exactText(Neodymium.localizedText("General.addresses.city"))); // Asserts the city field is there cityField.shouldBe(visible); // State // Asserts the label next to the state field shows the right text - $("label[for=\"state\"]").shouldHave(exactText(Neodymium.localizedText("General.addresses.state"))); + $("label[for='state']").shouldHave(exactText(Neodymium.localizedText("General.addresses.state"))); // Asserts the state field is there stateField.shouldBe(visible); // Zip // Asserts the label next to the zip field shows the right text - $("label[for=\"zip\"]").shouldHave(exactText(Neodymium.localizedText("General.addresses.zip"))); + $("label[for='zip']").shouldHave(exactText(Neodymium.localizedText("General.addresses.zip"))); // Asserts the zip field is there zipField.shouldBe(visible); // Country // Asserts the label next to the country field shows the right text - $("label[for=\"country\"]").shouldHave(exactText(Neodymium.localizedText("General.addresses.country"))); + $("label[for='country']").shouldHave(exactText(Neodymium.localizedText("General.addresses.country"))); // Asserts the country field is there countryField.shouldBe(visible); // Radio Button // Assert the radio buttons are there - $$("input[name=\"billEqualShipp\"]").shouldHaveSize(2); + $$("input[name='billEqualShipp']").shouldHaveSize(2); // Continue Button // Asserts the Continue button is there addShippingButton.shouldBe(visible); @@ -158,7 +159,7 @@ public NewBillingAddressPage sendShippingAddressForm(String name, String company // Click on Continue addShippingButton.scrollTo().click(); - return new NewBillingAddressPage(); + return new NewBillingAddressPage().isExpectedPage(); } /** @@ -168,7 +169,9 @@ public NewBillingAddressPage sendShippingAddressForm(String name, String company */ public NewBillingAddressPage sendShippingAddressForm(Address shippingAddress, boolean sameBillingAddress) { - return sendShippingAddressForm(shippingAddress.getFullName(), shippingAddress.getCompany(), shippingAddress.getAddressLine(), + String fullName = shippingAddress.getFirstName() + " " + shippingAddress.getLastName(); + + return sendShippingAddressForm(fullName, shippingAddress.getCompany(), shippingAddress.getStreet(), shippingAddress.getCity(), shippingAddress.getState(), shippingAddress.getZip(), shippingAddress.getCountry(), sameBillingAddress); } diff --git a/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java b/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java index e4c61a2..67a581f 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java @@ -30,8 +30,9 @@ public class PaymentPage extends AbstractCheckoutPage @Step("ensure this is a payment page") public PaymentPage isExpectedPage() { + super.isExpectedPage(); headline.should(exist); - return this; + return this; } @Override @@ -64,7 +65,7 @@ public PlaceOrderPage selectCreditCard(int position) // Clicks the continue button $("#btnUsePayment").scrollTo().click(); - return new PlaceOrderPage(); + return new PlaceOrderPage().isExpectedPage(); } @Step("fill and send payment form") @@ -85,6 +86,6 @@ public PlaceOrderPage sendPaymentForm(String number, String name, String month, // Clicks the Continue button addPaymentButton.scrollTo().click(); - return new PlaceOrderPage(); + return new PlaceOrderPage().isExpectedPage(); } } diff --git a/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java b/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java index 25cd76f..f87f9dc 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java @@ -36,8 +36,9 @@ public class PlaceOrderPage extends AbstractCheckoutPage @Step("ensure this is a place order page") public PlaceOrderPage isExpectedPage() { + super.isExpectedPage(); headline.should(exist); - return this; + return this; } @Override @@ -105,15 +106,18 @@ public void validateProduct(int position, String productName, int productCount, public void validateAddressesAndPayment(Address shippingAddress, Address billingAddress, CreditCard creditcard) { // Shipping address - // Name - // Makes sure the shipping address name matches the parameter - shippingAddressForm.find(".name").shouldHave(exactText(shippingAddress.getFullName())); + // fullName + // Makes sure the shipping address fullName matches the parameter + String firstName = shippingAddress.getFirstName(); + String lastName = shippingAddress.getLastName(); + String fullName = firstName + " " + lastName; + shippingAddressForm.find(".name").shouldHave(exactText(fullName)); // Company // Makes sure the shipping address company matches the parameter shippingAddressForm.find(".company").shouldHave(exactText(shippingAddress.getCompany())); // Address // Makes sure the shipping address matches the parameter - shippingAddressForm.find(".addressLine").shouldHave(exactText(shippingAddress.getAddressLine())); + shippingAddressForm.find(".addressLine").shouldHave(exactText(shippingAddress.getStreet())); // City // Makes sure the shipping address city matches the parameter shippingAddressForm.find(".city").shouldHave(exactText(shippingAddress.getCity())); @@ -129,13 +133,13 @@ public void validateAddressesAndPayment(Address shippingAddress, Address billing // Billing address // Name // Makes sure the billing address name matches the parameter - billingAddressForm.find(".name").shouldHave(exactText(billingAddress.getFullName())); + billingAddressForm.find(".name").shouldHave(exactText(fullName)); // Company // Makes sure the billing address company matches the parameter billingAddressForm.find(".company").shouldHave(exactText(billingAddress.getCompany())); // Address // Makes sure the billing address matches the parameter - billingAddressForm.find(".addressLine").shouldHave(exactText(billingAddress.getAddressLine())); + billingAddressForm.find(".addressLine").shouldHave(exactText(billingAddress.getStreet())); // City // Makes sure the billing address city matches the parameter billingAddressForm.find(".city").shouldHave(exactText(billingAddress.getCity())); @@ -175,6 +179,6 @@ public HomePage placeOrder() // Clicks the Order button orderButton.scrollTo().click(); - return new HomePage(); + return new HomePage().isExpectedPage(); } } diff --git a/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java index 2443eb4..abf1e0b 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java @@ -36,8 +36,9 @@ public class ShippingAddressPage extends AbstractCheckoutPage @Step("ensure this is a shipping address page") public ShippingAddressPage isExpectedPage() { + super.isExpectedPage(); headline.should(exist); - return this; + return this; } @Override @@ -70,7 +71,7 @@ public BillingAddressPage selectShippingAddress(int position) // Clicks the continue button $("#btnUseAddressContinue").scrollTo().click(); - return new BillingAddressPage(); + return new BillingAddressPage().isExpectedPage(); } @Step("fill and send shipping address form") @@ -112,6 +113,6 @@ public BillingAddressPage sendShippingAddressForm(String name, String company, S // Click on Continue addShippingButton.scrollTo().click(); - return new BillingAddressPage(); + return new BillingAddressPage().isExpectedPage(); } } diff --git a/src/test/java/posters/pageobjects/pages/user/AccountOverviewPage.java b/src/test/java/posters/pageobjects/pages/user/AccountOverviewPage.java index ddce91d..1af8276 100644 --- a/src/test/java/posters/pageobjects/pages/user/AccountOverviewPage.java +++ b/src/test/java/posters/pageobjects/pages/user/AccountOverviewPage.java @@ -22,8 +22,9 @@ public class AccountOverviewPage extends AbstractBrowsingPage @Step("ensure this is an account overview page") public AccountOverviewPage isExpectedPage() { + super.isExpectedPage(); headline.should(exist); - return this; + return this; } @Override @@ -58,12 +59,12 @@ public PersonalDataPage openPersonalData() // Open the personal data page // Click on the link to Personal Data personalDataLink.scrollTo().click(); - return new PersonalDataPage(); + return new PersonalDataPage().isExpectedPage(); } public OrderHistoryPage openOrderHistory() { $("#linkOrderOverview").scrollTo().click(); - return new OrderHistoryPage(); + return new OrderHistoryPage().isExpectedPage(); } } diff --git a/src/test/java/posters/pageobjects/pages/user/DeleteAccountPage.java b/src/test/java/posters/pageobjects/pages/user/DeleteAccountPage.java index 029fc56..8178db7 100644 --- a/src/test/java/posters/pageobjects/pages/user/DeleteAccountPage.java +++ b/src/test/java/posters/pageobjects/pages/user/DeleteAccountPage.java @@ -28,8 +28,9 @@ public class DeleteAccountPage extends AbstractBrowsingPage @Step("ensure this is a delete account page") public DeleteAccountPage isExpectedPage() { + super.isExpectedPage(); deleteForm.should(exist); - return this; + return this; } @Override @@ -43,7 +44,7 @@ public void validateStructure() deleteForm.find(".h2").should(matchText("[A-Z].{3,}")); // Password field // Asserts the label belonging to the password field displays the correct text - $("label[for=\"password\"]").shouldBe(exactText(Neodymium.localizedText("AccountPages.yourPassword"))); + $("label[for='password']").shouldBe(exactText(Neodymium.localizedText("AccountPages.yourPassword"))); // Asserts the field to enter your password is there passwordField.shouldBe(visible); // Button @@ -60,6 +61,6 @@ public HomePage deleteAccount(String password) // Delete account and open the homepage // click the confirmation button deleteButton.scrollTo().click(); - return new HomePage(); + return new HomePage().isExpectedPage(); } } diff --git a/src/test/java/posters/pageobjects/pages/user/LoginPage.java b/src/test/java/posters/pageobjects/pages/user/LoginPage.java index f3d4972..9070d4f 100644 --- a/src/test/java/posters/pageobjects/pages/user/LoginPage.java +++ b/src/test/java/posters/pageobjects/pages/user/LoginPage.java @@ -34,8 +34,9 @@ public class LoginPage extends AbstractBrowsingPage @Step("ensure this is a login page") public LoginPage isExpectedPage() { + super.isExpectedPage(); loginForm.should(exist); - return this; + return this; } @Override @@ -92,7 +93,7 @@ public void sendFormWithData(String email, String password) public HomePage sendLoginform(String email, String password) { sendFormWithData(email, password); - return new HomePage(); + return new HomePage().isExpectedPage(); } /** @@ -112,7 +113,7 @@ public HomePage sendLoginform(User user) public LoginPage sendFalseLoginform(User user) { sendFormWithData(user.getEmail(), user.getPassword()); - return new LoginPage(); + return new LoginPage().isExpectedPage(); } /** @@ -122,7 +123,7 @@ public LoginPage sendFalseLoginform(User user) public RegisterPage openRegister() { registerLink.scrollTo().click(); - return new RegisterPage(); + return new RegisterPage().isExpectedPage(); } @Step("validate successful registration message") diff --git a/src/test/java/posters/pageobjects/pages/user/OrderHistoryPage.java b/src/test/java/posters/pageobjects/pages/user/OrderHistoryPage.java index dd821f5..097d57b 100644 --- a/src/test/java/posters/pageobjects/pages/user/OrderHistoryPage.java +++ b/src/test/java/posters/pageobjects/pages/user/OrderHistoryPage.java @@ -20,8 +20,9 @@ public class OrderHistoryPage extends AbstractBrowsingPage @Step("ensure this is an order history page") public OrderHistoryPage isExpectedPage() { + super.isExpectedPage(); headline.should(exist); - return this; + return this; } @Step("validate product is in the order") diff --git a/src/test/java/posters/pageobjects/pages/user/PersonalDataPage.java b/src/test/java/posters/pageobjects/pages/user/PersonalDataPage.java index 3e03932..eea2048 100644 --- a/src/test/java/posters/pageobjects/pages/user/PersonalDataPage.java +++ b/src/test/java/posters/pageobjects/pages/user/PersonalDataPage.java @@ -23,8 +23,9 @@ public class PersonalDataPage extends AbstractBrowsingPage @Step("ensure this is a personal data page") public PersonalDataPage isExpectedPage() { + super.isExpectedPage(); headline.should(exist); - return this; + return this; } @Override @@ -54,6 +55,6 @@ public DeleteAccountPage openDeleteAccount() // Open the delete account page // Clicks the button to get to the Delete Account page deleteButton.scrollTo().click(); - return new DeleteAccountPage(); + return new DeleteAccountPage().isExpectedPage(); } } diff --git a/src/test/java/posters/pageobjects/pages/user/RegisterPage.java b/src/test/java/posters/pageobjects/pages/user/RegisterPage.java index 566c1b4..60f3a79 100644 --- a/src/test/java/posters/pageobjects/pages/user/RegisterPage.java +++ b/src/test/java/posters/pageobjects/pages/user/RegisterPage.java @@ -37,8 +37,9 @@ public class RegisterPage extends AbstractBrowsingPage @Step("ensure this is a register page") public RegisterPage isExpectedPage() { + super.isExpectedPage(); registerForm.should(exist); - return this; + return this; } @Override @@ -52,23 +53,23 @@ public void validateStructure() registerForm.find(".h2").should(matchText("[A-Z].{3,}")); // Form // Asserts the label belonging to the last name field displays the correct text - $("label[for=\"lastName\"]").shouldHave(exactText(Neodymium.localizedText("AccountPages.lastname"))); + $("label[for='lastName']").shouldHave(exactText(Neodymium.localizedText("AccountPages.lastname"))); // Make sure the field to type in the last name is visible. lastnameField.shouldBe(visible); // Asserts the label belonging to the first name field displays the correct text - $("label[for=\"firstName\"]").shouldHave(exactText(Neodymium.localizedText("AccountPages.firstname"))); + $("label[for='firstName']").shouldHave(exactText(Neodymium.localizedText("AccountPages.firstname"))); // Make sure the field to type in the first name is visible. firstnameField.shouldBe(visible); // Asserts the label belonging to the email field displays the correct text - $("label[for=\"eMail\"]").shouldHave(exactText(Neodymium.localizedText("AccountPages.email"))); + $("label[for='eMail']").shouldHave(exactText(Neodymium.localizedText("AccountPages.email"))); // Make sure the field to type in the e-Mail is visible. emailField.shouldBe(visible); // Asserts the label belonging to the password field displays the correct text - $("label[for=\"password\"]").shouldHave(exactText(Neodymium.localizedText("AccountPages.password"))); + $("label[for='password']").shouldHave(exactText(Neodymium.localizedText("AccountPages.password"))); // Make sure the field to type in the password is visible. passwordField.shouldBe(visible); // Asserts the label belonging to the second password field displays the correct text - $("label[for=\"passwordAgain\"]").shouldHave(exactText(Neodymium.localizedText("AccountPages.passwordRepeat"))); + $("label[for='passwordAgain']").shouldHave(exactText(Neodymium.localizedText("AccountPages.passwordRepeat"))); // Make sure the field to type in the password again is visible. passwordRepeatField.shouldBe(visible); // Register button From 11190adec601b2d125cca31e1998540bc4e96b3d Mon Sep 17 00:00:00 2001 From: ufjena <77679064+ufjena@users.noreply.github.com> Date: Thu, 29 Apr 2021 12:49:28 +0200 Subject: [PATCH 06/35] dataobjects changed --- .../cucumber/support/OrderSupport.java | 8 +- .../java/posters/dataobjects/Address.java | 100 +++++------------- .../java/posters/dataobjects/CreditCard.java | 49 +-------- .../java/posters/dataobjects/Product.java | 45 -------- src/test/java/posters/dataobjects/User.java | 36 ------- .../pages/checkout/ShippingAddressPage.java | 6 +- 6 files changed, 34 insertions(+), 210 deletions(-) diff --git a/src/test/java/posters/cucumber/support/OrderSupport.java b/src/test/java/posters/cucumber/support/OrderSupport.java index ce6755c..4443d10 100644 --- a/src/test/java/posters/cucumber/support/OrderSupport.java +++ b/src/test/java/posters/cucumber/support/OrderSupport.java @@ -71,15 +71,15 @@ public void addProductToCart(String size, String style) } @When("^I specify the shipping address \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\" and use it for billing$") - public void openFillAndSendShippingFormUseForBilling(String name, String company, String address, String city, String state, String zip, String country) + public void openFillAndSendShippingFormUseForBilling(String firstName, String lastName, String company, String street, String city, String state, String zip, String country) { var cartPage = new ProductDetailPage().miniCart.openCartPage(); cartPage.isExpectedPage(); var shippingAddressPage = cartPage.openShippingPage(); shippingAddressPage.isExpectedPage(); - shippingAddressPage.sendShippingAddressForm(name, company, address, city, state, zip, country, true); - storage.shippingAddress = new Address(name, company, address, city, state, zip, country); - storage.billingAddress = new Address(name, company, address, city, state, zip, country); + shippingAddressPage.sendShippingAddressForm(firstName, lastName, company, street, city, state, zip, country, true); + storage.shippingAddress = new Address(firstName, lastName, company, street, city, state, zip, country); + storage.billingAddress = new Address(firstName, lastName, company, street, city, state, zip, country); new PaymentPage().isExpectedPage(); } diff --git a/src/test/java/posters/dataobjects/Address.java b/src/test/java/posters/dataobjects/Address.java index 43eb2e8..5efa540 100644 --- a/src/test/java/posters/dataobjects/Address.java +++ b/src/test/java/posters/dataobjects/Address.java @@ -5,11 +5,13 @@ */ public class Address { - String fullName; + String firstName; + + String lastName; String company; - String addressLine; + String street; String city; @@ -20,12 +22,14 @@ public class Address String country; /** - * @param fullName - * the fullName to set + * @param firstName + * the firstName to set + * @param lastName + * the lastName to set * @param company * the company to set - * @param addressLine - * the addressLine to set + * @param street + * the street to set * @param city * the city to set * @param state @@ -35,11 +39,12 @@ public class Address * @param country * the country to set */ - public Address(String fullName, String company, String addressLine, String city, String state, String zip, String country) + public Address(String firstName, String lastName, String company, String street, String city, String state, String zip, String country) { - this.fullName = fullName; + this.firstName = firstName; + this.lastName = lastName; this.company = company; - this.addressLine = addressLine; + this.street = street; this.city = city; this.state = state; this.zip = zip; @@ -47,20 +52,19 @@ public Address(String fullName, String company, String addressLine, String city, } /** - * @return the fullName + * @return the firstName */ - public String getFullName() + public String getFirstName() { - return fullName; + return firstName; } /** - * @param fullName - * the fullName to set + * @return the lastName */ - public void setFullName(String fullName) + public String getLastName() { - this.fullName = fullName; + return lastName; } /** @@ -72,29 +76,11 @@ public String getCompany() } /** - * @param company - * the company to set - */ - public void setCompany(String company) - { - this.company = company; - } - - /** - * @return the address + * @return the street */ - public String getAddressLine() + public String getStreet() { - return addressLine; - } - - /** - * @param addressLine - * the address to set - */ - public void setAddressLine(String addressLine) - { - this.addressLine = addressLine; + return street; } /** @@ -105,15 +91,6 @@ public String getCity() return city; } - /** - * @param city - * the city to set - */ - public void setCity(String city) - { - this.city = city; - } - /** * @return the state */ @@ -122,15 +99,6 @@ public String getState() return state; } - /** - * @param state - * the state to set - */ - public void setState(String state) - { - this.state = state; - } - /** * @return the zip */ @@ -139,15 +107,6 @@ public String getZip() return zip; } - /** - * @param zip - * the zip to set - */ - public void setZip(String zip) - { - this.zip = zip; - } - /** * @return the country */ @@ -156,19 +115,10 @@ public String getCountry() return country; } - /** - * @param country - * the country to set - */ - public void setCountry(String country) - { - this.country = country; - } - @Override public String toString() { - return String.format("Address [fullName()=%s, company()=%s, addressLine()=%s, zip()=%s, city()=%s, state()=%s, country()=%s]", - getFullName(), getCompany(), getAddressLine(), getZip(), getCity(), getState(), getCountry()); + return String.format("Address [firtName()=%s, lastName()=%s, company()=%s, street()=%s, zip()=%s, city()=%s, state()=%s, country()=%s]", + getFirstName(), getLastName(), getCompany(), getStreet(), getZip(), getCity(), getState(), getCountry()); } } diff --git a/src/test/java/posters/dataobjects/CreditCard.java b/src/test/java/posters/dataobjects/CreditCard.java index d0dbb9b..b710ea8 100644 --- a/src/test/java/posters/dataobjects/CreditCard.java +++ b/src/test/java/posters/dataobjects/CreditCard.java @@ -44,15 +44,6 @@ public String getFullName() return fullName; } - /** - * @param fullName - * the fullName to set - */ - public void setFullName(String fullName) - { - this.fullName = fullName; - } - /** * @return the cardNumber */ @@ -61,15 +52,6 @@ public String getCardNumber() return cardNumber; } - /** - * @param cardNumber - * the cardNumber to set - */ - public void setCardNumber(String cardNumber) - { - this.cardNumber = cardNumber; - } - /** * @return the crypticCardNumber */ @@ -78,15 +60,6 @@ public String getCrypticCardNumber() return crypticCardNumber; } - /** - * @param crypticCardNumber - * the crypticCardNumber to set - */ - public void setCrypticCardNumber(String crypticCardNumber) - { - this.crypticCardNumber = crypticCardNumber; - } - /** * @return the expDateMonth */ @@ -95,15 +68,6 @@ public String getExpDateMonth() return expDateMonth; } - /** - * @param expDateMonth - * the expDateMonth to set - */ - public void setExpDateMonth(String expDateMonth) - { - this.expDateMonth = expDateMonth; - } - /** * @return the expDateYear */ @@ -112,19 +76,10 @@ public String getExpDateYear() return expDateYear; } - /** - * @param expDateYear - * the expDateYear to set - */ - public void setExpDateYear(String expDateYear) - { - this.expDateYear = expDateYear; - } - @Override public String toString() { - return String.format("CreditCard [fullName()=%s, cardNumber()=%s, expMonth()=%s, expYear()=%s]", - getFullName(), getCardNumber(), getExpDateMonth(), getExpDateYear()); + return String.format("CreditCard [fullName()=%s, cardNumber()=%s, crypticCardNumber()=%s, expMonth()=%s, expYear()=%s]", + getFullName(), getCardNumber(), getCrypticCardNumber(), getExpDateMonth(), getExpDateYear()); } } diff --git a/src/test/java/posters/dataobjects/Product.java b/src/test/java/posters/dataobjects/Product.java index a98a45e..debf559 100644 --- a/src/test/java/posters/dataobjects/Product.java +++ b/src/test/java/posters/dataobjects/Product.java @@ -48,24 +48,6 @@ public String getName() return name; } - /** - * @param name - * the name to set - */ - public void setName(String name) - { - this.name = name; - } - - /** - * @param price - * the price to set - */ - public void setUnitPrice(String price) - { - this.unitPrice = price; - } - /** * @return the unitPrice */ @@ -82,15 +64,6 @@ public String getStyle() return style; } - /** - * @param style - * the style to set - */ - public void setStyle(String style) - { - this.style = style; - } - /** * @return the size */ @@ -99,15 +72,6 @@ public String getSize() return size; } - /** - * @param size - * the size to set - */ - public void setSize(String size) - { - this.size = size; - } - /** * @return the amount */ @@ -116,15 +80,6 @@ public int getAmount() return amount; } - /** - * @param amount - * the amount to set - */ - public void setAmount(int amount) - { - this.amount = amount; - } - @Override public String toString() { diff --git a/src/test/java/posters/dataobjects/User.java b/src/test/java/posters/dataobjects/User.java index f119bfc..fb90675 100644 --- a/src/test/java/posters/dataobjects/User.java +++ b/src/test/java/posters/dataobjects/User.java @@ -46,15 +46,6 @@ public String getFirstName() return firstName; } - /** - * @param firstName - * the firstName to set - */ - public void setFirstName(String firstName) - { - this.firstName = firstName; - } - /** * @return the lastName */ @@ -63,15 +54,6 @@ public String getLastName() return lastName; } - /** - * @param lastName - * the lastName to set - */ - public void setLastName(String lastName) - { - this.lastName = lastName; - } - /** * @return the email */ @@ -80,15 +62,6 @@ public String getEmail() return email; } - /** - * @param email - * the email to set - */ - public void setEmail(String email) - { - this.email = email; - } - /** * @return the password */ @@ -97,15 +70,6 @@ public String getPassword() return password; } - /** - * @param password - * the password to set - */ - public void setPassword(String password) - { - this.password = password; - } - @Override public String toString() { diff --git a/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java index abf1e0b..bde25d9 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java @@ -75,18 +75,18 @@ public BillingAddressPage selectShippingAddress(int position) } @Step("fill and send shipping address form") - public BillingAddressPage sendShippingAddressForm(String name, String company, String address, String city, + public BillingAddressPage sendShippingAddressForm(String firstName, String lastName, String company, String street, String city, String state, String zip, String country, boolean sameBillingAddress) { // Name // Enter the name parameter - nameField.val(name); + nameField.val(firstName + " " + lastName); // Company // Enter the company parameter companyField.val(company); // Address // Enter the address parameter - addressField.val(address); + addressField.val(street); // City // Enter the city parameter cityField.val(city); From f02720e806b2098707339e5069ccc55799be05e7 Mon Sep 17 00:00:00 2001 From: ufjena <77679064+ufjena@users.noreply.github.com> Date: Mon, 3 May 2021 18:53:49 +0200 Subject: [PATCH 07/35] project reworked --- .../posters/cucumber/support/CartSupport.java | 19 +++++----- .../cucumber/support/GlobalStorage.java | 36 +++++++++++++++---- .../cucumber/support/OrderSupport.java | 2 +- .../cucumber/tests/AllChromeFeaturesTest.java | 2 +- 4 files changed, 40 insertions(+), 19 deletions(-) diff --git a/src/test/java/posters/cucumber/support/CartSupport.java b/src/test/java/posters/cucumber/support/CartSupport.java index cd86f7a..e397d34 100644 --- a/src/test/java/posters/cucumber/support/CartSupport.java +++ b/src/test/java/posters/cucumber/support/CartSupport.java @@ -39,19 +39,16 @@ public void validateProductsInTheCart() } @Then("^I can change amount of the \"([^\"]*)\" with \"([^\"]*)\" and \"([^\"]*)\" to (\\d+)$") - public void updateCountOfProduct(String productName, String size, String style, int amount) + public void updateCountOfProduct(String name, String size, String style, int amount) { var cartPage = new CartPage(); - cartPage.updateProductCountByName(productName, style, size, amount); - for (Product product : storage.products) - { - if (product.getName().equals(productName) && product.getSize().equals(size) - && product.getStyle().equals(style)) - { - product.setAmount(amount); - } - cartPage.validateContainsProduct(product); - } + cartPage.updateProductCountByName(name, style, size, amount); + + var updateProduct = storage.getProductFromArrayList(name, size, style); + storage.products.remove(updateProduct); + String unitPrice = updateProduct.getUnitPrice(); + updateProduct = new Product(name, unitPrice, style, size, amount); + storage.products.add(updateProduct); } @Then("^I can remove \"([^\"]*)\" with \"([^\"]*)\" and \"([^\"]*)\"$") diff --git a/src/test/java/posters/cucumber/support/GlobalStorage.java b/src/test/java/posters/cucumber/support/GlobalStorage.java index 9293524..ca4c4ea 100644 --- a/src/test/java/posters/cucumber/support/GlobalStorage.java +++ b/src/test/java/posters/cucumber/support/GlobalStorage.java @@ -36,7 +36,14 @@ public Product addProduct(Product product) if (products.contains(product)) { var updatedProduct = products.get(products.indexOf(product)); - updatedProduct.setAmount(updatedProduct.getAmount() + 1); + String name = updatedProduct.getName(); + String unitPrice = updatedProduct.getUnitPrice(); + String style = updatedProduct.getStyle(); + String size = updatedProduct.getSize(); + int amount = updatedProduct.getAmount(); + products.remove(updatedProduct); + updatedProduct = new Product(name, unitPrice, style, size, amount + 1); + products.add(updatedProduct); return updatedProduct; } else @@ -45,16 +52,33 @@ public Product addProduct(Product product) return product; } } - - public void removeProduct(String productName, String style, String size) + + public Product getProductFromArrayList(String name, String size, String style) { - for (var product : products) + int i = 0; + for (Product product : products) { - if (product.getName().equals(productName) && product.getSize().equals(size) + if (product.getName().equals(name) && product.getSize().equals(size) && product.getStyle().equals(style)) { - products.remove(product); + i = products.indexOf(product); } } + return products.get(i); + } + + public void updateCountOfProduct(String name, String size, String style, int amount) + { + var updateProducht = getProductFromArrayList(name, size, style); + String unitPrice = updateProducht.getUnitPrice(); + products.remove(products.indexOf(updateProducht)); + updateProducht = new Product(name, unitPrice, style, size, amount); + products.add(updateProducht); + } + + public void removeProduct(String name, String style, String size) + { + var updateProducht = getProductFromArrayList(name, size, style); + products.remove(products.indexOf(updateProducht)); } } diff --git a/src/test/java/posters/cucumber/support/OrderSupport.java b/src/test/java/posters/cucumber/support/OrderSupport.java index 4443d10..53a95b0 100644 --- a/src/test/java/posters/cucumber/support/OrderSupport.java +++ b/src/test/java/posters/cucumber/support/OrderSupport.java @@ -70,7 +70,7 @@ public void addProductToCart(String size, String style) productDetailPage.miniCart.validateMiniCartByProduct(product); } - @When("^I specify the shipping address \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\" and use it for billing$") + @When("^I specify the shipping address \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\" and use it for billing$") public void openFillAndSendShippingFormUseForBilling(String firstName, String lastName, String company, String street, String city, String state, String zip, String country) { var cartPage = new ProductDetailPage().miniCart.openCartPage(); diff --git a/src/test/java/posters/cucumber/tests/AllChromeFeaturesTest.java b/src/test/java/posters/cucumber/tests/AllChromeFeaturesTest.java index 154af0a..c2253de 100644 --- a/src/test/java/posters/cucumber/tests/AllChromeFeaturesTest.java +++ b/src/test/java/posters/cucumber/tests/AllChromeFeaturesTest.java @@ -7,7 +7,7 @@ import io.cucumber.junit.CucumberOptions; @RunWith(NeodymiumCucumberRunner.class) -@CucumberOptions(features = "src/test/java/posters/cucumber/features/", // +@CucumberOptions(features = "src/test/java/posters/cucumber/features/Order.feature", // glue = "posters", // tags = "@Chrome and not @Skip and not @Blocked and not @Wip", // monochrome = true) From 54cd2431999b7b80a1b3f052e4fe04c46581bada Mon Sep 17 00:00:00 2001 From: ufjena <77679064+ufjena@users.noreply.github.com> Date: Tue, 4 May 2021 08:56:41 +0200 Subject: [PATCH 08/35] isExpectedPage() - double use removed --- .../BrowseRandomVisualAssertSupport.java | 5 ++--- .../posters/cucumber/support/CartSupport.java | 3 +-- .../cucumber/support/HomePageSupport.java | 1 - .../cucumber/support/OpenPageFlows.java | 11 ++++------ .../cucumber/support/OrderSupport.java | 22 ++++++++----------- .../cucumber/tests/AllChromeFeaturesTest.java | 2 +- .../pages/checkout/ShippingAddressPage.java | 4 ++-- 7 files changed, 19 insertions(+), 29 deletions(-) diff --git a/src/test/java/posters/cucumber/support/BrowseRandomVisualAssertSupport.java b/src/test/java/posters/cucumber/support/BrowseRandomVisualAssertSupport.java index 8e30b92..c6c5f48 100644 --- a/src/test/java/posters/cucumber/support/BrowseRandomVisualAssertSupport.java +++ b/src/test/java/posters/cucumber/support/BrowseRandomVisualAssertSupport.java @@ -21,8 +21,8 @@ public class BrowseRandomVisualAssertSupport @Given("^homepage is open") public void openHomePageAndValidate() { - var homepage = OpenPageFlows.homepage(); - homepage.validateAndVisualAssert(); + var homePage = OpenPageFlows.homePage(); + homePage.validateAndVisualAssert(); } @When("^I choose random sub category with seed \"([^\"]*)\"$") @@ -38,7 +38,6 @@ public void openRandomSubCategoryAndValidate(String seed) } String categoryName = new HomePage().topNav.getRandomSubcategoryName(random); var categoryPage = new HomePage().topNav.clickSubcategoryByName(categoryName); - categoryPage.isExpectedPage(); categoryPage.validateAndVisualAssert(categoryName); } diff --git a/src/test/java/posters/cucumber/support/CartSupport.java b/src/test/java/posters/cucumber/support/CartSupport.java index e397d34..89f4f75 100644 --- a/src/test/java/posters/cucumber/support/CartSupport.java +++ b/src/test/java/posters/cucumber/support/CartSupport.java @@ -20,8 +20,7 @@ public CartSupport(GlobalStorage storage) @When("^I open the cart$") public void openCart() { - var cartPage = new ProductDetailPage().miniCart.openCartPage(); - cartPage.isExpectedPage(); + new ProductDetailPage().miniCart.openCartPage(); } @Then("^I see all the added products in the cart and their properties are correct$") diff --git a/src/test/java/posters/cucumber/support/HomePageSupport.java b/src/test/java/posters/cucumber/support/HomePageSupport.java index 901038c..2ab4ca7 100644 --- a/src/test/java/posters/cucumber/support/HomePageSupport.java +++ b/src/test/java/posters/cucumber/support/HomePageSupport.java @@ -11,7 +11,6 @@ public class HomePageSupport public void validateHomePage(String title) { var homePage = new HomePage(); - homePage.isExpectedPage(); homePage.title.validateTitle(title); homePage.validateStructure(); homePage.footer.validate(); diff --git a/src/test/java/posters/cucumber/support/OpenPageFlows.java b/src/test/java/posters/cucumber/support/OpenPageFlows.java index 33e0b8b..4073483 100644 --- a/src/test/java/posters/cucumber/support/OpenPageFlows.java +++ b/src/test/java/posters/cucumber/support/OpenPageFlows.java @@ -16,7 +16,7 @@ public class OpenPageFlows { @Given("^homepage is loaded$") @Step("open home page") - public static HomePage homepage() + public static HomePage homePage() { // clear cookies to ensure a new session clearBrowserCookies(); @@ -30,9 +30,7 @@ public static HomePage homepage() public static LoginPage loginPage() { // open login page and check for expected page - var loginPage = homepage().userMenu.openLogin(); - loginPage.isExpectedPage(); - return loginPage; + return homePage().userMenu.openLogin(); }; @Given("^register page is loaded$") @@ -40,9 +38,7 @@ public static LoginPage loginPage() public static RegisterPage registerPage() { // open login page and check for expected page - var registerPage = homepage().userMenu.openRegister(); - registerPage.isExpectedPage(); - return registerPage; + return homePage().userMenu.openRegister(); }; @Given("^product page \"([^\"]*)\" is open$") @@ -54,6 +50,7 @@ public static ProductDetailPage openProductdetailsPageWithClearedCookes(String u return new ProductDetailPage(); } + // TODO check if needed - else delete @Step("open product page without cleared cookes") public static ProductDetailPage openProductdetailsPage(String url) { diff --git a/src/test/java/posters/cucumber/support/OrderSupport.java b/src/test/java/posters/cucumber/support/OrderSupport.java index 53a95b0..cecec3f 100644 --- a/src/test/java/posters/cucumber/support/OrderSupport.java +++ b/src/test/java/posters/cucumber/support/OrderSupport.java @@ -31,8 +31,7 @@ public void registerAndLogIn(String firstName, String lastName, String email, St registerPage.isExpectedPage(); storage.user = new User(firstName, lastName, email, password); registerPage.sendRegisterForm(firstName, lastName, email, password, password); - var loginPage = registerPage.userMenu.openLogin(); - loginPage.isExpectedPage(); + var loginPage = registerPage.userMenu.openLogin();; loginPage.sendLoginform(email, password); } @@ -40,7 +39,6 @@ public void registerAndLogIn(String firstName, String lastName, String email, St public void validateOrderInOrderHistory() { var accountOverviewPage = new HomePage().userMenu.openAccountOverview(); - accountOverviewPage.isExpectedPage(); var orderHistoryPage = accountOverviewPage.openOrderHistory(); for (Product product : storage.products) { @@ -70,16 +68,15 @@ public void addProductToCart(String size, String style) productDetailPage.miniCart.validateMiniCartByProduct(product); } - @When("^I specify the shipping address \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\" and use it for billing$") - public void openFillAndSendShippingFormUseForBilling(String firstName, String lastName, String company, String street, String city, String state, String zip, String country) + @When("^I specify the shipping address \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\" and use it for billing$") + public void openFillAndSendShippingFormUseForBilling(String name, String company, String street, String city, String state, String zip, String country) { var cartPage = new ProductDetailPage().miniCart.openCartPage(); - cartPage.isExpectedPage(); var shippingAddressPage = cartPage.openShippingPage(); - shippingAddressPage.isExpectedPage(); - shippingAddressPage.sendShippingAddressForm(firstName, lastName, company, street, city, state, zip, country, true); - storage.shippingAddress = new Address(firstName, lastName, company, street, city, state, zip, country); - storage.billingAddress = new Address(firstName, lastName, company, street, city, state, zip, country); + shippingAddressPage.sendShippingAddressForm(name, company, street, city, state, zip, country, true); + + storage.shippingAddress = new Address(storage.user.getFirstName(), storage.user.getLastName(), company, street, city, state, zip, country); + storage.billingAddress = new Address(storage.user.getFirstName(), storage.user.getLastName(), company, street, city, state, zip, country); new PaymentPage().isExpectedPage(); } @@ -88,9 +85,9 @@ public void fillAndSendPaymentForm(String name, String cardNumber, String month, { var paymentPage = new PaymentPage(); paymentPage.isExpectedPage(); - var placeOrderPage = paymentPage.sendPaymentForm(cardNumber, name, month, year); + paymentPage.sendPaymentForm(cardNumber, name, month, year); + storage.creditcard = new CreditCard(name, cardNumber, "xxxx xxxx xxxx " + cardNumber.substring(12, 16), month, year); - placeOrderPage.isExpectedPage(); } @Then("^I see all the products in order overview$") @@ -117,7 +114,6 @@ public void validateAddressesAndPaymentData() public void placeOrder() { HomePage succssefulOrder = new PlaceOrderPage().placeOrder(); - succssefulOrder.isExpectedPage(); succssefulOrder.validateSuccessfulOrder(); } } diff --git a/src/test/java/posters/cucumber/tests/AllChromeFeaturesTest.java b/src/test/java/posters/cucumber/tests/AllChromeFeaturesTest.java index c2253de..154af0a 100644 --- a/src/test/java/posters/cucumber/tests/AllChromeFeaturesTest.java +++ b/src/test/java/posters/cucumber/tests/AllChromeFeaturesTest.java @@ -7,7 +7,7 @@ import io.cucumber.junit.CucumberOptions; @RunWith(NeodymiumCucumberRunner.class) -@CucumberOptions(features = "src/test/java/posters/cucumber/features/Order.feature", // +@CucumberOptions(features = "src/test/java/posters/cucumber/features/", // glue = "posters", // tags = "@Chrome and not @Skip and not @Blocked and not @Wip", // monochrome = true) diff --git a/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java index bde25d9..d5b7c3b 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java @@ -75,12 +75,12 @@ public BillingAddressPage selectShippingAddress(int position) } @Step("fill and send shipping address form") - public BillingAddressPage sendShippingAddressForm(String firstName, String lastName, String company, String street, String city, + public BillingAddressPage sendShippingAddressForm(String name, String company, String street, String city, String state, String zip, String country, boolean sameBillingAddress) { // Name // Enter the name parameter - nameField.val(firstName + " " + lastName); + nameField.val(name); // Company // Enter the company parameter companyField.val(company); From db6ae4a59354eddd4c772a015922d8f9904467d6 Mon Sep 17 00:00:00 2001 From: ufjena <77679064+ufjena@users.noreply.github.com> Date: Tue, 4 May 2021 17:36:41 +0200 Subject: [PATCH 09/35] order changed for easier debugging --- .../cucumber/support/OrderSupport.java | 40 +++++++++---------- .../pages/user/OrderHistoryPage.java | 4 +- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/test/java/posters/cucumber/support/OrderSupport.java b/src/test/java/posters/cucumber/support/OrderSupport.java index cecec3f..dbf928e 100644 --- a/src/test/java/posters/cucumber/support/OrderSupport.java +++ b/src/test/java/posters/cucumber/support/OrderSupport.java @@ -35,25 +35,6 @@ public void registerAndLogIn(String firstName, String lastName, String email, St loginPage.sendLoginform(email, password); } - @Then("^all the products are to find in order history$") - public void validateOrderInOrderHistory() - { - var accountOverviewPage = new HomePage().userMenu.openAccountOverview(); - var orderHistoryPage = accountOverviewPage.openOrderHistory(); - for (Product product : storage.products) - { - orderHistoryPage.validateContainsProduct(product); - } - } - - @When("^I add product \"([^\"]*)\" in size \"([^\"]*)\" and style \"([^\"]*)\"$") - @Step("open product page and add product to the cart") - public void openProductPageAndAddItoTheCart(String productUrl, String size, String style) - { - OpenPageFlows.openProductdetailsPage(productUrl); - addProductToCart(size, style); - } - @When("I add this product with size \"([^\"]*)\" and style \"([^\"]*)\" to the cart$") public void addProductToCart(String size, String style) { @@ -67,7 +48,15 @@ public void addProductToCart(String size, String style) productDetailPage.miniCart.openMiniCart(); productDetailPage.miniCart.validateMiniCartByProduct(product); } - + + @When("^I add product \"([^\"]*)\" in size \"([^\"]*)\" and style \"([^\"]*)\"$") + @Step("open product page and add product to the cart") + public void openProductPageAndAddItoTheCart(String productUrl, String size, String style) + { + OpenPageFlows.openProductdetailsPage(productUrl); + addProductToCart(size, style); + } + @When("^I specify the shipping address \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\" and use it for billing$") public void openFillAndSendShippingFormUseForBilling(String name, String company, String street, String city, String state, String zip, String country) { @@ -116,4 +105,15 @@ public void placeOrder() HomePage succssefulOrder = new PlaceOrderPage().placeOrder(); succssefulOrder.validateSuccessfulOrder(); } + + @Then("^all the products are to find in order history$") + public void validateOrderInOrderHistory() + { + var accountOverviewPage = new HomePage().userMenu.openAccountOverview(); + var orderHistoryPage = accountOverviewPage.openOrderHistory(); + for (Product product : storage.products) + { + orderHistoryPage.validateContainsProduct(product); + } + } } diff --git a/src/test/java/posters/pageobjects/pages/user/OrderHistoryPage.java b/src/test/java/posters/pageobjects/pages/user/OrderHistoryPage.java index 097d57b..cb7fd25 100644 --- a/src/test/java/posters/pageobjects/pages/user/OrderHistoryPage.java +++ b/src/test/java/posters/pageobjects/pages/user/OrderHistoryPage.java @@ -28,8 +28,8 @@ public OrderHistoryPage isExpectedPage() @Step("validate product is in the order") public void validateContainsProduct(Product product) { - SelenideElement productContainer = $$(".productInfo").filter((matchText(product.getRowRegex()))).shouldHaveSize(1).first() - .parent(); + SelenideElement productContainer = $$(".productInfo").filter((matchText(product.getRowRegex()))) + .shouldHaveSize(1).first().parent(); productContainer.find(".productName").shouldBe(exactText(product.getName())); productContainer.find(".productStyle").shouldBe(exactText(product.getStyle())); From ca7a5f9a4f54f1072fe64f81b976cdf4fe6095f1 Mon Sep 17 00:00:00 2001 From: ufjena <77679064+ufjena@users.noreply.github.com> Date: Fri, 7 May 2021 13:45:22 +0200 Subject: [PATCH 10/35] project reworked --- .../posters/cucumber/features/Order.feature | 14 ++-- .../cucumber/support/OrderSupport.java | 38 +++++----- .../cucumber/support/RegisterSupport.java | 32 +++++---- .../pages/checkout/NewBillingAddressPage.java | 51 +++----------- .../checkout/NewShippingAddressPage.java | 54 +++----------- .../pages/checkout/PaymentPage.java | 11 +-- .../pages/checkout/ShippingAddressPage.java | 70 ++++++------------- 7 files changed, 94 insertions(+), 176 deletions(-) diff --git a/src/test/java/posters/cucumber/features/Order.feature b/src/test/java/posters/cucumber/features/Order.feature index c08a3ab..29babe8 100644 --- a/src/test/java/posters/cucumber/features/Order.feature +++ b/src/test/java/posters/cucumber/features/Order.feature @@ -5,7 +5,7 @@ Feature: Order Given "" is open And product page "" is open When I add this product with size "" and style "" to the cart - And I specify the shipping address "", "", "
", "", "", "", "" and use it for billing + And I specify the shipping address "", "", "", "", "
", "", "", "", "", "" and use it for billing And I enter payment data "", "", "", "" Then I see all the products in order overview And my shipping and billing addresses as well as payment data are displayed correctly @@ -13,20 +13,20 @@ Feature: Order @Chrome Examples: - | browser | productUrl | productSize | productStyle | name | company | address | city | state | zip | country | cardNumber | month | year | - | Chrome_1024x768 | productDetail/Grizzly%20Bear?productId=1 | 32 x 24 in | gloss | James | Monster Corporation | 621 Wall St | North Tonawada | New York | 14120 | United States | 4111111111111111 | 05 | 2021 | + | browser | productUrl | productSize | productStyle | firstName | lastName | name | company | address | city | state | zip | country | cardNumber | month | year | sameBillingAddress | + | Chrome_1024x768 | productDetail/Grizzly%20Bear?productId=1 | 32 x 24 in | gloss | Jakobi | Doe | James | Monster Corporation | 621 Wall St | North Tonawada | New York | 14120 | United States | 4111111111111111 | 05 | 2021 | false | @Firefox Examples: - | browser | productUrl | productSize | productStyle | name | company | address | city | state | zip | country | cardNumber | month | year | - | Firefox_1024x768 | productDetail/Grizzly%20Bear?productId=1 | 32 x 24 in | gloss | James | Monster Corporation | 621 Wall St | North Tonawada | New York | 14120 | United States | 4111111111111111 | 05 | 2021 | + | browser | productUrl | productSize | productStyle | firstName | lastName | name | company | address | city | state | zip | country | cardNumber | month | year | sameBillingAddress | + | Firefox_1024x768 | productDetail/Grizzly%20Bear?productId=1 | 32 x 24 in | gloss | Jakobi | Doe | James | Monster Corporation | 621 Wall St | North Tonawada | New York | 14120 | United States | 4111111111111111 | 05 | 2021 | false | @DeleteUserAfterwards - Scenario Outline: Order some products as User + Scenario Outline: Order some products as registered User Given "" is open And new user with "", "", "", "" is registered and logged in When I add product "" in size "" and style "" - And I specify the shipping address "", "", "
", "", "", "", "" and use it for billing + And I specify the shipping address "", "", "", "", "
", "", "", "", "", "" and use it for billing And I enter payment data "", "", "", "" Then I see all the products in order overview And my shipping and billing addresses as well as payment data are displayed correctly diff --git a/src/test/java/posters/cucumber/support/OrderSupport.java b/src/test/java/posters/cucumber/support/OrderSupport.java index dbf928e..d96e619 100644 --- a/src/test/java/posters/cucumber/support/OrderSupport.java +++ b/src/test/java/posters/cucumber/support/OrderSupport.java @@ -1,6 +1,7 @@ package posters.cucumber.support; import io.cucumber.java.en.Given; +import io.cucumber.java.en.And; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; import io.qameta.allure.Step; @@ -10,6 +11,7 @@ import posters.dataobjects.User; import posters.pageobjects.pages.browsing.HomePage; import posters.pageobjects.pages.browsing.ProductDetailPage; +import posters.pageobjects.pages.checkout.ShippingAddressPage; import posters.pageobjects.pages.checkout.PaymentPage; import posters.pageobjects.pages.checkout.PlaceOrderPage; import posters.pageobjects.utility.PriceHelper; @@ -24,12 +26,14 @@ public OrderSupport(GlobalStorage storage) this.storage = storage; } - @Given("^new user with \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\" is registered and logged in$") + @And("^new user with \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\" is registered and logged in$") public void registerAndLogIn(String firstName, String lastName, String email, String password) { + // the user is saved for later reuse + storage.user = new User(firstName, lastName, email, password); + var registerPage = OpenPageFlows.registerPage(); registerPage.isExpectedPage(); - storage.user = new User(firstName, lastName, email, password); registerPage.sendRegisterForm(firstName, lastName, email, password, password); var loginPage = registerPage.userMenu.openLogin();; loginPage.sendLoginform(email, password); @@ -57,26 +61,28 @@ public void openProductPageAndAddItoTheCart(String productUrl, String size, Stri addProductToCart(size, style); } - @When("^I specify the shipping address \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\" and use it for billing$") - public void openFillAndSendShippingFormUseForBilling(String name, String company, String street, String city, String state, String zip, String country) + @And("^I specify the shipping address \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\" and use it for billing$") + public void openFillAndSendShippingFormUseForBilling(String firstName, String lastName, String name, String company, String street, String city, String state, String zip, String country, boolean sameBillingAddress) { + // addresses are saved for later reuse + storage.shippingAddress = new Address(firstName, lastName, company, street, city, state, zip, country); + storage.billingAddress = new Address(firstName, lastName, company, street, city, state, zip, country); + var cartPage = new ProductDetailPage().miniCart.openCartPage(); - var shippingAddressPage = cartPage.openShippingPage(); - shippingAddressPage.sendShippingAddressForm(name, company, street, city, state, zip, country, true); - - storage.shippingAddress = new Address(storage.user.getFirstName(), storage.user.getLastName(), company, street, city, state, zip, country); - storage.billingAddress = new Address(storage.user.getFirstName(), storage.user.getLastName(), company, street, city, state, zip, country); - new PaymentPage().isExpectedPage(); + ShippingAddressPage shippingPage = cartPage.openShippingPage(); + shippingPage.fillAndSendAddresses(storage.shippingAddress, storage.billingAddress, sameBillingAddress); } - @When("^I enter payment data \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\"$") + @And("^I enter payment data \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\"$") public void fillAndSendPaymentForm(String name, String cardNumber, String month, String year) { + // the creditcard is saved for later reuse + storage.creditcard = new CreditCard(name, cardNumber, "xxxx xxxx xxxx " + cardNumber.substring(12, 16), month, year); var paymentPage = new PaymentPage(); paymentPage.isExpectedPage(); - paymentPage.sendPaymentForm(cardNumber, name, month, year); + paymentPage.sendPaymentForm(storage.creditcard); - storage.creditcard = new CreditCard(name, cardNumber, "xxxx xxxx xxxx " + cardNumber.substring(12, 16), month, year); + } @Then("^I see all the products in order overview$") @@ -92,21 +98,21 @@ public void validateContainsAllProductsWithCorrectPricesAndAmount() placeOrderPage.validateSubtotal(PriceHelper.format(subtotal)); } - @Then("^my shipping and billing addresses as well as payment data are displayed correctly") + @And("^my shipping and billing addresses as well as payment data are displayed correctly") public void validateAddressesAndPaymentData() { var placeOrderPage = new PlaceOrderPage(); placeOrderPage.validateAddressesAndPayment(storage.shippingAddress, storage.billingAddress, storage.creditcard); } - @Then("^my order is successfully placed$") + @And("^my order is successfully placed$") public void placeOrder() { HomePage succssefulOrder = new PlaceOrderPage().placeOrder(); succssefulOrder.validateSuccessfulOrder(); } - @Then("^all the products are to find in order history$") + @And("^all the products are to find in order history$") public void validateOrderInOrderHistory() { var accountOverviewPage = new HomePage().userMenu.openAccountOverview(); diff --git a/src/test/java/posters/cucumber/support/RegisterSupport.java b/src/test/java/posters/cucumber/support/RegisterSupport.java index 7011c3f..0f02310 100644 --- a/src/test/java/posters/cucumber/support/RegisterSupport.java +++ b/src/test/java/posters/cucumber/support/RegisterSupport.java @@ -23,17 +23,33 @@ public RegisterSupport(GlobalStorage storage) @Given("^user setup: \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\"$") public void setUpUser(String firstName, String lastName, String eMail, String password) { - // set up user for the clean up steps + // create a user for later use (e.g. register or delete) storage.user = new User(firstName, lastName, eMail, password); }; @Given("^login page is opened after registration$") - public void registerUserSetup() + public LoginPage registerUserSetup() { // use the user coming from dependency injection - registerUser(storage.user); +// registerUser(storage.user); + var registerPage = OpenPageFlows.registerPage(); + registerPage.isExpectedPage(); + var loginPage = registerPage.sendRegisterForm(storage.user, storage.user.getPassword()); + loginPage.isExpectedPage(); + + return loginPage; } +// public LoginPage registerUser() +// { +// var registerPage = OpenPageFlows.registerPage(); +// registerPage.isExpectedPage(); +// var loginPage = registerPage.sendRegisterForm(storage.user, storage.user.getPassword()); +// loginPage.isExpectedPage(); +// +// return loginPage; +// } + @After("@DeleteUserAfterwards") @Step("delete user flow") public LoginPage deleteUser() @@ -82,16 +98,6 @@ public LoginPage deleteUser() return loginPage; } - public static LoginPage registerUser(User user) - { - var registerPage = OpenPageFlows.registerPage(); - registerPage.isExpectedPage(); - var loginPage = registerPage.sendRegisterForm(user, user.getPassword()); - loginPage.isExpectedPage(); - - return loginPage; - } - @When("^I register a new user with \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\"$") @Step("set up user and register him") public void registerUser(String firstName, String lastName, String email, String password) diff --git a/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java index 11843b1..70deb3b 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java @@ -99,63 +99,30 @@ public void validateStructure() /** * // * - * @param name - * First and last name you want to use // T - * @param company - * The company you want to use * @param address * The address you want to use - * @param city - * The City you want to use - * @param state - * The state you want to use - * @param zip - * The Zip you want to use, has to be in numbers format - * @param country - * The country you want to use, currently only United States or Germany */ @Step("fill and send new billing address form") - public NewPaymentPage sendBillingAddressForm(String name, String company, String address, String city, - String state, String zip, String country) + public NewPaymentPage sendBillingAddressForm(Address address) { - // Name // Enter the name parameter - nameField.val(name); - // Company + nameField.val(address.getFirstName()); // Enter the company parameter - companyField.val(company); - // Address - // Enter the address parameter - addressField.val(address); - // City + companyField.val(address.getCompany()); + // Enter the street parameter + addressField.val(address.getStreet()); // Enter the city parameter - cityField.val(city); - // State + cityField.val(address.getCity()); // Enter the state parameter - stateField.val(state); - // Zip + stateField.val(address.getState()); // Enter the zip parameter - zipField.val(zip); - // Country + zipField.val(address.getZip()); // Select the country whose label equals the parameter - countryField.selectOption(country); + countryField.selectOption(address.getCountry()); // Open the billing addresses or payment options page, depending on which radio button you checked // Click on Continue addBillingButton.scrollTo().click(); return new NewPaymentPage().isExpectedPage(); } - - /** - * @param billingAddress - * @return - */ - public NewPaymentPage sendBillingAddressForm(Address billingAddress) - { - String fullName = billingAddress.getFirstName() + " " + billingAddress.getLastName(); - - return sendBillingAddressForm(fullName, billingAddress.getCompany(), billingAddress.getStreet(), - billingAddress.getCity(), billingAddress.getState(), billingAddress.getZip(), - billingAddress.getCountry()); - } } diff --git a/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java index cb3cb12..e0fdc8e 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java @@ -103,49 +103,29 @@ public void validateStructure() /** * // * - * @param name - * First and last name you want to use // T - * @param company - * The company you want to use * @param address * The address you want to use - * @param city - * The City you want to use - * @param state - * The state you want to use - * @param zip - * The Zip you want to use, has to be in numbers format - * @param country - * The country you want to use, currently only United States or Germany * @param sameBillingAddress * Decision whether or not use the same billing address */ @Step("fill and send new shipping address form") - public NewBillingAddressPage sendShippingAddressForm(String name, String company, String address, String city, - String state, String zip, String country, boolean sameBillingAddress) + public NewBillingAddressPage sendShippingAddressForm(Address address, boolean sameBillingAddress) { - // Name // Enter the name parameter - nameField.val(name); - // Company + nameField.val(address.getFirstName()); // Enter the company parameter - companyField.val(company); - // Address - // Enter the address parameter - addressField.val(address); - // City + companyField.val(address.getCompany()); + // Enter the street parameter + addressField.val(address.getStreet()); // Enter the city parameter - cityField.val(city); - // State + cityField.val(address.getCity()); // Enter the state parameter - stateField.val(state); - // Zip + stateField.val(address.getState()); // Enter the zip parameter - zipField.val(zip); - // Country + zipField.val(address.getZip()); // Select the country whose label equals the parameter - countryField.selectOption(country); - // Radio Button + countryField.selectOption(address.getCountry()); + // Click the radio button for Yes or No if (sameBillingAddress) { @@ -161,18 +141,4 @@ public NewBillingAddressPage sendShippingAddressForm(String name, String company return new NewBillingAddressPage().isExpectedPage(); } - - /** - * @param shippingAddress - * @param sameBillingAddress - * @return - */ - public NewBillingAddressPage sendShippingAddressForm(Address shippingAddress, boolean sameBillingAddress) - { - String fullName = shippingAddress.getFirstName() + " " + shippingAddress.getLastName(); - - return sendShippingAddressForm(fullName, shippingAddress.getCompany(), shippingAddress.getStreet(), - shippingAddress.getCity(), shippingAddress.getState(), shippingAddress.getZip(), - shippingAddress.getCountry(), sameBillingAddress); - } } diff --git a/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java b/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java index 67a581f..378ec4e 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java @@ -8,6 +8,7 @@ import com.codeborne.selenide.SelenideElement; import io.qameta.allure.Step; +import posters.dataobjects.CreditCard; /** * @author pfotenhauer @@ -69,19 +70,19 @@ public PlaceOrderPage selectCreditCard(int position) } @Step("fill and send payment form") - public PlaceOrderPage sendPaymentForm(String number, String name, String month, String year) + public PlaceOrderPage sendPaymentForm(CreditCard card) { // Credit Card Number // Fills the card number field with the parameter - creditCardNumber.val(number); + creditCardNumber.val(card.getCardNumber()); // Name // Fills the card holder field with the parameter - creditCardName.val(name); + creditCardName.val(card.getFullName()); // Expiration // Chooses the expiration month matching the parameter - expirationMonth.selectOption(month); + expirationMonth.selectOption(card.getExpDateMonth()); // Chooses the expiration year matching the parameter - expirationYear.selectOption(year); + expirationYear.selectOption(card.getExpDateYear()); // Opens the order overview page // Clicks the Continue button addPaymentButton.scrollTo().click(); diff --git a/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java index d5b7c3b..905fade 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java @@ -8,6 +8,8 @@ import com.codeborne.selenide.SelenideElement; import io.qameta.allure.Step; +import posters.dataobjects.Address; +import posters.pageobjects.utility.AddressHelper; /** * @author pfotenhauer @@ -16,21 +18,7 @@ public class ShippingAddressPage extends AbstractCheckoutPage { private SelenideElement headline = $("#titleDelAddr"); - private SelenideElement nameField = $("#fullName"); - - private SelenideElement companyField = $("#company"); - - private SelenideElement addressField = $("#addressLine"); - - private SelenideElement cityField = $("#city"); - - private SelenideElement stateField = $("#state"); - - private SelenideElement zipField = $("#zip"); - - private SelenideElement countryField = $("#country"); - - private SelenideElement addShippingButton = $("#btnAddDelAddr"); + @Override @Step("ensure this is a shipping address page") @@ -47,10 +35,8 @@ public void validateStructure() { super.validateStructure(); - // Headline // Assert the headline is there and starts with a capital letter headline.should(matchText("[A-Z].{3,}")); - // First address // Makes sure at least one address is visible $("#delAddr0").shouldBe(visible); } @@ -64,7 +50,6 @@ public void validateStructure() public BillingAddressPage selectShippingAddress(int position) { final int index = position - 1; - // Select address // Checks the radio button belonging to the delivery address with index @{index} $("#delAddr" + index + " input").scrollTo().click(); // Open the billing address page in the checkout process @@ -75,44 +60,31 @@ public BillingAddressPage selectShippingAddress(int position) } @Step("fill and send shipping address form") - public BillingAddressPage sendShippingAddressForm(String name, String company, String street, String city, - String state, String zip, String country, boolean sameBillingAddress) + public PaymentPage fillAndSendAddresses(Address shippingAddress, Address billingAddress, boolean sameBillingAddress) { - // Name - // Enter the name parameter - nameField.val(name); - // Company - // Enter the company parameter - companyField.val(company); - // Address - // Enter the address parameter - addressField.val(street); - // City - // Enter the city parameter - cityField.val(city); - // State - // Enter the state parameter - stateField.val(state); - // Zip - // Enter the zip parameter - zipField.val(zip); - // Country - // Select the country whose label equals the parameter - countryField.selectOption(country); - // Radio Button - // Click the radio button for Yes or No if (sameBillingAddress) { + // Fill shipping address + AddressHelper.fillAddressForm(shippingAddress); $("#billEqualShipp-Yes").scrollTo().click(); + + // Send shipping addresses by clicking the button Continue + $("#btnAddDelAddr").scrollTo().click(); } - else + else { + // Fill shipping address + AddressHelper.fillAddressForm(shippingAddress); $("#billEqualShipp-No").scrollTo().click(); + + // Send shipping addresses by clicking the button Continue + $("#btnAddDelAddr").scrollTo().click(); + + // Fill billing address + AddressHelper.fillAddressForm(billingAddress); + // Send billing addresses by clicking the button Continue + $("#btnAddBillAddr").scrollTo().click(); } - // Open the billing addresses or payment options page, depending on which radio button you checked - // Click on Continue - addShippingButton.scrollTo().click(); - - return new BillingAddressPage().isExpectedPage(); + return new PaymentPage().isExpectedPage(); } } From ebe231122b30ddbcaef3eb0b73af8848e341effc Mon Sep 17 00:00:00 2001 From: ufjena <77679064+ufjena@users.noreply.github.com> Date: Fri, 7 May 2021 17:38:05 +0200 Subject: [PATCH 11/35] project reworked --- .../cucumber/support/OrderSupport.java | 31 ++++++++------- .../pageobjects/components/AddressForm.java | 33 ++++++++++++++++ .../pages/browsing/AbstractBrowsingPage.java | 4 ++ .../pages/checkout/BillingAddressPage.java | 16 +++++++- .../pages/checkout/ShippingAddressPage.java | 38 ++++++++++--------- 5 files changed, 90 insertions(+), 32 deletions(-) create mode 100644 src/test/java/posters/pageobjects/components/AddressForm.java diff --git a/src/test/java/posters/cucumber/support/OrderSupport.java b/src/test/java/posters/cucumber/support/OrderSupport.java index d96e619..495b7af 100644 --- a/src/test/java/posters/cucumber/support/OrderSupport.java +++ b/src/test/java/posters/cucumber/support/OrderSupport.java @@ -1,7 +1,6 @@ package posters.cucumber.support; import io.cucumber.java.en.Given; -import io.cucumber.java.en.And; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; import io.qameta.allure.Step; @@ -26,14 +25,13 @@ public OrderSupport(GlobalStorage storage) this.storage = storage; } - @And("^new user with \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\" is registered and logged in$") + @Given("^new user with \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\" is registered and logged in$") public void registerAndLogIn(String firstName, String lastName, String email, String password) { // the user is saved for later reuse storage.user = new User(firstName, lastName, email, password); var registerPage = OpenPageFlows.registerPage(); - registerPage.isExpectedPage(); registerPage.sendRegisterForm(firstName, lastName, email, password, password); var loginPage = registerPage.userMenu.openLogin();; loginPage.sendLoginform(email, password); @@ -61,7 +59,7 @@ public void openProductPageAndAddItoTheCart(String productUrl, String size, Stri addProductToCart(size, style); } - @And("^I specify the shipping address \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\" and use it for billing$") + @Then("^I specify the shipping address \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\" and use it for billing$") public void openFillAndSendShippingFormUseForBilling(String firstName, String lastName, String name, String company, String street, String city, String state, String zip, String country, boolean sameBillingAddress) { // addresses are saved for later reuse @@ -70,19 +68,26 @@ public void openFillAndSendShippingFormUseForBilling(String firstName, String la var cartPage = new ProductDetailPage().miniCart.openCartPage(); ShippingAddressPage shippingPage = cartPage.openShippingPage(); - shippingPage.fillAndSendAddresses(storage.shippingAddress, storage.billingAddress, sameBillingAddress); + + if (sameBillingAddress) + { + shippingPage.fillShippingAddressWithSameAsBilling(storage.shippingAddress); + } + else + { + var billingPage = shippingPage.fillShippingAddressWithDifferentBilling(storage.shippingAddress); + billingPage.fillBillingAddress(storage.billingAddress); + } } - @And("^I enter payment data \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\"$") + @Then("^I enter payment data \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\"$") public void fillAndSendPaymentForm(String name, String cardNumber, String month, String year) { // the creditcard is saved for later reuse storage.creditcard = new CreditCard(name, cardNumber, "xxxx xxxx xxxx " + cardNumber.substring(12, 16), month, year); - var paymentPage = new PaymentPage(); - paymentPage.isExpectedPage(); - paymentPage.sendPaymentForm(storage.creditcard); - + var paymentPage = new PaymentPage().isExpectedPage(); + paymentPage.sendPaymentForm(storage.creditcard); } @Then("^I see all the products in order overview$") @@ -98,21 +103,21 @@ public void validateContainsAllProductsWithCorrectPricesAndAmount() placeOrderPage.validateSubtotal(PriceHelper.format(subtotal)); } - @And("^my shipping and billing addresses as well as payment data are displayed correctly") + @Then("^my shipping and billing addresses as well as payment data are displayed correctly") public void validateAddressesAndPaymentData() { var placeOrderPage = new PlaceOrderPage(); placeOrderPage.validateAddressesAndPayment(storage.shippingAddress, storage.billingAddress, storage.creditcard); } - @And("^my order is successfully placed$") + @Then("^my order is successfully placed$") public void placeOrder() { HomePage succssefulOrder = new PlaceOrderPage().placeOrder(); succssefulOrder.validateSuccessfulOrder(); } - @And("^all the products are to find in order history$") + @Then("^all the products are to find in order history$") public void validateOrderInOrderHistory() { var accountOverviewPage = new HomePage().userMenu.openAccountOverview(); diff --git a/src/test/java/posters/pageobjects/components/AddressForm.java b/src/test/java/posters/pageobjects/components/AddressForm.java new file mode 100644 index 0000000..98b97fd --- /dev/null +++ b/src/test/java/posters/pageobjects/components/AddressForm.java @@ -0,0 +1,33 @@ +package posters.pageobjects.components; + +import static com.codeborne.selenide.Condition.text; +import static com.codeborne.selenide.Selenide.$; + +import posters.dataobjects.Address; + +public class AddressForm extends AbstractComponent +{ + public void isComponentAvailable() + { + System.out.println("******************************************************" + $(".header-container>h2").toString()); + $(".header-container>h2").shouldHave(text("address")); + } + + public static void fillAddressForm(Address address) + { + // Enter the name parameter + $("#fullName").val(address.getFirstName() + " " + address.getLastName()); + // Enter the company parameter + $("#company").val(address.getCompany()); + // Enter the street parameter + $("#addressLine").val(address.getStreet()); + // Enter the city parameter + $("#city").val(address.getCity()); + // Enter the state parameter + $("#state").val(address.getState()); + // Enter the zip parameter + $("#zip").val(address.getZip()); + // Select the country whose label equals the parameter + $("#country").selectOption(address.getCountry()); + } +} diff --git a/src/test/java/posters/pageobjects/pages/browsing/AbstractBrowsingPage.java b/src/test/java/posters/pageobjects/pages/browsing/AbstractBrowsingPage.java index 1a4ddfe..6d2c3df 100644 --- a/src/test/java/posters/pageobjects/pages/browsing/AbstractBrowsingPage.java +++ b/src/test/java/posters/pageobjects/pages/browsing/AbstractBrowsingPage.java @@ -8,6 +8,7 @@ import posters.pageobjects.components.SuccessMessage; import posters.pageobjects.components.TopNavigation; import posters.pageobjects.components.UserMenu; +import posters.pageobjects.components.AddressForm; import posters.pageobjects.pages.AbstractPageObject; public abstract class AbstractBrowsingPage extends AbstractPageObject @@ -23,6 +24,8 @@ public abstract class AbstractBrowsingPage extends AbstractPageObject public TopNavigation topNav = new TopNavigation(); public UserMenu userMenu = new UserMenu(); + + public AddressForm addressForm = new AddressForm(); public SuccessMessage successMessage = new SuccessMessage(); @@ -39,6 +42,7 @@ public void validateStructure() search.isComponentAvailable(); topNav.isComponentAvailable(); userMenu.isComponentAvailable(); + addressForm.isComponentAvailable(); successMessage.isComponentAvailable(); errorMessage.isComponentAvailable(); } diff --git a/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java index d51d204..9b1b517 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java @@ -8,12 +8,14 @@ import com.codeborne.selenide.SelenideElement; import io.qameta.allure.Step; +import posters.pageobjects.components.AddressForm; +import posters.dataobjects.Address; /** * @author pfotenhauer */ public class BillingAddressPage extends AbstractCheckoutPage -{ +{ private SelenideElement headline = $("#titleBillAddr"); @Override @@ -56,4 +58,16 @@ public PaymentPage selectBillingAddress(int position) return new PaymentPage().isExpectedPage(); } + + @Step("fill the billing address") + public PaymentPage fillBillingAddress(Address billingAddress) + { + // Fill billing address + AddressForm.fillAddressForm(billingAddress); + + // Send billing addresses by clicking the button Continue + $("#btnAddBillAddr").scrollTo().click(); + + return new PaymentPage().isExpectedPage(); + } } diff --git a/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java index 905fade..243a351 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java @@ -9,7 +9,7 @@ import io.qameta.allure.Step; import posters.dataobjects.Address; -import posters.pageobjects.utility.AddressHelper; +import posters.pageobjects.components.AddressForm; /** * @author pfotenhauer @@ -59,32 +59,34 @@ public BillingAddressPage selectShippingAddress(int position) return new BillingAddressPage().isExpectedPage(); } - @Step("fill and send shipping address form") - public PaymentPage fillAndSendAddresses(Address shippingAddress, Address billingAddress, boolean sameBillingAddress) + @Step("fill and send shipping address without different billing address") + public PaymentPage fillShippingAddressWithSameAsBilling(Address shippingAddress) { - if (sameBillingAddress) - { // Fill shipping address - AddressHelper.fillAddressForm(shippingAddress); + AddressForm.fillAddressForm(shippingAddress); + + // Click checkbox YES $("#billEqualShipp-Yes").scrollTo().click(); - // Send shipping addresses by clicking the button Continue + // Send shipping addresses by clicking the button Continue $("#btnAddDelAddr").scrollTo().click(); - } - else - { + + return new PaymentPage().isExpectedPage(); + } + + @Step("fill and send shipping address with different billing address") + public BillingAddressPage fillShippingAddressWithDifferentBilling(Address shippingAddress) + { // Fill shipping address - AddressHelper.fillAddressForm(shippingAddress); + AddressForm.fillAddressForm(shippingAddress); + $("#billEqualShipp-Yes").scrollTo().click(); + + // Click checkbox NO $("#billEqualShipp-No").scrollTo().click(); - // Send shipping addresses by clicking the button Continue + // Send shipping addresses by clicking the button Continue $("#btnAddDelAddr").scrollTo().click(); - // Fill billing address - AddressHelper.fillAddressForm(billingAddress); - // Send billing addresses by clicking the button Continue - $("#btnAddBillAddr").scrollTo().click(); - } - return new PaymentPage().isExpectedPage(); + return new BillingAddressPage().isExpectedPage(); } } From 832d1ed735596c4de3d7992f10c6780901f0ed68 Mon Sep 17 00:00:00 2001 From: ufjena <77679064+ufjena@users.noreply.github.com> Date: Fri, 7 May 2021 18:27:05 +0200 Subject: [PATCH 12/35] step annotations removed - test case added --- .../java/posters/cucumber/features/Order.feature | 1 + .../posters/cucumber/support/HomePageSupport.java | 2 -- .../posters/cucumber/support/OpenPageFlows.java | 6 ------ .../java/posters/cucumber/support/OrderSupport.java | 2 -- .../posters/cucumber/support/RegisterSupport.java | 13 ------------- .../posters/pageobjects/components/AddressForm.java | 7 ++++++- .../pages/checkout/ShippingAddressPage.java | 1 - 7 files changed, 7 insertions(+), 25 deletions(-) diff --git a/src/test/java/posters/cucumber/features/Order.feature b/src/test/java/posters/cucumber/features/Order.feature index 29babe8..fe643b5 100644 --- a/src/test/java/posters/cucumber/features/Order.feature +++ b/src/test/java/posters/cucumber/features/Order.feature @@ -15,6 +15,7 @@ Feature: Order Examples: | browser | productUrl | productSize | productStyle | firstName | lastName | name | company | address | city | state | zip | country | cardNumber | month | year | sameBillingAddress | | Chrome_1024x768 | productDetail/Grizzly%20Bear?productId=1 | 32 x 24 in | gloss | Jakobi | Doe | James | Monster Corporation | 621 Wall St | North Tonawada | New York | 14120 | United States | 4111111111111111 | 05 | 2021 | false | + | Chrome_1024x768 | productDetail/Grizzly%20Bear?productId=1 | 32 x 24 in | gloss | Jakobi | Doe | James | Monster Corporation | 621 Wall St | North Tonawada | New York | 14120 | United States | 4111111111111111 | 05 | 2021 | true | @Firefox Examples: diff --git a/src/test/java/posters/cucumber/support/HomePageSupport.java b/src/test/java/posters/cucumber/support/HomePageSupport.java index 2ab4ca7..90e3cb1 100644 --- a/src/test/java/posters/cucumber/support/HomePageSupport.java +++ b/src/test/java/posters/cucumber/support/HomePageSupport.java @@ -1,13 +1,11 @@ package posters.cucumber.support; import io.cucumber.java.en.Then; -import io.qameta.allure.Step; import posters.pageobjects.pages.browsing.HomePage; public class HomePageSupport { @Then("^I see homepage with logo, carousel, hot products and footer and it's title is \"([^\"]*)\"$") - @Step("validate homepage") public void validateHomePage(String title) { var homePage = new HomePage(); diff --git a/src/test/java/posters/cucumber/support/OpenPageFlows.java b/src/test/java/posters/cucumber/support/OpenPageFlows.java index 4073483..710ae38 100644 --- a/src/test/java/posters/cucumber/support/OpenPageFlows.java +++ b/src/test/java/posters/cucumber/support/OpenPageFlows.java @@ -6,7 +6,6 @@ import com.xceptance.neodymium.util.Neodymium; import io.cucumber.java.en.Given; -import io.qameta.allure.Step; import posters.pageobjects.pages.browsing.HomePage; import posters.pageobjects.pages.browsing.ProductDetailPage; import posters.pageobjects.pages.user.LoginPage; @@ -15,7 +14,6 @@ public class OpenPageFlows { @Given("^homepage is loaded$") - @Step("open home page") public static HomePage homePage() { // clear cookies to ensure a new session @@ -26,7 +24,6 @@ public static HomePage homePage() }; @Given("^login page is loaded$") - @Step("open login page") public static LoginPage loginPage() { // open login page and check for expected page @@ -34,7 +31,6 @@ public static LoginPage loginPage() }; @Given("^register page is loaded$") - @Step("open register page") public static RegisterPage registerPage() { // open login page and check for expected page @@ -42,7 +38,6 @@ public static RegisterPage registerPage() }; @Given("^product page \"([^\"]*)\" is open$") - @Step("open product page with cleared cookes") public static ProductDetailPage openProductdetailsPageWithClearedCookes(String url) { clearBrowserCookies(); @@ -51,7 +46,6 @@ public static ProductDetailPage openProductdetailsPageWithClearedCookes(String u } // TODO check if needed - else delete - @Step("open product page without cleared cookes") public static ProductDetailPage openProductdetailsPage(String url) { open(Neodymium.configuration().url() + url); diff --git a/src/test/java/posters/cucumber/support/OrderSupport.java b/src/test/java/posters/cucumber/support/OrderSupport.java index 495b7af..f666f12 100644 --- a/src/test/java/posters/cucumber/support/OrderSupport.java +++ b/src/test/java/posters/cucumber/support/OrderSupport.java @@ -3,7 +3,6 @@ import io.cucumber.java.en.Given; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; -import io.qameta.allure.Step; import posters.dataobjects.Address; import posters.dataobjects.CreditCard; import posters.dataobjects.Product; @@ -52,7 +51,6 @@ public void addProductToCart(String size, String style) } @When("^I add product \"([^\"]*)\" in size \"([^\"]*)\" and style \"([^\"]*)\"$") - @Step("open product page and add product to the cart") public void openProductPageAndAddItoTheCart(String productUrl, String size, String style) { OpenPageFlows.openProductdetailsPage(productUrl); diff --git a/src/test/java/posters/cucumber/support/RegisterSupport.java b/src/test/java/posters/cucumber/support/RegisterSupport.java index 0f02310..2ef35c9 100644 --- a/src/test/java/posters/cucumber/support/RegisterSupport.java +++ b/src/test/java/posters/cucumber/support/RegisterSupport.java @@ -4,7 +4,6 @@ import io.cucumber.java.en.Given; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; -import io.qameta.allure.Step; import posters.dataobjects.User; import posters.pageobjects.pages.browsing.HomePage; import posters.pageobjects.pages.user.LoginPage; @@ -40,18 +39,7 @@ public LoginPage registerUserSetup() return loginPage; } -// public LoginPage registerUser() -// { -// var registerPage = OpenPageFlows.registerPage(); -// registerPage.isExpectedPage(); -// var loginPage = registerPage.sendRegisterForm(storage.user, storage.user.getPassword()); -// loginPage.isExpectedPage(); -// -// return loginPage; -// } - @After("@DeleteUserAfterwards") - @Step("delete user flow") public LoginPage deleteUser() { var homePage = new HomePage(); @@ -99,7 +87,6 @@ public LoginPage deleteUser() } @When("^I register a new user with \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\"$") - @Step("set up user and register him") public void registerUser(String firstName, String lastName, String email, String password) { var registerPage = new RegisterPage(); diff --git a/src/test/java/posters/pageobjects/components/AddressForm.java b/src/test/java/posters/pageobjects/components/AddressForm.java index 98b97fd..b300aee 100644 --- a/src/test/java/posters/pageobjects/components/AddressForm.java +++ b/src/test/java/posters/pageobjects/components/AddressForm.java @@ -1,20 +1,25 @@ package posters.pageobjects.components; +import static com.codeborne.selenide.Condition.not; import static com.codeborne.selenide.Condition.text; +import static com.codeborne.selenide.Condition.visible; import static com.codeborne.selenide.Selenide.$; +import com.xceptance.neodymium.util.Neodymium; + import posters.dataobjects.Address; public class AddressForm extends AbstractComponent { public void isComponentAvailable() { - System.out.println("******************************************************" + $(".header-container>h2").toString()); $(".header-container>h2").shouldHave(text("address")); } public static void fillAddressForm(Address address) { + // Wait for the address form to be visible + $("#fullName").waitUntil(visible, Neodymium.configuration().selenideTimeout()); // Enter the name parameter $("#fullName").val(address.getFirstName() + " " + address.getLastName()); // Enter the company parameter diff --git a/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java index 243a351..63f50f8 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java @@ -79,7 +79,6 @@ public BillingAddressPage fillShippingAddressWithDifferentBilling(Address shippi { // Fill shipping address AddressForm.fillAddressForm(shippingAddress); - $("#billEqualShipp-Yes").scrollTo().click(); // Click checkbox NO $("#billEqualShipp-No").scrollTo().click(); From a6363ecccf3f768a576bc195eeee3533adf8802c Mon Sep 17 00:00:00 2001 From: ufjena <77679064+ufjena@users.noreply.github.com> Date: Fri, 7 May 2021 19:10:00 +0200 Subject: [PATCH 13/35] RegisterPage changed --- .../cucumber/support/OrderSupport.java | 2 +- .../cucumber/support/RegisterSupport.java | 4 +-- .../pageobjects/pages/user/RegisterPage.java | 31 ++++++------------- 3 files changed, 12 insertions(+), 25 deletions(-) diff --git a/src/test/java/posters/cucumber/support/OrderSupport.java b/src/test/java/posters/cucumber/support/OrderSupport.java index f666f12..30ac12a 100644 --- a/src/test/java/posters/cucumber/support/OrderSupport.java +++ b/src/test/java/posters/cucumber/support/OrderSupport.java @@ -31,7 +31,7 @@ public void registerAndLogIn(String firstName, String lastName, String email, St storage.user = new User(firstName, lastName, email, password); var registerPage = OpenPageFlows.registerPage(); - registerPage.sendRegisterForm(firstName, lastName, email, password, password); + registerPage.sendRegisterForm(storage.user); var loginPage = registerPage.userMenu.openLogin();; loginPage.sendLoginform(email, password); } diff --git a/src/test/java/posters/cucumber/support/RegisterSupport.java b/src/test/java/posters/cucumber/support/RegisterSupport.java index 2ef35c9..efd9340 100644 --- a/src/test/java/posters/cucumber/support/RegisterSupport.java +++ b/src/test/java/posters/cucumber/support/RegisterSupport.java @@ -33,7 +33,7 @@ public LoginPage registerUserSetup() // registerUser(storage.user); var registerPage = OpenPageFlows.registerPage(); registerPage.isExpectedPage(); - var loginPage = registerPage.sendRegisterForm(storage.user, storage.user.getPassword()); + var loginPage = registerPage.sendRegisterForm(storage.user); loginPage.isExpectedPage(); return loginPage; @@ -92,7 +92,7 @@ public void registerUser(String firstName, String lastName, String email, String var registerPage = new RegisterPage(); registerPage.isExpectedPage(); storage.user = new User(firstName, lastName, email, password); - registerPage.sendRegisterForm(firstName, lastName, email, password, password); + registerPage.sendRegisterForm(storage.user); } @Given("^new user with \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\" is registered$") diff --git a/src/test/java/posters/pageobjects/pages/user/RegisterPage.java b/src/test/java/posters/pageobjects/pages/user/RegisterPage.java index 60f3a79..f4f3395 100644 --- a/src/test/java/posters/pageobjects/pages/user/RegisterPage.java +++ b/src/test/java/posters/pageobjects/pages/user/RegisterPage.java @@ -78,40 +78,27 @@ public void validateStructure() } /** - * @param eMail - * The email of the account you want to log into - * @param password - * The password of the account you want to log into + * @param user + * The User data of the account you want to log into */ @Step("fill and send register form") - public LoginPage sendRegisterForm(String firstName, String lastName, String eMail, String password, String passwordRepeat) + public LoginPage sendRegisterForm(User user) { // Fill out the registration form // Type the last name parameter into the last name field. - lastnameField.val(lastName); + lastnameField.val(user.getLastName()); // Type the first name parameter into the first name field. - firstnameField.val(firstName); + firstnameField.val(user.getFirstName()); // Type the email parameter into the email field. - emailField.val(eMail); + emailField.val(user.getEmail()); // Type the password parameter into the password field. - passwordField.val(password); + passwordField.val(user.getPassword()); // Type the second password parameter into the second password field. - passwordRepeatField.val(passwordRepeat); + passwordRepeatField.val(user.getPassword()); // Register and open the login page if successful // Click on the Register Button registerButton.scrollTo().click(); - return new LoginPage(); - } - - /** - * @param user - * @param passwordRepeat - * @return - */ - @Step("send register form for {user}") - public LoginPage sendRegisterForm(User user, String passwordRepeat) - { - return sendRegisterForm(user.getFirstName(), user.getLastName(), user.getEmail(), user.getPassword(), passwordRepeat); + return new LoginPage().isExpectedPage(); } } From f6701fe0fe895b4a844ad1c922b4746946e4870a Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Tue, 11 May 2021 11:31:32 +0200 Subject: [PATCH 14/35] remove address form validation from AbstractBrowsingPage --- src/test/java/posters/pageobjects/components/AddressForm.java | 1 - .../pageobjects/pages/browsing/AbstractBrowsingPage.java | 4 ---- 2 files changed, 5 deletions(-) diff --git a/src/test/java/posters/pageobjects/components/AddressForm.java b/src/test/java/posters/pageobjects/components/AddressForm.java index b300aee..0939aa0 100644 --- a/src/test/java/posters/pageobjects/components/AddressForm.java +++ b/src/test/java/posters/pageobjects/components/AddressForm.java @@ -1,6 +1,5 @@ package posters.pageobjects.components; -import static com.codeborne.selenide.Condition.not; import static com.codeborne.selenide.Condition.text; import static com.codeborne.selenide.Condition.visible; import static com.codeborne.selenide.Selenide.$; diff --git a/src/test/java/posters/pageobjects/pages/browsing/AbstractBrowsingPage.java b/src/test/java/posters/pageobjects/pages/browsing/AbstractBrowsingPage.java index 6d2c3df..55bc1d8 100644 --- a/src/test/java/posters/pageobjects/pages/browsing/AbstractBrowsingPage.java +++ b/src/test/java/posters/pageobjects/pages/browsing/AbstractBrowsingPage.java @@ -8,7 +8,6 @@ import posters.pageobjects.components.SuccessMessage; import posters.pageobjects.components.TopNavigation; import posters.pageobjects.components.UserMenu; -import posters.pageobjects.components.AddressForm; import posters.pageobjects.pages.AbstractPageObject; public abstract class AbstractBrowsingPage extends AbstractPageObject @@ -25,8 +24,6 @@ public abstract class AbstractBrowsingPage extends AbstractPageObject public UserMenu userMenu = new UserMenu(); - public AddressForm addressForm = new AddressForm(); - public SuccessMessage successMessage = new SuccessMessage(); public ErrorMessage errorMessage = new ErrorMessage(); @@ -42,7 +39,6 @@ public void validateStructure() search.isComponentAvailable(); topNav.isComponentAvailable(); userMenu.isComponentAvailable(); - addressForm.isComponentAvailable(); successMessage.isComponentAvailable(); errorMessage.isComponentAvailable(); } From 844c36647c1b2695d3e7ee67c256c2cc0038d87e Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Tue, 11 May 2021 11:52:16 +0200 Subject: [PATCH 15/35] improve usage of AddressForm --- config/localization.yaml | 3 ++ .../pageobjects/components/AddressForm.java | 15 +++++-- .../pages/checkout/BillingAddressPage.java | 12 +++-- .../pages/checkout/ShippingAddressPage.java | 44 ++++++++++--------- 4 files changed, 45 insertions(+), 29 deletions(-) diff --git a/config/localization.yaml b/config/localization.yaml index a0c75f0..365da63 100644 --- a/config/localization.yaml +++ b/config/localization.yaml @@ -32,6 +32,9 @@ default: successfulAccountCreation: Your account has been created. Log in with your email address and password. emailDoesNotExistError: The email address you entered doesn't exist. Please try again. incorrectPasswordError: The password you entered is incorrect. Please try again. + CheckoutPages: + shippingAddressFormTitle: Enter a shipping address + billingAddressFormTitle: Enter a billing address General: addresses: fullname: Full name* diff --git a/src/test/java/posters/pageobjects/components/AddressForm.java b/src/test/java/posters/pageobjects/components/AddressForm.java index 0939aa0..1da12d2 100644 --- a/src/test/java/posters/pageobjects/components/AddressForm.java +++ b/src/test/java/posters/pageobjects/components/AddressForm.java @@ -1,6 +1,6 @@ package posters.pageobjects.components; -import static com.codeborne.selenide.Condition.text; +import static com.codeborne.selenide.Condition.exactText; import static com.codeborne.selenide.Condition.visible; import static com.codeborne.selenide.Selenide.$; @@ -10,12 +10,19 @@ public class AddressForm extends AbstractComponent { + private final String title; + + public AddressForm(String title) + { + this.title = title; + } + public void isComponentAvailable() { - $(".header-container>h2").shouldHave(text("address")); + $(".header-container>h2").shouldHave(exactText(title)); } - - public static void fillAddressForm(Address address) + + public void fillAddressForm(Address address) { // Wait for the address form to be visible $("#fullName").waitUntil(visible, Neodymium.configuration().selenideTimeout()); diff --git a/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java index 9b1b517..f784298 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/BillingAddressPage.java @@ -6,6 +6,7 @@ import static com.codeborne.selenide.Selenide.$; import com.codeborne.selenide.SelenideElement; +import com.xceptance.neodymium.util.Neodymium; import io.qameta.allure.Step; import posters.pageobjects.components.AddressForm; @@ -15,9 +16,11 @@ * @author pfotenhauer */ public class BillingAddressPage extends AbstractCheckoutPage -{ +{ private SelenideElement headline = $("#titleBillAddr"); + private AddressForm billingAddressForm = new AddressForm(Neodymium.localizedText("CheckoutPages.billingAddressFormTitle")); + @Override @Step("ensure this is a billing address page") public BillingAddressPage isExpectedPage() @@ -38,6 +41,7 @@ public void validateStructure() // First address // Makes sure at least one address is visible $("#billAddr0").shouldBe(visible); + billingAddressForm.isComponentAvailable(); } /** @@ -58,13 +62,13 @@ public PaymentPage selectBillingAddress(int position) return new PaymentPage().isExpectedPage(); } - + @Step("fill the billing address") public PaymentPage fillBillingAddress(Address billingAddress) { // Fill billing address - AddressForm.fillAddressForm(billingAddress); - + billingAddressForm.fillAddressForm(billingAddress); + // Send billing addresses by clicking the button Continue $("#btnAddBillAddr").scrollTo().click(); diff --git a/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java index 63f50f8..d262a18 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/ShippingAddressPage.java @@ -6,6 +6,7 @@ import static com.codeborne.selenide.Selenide.$; import com.codeborne.selenide.SelenideElement; +import com.xceptance.neodymium.util.Neodymium; import io.qameta.allure.Step; import posters.dataobjects.Address; @@ -18,7 +19,7 @@ public class ShippingAddressPage extends AbstractCheckoutPage { private SelenideElement headline = $("#titleDelAddr"); - + private AddressForm shippingAddressForm = new AddressForm(Neodymium.localizedText("CheckoutPages.shippingAddressFormTitle")); @Override @Step("ensure this is a shipping address page") @@ -39,6 +40,7 @@ public void validateStructure() headline.should(matchText("[A-Z].{3,}")); // Makes sure at least one address is visible $("#delAddr0").shouldBe(visible); + shippingAddressForm.isComponentAvailable(); } /** @@ -62,30 +64,30 @@ public BillingAddressPage selectShippingAddress(int position) @Step("fill and send shipping address without different billing address") public PaymentPage fillShippingAddressWithSameAsBilling(Address shippingAddress) { - // Fill shipping address - AddressForm.fillAddressForm(shippingAddress); - - // Click checkbox YES - $("#billEqualShipp-Yes").scrollTo().click(); - - // Send shipping addresses by clicking the button Continue - $("#btnAddDelAddr").scrollTo().click(); - - return new PaymentPage().isExpectedPage(); + // Fill shipping address + shippingAddressForm.fillAddressForm(shippingAddress); + + // Click checkbox YES + $("#billEqualShipp-Yes").scrollTo().click(); + + // Send shipping addresses by clicking the button Continue + $("#btnAddDelAddr").scrollTo().click(); + + return new PaymentPage().isExpectedPage(); } @Step("fill and send shipping address with different billing address") public BillingAddressPage fillShippingAddressWithDifferentBilling(Address shippingAddress) { - // Fill shipping address - AddressForm.fillAddressForm(shippingAddress); - - // Click checkbox NO - $("#billEqualShipp-No").scrollTo().click(); - - // Send shipping addresses by clicking the button Continue - $("#btnAddDelAddr").scrollTo().click(); - - return new BillingAddressPage().isExpectedPage(); + // Fill shipping address + shippingAddressForm.fillAddressForm(shippingAddress); + + // Click checkbox NO + $("#billEqualShipp-No").scrollTo().click(); + + // Send shipping addresses by clicking the button Continue + $("#btnAddDelAddr").scrollTo().click(); + + return new BillingAddressPage().isExpectedPage(); } } From 3588390167797b5a17351c383f3fbaa2efaafa31 Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Wed, 19 May 2021 16:26:38 +0200 Subject: [PATCH 16/35] call isExpectedPage before returning page object --- src/test/java/posters/cucumber/support/OpenPageFlows.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/posters/cucumber/support/OpenPageFlows.java b/src/test/java/posters/cucumber/support/OpenPageFlows.java index 710ae38..7588796 100644 --- a/src/test/java/posters/cucumber/support/OpenPageFlows.java +++ b/src/test/java/posters/cucumber/support/OpenPageFlows.java @@ -42,13 +42,13 @@ public static ProductDetailPage openProductdetailsPageWithClearedCookes(String u { clearBrowserCookies(); open(Neodymium.configuration().url() + url); - return new ProductDetailPage(); + return new ProductDetailPage().isExpectedPage(); } // TODO check if needed - else delete public static ProductDetailPage openProductdetailsPage(String url) { open(Neodymium.configuration().url() + url); - return new ProductDetailPage(); + return new ProductDetailPage().isExpectedPage(); } } From 04fcb79d937db1510c6149c9b6f6f25d04457975 Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Wed, 19 May 2021 16:39:24 +0200 Subject: [PATCH 17/35] remove return types from support flows --- .../java/posters/cucumber/support/ProductSupport.java | 4 ++-- .../java/posters/cucumber/support/RegisterSupport.java | 10 +++------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/test/java/posters/cucumber/support/ProductSupport.java b/src/test/java/posters/cucumber/support/ProductSupport.java index ea448d7..86ac86e 100644 --- a/src/test/java/posters/cucumber/support/ProductSupport.java +++ b/src/test/java/posters/cucumber/support/ProductSupport.java @@ -8,9 +8,9 @@ public class ProductSupport { @When("^product \"([^\"]*)\" is opened$") - public ProductDetailPage clickProductByName(String productName) + public void clickProductByName(String productName) { - return new CategoryPage().clickProductByName(productName); + new CategoryPage().clickProductByName(productName); } @Then("^a product detail page shows the headline \"([^\"]*)\"$") diff --git a/src/test/java/posters/cucumber/support/RegisterSupport.java b/src/test/java/posters/cucumber/support/RegisterSupport.java index efd9340..d13f447 100644 --- a/src/test/java/posters/cucumber/support/RegisterSupport.java +++ b/src/test/java/posters/cucumber/support/RegisterSupport.java @@ -27,20 +27,18 @@ public void setUpUser(String firstName, String lastName, String eMail, String pa }; @Given("^login page is opened after registration$") - public LoginPage registerUserSetup() + public void registerUserSetup() { // use the user coming from dependency injection -// registerUser(storage.user); + // registerUser(storage.user); var registerPage = OpenPageFlows.registerPage(); registerPage.isExpectedPage(); var loginPage = registerPage.sendRegisterForm(storage.user); loginPage.isExpectedPage(); - - return loginPage; } @After("@DeleteUserAfterwards") - public LoginPage deleteUser() + public void deleteUser() { var homePage = new HomePage(); // ensure that the user is logged in @@ -82,8 +80,6 @@ public LoginPage deleteUser() loginPage.validateStructure(); loginPage.sendFalseLoginform(storage.user); loginPage.validateWrongEmail(storage.user.getEmail()); - - return loginPage; } @When("^I register a new user with \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\", \"([^\"]*)\"$") From 6810e52fff3349420adf9bc8d6836b3b8d001d01 Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Wed, 19 May 2021 16:39:49 +0200 Subject: [PATCH 18/35] remove duplicated functionality and use updateCountOfProduct instead --- .../posters/cucumber/support/CartSupport.java | 8 ++----- .../cucumber/support/GlobalStorage.java | 23 ++++++------------- 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/src/test/java/posters/cucumber/support/CartSupport.java b/src/test/java/posters/cucumber/support/CartSupport.java index 89f4f75..5522097 100644 --- a/src/test/java/posters/cucumber/support/CartSupport.java +++ b/src/test/java/posters/cucumber/support/CartSupport.java @@ -42,12 +42,8 @@ public void updateCountOfProduct(String name, String size, String style, int amo { var cartPage = new CartPage(); cartPage.updateProductCountByName(name, style, size, amount); - - var updateProduct = storage.getProductFromArrayList(name, size, style); - storage.products.remove(updateProduct); - String unitPrice = updateProduct.getUnitPrice(); - updateProduct = new Product(name, unitPrice, style, size, amount); - storage.products.add(updateProduct); + + storage.updateCountOfProduct(name, size, style, amount); } @Then("^I can remove \"([^\"]*)\" with \"([^\"]*)\" and \"([^\"]*)\"$") diff --git a/src/test/java/posters/cucumber/support/GlobalStorage.java b/src/test/java/posters/cucumber/support/GlobalStorage.java index ca4c4ea..37187c7 100644 --- a/src/test/java/posters/cucumber/support/GlobalStorage.java +++ b/src/test/java/posters/cucumber/support/GlobalStorage.java @@ -35,16 +35,8 @@ public Product addProduct(Product product) // increase amount of product if already there or add the whole product if (products.contains(product)) { - var updatedProduct = products.get(products.indexOf(product)); - String name = updatedProduct.getName(); - String unitPrice = updatedProduct.getUnitPrice(); - String style = updatedProduct.getStyle(); - String size = updatedProduct.getSize(); - int amount = updatedProduct.getAmount(); - products.remove(updatedProduct); - updatedProduct = new Product(name, unitPrice, style, size, amount + 1); - products.add(updatedProduct); - return updatedProduct; + updateCountOfProduct(product.getName(), product.getSize(), product.getStyle(), product.getAmount() + 1); + return getProductFromArrayList(product.getName(), product.getSize(), product.getStyle()); } else { @@ -52,21 +44,20 @@ public Product addProduct(Product product) return product; } } - + public Product getProductFromArrayList(String name, String size, String style) { int i = 0; for (Product product : products) { - if (product.getName().equals(name) && product.getSize().equals(size) - && product.getStyle().equals(style)) + if (product.getName().equals(name) && product.getSize().equals(size) && product.getStyle().equals(style)) { - i = products.indexOf(product); + i = products.indexOf(product); } } return products.get(i); } - + public void updateCountOfProduct(String name, String size, String style, int amount) { var updateProducht = getProductFromArrayList(name, size, style); @@ -75,7 +66,7 @@ public void updateCountOfProduct(String name, String size, String style, int amo updateProducht = new Product(name, unitPrice, style, size, amount); products.add(updateProducht); } - + public void removeProduct(String name, String style, String size) { var updateProducht = getProductFromArrayList(name, size, style); From 28c9a88c160afa40cf64ff79b4a7c426b5741075 Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Wed, 19 May 2021 17:17:01 +0200 Subject: [PATCH 19/35] use forms to avoid code duplication --- config/localization.yaml | 2 + .../pageobjects/components/AddressForm.java | 86 ++++++++++++++++-- .../pageobjects/components/PaymentForm.java | 58 ++++++++++++ .../pages/checkout/NewBillingAddressPage.java | 87 ++---------------- .../pages/checkout/NewPaymentPage.java | 72 ++------------- .../checkout/NewShippingAddressPage.java | 90 ++----------------- .../pages/checkout/PaymentPage.java | 32 +------ 7 files changed, 161 insertions(+), 266 deletions(-) create mode 100644 src/test/java/posters/pageobjects/components/PaymentForm.java diff --git a/config/localization.yaml b/config/localization.yaml index 365da63..5fecb3a 100644 --- a/config/localization.yaml +++ b/config/localization.yaml @@ -34,7 +34,9 @@ default: incorrectPasswordError: The password you entered is incorrect. Please try again. CheckoutPages: shippingAddressFormTitle: Enter a shipping address + newShippingAddressFormTitle: Add a new shipping address billingAddressFormTitle: Enter a billing address + newBillingAddressFormTitle: Add a new billing address General: addresses: fullname: Full name* diff --git a/src/test/java/posters/pageobjects/components/AddressForm.java b/src/test/java/posters/pageobjects/components/AddressForm.java index 1da12d2..daf436b 100644 --- a/src/test/java/posters/pageobjects/components/AddressForm.java +++ b/src/test/java/posters/pageobjects/components/AddressForm.java @@ -3,7 +3,9 @@ import static com.codeborne.selenide.Condition.exactText; import static com.codeborne.selenide.Condition.visible; import static com.codeborne.selenide.Selenide.$; +import static com.codeborne.selenide.Selenide.$$; +import com.codeborne.selenide.SelenideElement; import com.xceptance.neodymium.util.Neodymium; import posters.dataobjects.Address; @@ -12,33 +14,99 @@ public class AddressForm extends AbstractComponent { private final String title; + private SelenideElement nameField = $("#fullName"); + + private SelenideElement companyField = $("#company"); + + private SelenideElement addressField = $("#addressLine"); + + private SelenideElement cityField = $("#city"); + + private SelenideElement stateField = $("#state"); + + private SelenideElement zipField = $("#zip"); + + private SelenideElement countryField = $("#country"); + + private SelenideElement continueButton = $("button.btn"); + public AddressForm(String title) { this.title = title; } public void isComponentAvailable() + { + $("#fullName").shouldBe(visible); + } + + public void validateStructure() { $(".header-container>h2").shouldHave(exactText(title)); + + // Name + // Asserts the label next to the name field shows the right text + $("label[for='fullName']").shouldHave(exactText(Neodymium.localizedText("General.addresses.fullname"))); + // Asserts the name field is there + nameField.shouldBe(visible); + // Company + // Asserts the label next to the company field shows the right text + $("label[for='company']").shouldHave(exactText(Neodymium.localizedText("General.addresses.company"))); + // Asserts the company field is there + companyField.shouldBe(visible); + // Address + // Asserts the label next to the address field shows the right text + $("label[for='addressLine']").shouldHave(exactText(Neodymium.localizedText("General.addresses.address"))); + // Asserts the address field is there + addressField.shouldBe(visible); + // City + // Asserts the label next to the city field shows the right text + $("label[for='city']").shouldHave(exactText(Neodymium.localizedText("General.addresses.city"))); + // Asserts the city field is there + cityField.shouldBe(visible); + // State + // Asserts the label next to the state field shows the right text + $("label[for='state']").shouldHave(exactText(Neodymium.localizedText("General.addresses.state"))); + // Asserts the state field is there + stateField.shouldBe(visible); + // Zip + // Asserts the label next to the zip field shows the right text + $("label[for='zip']").shouldHave(exactText(Neodymium.localizedText("General.addresses.zip"))); + // Asserts the zip field is there + zipField.shouldBe(visible); + // Country + // Asserts the label next to the country field shows the right text + $("label[for='country']").shouldHave(exactText(Neodymium.localizedText("General.addresses.country"))); + // Asserts the country field is there + countryField.shouldBe(visible); + // Radio Button + // Assert the radio buttons are there + $$("input[name='billEqualShipp']").shouldHaveSize(2); + // Continue Button + // Asserts the Continue button is there + continueButton.shouldBe(visible); } public void fillAddressForm(Address address) { - // Wait for the address form to be visible - $("#fullName").waitUntil(visible, Neodymium.configuration().selenideTimeout()); // Enter the name parameter - $("#fullName").val(address.getFirstName() + " " + address.getLastName()); + nameField.val(address.getFirstName() + " " + address.getLastName()); // Enter the company parameter - $("#company").val(address.getCompany()); + companyField.val(address.getCompany()); // Enter the street parameter - $("#addressLine").val(address.getStreet()); + addressField.val(address.getStreet()); // Enter the city parameter - $("#city").val(address.getCity()); + cityField.val(address.getCity()); // Enter the state parameter - $("#state").val(address.getState()); + stateField.val(address.getState()); // Enter the zip parameter - $("#zip").val(address.getZip()); + zipField.val(address.getZip()); // Select the country whose label equals the parameter - $("#country").selectOption(address.getCountry()); + countryField.selectOption(address.getCountry()); + } + + public void confirmAddressForm() + { + continueButton.click(); } } diff --git a/src/test/java/posters/pageobjects/components/PaymentForm.java b/src/test/java/posters/pageobjects/components/PaymentForm.java new file mode 100644 index 0000000..6b3d548 --- /dev/null +++ b/src/test/java/posters/pageobjects/components/PaymentForm.java @@ -0,0 +1,58 @@ +package posters.pageobjects.components; + +import static com.codeborne.selenide.Condition.visible; + +import static com.codeborne.selenide.Selenide.$; + +import com.codeborne.selenide.SelenideElement; + +import io.qameta.allure.Step; +import posters.dataobjects.CreditCard; + +public class PaymentForm extends AbstractComponent +{ + private SelenideElement creditCardNumber = $("#creditCardNumber"); + + private SelenideElement creditCardName = $("#name"); + + private SelenideElement expirationMonth = $("#expirationDateMonth"); + + private SelenideElement expirationYear = $("#expirationDateYear"); + + private SelenideElement addPaymentButton = $("#btnAddPayment"); + + @Override + @Step("ensure payment form is available on the page") + public void isComponentAvailable() + { + creditCardNumber.shouldBe(visible); + } + + @Step("validate payment form structure") + public void validateStructure() + { + creditCardName.shouldBe(visible); + expirationMonth.shouldBe(visible); + expirationYear.shouldBe(visible); + addPaymentButton.shouldBe(visible); + } + + @Step("fill and send payment form") + public void sendPaymentForm(CreditCard card) + { + // Credit Card Number + // Fills the card number field with the parameter + creditCardNumber.val(card.getCardNumber()); + // Name + // Fills the card holder field with the parameter + creditCardName.val(card.getFullName()); + // Expiration + // Chooses the expiration month matching the parameter + expirationMonth.selectOption(card.getExpDateMonth()); + // Chooses the expiration year matching the parameter + expirationYear.selectOption(card.getExpDateYear()); + // Opens the order overview page + // Clicks the Continue button + addPaymentButton.scrollTo().click(); + } +} diff --git a/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java index 70deb3b..dc1a7cc 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/NewBillingAddressPage.java @@ -1,9 +1,6 @@ package posters.pageobjects.pages.checkout; -import static com.codeborne.selenide.Condition.exactText; import static com.codeborne.selenide.Condition.exist; -import static com.codeborne.selenide.Condition.matchText; -import static com.codeborne.selenide.Condition.visible; import static com.codeborne.selenide.Selenide.$; import com.codeborne.selenide.SelenideElement; @@ -11,6 +8,7 @@ import io.qameta.allure.Step; import posters.dataobjects.Address; +import posters.pageobjects.components.AddressForm; /** * @author pfotenhauer @@ -19,21 +17,7 @@ public class NewBillingAddressPage extends AbstractCheckoutPage { private SelenideElement headline = $("#titleBillAddr"); - private SelenideElement nameField = $("#fullName"); - - private SelenideElement companyField = $("#company"); - - private SelenideElement addressField = $("#addressLine"); - - private SelenideElement cityField = $("#city"); - - private SelenideElement stateField = $("#state"); - - private SelenideElement zipField = $("#zip"); - - private SelenideElement countryField = $("#country"); - - private SelenideElement addBillingButton = $("#btnAddBillAddr"); + private AddressForm newBillingAddressForm = new AddressForm(Neodymium.localizedText("CheckoutPages.newBillingAddressFormTitle")); @Override @Step("ensure this is a new billing address page") @@ -41,6 +25,7 @@ public NewBillingAddressPage isExpectedPage() { super.isExpectedPage(); headline.should(exist); + newBillingAddressForm.isComponentAvailable(); return this; } @@ -49,51 +34,7 @@ public NewBillingAddressPage isExpectedPage() public void validateStructure() { super.validateStructure(); - - // Headline - // Assert the headline is there and starts with a capital letter - headline.should(matchText("[A-Z].{3,}")); - // Form - // Asserts the form is there at all - $("#formAddBillAddr").shouldBe(visible); - // Name - // Asserts the label next to the name field shows the right text - $("label[for='fullName']").shouldHave(exactText(Neodymium.localizedText("General.addresses.fullname"))); - // Asserts the name field is there - nameField.shouldBe(visible); - // Company - // Asserts the label next to the company field shows the right text - $("label[for='company']").shouldHave(exactText(Neodymium.localizedText("General.addresses.company"))); - // Asserts the company field is there - companyField.shouldBe(visible); - // Address - // Asserts the label next to the address field shows the right text - $("label[for='addressLine']").shouldHave(exactText(Neodymium.localizedText("General.addresses.address"))); - // Asserts the address field is there - addressField.shouldBe(visible); - // City - // Asserts the label next to the city field shows the right text - $("label[for='city']").shouldHave(exactText(Neodymium.localizedText("General.addresses.city"))); - // Asserts the city field is there - cityField.shouldBe(visible); - // State - // Asserts the label next to the state field shows the right text - $("label[for='state']").shouldHave(exactText(Neodymium.localizedText("General.addresses.state"))); - // Asserts the state field is there - stateField.shouldBe(visible); - // Zip - // Asserts the label next to the zip field shows the right text - $("label[for='zip']").shouldHave(exactText(Neodymium.localizedText("General.addresses.zip"))); - // Asserts the zip field is there - zipField.shouldBe(visible); - // Country - // Asserts the label next to the country field shows the right text - $("label[for='country']").shouldHave(exactText(Neodymium.localizedText("General.addresses.country"))); - // Asserts the country field is there - countryField.shouldBe(visible); - // Continue Button - // Asserts the Continue button is there - addBillingButton.shouldBe(visible); + newBillingAddressForm.validateStructure(); } /** @@ -105,24 +46,8 @@ public void validateStructure() @Step("fill and send new billing address form") public NewPaymentPage sendBillingAddressForm(Address address) { - // Enter the name parameter - nameField.val(address.getFirstName()); - // Enter the company parameter - companyField.val(address.getCompany()); - // Enter the street parameter - addressField.val(address.getStreet()); - // Enter the city parameter - cityField.val(address.getCity()); - // Enter the state parameter - stateField.val(address.getState()); - // Enter the zip parameter - zipField.val(address.getZip()); - // Select the country whose label equals the parameter - countryField.selectOption(address.getCountry()); - // Open the billing addresses or payment options page, depending on which radio button you checked - // Click on Continue - addBillingButton.scrollTo().click(); - + newBillingAddressForm.fillAddressForm(address); + newBillingAddressForm.confirmAddressForm(); return new NewPaymentPage().isExpectedPage(); } } diff --git a/src/test/java/posters/pageobjects/pages/checkout/NewPaymentPage.java b/src/test/java/posters/pageobjects/pages/checkout/NewPaymentPage.java index c6707d2..dcc58b0 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/NewPaymentPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/NewPaymentPage.java @@ -1,16 +1,14 @@ package posters.pageobjects.pages.checkout; -import static com.codeborne.selenide.Condition.exactText; import static com.codeborne.selenide.Condition.exist; import static com.codeborne.selenide.Condition.matchText; -import static com.codeborne.selenide.Condition.visible; import static com.codeborne.selenide.Selenide.$; import com.codeborne.selenide.SelenideElement; -import com.xceptance.neodymium.util.Neodymium; import io.qameta.allure.Step; import posters.dataobjects.CreditCard; +import posters.pageobjects.components.PaymentForm; /** * @author pfotenhauer @@ -19,15 +17,7 @@ public class NewPaymentPage extends AbstractCheckoutPage { private SelenideElement headline = $("#titlePayment"); - private SelenideElement creditCardNumber = $("#creditCardNumber"); - - private SelenideElement creditCardName = $("#name"); - - private SelenideElement expirationMonth = $("#expirationDateMonth"); - - private SelenideElement expirationYear = $("#expirationDateYear"); - - private SelenideElement addPaymentButton = $("#btnAddPayment"); + private PaymentForm paymentForm = new PaymentForm(); @Override @Step("ensure this is a new payment page") @@ -50,65 +40,17 @@ public void validateStructure() // Form // Make sure the form is there to begin with $("#formAddPayment").should(exist); - // Credit Card Number - // Makes sure the label next to the card number field shows the correct text - $("label[for='creditCardNumber']").shouldHave(exactText(Neodymium.localizedText("General.payment.cardnumber"))); - // Makes sure the card number field is there - creditCardNumber.shouldBe(visible); - // Name - // Makes sure the label next to the card holder field shows the correct text - $("label[for='name']").shouldHave(exactText(Neodymium.localizedText("General.payment.cardholdername"))); - // Makes sure the card holder field is there - creditCardName.shouldBe(visible); - // Expiration - // Makes sure the label next to the expiration date fields shows the correct text - $("label[for='expirationDateMonth']").shouldHave(exactText(Neodymium.localizedText("General.payment.expirationdate"))); - // Makes sure the expiration month field is there - expirationMonth.shouldBe(visible); - // Makes sure the expiration year field is there - expirationYear.shouldBe(visible); - // Continue Button - // Makes sure the continue button is there - addPaymentButton.should(exist); - } - - /** - * @param number - * The credit card number, has to be 16 numbers - * @param name - * The full name - * @param month - * Expiration Month in numbers - * @param year - * Expiration year - */ - @Step("fill and send new payment form") - public PlaceOrderPage sendPaymentForm(String number, String name, String month, String year) - { - // Credit Card Number - // Fills the card number field with the parameter - creditCardNumber.val(number); - // Name - // Fills the card holder field with the parameter - creditCardName.val(name); - // Expiration - // Chooses the expiration month matching the parameter - expirationMonth.selectOption(month); - // Chooses the expiration year matching the parameter - expirationYear.selectOption(year); - // Opens the order overview page - // Clicks the Continue button - addPaymentButton.scrollTo().click(); - - return new PlaceOrderPage().isExpectedPage(); + paymentForm.validateStructure(); } /** * @param creditcard * @return */ - public PlaceOrderPage sendPaymentForm(CreditCard creditcard) + @Step("fill and send payment form") + public PlaceOrderPage sendPaymentForm(CreditCard card) { - return sendPaymentForm(creditcard.getCardNumber(), creditcard.getFullName(), creditcard.getExpDateMonth(), creditcard.getExpDateYear()); + paymentForm.sendPaymentForm(card); + return new PlaceOrderPage().isExpectedPage(); } } diff --git a/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java b/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java index e0fdc8e..084e08d 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/NewShippingAddressPage.java @@ -1,17 +1,14 @@ package posters.pageobjects.pages.checkout; -import static com.codeborne.selenide.Condition.exactText; import static com.codeborne.selenide.Condition.exist; -import static com.codeborne.selenide.Condition.matchText; -import static com.codeborne.selenide.Condition.visible; import static com.codeborne.selenide.Selenide.$; -import static com.codeborne.selenide.Selenide.$$; import com.codeborne.selenide.SelenideElement; import com.xceptance.neodymium.util.Neodymium; import io.qameta.allure.Step; import posters.dataobjects.Address; +import posters.pageobjects.components.AddressForm; /** * @author pfotenhauer @@ -20,21 +17,7 @@ public class NewShippingAddressPage extends AbstractCheckoutPage { private SelenideElement headline = $("#titleDelAddr"); - private SelenideElement nameField = $("#fullName"); - - private SelenideElement companyField = $("#company"); - - private SelenideElement addressField = $("#addressLine"); - - private SelenideElement cityField = $("#city"); - - private SelenideElement stateField = $("#state"); - - private SelenideElement zipField = $("#zip"); - - private SelenideElement countryField = $("#country"); - - private SelenideElement addShippingButton = $("#btnAddDelAddr"); + private AddressForm newShippingAddressForm = new AddressForm(Neodymium.localizedText("CheckoutPages.newShippingAddressFormTitle")); @Override @Step("ensure this is a new shipping address page") @@ -42,6 +25,7 @@ public NewShippingAddressPage isExpectedPage() { super.isExpectedPage(); headline.should(exist); + newShippingAddressForm.isComponentAvailable(); return this; } @@ -50,54 +34,7 @@ public NewShippingAddressPage isExpectedPage() public void validateStructure() { super.validateStructure(); - - // Headline - // Assert the headline is there and starts with a capital letter - headline.should(matchText("[A-Z].{3,}")); - // Form - // Asserts the form is there at all - $("#formAddDelAddr").shouldBe(visible); - // Name - // Asserts the label next to the name field shows the right text - $("label[for='fullName']").shouldHave(exactText(Neodymium.localizedText("General.addresses.fullname"))); - // Asserts the name field is there - nameField.shouldBe(visible); - // Company - // Asserts the label next to the company field shows the right text - $("label[for='company']").shouldHave(exactText(Neodymium.localizedText("General.addresses.company"))); - // Asserts the company field is there - companyField.shouldBe(visible); - // Address - // Asserts the label next to the address field shows the right text - $("label[for='addressLine']").shouldHave(exactText(Neodymium.localizedText("General.addresses.address"))); - // Asserts the address field is there - addressField.shouldBe(visible); - // City - // Asserts the label next to the city field shows the right text - $("label[for='city']").shouldHave(exactText(Neodymium.localizedText("General.addresses.city"))); - // Asserts the city field is there - cityField.shouldBe(visible); - // State - // Asserts the label next to the state field shows the right text - $("label[for='state']").shouldHave(exactText(Neodymium.localizedText("General.addresses.state"))); - // Asserts the state field is there - stateField.shouldBe(visible); - // Zip - // Asserts the label next to the zip field shows the right text - $("label[for='zip']").shouldHave(exactText(Neodymium.localizedText("General.addresses.zip"))); - // Asserts the zip field is there - zipField.shouldBe(visible); - // Country - // Asserts the label next to the country field shows the right text - $("label[for='country']").shouldHave(exactText(Neodymium.localizedText("General.addresses.country"))); - // Asserts the country field is there - countryField.shouldBe(visible); - // Radio Button - // Assert the radio buttons are there - $$("input[name='billEqualShipp']").shouldHaveSize(2); - // Continue Button - // Asserts the Continue button is there - addShippingButton.shouldBe(visible); + newShippingAddressForm.validateStructure(); } /** @@ -111,21 +48,8 @@ public void validateStructure() @Step("fill and send new shipping address form") public NewBillingAddressPage sendShippingAddressForm(Address address, boolean sameBillingAddress) { - // Enter the name parameter - nameField.val(address.getFirstName()); - // Enter the company parameter - companyField.val(address.getCompany()); - // Enter the street parameter - addressField.val(address.getStreet()); - // Enter the city parameter - cityField.val(address.getCity()); - // Enter the state parameter - stateField.val(address.getState()); - // Enter the zip parameter - zipField.val(address.getZip()); - // Select the country whose label equals the parameter - countryField.selectOption(address.getCountry()); - + newShippingAddressForm.fillAddressForm(address); + // Click the radio button for Yes or No if (sameBillingAddress) { @@ -137,7 +61,7 @@ public NewBillingAddressPage sendShippingAddressForm(Address address, boolean sa } // Open the billing addresses or payment options page, depending on which radio button you checked // Click on Continue - addShippingButton.scrollTo().click(); + newShippingAddressForm.confirmAddressForm(); return new NewBillingAddressPage().isExpectedPage(); } diff --git a/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java b/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java index 378ec4e..aa8f613 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/PaymentPage.java @@ -2,13 +2,13 @@ import static com.codeborne.selenide.Condition.exist; import static com.codeborne.selenide.Condition.matchText; -import static com.codeborne.selenide.Condition.visible; import static com.codeborne.selenide.Selenide.$; import com.codeborne.selenide.SelenideElement; import io.qameta.allure.Step; import posters.dataobjects.CreditCard; +import posters.pageobjects.components.PaymentForm; /** * @author pfotenhauer @@ -17,15 +17,7 @@ public class PaymentPage extends AbstractCheckoutPage { private SelenideElement headline = $("#titlePayment"); - private SelenideElement creditCardNumber = $("#creditCardNumber"); - - private SelenideElement creditCardName = $("#name"); - - private SelenideElement expirationMonth = $("#expirationDateMonth"); - - private SelenideElement expirationYear = $("#expirationDateYear"); - - private SelenideElement addPaymentButton = $("#btnAddPayment"); + private PaymentForm paymentForm = new PaymentForm(); @Override @Step("ensure this is a payment page") @@ -45,9 +37,7 @@ public void validateStructure() // Headline // Makes sure the headline is there and starts with a capital letter headline.should(matchText("[A-Z].{3,}")); - // First credit card - // Makes sure at least one credit card is saved - $("#payment0").shouldBe(visible); + paymentForm.validateStructure(); } /** @@ -72,21 +62,7 @@ public PlaceOrderPage selectCreditCard(int position) @Step("fill and send payment form") public PlaceOrderPage sendPaymentForm(CreditCard card) { - // Credit Card Number - // Fills the card number field with the parameter - creditCardNumber.val(card.getCardNumber()); - // Name - // Fills the card holder field with the parameter - creditCardName.val(card.getFullName()); - // Expiration - // Chooses the expiration month matching the parameter - expirationMonth.selectOption(card.getExpDateMonth()); - // Chooses the expiration year matching the parameter - expirationYear.selectOption(card.getExpDateYear()); - // Opens the order overview page - // Clicks the Continue button - addPaymentButton.scrollTo().click(); - + paymentForm.sendPaymentForm(card); return new PlaceOrderPage().isExpectedPage(); } } From 9be2a4eda2f94e2ac32924f88e7527cd585809a1 Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Wed, 19 May 2021 17:18:09 +0200 Subject: [PATCH 20/35] rename ~AddressForm to ~AddressContainer --- .../pages/checkout/PlaceOrderPage.java | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java b/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java index f87f9dc..d56ddde 100644 --- a/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java +++ b/src/test/java/posters/pageobjects/pages/checkout/PlaceOrderPage.java @@ -24,9 +24,9 @@ public class PlaceOrderPage extends AbstractCheckoutPage { private SelenideElement headline = $("#titleOrderOverview"); - private SelenideElement shippingAddressForm = $("#shippingAddr"); + private SelenideElement shippingAddressContainer = $("#shippingAddr"); - private SelenideElement billingAddressForm = $("#billingAddr"); + private SelenideElement billingAddressContainer = $("#billingAddr"); private SelenideElement paymentForm = $("#payment"); @@ -50,8 +50,8 @@ public void validateStructure() // Headline // Headline is there and starts with a capital letter headline.should(matchText("[A-Z].{3,}")); - shippingAddressForm.shouldBe(visible); - billingAddressForm.shouldBe(visible); + shippingAddressContainer.shouldBe(visible); + billingAddressContainer.shouldBe(visible); paymentForm.shouldBe(visible); orderButton.shouldBe(visible); } @@ -111,47 +111,47 @@ public void validateAddressesAndPayment(Address shippingAddress, Address billing String firstName = shippingAddress.getFirstName(); String lastName = shippingAddress.getLastName(); String fullName = firstName + " " + lastName; - shippingAddressForm.find(".name").shouldHave(exactText(fullName)); + shippingAddressContainer.find(".name").shouldHave(exactText(fullName)); // Company // Makes sure the shipping address company matches the parameter - shippingAddressForm.find(".company").shouldHave(exactText(shippingAddress.getCompany())); + shippingAddressContainer.find(".company").shouldHave(exactText(shippingAddress.getCompany())); // Address // Makes sure the shipping address matches the parameter - shippingAddressForm.find(".addressLine").shouldHave(exactText(shippingAddress.getStreet())); + shippingAddressContainer.find(".addressLine").shouldHave(exactText(shippingAddress.getStreet())); // City // Makes sure the shipping address city matches the parameter - shippingAddressForm.find(".city").shouldHave(exactText(shippingAddress.getCity())); + shippingAddressContainer.find(".city").shouldHave(exactText(shippingAddress.getCity())); // State // Makes sure the shipping address state matches the parameter - shippingAddressForm.find(".state").shouldHave(exactText(shippingAddress.getState())); + shippingAddressContainer.find(".state").shouldHave(exactText(shippingAddress.getState())); // ZIP // Makes sure the shipping address ZIP matches the parameter - shippingAddressForm.find(".zip").shouldHave(exactText(" " + shippingAddress.getZip())); + shippingAddressContainer.find(".zip").shouldHave(exactText(" " + shippingAddress.getZip())); // Country // Makes sure the shipping address country matches the parameter - shippingAddressForm.find(".country").shouldHave(exactText(shippingAddress.getCountry())); + shippingAddressContainer.find(".country").shouldHave(exactText(shippingAddress.getCountry())); // Billing address // Name // Makes sure the billing address name matches the parameter - billingAddressForm.find(".name").shouldHave(exactText(fullName)); + billingAddressContainer.find(".name").shouldHave(exactText(fullName)); // Company // Makes sure the billing address company matches the parameter - billingAddressForm.find(".company").shouldHave(exactText(billingAddress.getCompany())); + billingAddressContainer.find(".company").shouldHave(exactText(billingAddress.getCompany())); // Address // Makes sure the billing address matches the parameter - billingAddressForm.find(".addressLine").shouldHave(exactText(billingAddress.getStreet())); + billingAddressContainer.find(".addressLine").shouldHave(exactText(billingAddress.getStreet())); // City // Makes sure the billing address city matches the parameter - billingAddressForm.find(".city").shouldHave(exactText(billingAddress.getCity())); + billingAddressContainer.find(".city").shouldHave(exactText(billingAddress.getCity())); // State // Makes sure the billing address state matches the parameter - billingAddressForm.find(".state").shouldHave(exactText(billingAddress.getState())); + billingAddressContainer.find(".state").shouldHave(exactText(billingAddress.getState())); // ZIP // Makes sure the billing address ZIP matches the parameter - billingAddressForm.find(".zip").shouldHave(exactText(billingAddress.getZip())); + billingAddressContainer.find(".zip").shouldHave(exactText(billingAddress.getZip())); // Country // Makes sure the billing address country matches the parameter - billingAddressForm.find(".country").shouldHave(exactText(billingAddress.getCountry())); + billingAddressContainer.find(".country").shouldHave(exactText(billingAddress.getCountry())); // Payment // Name // Makes sure the credit card holder matches the parameter From f35bbebb254a26c0d6a7dc89a05d79aefbf9261a Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Wed, 19 May 2021 17:18:28 +0200 Subject: [PATCH 21/35] improve toString method of Product --- src/test/java/posters/dataobjects/Product.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/posters/dataobjects/Product.java b/src/test/java/posters/dataobjects/Product.java index debf559..e72caec 100644 --- a/src/test/java/posters/dataobjects/Product.java +++ b/src/test/java/posters/dataobjects/Product.java @@ -83,7 +83,7 @@ public int getAmount() @Override public String toString() { - return String.format("Product [name()=%s, size()=%s, style()=%s, price()=%s]", getName(), getSize(), getStyle(), getUnitPrice(), getAmount()); + return String.format("Product [name()=%s, size()=%s, style()=%s, price()=%s, amount()=%]", getName(), getSize(), getStyle(), getUnitPrice(), getAmount()); } @Override From 79f2e795103b6847b5d062ffdfe81d126cf0b22c Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Wed, 19 May 2021 17:26:07 +0200 Subject: [PATCH 22/35] improve naming of openProductdetailsPage --- src/test/java/posters/cucumber/support/OpenPageFlows.java | 4 ++-- src/test/java/posters/cucumber/support/OrderSupport.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/posters/cucumber/support/OpenPageFlows.java b/src/test/java/posters/cucumber/support/OpenPageFlows.java index 7588796..7c1c038 100644 --- a/src/test/java/posters/cucumber/support/OpenPageFlows.java +++ b/src/test/java/posters/cucumber/support/OpenPageFlows.java @@ -38,7 +38,7 @@ public static RegisterPage registerPage() }; @Given("^product page \"([^\"]*)\" is open$") - public static ProductDetailPage openProductdetailsPageWithClearedCookes(String url) + public static ProductDetailPage openProductDetailsPageWithClearedCookes(String url) { clearBrowserCookies(); open(Neodymium.configuration().url() + url); @@ -46,7 +46,7 @@ public static ProductDetailPage openProductdetailsPageWithClearedCookes(String u } // TODO check if needed - else delete - public static ProductDetailPage openProductdetailsPage(String url) + public static ProductDetailPage openProductDetailsPage(String url) { open(Neodymium.configuration().url() + url); return new ProductDetailPage().isExpectedPage(); diff --git a/src/test/java/posters/cucumber/support/OrderSupport.java b/src/test/java/posters/cucumber/support/OrderSupport.java index 30ac12a..ea74d77 100644 --- a/src/test/java/posters/cucumber/support/OrderSupport.java +++ b/src/test/java/posters/cucumber/support/OrderSupport.java @@ -53,7 +53,7 @@ public void addProductToCart(String size, String style) @When("^I add product \"([^\"]*)\" in size \"([^\"]*)\" and style \"([^\"]*)\"$") public void openProductPageAndAddItoTheCart(String productUrl, String size, String style) { - OpenPageFlows.openProductdetailsPage(productUrl); + OpenPageFlows.openProductDetailsPage(productUrl); addProductToCart(size, style); } From 4d84e101626b1c3b366334173f7be90099831249 Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Thu, 20 May 2021 15:57:31 +0200 Subject: [PATCH 23/35] return Product in updateCountOfProduct avoid product fetch --- src/test/java/posters/cucumber/support/GlobalStorage.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/test/java/posters/cucumber/support/GlobalStorage.java b/src/test/java/posters/cucumber/support/GlobalStorage.java index 37187c7..d3faa7e 100644 --- a/src/test/java/posters/cucumber/support/GlobalStorage.java +++ b/src/test/java/posters/cucumber/support/GlobalStorage.java @@ -35,8 +35,8 @@ public Product addProduct(Product product) // increase amount of product if already there or add the whole product if (products.contains(product)) { - updateCountOfProduct(product.getName(), product.getSize(), product.getStyle(), product.getAmount() + 1); - return getProductFromArrayList(product.getName(), product.getSize(), product.getStyle()); + + return updateCountOfProduct(product.getName(), product.getSize(), product.getStyle(), product.getAmount() + 1); } else { @@ -58,13 +58,14 @@ public Product getProductFromArrayList(String name, String size, String style) return products.get(i); } - public void updateCountOfProduct(String name, String size, String style, int amount) + public Product updateCountOfProduct(String name, String size, String style, int amount) { var updateProducht = getProductFromArrayList(name, size, style); String unitPrice = updateProducht.getUnitPrice(); products.remove(products.indexOf(updateProducht)); updateProducht = new Product(name, unitPrice, style, size, amount); products.add(updateProducht); + return updateProducht; } public void removeProduct(String name, String style, String size) From 6eb407c3b948c70954702e408516165dfa49a004 Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Thu, 20 May 2021 15:59:07 +0200 Subject: [PATCH 24/35] remove ; from open page methods --- src/test/java/posters/cucumber/support/OpenPageFlows.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/posters/cucumber/support/OpenPageFlows.java b/src/test/java/posters/cucumber/support/OpenPageFlows.java index 7c1c038..b315a5c 100644 --- a/src/test/java/posters/cucumber/support/OpenPageFlows.java +++ b/src/test/java/posters/cucumber/support/OpenPageFlows.java @@ -21,21 +21,21 @@ public static HomePage homePage() // open home page open(Neodymium.configuration().url()); return new HomePage().isExpectedPage(); - }; + } @Given("^login page is loaded$") public static LoginPage loginPage() { // open login page and check for expected page return homePage().userMenu.openLogin(); - }; + } @Given("^register page is loaded$") public static RegisterPage registerPage() { // open login page and check for expected page return homePage().userMenu.openRegister(); - }; + } @Given("^product page \"([^\"]*)\" is open$") public static ProductDetailPage openProductDetailsPageWithClearedCookes(String url) From 04ee4c9d723ae3796a74c175087ad45b314f9fe7 Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Thu, 20 May 2021 16:03:37 +0200 Subject: [PATCH 25/35] remove TODO, method call in OrderSupport.openProductPageAndAddItoTheCart --- src/test/java/posters/cucumber/support/OpenPageFlows.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/posters/cucumber/support/OpenPageFlows.java b/src/test/java/posters/cucumber/support/OpenPageFlows.java index b315a5c..bcb3287 100644 --- a/src/test/java/posters/cucumber/support/OpenPageFlows.java +++ b/src/test/java/posters/cucumber/support/OpenPageFlows.java @@ -45,7 +45,6 @@ public static ProductDetailPage openProductDetailsPageWithClearedCookes(String u return new ProductDetailPage().isExpectedPage(); } - // TODO check if needed - else delete public static ProductDetailPage openProductDetailsPage(String url) { open(Neodymium.configuration().url() + url); From 362ce7d6eaf21bc66bca3402b5c46c6dac9716b5 Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Thu, 20 May 2021 16:06:21 +0200 Subject: [PATCH 26/35] remove unneeded isExpectedPage call --- src/test/java/posters/cucumber/support/RegisterSupport.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/java/posters/cucumber/support/RegisterSupport.java b/src/test/java/posters/cucumber/support/RegisterSupport.java index d13f447..39fa2d9 100644 --- a/src/test/java/posters/cucumber/support/RegisterSupport.java +++ b/src/test/java/posters/cucumber/support/RegisterSupport.java @@ -32,9 +32,7 @@ public void registerUserSetup() // use the user coming from dependency injection // registerUser(storage.user); var registerPage = OpenPageFlows.registerPage(); - registerPage.isExpectedPage(); - var loginPage = registerPage.sendRegisterForm(storage.user); - loginPage.isExpectedPage(); + registerPage.sendRegisterForm(storage.user); } @After("@DeleteUserAfterwards") From fa237960eeb0a6e9b13452f4727558d713be81e0 Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Thu, 20 May 2021 16:42:07 +0200 Subject: [PATCH 27/35] remove unused method --- .../java/posters/cucumber/support/RegisterSupport.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/test/java/posters/cucumber/support/RegisterSupport.java b/src/test/java/posters/cucumber/support/RegisterSupport.java index 39fa2d9..93e9b6d 100644 --- a/src/test/java/posters/cucumber/support/RegisterSupport.java +++ b/src/test/java/posters/cucumber/support/RegisterSupport.java @@ -26,15 +26,6 @@ public void setUpUser(String firstName, String lastName, String eMail, String pa storage.user = new User(firstName, lastName, eMail, password); }; - @Given("^login page is opened after registration$") - public void registerUserSetup() - { - // use the user coming from dependency injection - // registerUser(storage.user); - var registerPage = OpenPageFlows.registerPage(); - registerPage.sendRegisterForm(storage.user); - } - @After("@DeleteUserAfterwards") public void deleteUser() { From 446951cdaa53ef1f5c4fd4a63a2e817acb43f5a3 Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Thu, 20 May 2021 16:49:48 +0200 Subject: [PATCH 28/35] improve isComponentAvailable method of AddressForm --- src/test/java/posters/pageobjects/components/AddressForm.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/posters/pageobjects/components/AddressForm.java b/src/test/java/posters/pageobjects/components/AddressForm.java index daf436b..7c20d46 100644 --- a/src/test/java/posters/pageobjects/components/AddressForm.java +++ b/src/test/java/posters/pageobjects/components/AddressForm.java @@ -37,7 +37,8 @@ public AddressForm(String title) public void isComponentAvailable() { - $("#fullName").shouldBe(visible); + nameField.shouldBe(visible); + zipField.shouldBe(visible); } public void validateStructure() From 405088057b2d38c59cd3fee6bd4d2faf67de64cb Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Wed, 26 May 2021 17:40:27 +0200 Subject: [PATCH 29/35] add isPage method to check if the expected page is loaded without errors --- .../pageobjects/pages/AbstractPageObject.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/test/java/posters/pageobjects/pages/AbstractPageObject.java b/src/test/java/posters/pageobjects/pages/AbstractPageObject.java index 8d38231..188be7a 100644 --- a/src/test/java/posters/pageobjects/pages/AbstractPageObject.java +++ b/src/test/java/posters/pageobjects/pages/AbstractPageObject.java @@ -4,9 +4,11 @@ import org.apache.commons.lang3.StringUtils; +import com.codeborne.selenide.ex.UIAssertionError; import com.xceptance.neodymium.util.Neodymium; import com.xceptance.neodymium.visual.ai.AI; +import io.qameta.allure.Step; import posters.pageobjects.components.Title; /** @@ -21,6 +23,20 @@ public AbstractPageObject isExpectedPage() return this; } + @Step("ensure the correct page was loaded") + public boolean isPage() + { + try + { + isExpectedPage(); + return true; + } + catch (UIAssertionError e) + { + return false; + } + } + abstract public void validateStructure(); public void validateVisual(String testCaseName) From d02ffb45f60e7ce37b8efaa901744b6022178e83 Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Wed, 26 May 2021 17:53:46 +0200 Subject: [PATCH 30/35] check if account page is open while cleanup and don't open it again --- .../java/posters/cucumber/support/RegisterSupport.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/test/java/posters/cucumber/support/RegisterSupport.java b/src/test/java/posters/cucumber/support/RegisterSupport.java index 93e9b6d..8ba3419 100644 --- a/src/test/java/posters/cucumber/support/RegisterSupport.java +++ b/src/test/java/posters/cucumber/support/RegisterSupport.java @@ -6,6 +6,7 @@ import io.cucumber.java.en.When; import posters.dataobjects.User; import posters.pageobjects.pages.browsing.HomePage; +import posters.pageobjects.pages.user.AccountOverviewPage; import posters.pageobjects.pages.user.LoginPage; import posters.pageobjects.pages.user.RegisterPage; @@ -49,7 +50,11 @@ public void deleteUser() } // goto account page - var accountOverviewPage = homePage.userMenu.openAccountOverview(); + var accountOverviewPage = new AccountOverviewPage(); + if (!accountOverviewPage.isPage()) + { + accountOverviewPage = homePage.userMenu.openAccountOverview(); + } accountOverviewPage.validateStructure(); // goto personal data page From 4c1865de5c822050517ad3ccf061569949167eec Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Fri, 4 Jun 2021 12:39:59 +0200 Subject: [PATCH 31/35] remove unneeded new line --- src/test/java/posters/cucumber/support/GlobalStorage.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/posters/cucumber/support/GlobalStorage.java b/src/test/java/posters/cucumber/support/GlobalStorage.java index d3faa7e..40f6641 100644 --- a/src/test/java/posters/cucumber/support/GlobalStorage.java +++ b/src/test/java/posters/cucumber/support/GlobalStorage.java @@ -35,7 +35,6 @@ public Product addProduct(Product product) // increase amount of product if already there or add the whole product if (products.contains(product)) { - return updateCountOfProduct(product.getName(), product.getSize(), product.getStyle(), product.getAmount() + 1); } else From 3dde36537b1d78c1f95ad0d3de0a1fea1ca39537 Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Fri, 1 Oct 2021 12:30:39 +0200 Subject: [PATCH 32/35] improve removeProduct method --- .../posters/cucumber/support/GlobalStorage.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/test/java/posters/cucumber/support/GlobalStorage.java b/src/test/java/posters/cucumber/support/GlobalStorage.java index 40f6641..2a4f8d7 100644 --- a/src/test/java/posters/cucumber/support/GlobalStorage.java +++ b/src/test/java/posters/cucumber/support/GlobalStorage.java @@ -59,17 +59,17 @@ public Product getProductFromArrayList(String name, String size, String style) public Product updateCountOfProduct(String name, String size, String style, int amount) { - var updateProducht = getProductFromArrayList(name, size, style); - String unitPrice = updateProducht.getUnitPrice(); - products.remove(products.indexOf(updateProducht)); - updateProducht = new Product(name, unitPrice, style, size, amount); - products.add(updateProducht); - return updateProducht; + var product = getProductFromArrayList(name, size, style); + String unitPrice = product.getUnitPrice(); + products.remove(products.indexOf(product)); + product = new Product(name, unitPrice, style, size, amount); + products.add(product); + return product; } public void removeProduct(String name, String style, String size) { - var updateProducht = getProductFromArrayList(name, size, style); - products.remove(products.indexOf(updateProducht)); + var product = getProductFromArrayList(name, size, style); + products.remove(product); } } From bbaf05356929b94553c19b5ea5c493a6700e2481 Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Fri, 1 Oct 2021 14:23:33 +0200 Subject: [PATCH 33/35] fix toString method for Product --- src/test/java/posters/dataobjects/Product.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/posters/dataobjects/Product.java b/src/test/java/posters/dataobjects/Product.java index e72caec..7f1c37b 100644 --- a/src/test/java/posters/dataobjects/Product.java +++ b/src/test/java/posters/dataobjects/Product.java @@ -83,7 +83,7 @@ public int getAmount() @Override public String toString() { - return String.format("Product [name()=%s, size()=%s, style()=%s, price()=%s, amount()=%]", getName(), getSize(), getStyle(), getUnitPrice(), getAmount()); + return String.format("Product [name()=%s, size()=%s, style()=%s, price()=%s, amount()=%x]", getName(), getSize(), getStyle(), getUnitPrice(), getAmount()); } @Override From 4a07108b9c41d61354122ced8bfb70c39d77eb1f Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Fri, 1 Oct 2021 15:12:12 +0200 Subject: [PATCH 34/35] open mini cart before going to cart page --- src/test/java/posters/pageobjects/components/MiniCart.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/posters/pageobjects/components/MiniCart.java b/src/test/java/posters/pageobjects/components/MiniCart.java index 835bcbf..0b2a1f7 100644 --- a/src/test/java/posters/pageobjects/components/MiniCart.java +++ b/src/test/java/posters/pageobjects/components/MiniCart.java @@ -61,6 +61,7 @@ public CartPage openCartPage() { // Open the cart // Click on the button to go to the Cart + openMiniCart(); miniCart.find(".goToCart").click(); return new CartPage().isExpectedPage(); } From e6c496d03b3cc30254ab0ea82cd07eac1bc2551d Mon Sep 17 00:00:00 2001 From: Olha Omelianchuk Date: Fri, 1 Oct 2021 15:12:28 +0200 Subject: [PATCH 35/35] remove isPage method --- .../cucumber/support/RegisterSupport.java | 5 +---- .../pageobjects/pages/AbstractPageObject.java | 16 ---------------- 2 files changed, 1 insertion(+), 20 deletions(-) diff --git a/src/test/java/posters/cucumber/support/RegisterSupport.java b/src/test/java/posters/cucumber/support/RegisterSupport.java index 8ba3419..0f957cc 100644 --- a/src/test/java/posters/cucumber/support/RegisterSupport.java +++ b/src/test/java/posters/cucumber/support/RegisterSupport.java @@ -51,10 +51,7 @@ public void deleteUser() // goto account page var accountOverviewPage = new AccountOverviewPage(); - if (!accountOverviewPage.isPage()) - { - accountOverviewPage = homePage.userMenu.openAccountOverview(); - } + accountOverviewPage = homePage.userMenu.openAccountOverview(); accountOverviewPage.validateStructure(); // goto personal data page diff --git a/src/test/java/posters/pageobjects/pages/AbstractPageObject.java b/src/test/java/posters/pageobjects/pages/AbstractPageObject.java index 188be7a..8d38231 100644 --- a/src/test/java/posters/pageobjects/pages/AbstractPageObject.java +++ b/src/test/java/posters/pageobjects/pages/AbstractPageObject.java @@ -4,11 +4,9 @@ import org.apache.commons.lang3.StringUtils; -import com.codeborne.selenide.ex.UIAssertionError; import com.xceptance.neodymium.util.Neodymium; import com.xceptance.neodymium.visual.ai.AI; -import io.qameta.allure.Step; import posters.pageobjects.components.Title; /** @@ -23,20 +21,6 @@ public AbstractPageObject isExpectedPage() return this; } - @Step("ensure the correct page was loaded") - public boolean isPage() - { - try - { - isExpectedPage(); - return true; - } - catch (UIAssertionError e) - { - return false; - } - } - abstract public void validateStructure(); public void validateVisual(String testCaseName)