From 3f4de0bd10d70c8abf79ba1bb004fef597734c99 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 16 May 2026 19:25:21 +0200 Subject: [PATCH] Hotove testy z kurzu automatizace --- .../cz/czechitas/automation/ExampleTest.java | 5 + .../cz/czechitas/automation/MyFirstTest.java | 193 ++++++++++++++++++ .../automation/assertion/AssertionFacade.java | 3 +- .../automation/assertion/OrderAssertion.java | 23 +++ 4 files changed, 223 insertions(+), 1 deletion(-) create mode 100644 src/test/java/cz/czechitas/automation/MyFirstTest.java create mode 100644 src/test/java/cz/czechitas/automation/assertion/OrderAssertion.java diff --git a/src/test/java/cz/czechitas/automation/ExampleTest.java b/src/test/java/cz/czechitas/automation/ExampleTest.java index 2a5f4d9..764d7d5 100644 --- a/src/test/java/cz/czechitas/automation/ExampleTest.java +++ b/src/test/java/cz/czechitas/automation/ExampleTest.java @@ -34,4 +34,9 @@ void icoFieldTest(String icoValue) { browser.headerMenu.goToKindergartenAndSchoolSection(); browser.orderSection.insertICO(icoValue); } + + @Test + void navigateToParentInstructionsAndFormsTest() { + browser.headerMenu.goToInstructionsAndFormsForParentSection(); + } } diff --git a/src/test/java/cz/czechitas/automation/MyFirstTest.java b/src/test/java/cz/czechitas/automation/MyFirstTest.java new file mode 100644 index 0000000..50309a6 --- /dev/null +++ b/src/test/java/cz/czechitas/automation/MyFirstTest.java @@ -0,0 +1,193 @@ +package cz.czechitas.automation; + +import org.junit.jupiter.api.Test; + +final class MyFirstTest extends TestRunner { + + private void login() { + browser.loginSection.clickLoginMenuLink(); + browser.loginSection.insertEmail("manka.rumova@yahoo.com"); + browser.loginSection.insertPassword("Hovinko123"); + browser.loginSection.clickLoginButton(); + } + @Test + void navigateToParentInstructionsAndFormsTest() { + browser.headerMenu.goToInstructionsAndFormsForParentSection(); + } + + @Test + void orderSuburbanCampTest() { + browser.headerMenu.goToKindergartenAndSchoolSection(); + browser.orderSection.selectSuburbanCampOption(); + } + @Test + void navigateAllMenuSectionsTest() { + browser.headerMenu.goToHomePage(); + browser.headerMenu.goToContactsSection(); + browser.headerMenu.goToInstructionsAndFormsForParentSection(); + browser.headerMenu.goToCreateApplicationSection(); + browser.headerMenu.goToInstructionsAndFormsForTeacherSection(); + browser.headerMenu.goToKindergartenAndSchoolSection(); + } + @Test + void fillICOTest() { + browser.headerMenu.goToKindergartenAndSchoolSection(); + browser.orderSection.insertICO("22834958"); + } + @Test + void createApplicationTest() { + browser.loginSection.clickLoginMenuLink(); + browser.loginSection.insertEmail("manka.rumova@yahoo.com"); + browser.loginSection.insertPassword("Hovinko123"); + browser.loginSection.clickLoginButton(); + browser.applicationSection.clickCreateNewApplicationButton(); + browser.applicationSection.selectProgrammingSection(); + browser.applicationSection.clickCreatePythonApplicationButton(); + } + @Test + void checkProgrammingTileTest() { + asserter.checkProgrammingSectionPresence(); + } + @Test + void checkRegistrationButtonTest() { + browser.headerMenu.goToCreateApplicationSection(); + asserter.checkRegistrationButtonPresence(); + } + @Test + void checkPaymentMethodTest() { + login(); + browser.applicationSection.openFirstApplicationDetailsPage(); + asserter.applicationDetailSection.checkPaymentMethod("Bankovní převod"); + } + @Test + void orderWithICOAndSchoolInNatureTest() { + browser.headerMenu.goToKindergartenAndSchoolSection(); + asserter.checkPageUrl("www.czechitas.cz"); + browser.orderSection.insertICO("22834958"); + asserter.orderSection.checkIcoFieldContainsValue("22834958"); + browser.orderSection.selectSchoolInNatureOption(); + browser.orderSection.insertChildrenCount(15); + } + @Test + void checkApplicationColumnsTest() { + login(); + browser.headerMenu.goToApplicationsSection(); + asserter.applicationSection.checkColumnExists("Jméno", "Kategorie"); + } + @Test + void complexApplicationTest() { + login(); + browser.headerMenu.goToApplicationsSection(); + browser.applicationSection.clickCreateNewApplicationButton(); + browser.applicationSection.selectProgrammingSection(); + browser.applicationSection.clickCreatePythonApplicationButton(); + browser.applicationDetailsSection.selectTerm("08.06. - 19.06.2026"); + browser.applicationDetailsSection.insertStudentFirstName("Jan"); + browser.applicationDetailsSection.insertStudentLastName("Testovaci"); + browser.applicationDetailsSection.insertBirthdate("01.01.2015"); + browser.applicationDetailsSection.insertNote("Testovaci poznamka"); + browser.applicationDetailsSection.selectCashPaymentMethod(); + browser.applicationDetailsSection.clickAcceptTermsCheckbox(); + browser.applicationDetailsSection.clickCreateApplicationButton(); + asserter.applicationDetailSection.checkTerm("08.06. - 19.06.2026"); + asserter.applicationDetailSection.checkFirstName("Jan"); + asserter.applicationDetailSection.checkLastName("Testovaci"); + asserter.applicationDetailSection.checkDateOfBirth("01.01.2015"); + asserter.applicationDetailSection.checkNote("Testovaci poznamka"); + } + @Test + void searchAndEditApplicationTest() { + login(); + browser.headerMenu.goToApplicationsSection(); + browser.applicationSection.search("Tester001"); + browser.applicationSection.clickEditFirstApplicationButton(); + browser.applicationDetailsSection.selectBankTransferPaymentMethod(); + browser.applicationDetailsSection.clickEditApplicationButton(); + browser.applicationSection.search("Tester001"); + browser.applicationSection.openFirstApplicationDetailsPage(); + asserter.applicationDetailSection.checkPaymentMethod("Bankovní převod"); + asserter.applicationDetailSection.checkRemainingAmountToPay("2 490 Kč"); + asserter.applicationDetailSection.checkMessageContainsStudentLastName("Tester001"); + } + @Test + void twoUsersApplicationTest() { + // Prihlaseni jako prvni uzivatel + login(); + + // Vygenerovani nahodneho jmena a ulozeni do pormenne + var randomPrijmeni = browser.generateRandomName(10); + + // Vytvoreni prihlasky + browser.headerMenu.goToApplicationsSection(); + browser.applicationSection.clickCreateNewApplicationButton(); + browser.applicationSection.selectProgrammingSection(); + browser.applicationSection.clickCreatePythonApplicationButton(); + browser.waitFor(3); + browser.applicationDetailsSection.selectTerm("08.06. - 19.06.2026"); + browser.applicationDetailsSection.insertStudentFirstName("Test"); + browser.applicationDetailsSection.insertStudentLastName(randomPrijmeni); + browser.applicationDetailsSection.insertBirthdate("01.01.2015"); + browser.applicationDetailsSection.insertNote("test"); + browser.applicationDetailsSection.selectCashPaymentMethod(); + browser.applicationDetailsSection.clickAcceptTermsCheckbox(); + browser.applicationDetailsSection.clickCreateApplicationButton(); + + // Overeni z eprihlaska existuje + browser.headerMenu.goToApplicationsSection(); + browser.applicationSection.search(randomPrijmeni); + asserter.applicationSection.checkNumberOfApplications(1); + + // Odhlaseni + browser.loginSection.logout(); + + // Prihlaseni + browser.loginSection.clickLoginMenuLink(); + browser.loginSection.insertEmail("peky@email.cz"); + browser.loginSection.insertPassword("Hovinko123"); + browser.loginSection.clickLoginButton(); + + // Overeni z eprihlaska prvniho uzivatele neexistuje + browser.headerMenu.goToApplicationsSection(); + browser.applicationSection.search(randomPrijmeni); + asserter.applicationSection.checkApplicationsTableIsEmpty(); + } + + @Test + void changePasswordTest() { + var noveHeslo = "NoveHeslo123"; + var puvodniHeslo = "Hovinko123"; + + // Prihlaseni + browser.loginSection.clickLoginMenuLink(); + browser.loginSection.insertEmail("peky@email.cz"); + browser.loginSection.insertPassword(puvodniHeslo); + browser.loginSection.clickLoginButton(); + + // Zmena hesla + browser.profileSection.goToProfilePage(); + browser.profileSection.insertPassword(noveHeslo); + browser.profileSection.insertPasswordVerification(noveHeslo); + browser.profileSection.clickChangeButton(); + + // Prodleva nez zmizi pop up + browser.waitFor(9); + + // Odhlaseni + browser.loginSection.logout(); + + // Prihlaseni s novym heslem + browser.loginSection.clickLoginMenuLink(); + browser.loginSection.insertEmail("peky@email.cz"); + browser.loginSection.insertPassword(noveHeslo); + browser.loginSection.clickLoginButton(); + + // Overeni prihlaseni + asserter.checkIsLoggedIn(); + + // Zmena hesla zpet na puvodni + browser.profileSection.goToProfilePage(); + browser.profileSection.insertPassword(puvodniHeslo); + browser.profileSection.insertPasswordVerification(puvodniHeslo); + browser.profileSection.clickChangeButton(); + } +} diff --git a/src/test/java/cz/czechitas/automation/assertion/AssertionFacade.java b/src/test/java/cz/czechitas/automation/assertion/AssertionFacade.java index 64c02ab..08e4ead 100644 --- a/src/test/java/cz/czechitas/automation/assertion/AssertionFacade.java +++ b/src/test/java/cz/czechitas/automation/assertion/AssertionFacade.java @@ -20,12 +20,13 @@ public final class AssertionFacade { private final ElementFinderInterface elementFinder; public final ApplicationAssertion applicationSection; public final ApplicationDetailAssertion applicationDetailSection; - + public final OrderAssertion orderSection; public AssertionFacade(WebDriver webDriver) { this.elementFinder = new ElementFinder(webDriver); this.applicationSection = new ApplicationAssertion(elementFinder); this.applicationDetailSection = new ApplicationDetailAssertion(elementFinder); + this.orderSection = new OrderAssertion(elementFinder); } public void checkPageUrl(String url) { diff --git a/src/test/java/cz/czechitas/automation/assertion/OrderAssertion.java b/src/test/java/cz/czechitas/automation/assertion/OrderAssertion.java new file mode 100644 index 0000000..9250a5b --- /dev/null +++ b/src/test/java/cz/czechitas/automation/assertion/OrderAssertion.java @@ -0,0 +1,23 @@ +package cz.czechitas.automation.assertion; + +import cz.czechitas.automation.ElementFinderInterface; + +import javax.annotation.ParametersAreNonnullByDefault; +import java.util.Objects; + +import static org.assertj.core.api.Assertions.assertThat; + +@ParametersAreNonnullByDefault +public class OrderAssertion { + + private final ElementFinderInterface elementFinder; + + OrderAssertion(ElementFinderInterface elementFinder) { + this.elementFinder = Objects.requireNonNull(elementFinder); + } + + public void checkIcoFieldContainsValue(String ico) { + var icoField = elementFinder.findByCssSelector("#ico"); + assertThat(icoField.getAttribute("value")).isEqualTo(ico); + } +} \ No newline at end of file