Skip to content
Merged
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
32 changes: 32 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: CI

on:
push:
branches:
- main
pull_request:

jobs:
test:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up Java 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: maven

- name: Run tests
run: mvn test --no-transfer-progress -Dheadless=true

- name: Upload failed screenshots
if: failure()
uses: actions/upload-artifact@v4
with:
name: failed-screenshots
path: failedScreenshots/
if-no-files-found: ignore
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@

/target/
/.idea/
/failedScreenshots/
/failedScreenshots/
.vscode/settings.json
75 changes: 75 additions & 0 deletions practice/tasks.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
tasks 1
--------
Navigace
1. Napište test, který přejde do sekce Pro rodiče -> Návody a formuláře.
2. Napište test, který přejde do sekce Pro učitelé -> Objednávka pro MŠ/ZŠ a jako
objednávanou službu v dolní části obrazovky zvolí Příměstský tábor.
3. Napište test, který postupně projde všechny sekce horního veřejného menu.
4. Napište test, který přejde do sekce Pro učitelé -> Objednávka pro MŠ/ZŠ a do
políčka pro IČO vyplní IČO organizace czechitas.
5. Vytvořte si v aplikaci vlastního uživatele, pomocí kterého se budete následně
přihlašovat do aplikace. POZOR uživatele vytvořte ručně. Proč nemůžeme uživatele
vytvářet pomocí testu? Zamyslete se nad tím, jak by se dali uživatelé vytvářet
v testech?
6. Přihlaste se do aplikace pod Vámi nově vytvořeným uživatelem. Klikněte na
vytvoření nové přihlášky. Vyberte období programování a nakonec klikněte na
vytvoření přihlášky. Výsledkem navigace by měla být obrazovka s formulářem pro
založení přihlášky.

Assertace
1. Ověřte, že na úvodní stránce se nachází „dlaždice“ Programování.
2. Ověřte, že pokud jde uživatel do sekce pro vytváření přihlášky pro rodiče (Pro rodiče
-> Vytvořit přihlášku) a není přihlášen, je na obrazovce k dispozici tlačítko pro
registraci.
3. V aplikaci se přihlaště pod Vámi založeným uživatel a ručně si vytvořte libovolnou
přihlášku.
4. Napište test, který provede přihlášení Vámi založeným uživatelem, otevře detail
první přihlášky v seznamu přihlášek a zkontroluje, že způsob úhrady odpovídá
způsobu úhrady, který jste zadali při jejím zakládání.

