From 56c0f4595cb13435bb54ea61b2cd5f13e6402505 Mon Sep 17 00:00:00 2001 From: 3e6pa117 <82040814+3e6pa117@users.noreply.github.com> Date: Mon, 17 Nov 2025 21:46:41 +0100 Subject: [PATCH 1/4] Sprint 4 Olga --- .../automation/InternalMenuAction.java | 5 + .../cz/czechitas/automation/LoginAction.java | 2 + .../automation/OrderDetailAction.java | 26 ++- .../automation/SeleniumActionFacade.java | 2 + .../cz/czechitas/automation/UsersAction.java | 26 +++ .../assertion/ApplicationDetailAssertion.java | 7 +- .../automation/assertion/AssertionFacade.java | 2 + .../automation/assertion/LoginAssertion.java | 5 + .../automation/assertion/OrderAssertion.java | 4 + .../assertion/UsersAssertation.java | 32 ++++ .../olgaCreateApplicationAsParent.java | 168 +++++++++++++++++ .../automation/olgaCreateOrderAsTeacher.java | 175 ++++++++++++++++++ .../olgaUserRegistrationAndLogin.java | 123 ++++++++++++ 13 files changed, 573 insertions(+), 4 deletions(-) create mode 100644 src/main/java/cz/czechitas/automation/UsersAction.java create mode 100644 src/test/java/cz/czechitas/automation/assertion/UsersAssertation.java create mode 100644 src/test/java/cz/czechitas/automation/olgaCreateApplicationAsParent.java create mode 100644 src/test/java/cz/czechitas/automation/olgaCreateOrderAsTeacher.java create mode 100644 src/test/java/cz/czechitas/automation/olgaUserRegistrationAndLogin.java diff --git a/src/main/java/cz/czechitas/automation/InternalMenuAction.java b/src/main/java/cz/czechitas/automation/InternalMenuAction.java index efd364d..9aeacc9 100644 --- a/src/main/java/cz/czechitas/automation/InternalMenuAction.java +++ b/src/main/java/cz/czechitas/automation/InternalMenuAction.java @@ -48,4 +48,9 @@ void goToExportsSection() { var exportsMenuItem = elementFinder.findByXPath("//*[@id='adminNavbar']//a[contains(text(), 'Exporty')]"); exportsMenuItem.click(); } + + void goToUsersSection() { + var usersMenuItem = elementFinder.findByXPath("//*[@id='adminNavbar']//a[contains(text(), 'Uživatelé')]"); + usersMenuItem.click(); + } } diff --git a/src/main/java/cz/czechitas/automation/LoginAction.java b/src/main/java/cz/czechitas/automation/LoginAction.java index d34a908..ab0da6e 100644 --- a/src/main/java/cz/czechitas/automation/LoginAction.java +++ b/src/main/java/cz/czechitas/automation/LoginAction.java @@ -3,6 +3,8 @@ import javax.annotation.ParametersAreNonnullByDefault; import java.util.Objects; +import static org.assertj.core.api.Assertions.assertThat; + /** * Login/logout specific selenium actions * diff --git a/src/main/java/cz/czechitas/automation/OrderDetailAction.java b/src/main/java/cz/czechitas/automation/OrderDetailAction.java index 445bc67..2b33d4d 100644 --- a/src/main/java/cz/czechitas/automation/OrderDetailAction.java +++ b/src/main/java/cz/czechitas/automation/OrderDetailAction.java @@ -1,5 +1,7 @@ package cz.czechitas.automation; +import org.openqa.selenium.Keys; + import java.util.Objects; /** @@ -106,8 +108,13 @@ void insertFullAddress(String fullAddress) { } void insertStartTime(String arrivalTime) { - var arrivalTimeInput = elementFinder.findByXPath("//*[@id=\"nature-start_time\"]"); + var arrivalTimeField = elementFinder.findByXPath("//*[@id=\"nature-start_time\"]"); + arrivalTimeField.click(); + var arrivalTimeInput = elementFinder.findByXPath("/html/body/div[8]/div/div[1]/input"); + arrivalTimeInput.click(); arrivalTimeInput.sendKeys(arrivalTime); + arrivalTimeInput.sendKeys(Keys.ENTER); + arrivalTimeField.sendKeys(Keys.ENTER); } void selectBreakfastStartToSchoolInNature() { @@ -142,7 +149,13 @@ void selectDinnerStartToSchoolInNature() { void insertEndTime(String endTime) { var arrivalTimeInput = elementFinder.findByXPath("//*[@id=\"nature-end_time\"]"); - arrivalTimeInput.sendKeys(endTime); + //arrivalTimeInput.sendKeys(endTime); + arrivalTimeInput.click(); + var endTimeInput = elementFinder.findByCssSelector("div.flatpickr-calendar:nth-child(11) > div:nth-child(1) > div:nth-child(1) > input:nth-child(1)"); + endTimeInput.click(); + endTimeInput.sendKeys(endTime); + endTimeInput.sendKeys(Keys.ENTER); + arrivalTimeInput.sendKeys(Keys.ENTER); } void selectBreakfastEndToSchoolInNature() { @@ -184,4 +197,13 @@ void saveSchoolInNatureOrder() { var saveButton = elementFinder.findByXPath("/html/body/div[1]/div/div/div/div/div/form/div[5]/div[2]/div[2]/input"); saveButton.click(); } + void insertICO(String ico) { + Objects.requireNonNull(ico); + + var icoInputBox = elementFinder.findByXPath("//*[@id='ico']"); + icoInputBox.sendKeys(ico); + icoInputBox.sendKeys(Keys.ENTER); + /*var fullAddressElement = elementFinder.findByXPath("//*[@id='address']"); + fullAddressElement.click();*/ + } } diff --git a/src/main/java/cz/czechitas/automation/SeleniumActionFacade.java b/src/main/java/cz/czechitas/automation/SeleniumActionFacade.java index 0980d6a..eed37bf 100644 --- a/src/main/java/cz/czechitas/automation/SeleniumActionFacade.java +++ b/src/main/java/cz/czechitas/automation/SeleniumActionFacade.java @@ -28,6 +28,7 @@ final class SeleniumActionFacade { final ApplicationDetail applicationDetailsSection; final ProfileAction profileSection; final RegisterAction registerSection; + final UsersAction usersSection; public SeleniumActionFacade(WebDriver driver) { var elementFinder = new ElementFinder(Objects.requireNonNull(driver)); @@ -40,6 +41,7 @@ public SeleniumActionFacade(WebDriver driver) { this.applicationDetailsSection = new ApplicationDetail(elementFinder); this.profileSection = new ProfileAction(elementFinder); this.registerSection = new RegisterAction(elementFinder); + this.usersSection = new UsersAction(elementFinder); } void waitFor(long seconds) { diff --git a/src/main/java/cz/czechitas/automation/UsersAction.java b/src/main/java/cz/czechitas/automation/UsersAction.java new file mode 100644 index 0000000..35ba5bb --- /dev/null +++ b/src/main/java/cz/czechitas/automation/UsersAction.java @@ -0,0 +1,26 @@ +package cz.czechitas.automation; + +import java.util.Objects; + +final class UsersAction { + + private final ElementFinder elementFinder; + + UsersAction(ElementFinder elementFinder) { + this.elementFinder = Objects.requireNonNull(elementFinder); + } + + /** + * Click Vytvorit novou prihlasku on table view + */ + void clickCreateNewUserButton() { + var createUserButton = elementFinder.findByCssSelector("a.btn-info"); + createUserButton.click(); + } + + void search(String textToSearch) { + var searchInput = elementFinder.findByXPath("//input[@type='search']"); + searchInput.clear(); + searchInput.sendKeys(textToSearch); + } +} diff --git a/src/test/java/cz/czechitas/automation/assertion/ApplicationDetailAssertion.java b/src/test/java/cz/czechitas/automation/assertion/ApplicationDetailAssertion.java index 5c8d176..9e50289 100644 --- a/src/test/java/cz/czechitas/automation/assertion/ApplicationDetailAssertion.java +++ b/src/test/java/cz/czechitas/automation/assertion/ApplicationDetailAssertion.java @@ -30,12 +30,15 @@ public void checkPaymentMethod(String paymentMethod) { public void checkFirstName(String firstname) { var firstNameElement = elementFinder.findByXPath("//table/tbody//td[text()='Křestní jméno žáka:']/../td[2]"); - assertThat(firstNameElement.getText()).isEqualTo(firstname); + //var firstNameElement = elementFinder.findByCssSelector("table.border-top > tbody:nth-child(1) > tr:nth-child(4) > td:nth-child(2)"); + //assertThat(firstNameElement.getText()).isEqualTo(firstname); + assertThat(firstNameElement.getText()).isEqualToIgnoringCase(firstname); } public void checkLastName(String lastname) { var lastNameElement = elementFinder.findByXPath("//table/tbody//td[text()='Příjmení žáka:']/../td[2]"); - assertThat(lastNameElement.getText()).isEqualTo(lastname); + //assertThat(lastNameElement.getText()).isEqualTo(lastname); + assertThat(lastNameElement.getText()).isEqualToIgnoringCase(lastname); } public void checkDateOfBirth(String birthdate) { diff --git a/src/test/java/cz/czechitas/automation/assertion/AssertionFacade.java b/src/test/java/cz/czechitas/automation/assertion/AssertionFacade.java index 813b650..aed28d3 100644 --- a/src/test/java/cz/czechitas/automation/assertion/AssertionFacade.java +++ b/src/test/java/cz/czechitas/automation/assertion/AssertionFacade.java @@ -20,6 +20,7 @@ public final class AssertionFacade { public final HomePageAssertion homePageSection; public final GeneralAssertion generalSection; public final OrderAssertion orderSection; + public final UsersAssertation usersSection; public AssertionFacade(WebDriver webDriver) { var elementFinder = new ElementFinder(webDriver); @@ -29,5 +30,6 @@ public AssertionFacade(WebDriver webDriver) { this.homePageSection = new HomePageAssertion(elementFinder); this.generalSection = new GeneralAssertion(elementFinder, webDriver); this.orderSection = new OrderAssertion(elementFinder); + this.usersSection = new UsersAssertation(elementFinder); } } diff --git a/src/test/java/cz/czechitas/automation/assertion/LoginAssertion.java b/src/test/java/cz/czechitas/automation/assertion/LoginAssertion.java index 003e723..4d48156 100644 --- a/src/test/java/cz/czechitas/automation/assertion/LoginAssertion.java +++ b/src/test/java/cz/czechitas/automation/assertion/LoginAssertion.java @@ -39,4 +39,9 @@ public void checkUserIsNotLoggedIn() { var loggedInText = elementFinder.findByXPath("/html/body/div/header/nav/div/div[2]/a"); assertThat(loggedInText.getText()).isEqualTo("Přihlásit"); } + + public void checkErrorMessage() { + var errorMessage = elementFinder.findByCssSelector(".invalid-feedback > strong:nth-child(1)"); + assertThat(errorMessage.getText()).isEqualTo("Tyto přihlašovací údaje neodpovídají žadnému záznamu."); + } } \ No newline at end of file diff --git a/src/test/java/cz/czechitas/automation/assertion/OrderAssertion.java b/src/test/java/cz/czechitas/automation/assertion/OrderAssertion.java index 8f5a7ef..084e532 100644 --- a/src/test/java/cz/czechitas/automation/assertion/OrderAssertion.java +++ b/src/test/java/cz/czechitas/automation/assertion/OrderAssertion.java @@ -43,4 +43,8 @@ public void checkNumberOfOrders(int orderCount) { assertThat(ordersCountElement.getText()).contains("Zobrazeno " + orderCount + " až " + orderCount + " záznamů z " + orderCount); } + public void checkOrderIsCreated () { + var message = elementFinder.findByXPath("/html/body/div/div/div/div/div/div/h3"); + assertThat(message.getText()).contains("Děkujeme za objednávku"); + } } diff --git a/src/test/java/cz/czechitas/automation/assertion/UsersAssertation.java b/src/test/java/cz/czechitas/automation/assertion/UsersAssertation.java new file mode 100644 index 0000000..eb064c3 --- /dev/null +++ b/src/test/java/cz/czechitas/automation/assertion/UsersAssertation.java @@ -0,0 +1,32 @@ +package cz.czechitas.automation.assertion; + +import cz.czechitas.automation.ElementFinder; + +import javax.annotation.ParametersAreNonnullByDefault; +import java.util.Objects; + +import static org.assertj.core.api.Assertions.assertThat; +/** + * Application specific assertions + * + * @author Jiri Koudelka + * @since 1.0.0 + */ +@ParametersAreNonnullByDefault +public final class UsersAssertation { + + private final ElementFinder elementFinder; + + UsersAssertation(ElementFinder elementFinder) { + this.elementFinder = Objects.requireNonNull(elementFinder); + } + + public void checkColumnExists(String columnName) { + var column = elementFinder.findByXPath("//table[@id='DataTables_Table_0']/thead/tr"); + assertThat(column.getText()).contains(columnName); + } + public void checkParentRole() { + var lastNameElement = elementFinder.findByCssSelector("td:nth-child(3)"); + assertThat(lastNameElement.getText()).isEqualTo("Rodič"); + } +} diff --git a/src/test/java/cz/czechitas/automation/olgaCreateApplicationAsParent.java b/src/test/java/cz/czechitas/automation/olgaCreateApplicationAsParent.java new file mode 100644 index 0000000..592b57e --- /dev/null +++ b/src/test/java/cz/czechitas/automation/olgaCreateApplicationAsParent.java @@ -0,0 +1,168 @@ +package cz.czechitas.automation; +import org.junit.jupiter.api.Test; + +import java.util.Map; + +final class olgaCreateApplicationAsParent extends TestRunner { + + Map credentials = Map.of( + "masterEmail", "ladymaster@gmail.com", + "masterPassword","Lady123", + "masterName", "Lady Galadriel", + "parentEmail", "3e6pa+sprint@protonmail.com", + "parentPassword", "A1sdfg", + "parentName", "John Baggins" + ); + Map application = Map.of( + "termHappy", "02.02. - 06.02.2026" + + ); + + @Test + void smokePageUrlTest() { + browser.headerMenu.goToHomePage(); + asserter.generalSection.checkCurrentUrl("https://team8-2022brno.herokuapp.com/"); + } + @Test + void createApplicationRequiredFieldsHappyTest() { + + var firstName = browser.generateRandomName(6); + var lastName = browser.generateRandomName(8); + Map newApplicationData = Map.of( + "term", "02.02. - 06.02.2026", + "firstName", firstName, + "lastName", lastName, + "birthday", "15.12.2015", + "paymentMethod", "Hotově" + ); + logIn(credentials.get("parentEmail"), credentials.get("parentPassword"), credentials.get("parentName")); + + browser.waitFor(2); + browser.applicationSection.clickCreateNewApplicationButton(); + browser.waitFor(2); + browser.applicationSection.selectProgrammingSection(); + browser.applicationSection.clickCreatePythonApplicationButton(); + + fillOutApplicationForm(newApplicationData); + browser.waitFor(2); + + asserter.applicationDetailSection.checkTerm(newApplicationData.get("term")); + asserter.applicationDetailSection.checkFirstName(newApplicationData.get("firstName")); + asserter.applicationDetailSection.checkLastName(newApplicationData.get("lastName")); + asserter.applicationDetailSection.checkDateOfBirth(newApplicationData.get("birthday")); + asserter.applicationDetailSection.checkPaymentMethod(newApplicationData.get("paymentMethod")); + } + @Test + void createApplicationHappyTest() { + var firstName = browser.generateRandomName(6); + var lastName = browser.generateRandomName(8); + var note = browser.generateRandomName(25); + var healthDisabilityNote = browser.generateRandomName(25); + + Map applicationData = Map.of( + + "term", "02.02. - 06.02.2026", + "firstName", firstName, + "lastName", lastName, + "birthday", "15.12.2015", + "note", note, + "paymentMethod", "Bankovní převod", + "healthDisability", "ano", + "healthDisabilityNote", healthDisabilityNote + ); + logIn(credentials.get("parentEmail"), credentials.get("parentPassword"), credentials.get("parentName")); + + browser.waitFor(2); + browser.applicationSection.clickCreateNewApplicationButton(); + browser.waitFor(2); + browser.applicationSection.selectProgrammingSection(); + browser.applicationSection.clickCreatePythonApplicationButton(); + + fillOutApplicationForm(applicationData); + browser.waitFor(2); + + asserter.applicationDetailSection.checkTerm(applicationData.get("term")); + asserter.applicationDetailSection.checkFirstName(applicationData.get("firstName")); + asserter.applicationDetailSection.checkLastName(applicationData.get("lastName")); + asserter.applicationDetailSection.checkDateOfBirth(applicationData.get("birthday")); + asserter.applicationDetailSection.checkPaymentMethod(applicationData.get("paymentMethod")); + asserter.applicationDetailSection.checkNote(applicationData.get("note")); + asserter.applicationDetailSection.checkHealthDisabilityNote(applicationData.get("healthDisabilityNote")); + + //browser.loginSection.logout(); + } + + @Test + void studentYoungerThan4() { + var firstName = browser.generateRandomName(8); + var lastName = browser.generateRandomName(10); + var note = browser.generateRandomName(35); + var healthDisabilityNote = browser.generateRandomName(42); + + Map applicationData = Map.of( + + "term", "28.11.2025", + "firstName", firstName, + "lastName", lastName, + "birthday", "29.11.2021", + "paymentMethod", "Bankovní převod" + ); + logIn(credentials.get("parentEmail"), credentials.get("parentPassword"), credentials.get("parentName")); + + browser.waitFor(2); + browser.applicationSection.clickCreateNewApplicationButton(); + browser.waitFor(2); + browser.applicationSection.selectProgrammingSection(); + browser.applicationSection.clickCreatePythonApplicationButton(); + + fillOutApplicationForm(applicationData); + browser.waitFor(2); + + //asserter. + //browser.loginSection.logout(); + } + + // FUnctions + void logIn(String email, String password, String name) { + browser.loginSection.clickLoginMenuLink(); + browser.loginSection.insertEmail(email); + browser.loginSection.insertPassword(password); + browser.loginSection.clickLoginButton(); + asserter.loginSection.checkUserIsLoggedIn(name); + //asserter.generalSection.checkCurrentUrl("https://team8-2022brno.herokuapp.com/zaki"); + } + + void fillOutApplicationForm(Map applicationData) { + browser.applicationDetailsSection.selectTerm(applicationData.get("term")); + browser.applicationDetailsSection.insertStudentFirstName(applicationData.get("firstName")); + browser.applicationDetailsSection.insertStudentLastName(applicationData.get("lastName")); + browser.applicationDetailsSection.insertBirthdate(applicationData.get("birthday")); + if (applicationData.containsKey("note")) { + browser.applicationDetailsSection.insertNote(applicationData.get("note")); + } + browser.applicationDetailsSection.clickAcceptTermsCheckbox(); + switch (applicationData.get("paymentMethod")) { + case "Hotově": + browser.applicationDetailsSection.selectCashPaymentMethod(); + break; + case "Bankovní převod": + browser.applicationDetailsSection.selectBankTransferPaymentMethod(); + break; + case "FKSP": + browser.applicationDetailsSection.selectFKSPPaymentMethod(); + break; + case "Složenka": + browser.applicationDetailsSection.selectSlipPaymentMethod(); + break; + } + switch (applicationData.get("healthDisability")) { + case "ano": + browser.applicationDetailsSection.clickHealthDisabilityCheckbox(); + browser.waitFor(1); + browser.applicationDetailsSection.insertHealthDisabilityNote(applicationData.get("healthDisabilityNote")); + break; + } + browser.applicationDetailsSection.clickCreateApplicationButton(); + } + +} diff --git a/src/test/java/cz/czechitas/automation/olgaCreateOrderAsTeacher.java b/src/test/java/cz/czechitas/automation/olgaCreateOrderAsTeacher.java new file mode 100644 index 0000000..89999fc --- /dev/null +++ b/src/test/java/cz/czechitas/automation/olgaCreateOrderAsTeacher.java @@ -0,0 +1,175 @@ +package cz.czechitas.automation; + +import org.junit.jupiter.api.Test; + +import java.util.Map; + +final class olgaCreateOrderAsTeacher extends TestRunner { + + Map credentials = Map.of( + "masterEmail", "ladymaster@gmail.com", + "masterPassword","Lady123", + "masterName", "Lady Galadriel" + ); + + @Test + void smokePageUrlTest() { + browser.headerMenu.goToKindergartenAndSchoolSection(); + asserter.generalSection.checkCurrentUrl("https://team8-2022brno.herokuapp.com/objednavka/pridat"); + } + + @Test + void createOrderAsTeacherCampRequired() { + Map orderClientDetails = Map.of( + "client", "3v1", + "ICO", "12345678",//string <=15// + "address", "60200 Bratislavska 12, Brno", + "substitute", "Bilbo Baggins", + "contact_name", "Frodo", + "contact_surname", "Baggins", + "contact_phone", "123456789", //phone number + "contact_mail", "email@email.com" //email + ); + Map orderDatesDetails = Map.of( + "startDate1", "01.12.2025", + //"startDate2", "date", + //"startDate3", "date", + "endDate1", "05.12.2025" + //"endDate2", "date", + //"endDate3", "date" + ); + Map orderCampDetails = Map.of( + "students", "11", //number + "age", "10", //number + "adults", "1", //number + "datePart", "forenoon" //forenoon, afternoon + ); + browser.headerMenu.goToKindergartenAndSchoolSection(); + fillOutClientFields(orderClientDetails); + fillOutDatesFields(orderDatesDetails); + fillOutCampFields(orderCampDetails); + browser.orderDetailSection.saveSuburbanCampOrder(); + + asserter.orderSection.checkOrderIsCreated(); + } + + @Test + void createOrderAsTeacherNatureRequired() { + Map orderClientDetails = Map.of( + "client", "3v1", + "ICO", "12345678",//string <=15// + "address", "60200 Bratislavska 12, Brno", + "substitute", "Bilbo Baggins", + "contact_name", "Frodo", + "contact_surname", "Baggins", + "contact_phone", "123456789", //phone number + "contact_mail", "email@email.com" + ); + Map orderDatesDetails = Map.of( + "startDate1", "01.12.2025", + // "startDate2", "date", + // "startDate3", "date", + "endDate1", "05.12.2025" + // "endDate2", "date", + // "endDate3", "date" + ); + Map ordersNatureDetails = Map.of( + "students", "14", + "age", "6", + "adults", "2", + "startTime", "9", + "startFood", "breakfast", + "endTime", "19", + "endFood", "dinner" + ); + + browser.headerMenu.goToKindergartenAndSchoolSection(); + fillOutClientFields(orderClientDetails); + fillOutDatesFields(orderDatesDetails); + fillOutNatureSchoolFields(ordersNatureDetails); + browser.orderDetailSection.saveSchoolInNatureOrder(); + asserter.orderSection.checkOrderIsCreated(); + } + + @Test + void natureFieldsTesting() { + Map ordersNatureDetails = Map.of( + "students", "14", + "age", "6", + "adults", "2", + "startTime", "25", + "startFood", "breakfast", + "endTime", "-1", + "endFood", "dinner" + ); + browser.headerMenu.goToKindergartenAndSchoolSection(); + fillOutNatureSchoolFields(ordersNatureDetails); + } + + void fillOutClientFields(Map clientDetails) { + browser.orderDetailSection.insertICO(clientDetails.get("ICO")); + browser.waitFor(3); + browser.orderDetailSection.insertClient(clientDetails.get("client")); + browser.orderDetailSection.insertFullAddress(clientDetails.get("address")); + browser.orderDetailSection.insertSubstitute(clientDetails.get("substitute")); + browser.orderDetailSection.insertContactPersonNameAndSurname(clientDetails.get("contact_name"), clientDetails.get("contact_surname")); + browser.orderDetailSection.insertContactPersonTelephone(clientDetails.get("contact_phone")); + browser.orderDetailSection.insertContactPersonEmail(clientDetails.get("contact_mail")); + } + void fillOutDatesFields(Map datesDetails) { + browser.orderDetailSection.insertStartDate(datesDetails.get("startDate1")); + browser.orderDetailSection.insertEndDate(datesDetails.get("endDate1")); + } + void fillOutCampFields(Map campFields) { + browser.orderSection.selectSuburbanCampOption(); + browser.orderDetailSection.insertChildrenCountToSuburbanCamp(Integer.parseInt(campFields.get("students"))); + browser.orderDetailSection.insertInAgeToSuburbanCamp(Integer.parseInt(campFields.get("age"))); + browser.orderDetailSection.insertAdultsCountToSuburbanCamp(Integer.parseInt(campFields.get("adults"))); + switch (campFields.get("datePart")) { + case "afternoon": + browser.orderDetailSection.selectAfternoonSuburbanCampVariant(); + break; + case "forenoon": + browser.orderDetailSection.selectForenoonSuburbanCampVariant(); + } + } + + void fillOutNatureSchoolFields (Map natureFields) { + browser.orderSection.selectSchoolInNatureOption(); + browser.waitFor(2); + browser.orderDetailSection.insertChildrenCountToSchoolInNature(Integer.parseInt(natureFields.get("students"))); + browser.orderDetailSection.insertInAgeToSchoolInNature(Integer.parseInt(natureFields.get("age"))); + browser.orderDetailSection.insertAdultsCountToSchoolInNature(Integer.parseInt(natureFields.get("adults"))); + browser.orderDetailSection.insertStartTime(natureFields.get("startTime")); + browser.waitFor(1); + browser.orderDetailSection.insertEndTime(natureFields.get("endTime")); + + switch (natureFields.get("startFood")) { + case "breakfast": + browser.orderDetailSection.selectBreakfastStartToSchoolInNature(); + break; + case "lunch": + browser.orderDetailSection.selectLunchStartToSchoolInNature(); + break; + case "dinner": + browser.orderDetailSection.selectDinnerStartToSchoolInNature(); + } + switch (natureFields.get("endFood")) { + case "breakfast": + browser.orderDetailSection.selectBreakfastEndToSchoolInNature(); + break; + case "lunch": + browser.orderDetailSection.selectLunchEndToSchoolInNature(); + break; + case "dinner": + browser.orderDetailSection.selectDinnerEndToSchoolInNature(); + } + } + + void logIn(String email, String password) { + browser.loginSection.clickLoginMenuLink(); + browser.loginSection.insertEmail(email); + browser.loginSection.insertPassword(password); + browser.loginSection.clickLoginButton(); + } +} diff --git a/src/test/java/cz/czechitas/automation/olgaUserRegistrationAndLogin.java b/src/test/java/cz/czechitas/automation/olgaUserRegistrationAndLogin.java new file mode 100644 index 0000000..9d116fb --- /dev/null +++ b/src/test/java/cz/czechitas/automation/olgaUserRegistrationAndLogin.java @@ -0,0 +1,123 @@ +package cz.czechitas.automation; + +import org.junit.jupiter.api.Test; + +import java.util.Map; + + +final class olgaUserRegistrationAndLogin extends TestRunner { + + Map credentials = Map.of( + "masterEmail", "ladymaster@gmail.com", + "masterPassword","Lady123", + "masterName", "Lady Galadriel", + "adminEmail", "da-app.admin@czechitas.cz", + "adminPassword", "Czechitas123", + "adminName", "Lišák Admin", + "parentEmail", "3e6pa+sprint@protonmail.com", + "parentPassword", "A1sdfg", + "parentName", "John Baggins" + ); + + + @Test + void smokePageUrlTest() { + browser.headerMenu.goToHomePage(); + asserter.generalSection.checkCurrentUrl("https://team8-2022brno.herokuapp.com/"); + } + + //Registration tests + @Test + void newUserRegistrationHappyTest() { + var firstName = browser.generateRandomName(5); + var lastName = browser.generateRandomName(8); + var email = lastName + "@hotmail.com"; + var password = "A" + firstName + "123"; + + //Each new user is automatically signed in + fillOutRegistrationForm(firstName, lastName,email, password, password); + asserter.loginSection.checkUserIsLoggedIn(firstName+" "+lastName); + browser.loginSection.logout(); + + // Each new user is by default in the role parent + logIn(credentials.get("masterEmail"), credentials.get("masterPassword")); + browser.internalMenu.goToUsersSection(); + browser.usersSection.search(firstName+" "+lastName); + browser.waitFor(1); + asserter.usersSection.checkParentRole(); + browser.loginSection.logout(); + + // Each user is available to sign in + logIn(email, password); + asserter.loginSection.checkUserIsLoggedIn(firstName+" "+lastName); + // Each user is allowed to log out + browser.loginSection.logout(); + } + + @Test + void newUserRegistrationTest_empty() { + fillOutRegistrationForm("", "", "", "", ""); + asserter.loginSection.checkUserIsNotLoggedIn(); + } + @Test + void newUserRegistrationTest_256() { + var firstName = browser.generateRandomName(127); + var lastName = browser.generateRandomName(128); + var email = lastName + "@hotmail.com"; + var password = "A" + firstName + "123"; + fillOutRegistrationForm(firstName, lastName, email, password, password); + asserter.loginSection.checkUserIsNotLoggedIn(); + } + + // Logging in tests + @Test + void loginAsParentHappy () { + logIn(credentials.get("parentEmail"), credentials.get("parentPassword")); + browser.waitFor(1); + asserter.loginSection.checkUserIsLoggedIn(credentials.get("parentName")); + asserter.generalSection.checkCurrentUrl("https://team8-2022brno.herokuapp.com/zaci"); + browser.loginSection.logout(); + } + @Test + void loginAsAdminHappy () { + logIn(credentials.get("adminEmail"), credentials.get("adminPassword")); + browser.waitFor(1); + asserter.loginSection.checkUserIsLoggedIn(credentials.get("adminName")); + asserter.generalSection.checkCurrentUrl("https://team8-2022brno.herokuapp.com/"); + browser.loginSection.logout(); + } + @Test + void loginAsMasterHappy() { + logIn(credentials.get("masterEmail"), credentials.get("masterPassword")); + browser.waitFor(1); + asserter.loginSection.checkUserIsLoggedIn(credentials.get("masterName")); + asserter.generalSection.checkCurrentUrl("https://team8-2022brno.herokuapp.com/"); + browser.loginSection.logout(); + } + @Test + void loginAsParentWrongPassword () { + logIn(credentials.get("parentEmail"), credentials.get("parentPassword")+"1"); + browser.waitFor(1); + asserter.loginSection.checkErrorMessage(); + asserter.loginSection.checkUserIsNotLoggedIn(); + } + + +// Functions + void fillOutRegistrationForm(String firstName, String lastName, String email, String password, String confirmPassword) { + browser.loginSection.clickLoginMenuLink(); + browser.loginSection.clickLoginMenuLink(); + browser.loginSection.clickRegisterButton(); + browser.registerSection.insertFirstAndLastName(firstName, lastName); + browser.registerSection.insertEmail(email); + browser.registerSection.insertPassword(password); + browser.registerSection.insertPasswordConfirmation(confirmPassword); + browser.registerSection.clickRegisterButton(); + } + void logIn(String email, String password) { + browser.loginSection.clickLoginMenuLink(); + browser.loginSection.insertEmail(email); + browser.loginSection.insertPassword(password); + browser.loginSection.clickLoginButton(); + } +} From aebe4c962ed47932d10b3423b5a9363a6103bb10 Mon Sep 17 00:00:00 2001 From: 3e6pa117 <82040814+3e6pa117@users.noreply.github.com> Date: Tue, 18 Nov 2025 11:21:05 +0100 Subject: [PATCH 2/4] Fix orders tests --- .../cz/czechitas/automation/OrderAction.java | 6 + .../automation/OrderDetailAction.java | 26 ++++ .../automation/olgaCreateOrderAsTeacher.java | 111 ++++++++++++------ 3 files changed, 110 insertions(+), 33 deletions(-) diff --git a/src/main/java/cz/czechitas/automation/OrderAction.java b/src/main/java/cz/czechitas/automation/OrderAction.java index 4dd19c6..ddd28c9 100644 --- a/src/main/java/cz/czechitas/automation/OrderAction.java +++ b/src/main/java/cz/czechitas/automation/OrderAction.java @@ -52,4 +52,10 @@ void search(String textToSearch) { searchInput.clear(); searchInput.sendKeys(textToSearch); } + void deleteOrder() { + var deleteButton = elementFinder.findByCssSelector(".odd > td:nth-child(6) > div:nth-child(1) > a:nth-child(3)"); + deleteButton.click(); + var confirmButton = elementFinder.findByXPath("/html/body/div[1]/div/div/div/div/div[2]/div[2]/div/table/tbody/tr/td[6]/div[2]/div/div/div/div[2]/form/button"); + confirmButton.click(); + } } diff --git a/src/main/java/cz/czechitas/automation/OrderDetailAction.java b/src/main/java/cz/czechitas/automation/OrderDetailAction.java index 2b33d4d..6361dab 100644 --- a/src/main/java/cz/czechitas/automation/OrderDetailAction.java +++ b/src/main/java/cz/czechitas/automation/OrderDetailAction.java @@ -41,11 +41,27 @@ void insertStartDate(String startDate) { var startDateInput = elementFinder.findByXPath("//*[@id=\"start_date_1\"]"); startDateInput.sendKeys(startDate); } + void insertStartDate2(String startDate) { + var startDateInput = elementFinder.findByXPath("//*[@id=\"start_date_2\"]"); + startDateInput.sendKeys(startDate); + } + void insertStartDate3(String startDate) { + var startDateInput = elementFinder.findByXPath("//*[@id=\"start_date_3\"]"); + startDateInput.sendKeys(startDate); + } void insertEndDate(String endDate) { var endDateInput = elementFinder.findByXPath("//*[@id=\"end_date_1\"]"); endDateInput.sendKeys(endDate); } + void insertEndDate2(String endDate) { + var endDateInput = elementFinder.findByXPath("//*[@id=\"end_date_2\"]"); + endDateInput.sendKeys(endDate); + } + void insertEndDate3(String endDate) { + var endDateInput = elementFinder.findByXPath("//*[@id=\"end_date_3\"]"); + endDateInput.sendKeys(endDate); + } void selectForenoonSuburbanCampVariant() { var element = elementFinder.findByXPath("//*[@id=\"camp-date_part\"]"); @@ -107,6 +123,11 @@ void insertFullAddress(String fullAddress) { fullAddressInput.sendKeys(fullAddress); } + /*void insertStartTime(String arrivalTime) { + var arrivalTimeInput = elementFinder.findByXPath("//*[@id=\"nature-start_time\"]"); + arrivalTimeInput.sendKeys(arrivalTime); + }*/ + void insertStartTime(String arrivalTime) { var arrivalTimeField = elementFinder.findByXPath("//*[@id=\"nature-start_time\"]"); arrivalTimeField.click(); @@ -127,6 +148,11 @@ void selectBreakfastStartToSchoolInNature() { option.click(); } + /*void insertEndTime(String endTime) { + var arrivalTimeInput = elementFinder.findByXPath("//*[@id=\"nature-end_time\"]"); + arrivalTimeInput.sendKeys(endTime); + }*/ + void selectLunchStartToSchoolInNature() { var element = elementFinder.findByXPath("//*[@id=\"nature-start_food\"]"); diff --git a/src/test/java/cz/czechitas/automation/olgaCreateOrderAsTeacher.java b/src/test/java/cz/czechitas/automation/olgaCreateOrderAsTeacher.java index 89999fc..2680213 100644 --- a/src/test/java/cz/czechitas/automation/olgaCreateOrderAsTeacher.java +++ b/src/test/java/cz/czechitas/automation/olgaCreateOrderAsTeacher.java @@ -9,7 +9,9 @@ final class olgaCreateOrderAsTeacher extends TestRunner { Map credentials = Map.of( "masterEmail", "ladymaster@gmail.com", "masterPassword","Lady123", - "masterName", "Lady Galadriel" + "masterName", "Lady Galadriel", + "adminEmail", "aragorn@email.com", + "adminPassword", "Aragorn1" ); @Test @@ -44,17 +46,36 @@ void createOrderAsTeacherCampRequired() { "adults", "1", //number "datePart", "forenoon" //forenoon, afternoon ); + //Should create order and check that user is notified browser.headerMenu.goToKindergartenAndSchoolSection(); fillOutClientFields(orderClientDetails); fillOutDatesFields(orderDatesDetails); fillOutCampFields(orderCampDetails); browser.orderDetailSection.saveSuburbanCampOrder(); - asserter.orderSection.checkOrderIsCreated(); + + // Should check that Admin can see new created order + browser.headerMenu.goToHomePage(); + logIn(credentials.get("adminEmail"), credentials.get("adminPassword")); + browser.internalMenu.goToOrdersSection(); + browser.orderSection.search(orderClientDetails.get("client")); + asserter.orderSection.checkNumberOfOrders(1); + browser.loginSection.logout(); + + // Should check that Master Admin can see new created order and delete it + browser.headerMenu.goToHomePage(); + logIn(credentials.get("masterEmail"), credentials.get("masterPassword")); + browser.internalMenu.goToOrdersSection(); + browser.orderSection.search(orderClientDetails.get("client")); + asserter.orderSection.checkNumberOfOrders(1); + browser.orderSection.deleteOrder(); + asserter.orderSection.checkOrdersTableIsEmpty(); + browser.headerMenu.goToHomePage(); + browser.loginSection.logout(); } @Test - void createOrderAsTeacherNatureRequired() { + void createOrderAsTeacherNature() { Map orderClientDetails = Map.of( "client", "3v1", "ICO", "12345678",//string <=15// @@ -67,11 +88,11 @@ void createOrderAsTeacherNatureRequired() { ); Map orderDatesDetails = Map.of( "startDate1", "01.12.2025", - // "startDate2", "date", - // "startDate3", "date", - "endDate1", "05.12.2025" - // "endDate2", "date", - // "endDate3", "date" + "endDate1", "02.12.2025", + "startDate2", "12.12.2025", + "endDate2", "14.12.2025", + "startDate3", "01.01.2026", + "endDate3", "03.01.2026" ); Map ordersNatureDetails = Map.of( "students", "14", @@ -82,13 +103,32 @@ void createOrderAsTeacherNatureRequired() { "endTime", "19", "endFood", "dinner" ); - + //Should create order and check that user is notified browser.headerMenu.goToKindergartenAndSchoolSection(); fillOutClientFields(orderClientDetails); fillOutDatesFields(orderDatesDetails); fillOutNatureSchoolFields(ordersNatureDetails); browser.orderDetailSection.saveSchoolInNatureOrder(); asserter.orderSection.checkOrderIsCreated(); + + // Should check that Admin can see new created order + browser.headerMenu.goToHomePage(); + logIn(credentials.get("adminEmail"), credentials.get("adminPassword")); + browser.internalMenu.goToOrdersSection(); + browser.orderSection.search(orderClientDetails.get("client")); + asserter.orderSection.checkNumberOfOrders(1); + browser.loginSection.logout(); + + // Should check that Master Admin can see new created order and delete it + browser.headerMenu.goToHomePage(); + logIn(credentials.get("masterEmail"), credentials.get("masterPassword")); + browser.internalMenu.goToOrdersSection(); + browser.orderSection.search(orderClientDetails.get("client")); + asserter.orderSection.checkNumberOfOrders(1); + browser.orderSection.deleteOrder(); + asserter.orderSection.checkOrdersTableIsEmpty(); + browser.headerMenu.goToHomePage(); + browser.loginSection.logout(); } @Test @@ -107,35 +147,41 @@ void natureFieldsTesting() { } void fillOutClientFields(Map clientDetails) { - browser.orderDetailSection.insertICO(clientDetails.get("ICO")); - browser.waitFor(3); - browser.orderDetailSection.insertClient(clientDetails.get("client")); - browser.orderDetailSection.insertFullAddress(clientDetails.get("address")); - browser.orderDetailSection.insertSubstitute(clientDetails.get("substitute")); - browser.orderDetailSection.insertContactPersonNameAndSurname(clientDetails.get("contact_name"), clientDetails.get("contact_surname")); - browser.orderDetailSection.insertContactPersonTelephone(clientDetails.get("contact_phone")); - browser.orderDetailSection.insertContactPersonEmail(clientDetails.get("contact_mail")); + browser.orderDetailSection.insertICO(clientDetails.get("ICO")); + browser.waitFor(3); + browser.orderDetailSection.insertClient(clientDetails.get("client")); + browser.orderDetailSection.insertFullAddress(clientDetails.get("address")); + browser.orderDetailSection.insertSubstitute(clientDetails.get("substitute")); + browser.orderDetailSection.insertContactPersonNameAndSurname(clientDetails.get("contact_name"), clientDetails.get("contact_surname")); + browser.orderDetailSection.insertContactPersonTelephone(clientDetails.get("contact_phone")); + browser.orderDetailSection.insertContactPersonEmail(clientDetails.get("contact_mail")); } void fillOutDatesFields(Map datesDetails) { - browser.orderDetailSection.insertStartDate(datesDetails.get("startDate1")); - browser.orderDetailSection.insertEndDate(datesDetails.get("endDate1")); + browser.orderDetailSection.insertStartDate(datesDetails.get("startDate1")); + browser.orderDetailSection.insertEndDate(datesDetails.get("endDate1")); + if (datesDetails.containsKey("startDate2")){ + browser.orderDetailSection.insertStartDate2(datesDetails.get("startDate2")); + browser.orderDetailSection.insertEndDate2(datesDetails.get("endDate2")); + } + if (datesDetails.containsKey("startDate3")){ + browser.orderDetailSection.insertStartDate3(datesDetails.get("startDate3")); + browser.orderDetailSection.insertEndDate3(datesDetails.get("endDate3")); + } } void fillOutCampFields(Map campFields) { - browser.orderSection.selectSuburbanCampOption(); - browser.orderDetailSection.insertChildrenCountToSuburbanCamp(Integer.parseInt(campFields.get("students"))); - browser.orderDetailSection.insertInAgeToSuburbanCamp(Integer.parseInt(campFields.get("age"))); - browser.orderDetailSection.insertAdultsCountToSuburbanCamp(Integer.parseInt(campFields.get("adults"))); - switch (campFields.get("datePart")) { - case "afternoon": - browser.orderDetailSection.selectAfternoonSuburbanCampVariant(); - break; - case "forenoon": - browser.orderDetailSection.selectForenoonSuburbanCampVariant(); - } + browser.orderSection.selectSuburbanCampOption(); + browser.orderDetailSection.insertChildrenCountToSuburbanCamp(Integer.parseInt(campFields.get("students")));browser.orderDetailSection.insertInAgeToSuburbanCamp(Integer.parseInt(campFields.get("age"))); + browser.orderDetailSection.insertAdultsCountToSuburbanCamp(Integer.parseInt(campFields.get("adults"))); + switch (campFields.get("datePart")) { + case "afternoon": + browser.orderDetailSection.selectAfternoonSuburbanCampVariant(); + break; + case "forenoon": + browser.orderDetailSection.selectForenoonSuburbanCampVariant(); + } } - void fillOutNatureSchoolFields (Map natureFields) { - browser.orderSection.selectSchoolInNatureOption(); + browser.orderSection.selectSchoolInNatureOption(); browser.waitFor(2); browser.orderDetailSection.insertChildrenCountToSchoolInNature(Integer.parseInt(natureFields.get("students"))); browser.orderDetailSection.insertInAgeToSchoolInNature(Integer.parseInt(natureFields.get("age"))); @@ -165,7 +211,6 @@ void fillOutNatureSchoolFields (Map natureFields) { browser.orderDetailSection.selectDinnerEndToSchoolInNature(); } } - void logIn(String email, String password) { browser.loginSection.clickLoginMenuLink(); browser.loginSection.insertEmail(email); From ce72c751bfee3833ee504b6c28dfaea0526777d9 Mon Sep 17 00:00:00 2001 From: 3e6pa117 <82040814+3e6pa117@users.noreply.github.com> Date: Tue, 18 Nov 2025 13:30:15 +0100 Subject: [PATCH 3/4] rename --- ...eApplicationAsParent.java => CreateApplicationAsParent.java} | 2 +- ...{olgaCreateOrderAsTeacher.java => CreateOrderAsTeacher.java} | 2 +- ...rRegistrationAndLogin.java => UserRegistrationAndLogin.java} | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename src/test/java/cz/czechitas/automation/{olgaCreateApplicationAsParent.java => CreateApplicationAsParent.java} (99%) rename src/test/java/cz/czechitas/automation/{olgaCreateOrderAsTeacher.java => CreateOrderAsTeacher.java} (99%) rename src/test/java/cz/czechitas/automation/{olgaUserRegistrationAndLogin.java => UserRegistrationAndLogin.java} (98%) diff --git a/src/test/java/cz/czechitas/automation/olgaCreateApplicationAsParent.java b/src/test/java/cz/czechitas/automation/CreateApplicationAsParent.java similarity index 99% rename from src/test/java/cz/czechitas/automation/olgaCreateApplicationAsParent.java rename to src/test/java/cz/czechitas/automation/CreateApplicationAsParent.java index 592b57e..5a6bf84 100644 --- a/src/test/java/cz/czechitas/automation/olgaCreateApplicationAsParent.java +++ b/src/test/java/cz/czechitas/automation/CreateApplicationAsParent.java @@ -3,7 +3,7 @@ import java.util.Map; -final class olgaCreateApplicationAsParent extends TestRunner { +final class CreateApplicationAsParent extends TestRunner { Map credentials = Map.of( "masterEmail", "ladymaster@gmail.com", diff --git a/src/test/java/cz/czechitas/automation/olgaCreateOrderAsTeacher.java b/src/test/java/cz/czechitas/automation/CreateOrderAsTeacher.java similarity index 99% rename from src/test/java/cz/czechitas/automation/olgaCreateOrderAsTeacher.java rename to src/test/java/cz/czechitas/automation/CreateOrderAsTeacher.java index 2680213..97a0799 100644 --- a/src/test/java/cz/czechitas/automation/olgaCreateOrderAsTeacher.java +++ b/src/test/java/cz/czechitas/automation/CreateOrderAsTeacher.java @@ -4,7 +4,7 @@ import java.util.Map; -final class olgaCreateOrderAsTeacher extends TestRunner { +final class CreateOrderAsTeacher extends TestRunner { Map credentials = Map.of( "masterEmail", "ladymaster@gmail.com", diff --git a/src/test/java/cz/czechitas/automation/olgaUserRegistrationAndLogin.java b/src/test/java/cz/czechitas/automation/UserRegistrationAndLogin.java similarity index 98% rename from src/test/java/cz/czechitas/automation/olgaUserRegistrationAndLogin.java rename to src/test/java/cz/czechitas/automation/UserRegistrationAndLogin.java index 9d116fb..b2d4d24 100644 --- a/src/test/java/cz/czechitas/automation/olgaUserRegistrationAndLogin.java +++ b/src/test/java/cz/czechitas/automation/UserRegistrationAndLogin.java @@ -5,7 +5,7 @@ import java.util.Map; -final class olgaUserRegistrationAndLogin extends TestRunner { +final class UserRegistrationAndLogin extends TestRunner { Map credentials = Map.of( "masterEmail", "ladymaster@gmail.com", From 6fc3bba20bdc25371bdf862052d054a2f1fc0841 Mon Sep 17 00:00:00 2001 From: 3e6pa117 <82040814+3e6pa117@users.noreply.github.com> Date: Tue, 18 Nov 2025 15:26:39 +0100 Subject: [PATCH 4/4] fix python :) --- .../java/cz/czechitas/automation/ApplicationAction.java | 2 +- .../czechitas/automation/CreateApplicationAsParent.java | 8 +++----- .../cz/czechitas/automation/UserRegistrationAndLogin.java | 8 ++++---- .../automation/assertion/ApplicationDetailAssertion.java | 4 ++++ 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/main/java/cz/czechitas/automation/ApplicationAction.java b/src/main/java/cz/czechitas/automation/ApplicationAction.java index 448191c..0f9ed51 100644 --- a/src/main/java/cz/czechitas/automation/ApplicationAction.java +++ b/src/main/java/cz/czechitas/automation/ApplicationAction.java @@ -36,7 +36,7 @@ void selectProgrammingSection() { */ void clickCreatePythonApplicationButton() { //TODO: modify css selector to reflect python course instead of first course (method parameter?) - var createApplicationButton = elementFinder.findByCssSelector(".card-body a"); + var createApplicationButton = elementFinder.findByXPath("/html/body/div/div/div/div/div/div[2]/div/div[2]/a"); createApplicationButton.click(); } diff --git a/src/test/java/cz/czechitas/automation/CreateApplicationAsParent.java b/src/test/java/cz/czechitas/automation/CreateApplicationAsParent.java index 5a6bf84..4adc831 100644 --- a/src/test/java/cz/czechitas/automation/CreateApplicationAsParent.java +++ b/src/test/java/cz/czechitas/automation/CreateApplicationAsParent.java @@ -9,7 +9,7 @@ final class CreateApplicationAsParent extends TestRunner { "masterEmail", "ladymaster@gmail.com", "masterPassword","Lady123", "masterName", "Lady Galadriel", - "parentEmail", "3e6pa+sprint@protonmail.com", + "parentEmail", "john123@email.com", "parentPassword", "A1sdfg", "parentName", "John Baggins" ); @@ -118,7 +118,7 @@ void studentYoungerThan4() { fillOutApplicationForm(applicationData); browser.waitFor(2); - //asserter. + asserter.applicationDetailSection.checkErrorMessage("Žák musí dovršit 4 roky nejpozději v den začátku kurzu"); //browser.loginSection.logout(); } @@ -155,12 +155,10 @@ void fillOutApplicationForm(Map applicationData) { browser.applicationDetailsSection.selectSlipPaymentMethod(); break; } - switch (applicationData.get("healthDisability")) { - case "ano": + if (applicationData.containsKey("healthDisability")) { browser.applicationDetailsSection.clickHealthDisabilityCheckbox(); browser.waitFor(1); browser.applicationDetailsSection.insertHealthDisabilityNote(applicationData.get("healthDisabilityNote")); - break; } browser.applicationDetailsSection.clickCreateApplicationButton(); } diff --git a/src/test/java/cz/czechitas/automation/UserRegistrationAndLogin.java b/src/test/java/cz/czechitas/automation/UserRegistrationAndLogin.java index b2d4d24..f6684be 100644 --- a/src/test/java/cz/czechitas/automation/UserRegistrationAndLogin.java +++ b/src/test/java/cz/czechitas/automation/UserRegistrationAndLogin.java @@ -11,10 +11,10 @@ final class UserRegistrationAndLogin extends TestRunner { "masterEmail", "ladymaster@gmail.com", "masterPassword","Lady123", "masterName", "Lady Galadriel", - "adminEmail", "da-app.admin@czechitas.cz", - "adminPassword", "Czechitas123", - "adminName", "Lišák Admin", - "parentEmail", "3e6pa+sprint@protonmail.com", + "adminEmail", "aragorn@email.com", + "adminPassword", "Aragorn1", + "adminName", "Aragorn Dunedain", + "parentEmail", "john123@email.com", "parentPassword", "A1sdfg", "parentName", "John Baggins" ); diff --git a/src/test/java/cz/czechitas/automation/assertion/ApplicationDetailAssertion.java b/src/test/java/cz/czechitas/automation/assertion/ApplicationDetailAssertion.java index 9e50289..216c330 100644 --- a/src/test/java/cz/czechitas/automation/assertion/ApplicationDetailAssertion.java +++ b/src/test/java/cz/czechitas/automation/assertion/ApplicationDetailAssertion.java @@ -70,4 +70,8 @@ public void checkHealthDisabilityNote(String healthRestrictionNote) { var healthRestrictionNoteElement = elementFinder.findByXPath("//table/tbody//td[text()='Zdravotní omezení:']/../td[2]"); assertThat(healthRestrictionNoteElement.getText()).isEqualTo(healthRestrictionNote); } + public void checkErrorMessage(String errorMessage) { + var errorTooYoung = elementFinder.findByXPath("/html/body/div/div/div/div/div/form/table/tbody/tr[6]/td[2]/span"); + assertThat(errorTooYoung.getText()).contains(errorMessage); + } }