Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}

Expand Down
5 changes: 5 additions & 0 deletions src/main/java/cz/czechitas/automation/InternalMenuAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
}
2 changes: 2 additions & 0 deletions src/main/java/cz/czechitas/automation/LoginAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -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
*
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/cz/czechitas/automation/OrderAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
}
52 changes: 50 additions & 2 deletions src/main/java/cz/czechitas/automation/OrderDetailAction.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package cz.czechitas.automation;

import org.openqa.selenium.Keys;

import java.util.Objects;

/**
Expand Down Expand Up @@ -39,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\"]");
Expand Down Expand Up @@ -105,9 +123,19 @@ void insertFullAddress(String fullAddress) {
fullAddressInput.sendKeys(fullAddress);
}

void insertStartTime(String arrivalTime) {
/*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();
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() {
Expand All @@ -120,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\"]");

Expand All @@ -142,7 +175,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() {
Expand Down Expand Up @@ -184,4 +223,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();*/
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand All @@ -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) {
Expand Down
26 changes: 26 additions & 0 deletions src/main/java/cz/czechitas/automation/UsersAction.java
Original file line number Diff line number Diff line change
@@ -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);
}
}
166 changes: 166 additions & 0 deletions src/test/java/cz/czechitas/automation/CreateApplicationAsParent.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
package cz.czechitas.automation;
import org.junit.jupiter.api.Test;

import java.util.Map;

final class CreateApplicationAsParent extends TestRunner {

Map<String, String> credentials = Map.of(
"masterEmail", "[email protected]",
"masterPassword","Lady123",
"masterName", "Lady Galadriel",
"parentEmail", "[email protected]",
"parentPassword", "A1sdfg",
"parentName", "John Baggins"
);
Map <String, String> 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<String, String> 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<String, String> 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<String, String> 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.applicationDetailSection.checkErrorMessage("Žák musí dovršit 4 roky nejpozději v den začátku kurzu");
//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<String, String> 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;
}
if (applicationData.containsKey("healthDisability")) {
browser.applicationDetailsSection.clickHealthDisabilityCheckbox();
browser.waitFor(1);
browser.applicationDetailsSection.insertHealthDisabilityNote(applicationData.get("healthDisabilityNote"));
}
browser.applicationDetailsSection.clickCreateApplicationButton();
}

}
Loading