tasks 2
---------
Opakování (Navigace)
1. Napište test, který přejde do sekce Pro učitelé -> Objednávka pro MŠ/ZŠ, vyplní do pole IČO
libovolné existující IČO a v dolní části formuláře se přepne na záložku Škola v přírodě, kde do
pole Počet dětí vyplní libovolný počet dětí.
Opakování (Assertace)
1. Napište test, který se přihlásí do aplikace, přejde pomocí horního menu do sekce Přihlášky a
ověří, že v tabulce přihlášek jsou sloupce pojmenované Jméno a Kategorie.
Komplexnější testy
1. Napište test, který bude plnit následující posloupnost úkonů:
a. Přihlaste se do aplikace
b. Přejděte pomocí horního menu do sekce Přihlášky
c. Klikněte zde na tlačítko Vytvořit novou přihlášku.
d. Vyberte období akce programování
e. Klikněte na tlačítko Vytvořit přihlášku pro akcí JavaScript a NodeJS.
f. Vyplňte pole ve formuláři (Termín, Křestní jméno, Příjmení, Datum narození,
Poznámka) pro vytvoření přihlášky (Jako způsob platby zvolte možnost hotově) a na
závěr přihlášku vytvořte.
g. Ověřte, že nově vytvořená přihláška má Vámi nastavené hodnoty (Termín, Křestní
jméno, Příjmení, Datum narození, Poznámka) správně uložené.
2. Vytvořte ručně přihlášku, kde jako příjmení žáka uveďte Tester001. (Toto jméno by v rámci
testovacích dat mělo být unikátní).
3. Napište test, který bude plnit následující posloupnost úkonů:
a. Přihlaste se do aplikace
b. Přejděte pomocí horního menu do sekce Přihlášky
c. Do vyhledávacího pole nad tabulkou přihlášek zadejte příjmení žáka z
předcházejícího úkolu
d. Pro vyhledanou přihlášku zvolte možnost upravit a nastavte způsob platby na
Bankovní převod
e. Uložte otevřenou přihlášku
f. Opět pomocí vyhledávacího pole nad tabulkou vyhledejte příjmení žáka z
předchozího úkolu
g. Pro vyhledanou přihlášku otevřete její detail
h. Ověřte, že způsob platby je nastaven na Bankovní převod
i. Ověřte, že zbývající částka k uhrazení je 1 800 Kč
j. Ověřte, že zpráva pro příjemce obsahuje příjmení žáka z předchozího úkolu
4. Vytvořte ručně druhého uživatele, pomocí kterého se budete moci přihlásit
5. Prodiskutujte s lektorem nebo kouči, jak se dá v Java programu uložit hodnota k
opakovanému použití.
6. Přihlaste se pod jedním z Vámi založených uživatelů a vytvořte přihlášku pro žáka s náhodně
vygenerovaným příjmením (lze použít metodu prohlizec.vygenerujNahodnePrijmeni()).
Ověřte, že v tabulce přihlášek nově založená přihláška skutečně existuje. Následně se
odhlaste a přihlaste pod druhým uživatelem. Nyní ověřte, že se přihláška prvního uživatele
nezobrazuje mezi přihláškami uživatele druhého.
7. Napište test, který ověří, že v aplikaci funguje funkcionalita změny hesla.
28 changes: 27 additions & 1 deletion src/main/java/cz/czechitas/automation/WebDriverProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.edge.EdgeOptions;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.safari.SafariOptions;

import javax.annotation.Nonnull;
Expand All @@ -25,6 +26,10 @@ private WebDriverProvider() {
throw new UnsupportedOperationException("Unable to instantiate class with only static methods.");
}

private static final boolean HEADLESS = Boolean.parseBoolean(
System.getProperty("headless", String.valueOf("true".equalsIgnoreCase(System.getenv("CI"))))
);

/**
* Get new instance of the selenium {@link WebDriver}.
* The given instance is dependent on web browsers installed on your computer and
Expand All @@ -33,12 +38,21 @@ private WebDriverProvider() {
* - Chrome
* - Edge
*
* <p>Headless mode is enabled automatically when running in CI (env {@code CI=true})
* or when the system property {@code headless=true} is set.</p>
*
* @return web driver instance
*/
@Nonnull
public static WebDriver getWebDriver() {
try {
return WebDriverManager.firefoxdriver().create();
FirefoxOptions options = new FirefoxOptions();
if (HEADLESS) {
options.addArguments("--headless");
options.addArguments("--width=1920");
options.addArguments("--height=1080");
}
return WebDriverManager.firefoxdriver().capabilities(options).create();
} catch (WebDriverManagerException exception) {
return createChromeDriver();
}
Expand All @@ -48,6 +62,12 @@ private static WebDriver createChromeDriver() {
try {
ChromeOptions options = new ChromeOptions();
options.addArguments("--remote-allow-origins=*");
options.addArguments("--window-size=1920,1080");
if (HEADLESS) {
options.addArguments("--headless=new");
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
}
return WebDriverManager.chromedriver().capabilities(options).create();
} catch (WebDriverManagerException exception1) {
return createEdgeDriver();
Expand All @@ -58,6 +78,12 @@ private static WebDriver createEdgeDriver() {
try {
EdgeOptions options = new EdgeOptions();
options.addArguments("--remote-allow-origins=*");
options.addArguments("--window-size=1920,1080");
if (HEADLESS) {
options.addArguments("--headless=new");
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
}
return WebDriverManager.edgedriver().capabilities(options).create();
} catch (WebDriverManagerException exception1) {
return createSafariDriver();
Expand Down
Loading