diff options
Diffstat (limited to 'src/main/java')
8 files changed, 170 insertions, 0 deletions
diff --git a/src/main/java/com/mavlushechka/a1qa/models/Domain.java b/src/main/java/com/mavlushechka/a1qa/models/Domain.java new file mode 100644 index 0000000..d5310d4 --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/models/Domain.java @@ -0,0 +1,19 @@ +package com.mavlushechka.a1qa.models; + +public enum Domain { + + ORG("org"), COUK("co.uk"), NET("net"), GOV("gov"), DE("de"), FR("fr"), NL("nl"), COM("com"), BE("be"), JPG("jpg"); + + private final String DOMAIN; + + + Domain(String domain) { + this.DOMAIN = domain; + } + + @Override + public String toString() { + return DOMAIN; + } + +} diff --git a/src/main/java/com/mavlushechka/a1qa/models/Email.java b/src/main/java/com/mavlushechka/a1qa/models/Email.java new file mode 100644 index 0000000..5e82ad0 --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/models/Email.java @@ -0,0 +1,4 @@ +package com.mavlushechka.a1qa.models; + +public record Email(String username, String server, Domain domain) { +} diff --git a/src/main/java/com/mavlushechka/a1qa/models/Interest.java b/src/main/java/com/mavlushechka/a1qa/models/Interest.java new file mode 100644 index 0000000..8bb2d9a --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/models/Interest.java @@ -0,0 +1,18 @@ +package com.mavlushechka.a1qa.models; + +import com.mavlushechka.a1qa.elements.Button; +import com.mavlushechka.a1qa.utils.StringUtils; +import org.openqa.selenium.By; + +public enum Interest { + + BALLS(), CABLES(), CINNAMON(), CLOSETS(), COTTON(), DOUGH(), DRYWALL(), ENVELOPPES(), FAUCETS(), MULLETS(), POLO(), PONIES(), POSTITS(), PURPLE(), QUESTIONS(), SELECTALL(), SNAILS(), SQUARES(), TIRES(), UNSELECTALL(), WINDOWS(); + + public final Button checkbox; + + + Interest() { + checkbox = new Button(By.xpath("//label[contains(@class, 'checkbox__label') and contains(@for, 'interest_%s')]".formatted(toString().toLowerCase())), StringUtils.capitalizeFirstLetter(toString().toLowerCase()) + " checkbox"); + } + +} diff --git a/src/main/java/com/mavlushechka/a1qa/models/User.java b/src/main/java/com/mavlushechka/a1qa/models/User.java new file mode 100644 index 0000000..22ab581 --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/models/User.java @@ -0,0 +1,4 @@ +package com.mavlushechka.a1qa.models; + +public record User(Email email, String password) { +} diff --git a/src/main/java/com/mavlushechka/a1qa/pages/FirstCardForm.java b/src/main/java/com/mavlushechka/a1qa/pages/FirstCardForm.java new file mode 100644 index 0000000..df5608b --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/pages/FirstCardForm.java @@ -0,0 +1,42 @@ +package com.mavlushechka.a1qa.pages; + +import com.mavlushechka.a1qa.elements.Button; +import com.mavlushechka.a1qa.elements.Field; +import com.mavlushechka.a1qa.elements.Label; +import com.mavlushechka.a1qa.models.User; +import org.openqa.selenium.By; + +public class FirstCardForm extends BaseForm { + + private final Field passwordField = new Field(By.xpath("//*[contains(@class, 'login-form__field-row') and not(contains(@class, 'align'))]//input"), "Password"); + private final Field emailField = new Field(By.xpath("//*[contains(@class, 'login-form__field-row')]//*[contains(@class, 'align__cell')]//input"), "Email"); + private final Field emailServerField = new Field(By.xpath("//*[contains(@class, 'login-form__field-row')]//*[contains(@class, 'align__cell')]//input[contains(@placeholder, 'Domain')]"), "Domain"); + private final Button dropdownOpenerButton = new Button(By.xpath("//*[contains(@class, 'dropdown__opener')]"), "Dropdown opener"); + private final Button termsAndConditionsCheckbox = new Button(By.xpath("//*[contains(@class, 'checkbox')]"), "Terms and conditions checkbox"); + private final Button nextButton = new Button(By.xpath("//*[contains(@class, 'button-container__secondary')]//a[contains(@class, 'button--secondary') and not(contains(@class, 'u-right'))]"), "Next"); + + private final String dropdownListItemXpath = "//*[contains(@class, 'dropdown__list')]//*[contains(text(), '%s')]"; + + + public FirstCardForm() { + super(new Label(By.xpath("//*[contains(@class, 'login-form')]"), "First card"), "First card"); + } + + public void performAuthorization(User user) { + clearFields(); + passwordField.sendKeys(user.password(), true); + emailField.sendKeys(user.email().username()); + emailServerField.sendKeys(user.email().server()); + dropdownOpenerButton.click(); + new Button(By.xpath(dropdownListItemXpath.formatted(user.email().domain())), "Domain").click(); + termsAndConditionsCheckbox.click(); + nextButton.click(); + } + + private void clearFields() { + passwordField.clear(); + emailField.clear(); + emailServerField.clear(); + } + +} diff --git a/src/main/java/com/mavlushechka/a1qa/pages/GamePage.java b/src/main/java/com/mavlushechka/a1qa/pages/GamePage.java new file mode 100644 index 0000000..740f634 --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/pages/GamePage.java @@ -0,0 +1,38 @@ +package com.mavlushechka.a1qa.pages; + +import com.mavlushechka.a1qa.elements.Label; +import com.mavlushechka.a1qa.models.Interest; +import com.mavlushechka.a1qa.models.User; +import org.openqa.selenium.By; + +public class GamePage extends BaseForm { + + private final FirstCardForm firstCardForm = new FirstCardForm(); + private final SecondCardForm secondCardForm = new SecondCardForm(); + + + public GamePage() { + super(new Label(By.xpath("//*[@id='app']//*[contains(@class, 'game')]"), "Game view"), "Game"); + } + + public boolean isFirstCardFormOpened() { + return firstCardForm.isOpened(); + } + + public void performAuthorization(User user) { + firstCardForm.performAuthorization(user); + } + + public boolean isSecondCardOpened() { + return secondCardForm.isOpened(); + } + + public void select(Interest interest) { + secondCardForm.select(interest); + } + + public void clickDownloadImageButton() { + secondCardForm.clickDownloadImageButton(); + } + +} diff --git a/src/main/java/com/mavlushechka/a1qa/pages/HomePage.java b/src/main/java/com/mavlushechka/a1qa/pages/HomePage.java new file mode 100644 index 0000000..ee52ba9 --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/pages/HomePage.java @@ -0,0 +1,20 @@ +package com.mavlushechka.a1qa.pages; + +import com.mavlushechka.a1qa.elements.Button; +import com.mavlushechka.a1qa.elements.Label; +import org.openqa.selenium.By; + +public class HomePage extends BaseForm { + + private final Button nextPageButton = new Button(By.xpath("//a[contains(@class, 'start__link')]"), "Next page"); + + + public HomePage() { + super(new Label(By.xpath("//*[@id='app']//*[contains(@class, 'start')]"), "App container"), "Home"); + } + + public void clickNextPageButton() { + nextPageButton.click(); + } + +} diff --git a/src/main/java/com/mavlushechka/a1qa/pages/SecondCardForm.java b/src/main/java/com/mavlushechka/a1qa/pages/SecondCardForm.java new file mode 100644 index 0000000..ea381cb --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/pages/SecondCardForm.java @@ -0,0 +1,25 @@ +package com.mavlushechka.a1qa.pages; + +import com.mavlushechka.a1qa.elements.Button; +import com.mavlushechka.a1qa.elements.Label; +import com.mavlushechka.a1qa.models.Interest; +import org.openqa.selenium.By; + +public class SecondCardForm extends BaseForm { + + private final Button downloadImageButton = new Button(By.xpath("//button[contains(@class, 'avatar-and-interests__avatar-upload-button')]"), "Download image"); + + + public SecondCardForm() { + super(new Label(By.xpath("//*[contains(@class, 'avatar-and-interests-page')]"), "Second card"), "Second card"); + } + + public void select(Interest interest) { + interest.checkbox.click(); + } + + public void clickDownloadImageButton() { + downloadImageButton.click(); + } + +} |