diff --git a/BrowserStackJunit/.gitignore b/BrowserStackJunit/.gitignore
new file mode 100644
index 0000000..5ff6309
--- /dev/null
+++ b/BrowserStackJunit/.gitignore
@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/BrowserStackJunit/.idea/.gitignore b/BrowserStackJunit/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/BrowserStackJunit/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/BrowserStackJunit/.idea/encodings.xml b/BrowserStackJunit/.idea/encodings.xml
new file mode 100644
index 0000000..aa00ffa
--- /dev/null
+++ b/BrowserStackJunit/.idea/encodings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BrowserStackJunit/.idea/misc.xml b/BrowserStackJunit/.idea/misc.xml
new file mode 100644
index 0000000..fd26528
--- /dev/null
+++ b/BrowserStackJunit/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BrowserStackJunit/.idea/vcs.xml b/BrowserStackJunit/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/BrowserStackJunit/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BrowserStackJunit/Readme.md b/BrowserStackJunit/Readme.md
new file mode 100644
index 0000000..fbc7c79
--- /dev/null
+++ b/BrowserStackJunit/Readme.md
@@ -0,0 +1,7 @@
+Install:
+
+Maven build
+
+Selenide: https://selenide.org/quick-start.html
+
+Junit5: search Juni t5 --> install Hunit Jupiter API
\ No newline at end of file
diff --git a/BrowserStackJunit/pom.xml b/BrowserStackJunit/pom.xml
new file mode 100644
index 0000000..6f9331a
--- /dev/null
+++ b/BrowserStackJunit/pom.xml
@@ -0,0 +1,37 @@
+
+ 4.0.0
+ cz.kankys
+ BrowserStackSelenideJunitKiwi
+ 1.0-SNAPSHOT
+ Archetype - BrowserStackJunit
+ http://maven.apache.org
+
+
+ com.codeborne
+ selenide
+ 6.17.0
+ test
+
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ 5.10.0
+ test
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.11.0
+
+
+ 20
+
+
+
+
+
diff --git a/BrowserStackJunit/src/main/resources/META-INF/maven/archetype.xml b/BrowserStackJunit/src/main/resources/META-INF/maven/archetype.xml
new file mode 100644
index 0000000..9ee9c76
--- /dev/null
+++ b/BrowserStackJunit/src/main/resources/META-INF/maven/archetype.xml
@@ -0,0 +1,9 @@
+
+ BrowserStackJunit
+
+
+
+
+
+
+
diff --git a/BrowserStackJunit/src/main/resources/archetype-resources/pom.xml b/BrowserStackJunit/src/main/resources/archetype-resources/pom.xml
new file mode 100644
index 0000000..068a637
--- /dev/null
+++ b/BrowserStackJunit/src/main/resources/archetype-resources/pom.xml
@@ -0,0 +1,15 @@
+
+ 4.0.0
+ $cz.kankys
+ $BrowserStackJunit
+ $1.0-SNAPSHOT
+
+
+ junit
+ junit
+ 3.8.1
+ test
+
+
+
diff --git a/BrowserStackJunit/src/main/resources/archetype-resources/src/main/java/App.java b/BrowserStackJunit/src/main/resources/archetype-resources/src/main/java/App.java
new file mode 100644
index 0000000..fce0ab9
--- /dev/null
+++ b/BrowserStackJunit/src/main/resources/archetype-resources/src/main/java/App.java
@@ -0,0 +1,13 @@
+package $cz.kankys;
+
+/**
+ * Hello world!
+ *
+ */
+public class App
+{
+ public static void main( String[] args )
+ {
+ System.out.println( "Hello World!" );
+ }
+}
diff --git a/BrowserStackJunit/src/main/resources/archetype-resources/src/test/java/AppTest.java b/BrowserStackJunit/src/main/resources/archetype-resources/src/test/java/AppTest.java
new file mode 100644
index 0000000..04f3633
--- /dev/null
+++ b/BrowserStackJunit/src/main/resources/archetype-resources/src/test/java/AppTest.java
@@ -0,0 +1,38 @@
+package $cz.kankys;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public AppTest( String testName )
+ {
+ super( testName );
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite()
+ {
+ return new TestSuite( AppTest.class );
+ }
+
+ /**
+ * Rigourous Test :-)
+ */
+ public void testApp()
+ {
+ assertTrue( true );
+ }
+}
diff --git a/BrowserStackJunit/src/test/java/tests/KiwiTest.java b/BrowserStackJunit/src/test/java/tests/KiwiTest.java
new file mode 100644
index 0000000..5080df0
--- /dev/null
+++ b/BrowserStackJunit/src/test/java/tests/KiwiTest.java
@@ -0,0 +1,30 @@
+package tests;
+
+import com.codeborne.selenide.WebDriverRunner;
+import org.junit.jupiter.api.Test;
+import org.openqa.selenium.Cookie;
+
+import static com.codeborne.selenide.Selectors.byAttribute;
+import static com.codeborne.selenide.Selectors.byXpath;
+import static com.codeborne.selenide.Selenide.*;
+
+public class KiwiTest {
+ @Test
+ void itShouldOpenMainPage() {
+ open("https://www.kiwi.com/en");
+
+ // Cookie (org.openqa.selenium), tento způsob nepůjde na všech webech. Všude to je jinde
+ //cookie_consent, agreed --> takto si to pojmenovalo kiwi
+ // nakonec za komentovaný způsob nešel použil jsem xpath
+ /*
+ Cookie cookie = new Cookie("cookie_consent", "agreed");
+ WebDriverRunner.getWebDriver().manage().addCookie(cookie);
+ //refresh();
+ */
+
+ $(byXpath("//*[@id=\"cookies_accept\"]")).click();
+ $(byAttribute("data-test" ,"LandingSearchButton")).click();
+ System.out.println("");
+
+ }
+}
diff --git a/BrowserStackJunit/src/test/java/tests/OveritCenuLetenkyTest.java b/BrowserStackJunit/src/test/java/tests/OveritCenuLetenkyTest.java
new file mode 100644
index 0000000..f153125
--- /dev/null
+++ b/BrowserStackJunit/src/test/java/tests/OveritCenuLetenkyTest.java
@@ -0,0 +1,27 @@
+package tests;
+
+import org.junit.jupiter.api.Test;
+
+import static com.codeborne.selenide.Selectors.byAttribute;
+import static com.codeborne.selenide.Selectors.byXpath;
+import static com.codeborne.selenide.Selenide.$;
+import static com.codeborne.selenide.Selenide.open;
+
+public class OveritCenuLetenkyTest {
+ @Test
+ void OverimeCenuLetenky() {
+ // jdeme na web kiwi
+ open("https://www.kiwi.com/cz/");
+ // potvrdíme cooki
+ $(byXpath("//*[@id=\"cookies_accept\"]")).click();
+ // kliknu na hlavni strane na prozkoumat
+ $(byAttribute("data-test" ,"LandingSearchButton")).click();
+ // kliknu na prvni nabídku na strance
+ $(byAttribute("data-test" ,"PictureCardContent")).click();
+ // pockam na nactení letenek
+ // ulozim si cenu letenky do promenne
+ // otevrem detail letenky a porovnam cenu
+
+
+ }
+}
diff --git a/SeleniumBasic/geckodriver.exe b/SeleniumBasic/geckodriver.exe
new file mode 100644
index 0000000..c60174c
Binary files /dev/null and b/SeleniumBasic/geckodriver.exe differ
diff --git a/SeleniumBasic/src/test/java/TabulkaTest.java b/SeleniumBasic/src/test/java/cz/lukan/AlertTest.java
similarity index 68%
rename from SeleniumBasic/src/test/java/TabulkaTest.java
rename to SeleniumBasic/src/test/java/cz/lukan/AlertTest.java
index 23e4f99..fd27b88 100644
--- a/SeleniumBasic/src/test/java/TabulkaTest.java
+++ b/SeleniumBasic/src/test/java/cz/lukan/AlertTest.java
@@ -1,13 +1,15 @@
+package cz.lukan;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
-public class TabulkaTest {
+public class AlertTest {
private WebDriver driver;
private final String BASE_URL = "http://localhost";
+ // video 33 výpis do konzole textu
@Before
public void setUp(){
driver = new ChromeDriver();
@@ -15,9 +17,8 @@ public class TabulkaTest {
}
@Test
public void test(){
- driver.get(BASE_URL + "/tabulka.php");
- // video 31
- driver.findElement(By.xpath("//table/tbody/tr[last()]/td[1]")).getText();
+ driver.get(BASE_URL);
+
}
@After
diff --git a/SeleniumBasic/src/test/java/ClickMeTest.java b/SeleniumBasic/src/test/java/cz/lukan/ClickMeTest.java
similarity index 79%
rename from SeleniumBasic/src/test/java/ClickMeTest.java
rename to SeleniumBasic/src/test/java/cz/lukan/ClickMeTest.java
index 1f88a45..7f38b9f 100644
--- a/SeleniumBasic/src/test/java/ClickMeTest.java
+++ b/SeleniumBasic/src/test/java/cz/lukan/ClickMeTest.java
@@ -1,3 +1,5 @@
+package cz.lukan;
+
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
@@ -5,18 +7,20 @@ import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
+import org.openqa.selenium.firefox.FirefoxDriver;
public class ClickMeTest {
private WebDriver driver;
- private final String BASE_URL = "http://localhost";
+ private final String BASE_URL = "http://localhost/clickmebaby.php";
@Before
public void setUp(){
- driver = new ChromeDriver();
+ System.setProperty("webdriver.gecko.driver" , "geckodriver.exe");
+ driver = new FirefoxDriver();
}
@Test
public void test(){
- driver.get(BASE_URL + "/clickmebaby.php");
+ driver.get(BASE_URL);
// message jsem udělal do getText vložit "" vyjmout --> vlažit kam chci psát
Assert.assertEquals("Inicaálizovaný počet kliků", "0", driver.findElement(By.id("clicks")).getText());
// for cyklus zvyšování plus 1
diff --git a/SeleniumBasic/src/test/java/CssSelectorTest.java b/SeleniumBasic/src/test/java/cz/lukan/CssSelectorTest.java
similarity index 97%
rename from SeleniumBasic/src/test/java/CssSelectorTest.java
rename to SeleniumBasic/src/test/java/cz/lukan/CssSelectorTest.java
index 4b85a79..bf2c820 100644
--- a/SeleniumBasic/src/test/java/CssSelectorTest.java
+++ b/SeleniumBasic/src/test/java/cz/lukan/CssSelectorTest.java
@@ -1,3 +1,5 @@
+package cz.lukan;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
diff --git a/SeleniumBasic/src/test/java/MySecondTest.java b/SeleniumBasic/src/test/java/cz/lukan/MySecondTest.java
similarity index 97%
rename from SeleniumBasic/src/test/java/MySecondTest.java
rename to SeleniumBasic/src/test/java/cz/lukan/MySecondTest.java
index 97e83ef..8471983 100644
--- a/SeleniumBasic/src/test/java/MySecondTest.java
+++ b/SeleniumBasic/src/test/java/cz/lukan/MySecondTest.java
@@ -1,3 +1,5 @@
+package cz.lukan;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
diff --git a/SeleniumBasic/src/test/java/MyThirdTest.java b/SeleniumBasic/src/test/java/cz/lukan/MyThirdTest.java
similarity index 97%
rename from SeleniumBasic/src/test/java/MyThirdTest.java
rename to SeleniumBasic/src/test/java/cz/lukan/MyThirdTest.java
index 27e7d31..80d2275 100644
--- a/SeleniumBasic/src/test/java/MyThirdTest.java
+++ b/SeleniumBasic/src/test/java/cz/lukan/MyThirdTest.java
@@ -1,3 +1,5 @@
+package cz.lukan;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
diff --git a/SeleniumBasic/src/test/java/SelectTest.java b/SeleniumBasic/src/test/java/cz/lukan/SelectTest.java
similarity index 99%
rename from SeleniumBasic/src/test/java/SelectTest.java
rename to SeleniumBasic/src/test/java/cz/lukan/SelectTest.java
index 385c1af..b7bb89a 100644
--- a/SeleniumBasic/src/test/java/SelectTest.java
+++ b/SeleniumBasic/src/test/java/cz/lukan/SelectTest.java
@@ -1,3 +1,5 @@
+package cz.lukan;
+
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
diff --git a/SeleniumBasic/src/test/java/cz/lukan/TabulkaTest.java b/SeleniumBasic/src/test/java/cz/lukan/TabulkaTest.java
new file mode 100644
index 0000000..44306e1
--- /dev/null
+++ b/SeleniumBasic/src/test/java/cz/lukan/TabulkaTest.java
@@ -0,0 +1,40 @@
+package cz.lukan;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.chrome.ChromeDriver;
+
+import java.util.List;
+
+public class TabulkaTest {
+ private WebDriver driver;
+ private final String BASE_URL = "http://localhost";
+ @Before
+ public void setUp(){
+ driver = new ChromeDriver();
+
+ }
+ @Test
+ public void test(){
+ driver.get(BASE_URL + "/tabulka.php");
+ // video 31
+ driver.findElement(By.xpath("//table/tbody/tr[last()]/td[1]")).getText();
+ // vide 32
+ List rows = driver.findElements(By.xpath("//table/tbody/tr"));
+ System.out.println(rows);
+ for (WebElement roow : rows) {
+ System.out.println(roow.getText());
+
+ }
+
+ }
+ @After
+ public void tearDown(){
+ driver.quit();
+
+ }
+}
diff --git a/SeleniumBasic/src/test/java/cz/lukan/TestSuite.java b/SeleniumBasic/src/test/java/cz/lukan/TestSuite.java
new file mode 100644
index 0000000..d5af391
--- /dev/null
+++ b/SeleniumBasic/src/test/java/cz/lukan/TestSuite.java
@@ -0,0 +1,16 @@
+package cz.lukan;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ SelectTest.class,
+ ClickMeTest.class,
+ XpathTest.class
+
+
+})
+
+public class TestSuite {
+}
diff --git a/SeleniumBasic/src/test/java/VzorTest.java b/SeleniumBasic/src/test/java/cz/lukan/VzorTest.java
similarity index 96%
rename from SeleniumBasic/src/test/java/VzorTest.java
rename to SeleniumBasic/src/test/java/cz/lukan/VzorTest.java
index df8bf9c..bae92bb 100644
--- a/SeleniumBasic/src/test/java/VzorTest.java
+++ b/SeleniumBasic/src/test/java/cz/lukan/VzorTest.java
@@ -1,3 +1,5 @@
+package cz.lukan;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
diff --git a/SeleniumBasic/src/test/java/XpathTest.java b/SeleniumBasic/src/test/java/cz/lukan/XpathTest.java
similarity index 97%
rename from SeleniumBasic/src/test/java/XpathTest.java
rename to SeleniumBasic/src/test/java/cz/lukan/XpathTest.java
index ce58c82..a6457f0 100644
--- a/SeleniumBasic/src/test/java/XpathTest.java
+++ b/SeleniumBasic/src/test/java/cz/lukan/XpathTest.java
@@ -1,3 +1,5 @@
+package cz.lukan;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
diff --git a/selenide_series/.idea/.gitignore b/selenide_series/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/selenide_series/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/selenide_series/.idea/compiler.xml b/selenide_series/.idea/compiler.xml
new file mode 100644
index 0000000..2af0927
--- /dev/null
+++ b/selenide_series/.idea/compiler.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/selenide_series/.idea/encodings.xml b/selenide_series/.idea/encodings.xml
new file mode 100644
index 0000000..aa00ffa
--- /dev/null
+++ b/selenide_series/.idea/encodings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/selenide_series/.idea/jarRepositories.xml b/selenide_series/.idea/jarRepositories.xml
new file mode 100644
index 0000000..712ab9d
--- /dev/null
+++ b/selenide_series/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/selenide_series/.idea/misc.xml b/selenide_series/.idea/misc.xml
new file mode 100644
index 0000000..fd26528
--- /dev/null
+++ b/selenide_series/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/selenide_series/.idea/uiDesigner.xml b/selenide_series/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/selenide_series/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/selenide_series/.idea/vcs.xml b/selenide_series/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/selenide_series/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/selenide_series/pom.xml b/selenide_series/pom.xml
new file mode 100644
index 0000000..7ce4a55
--- /dev/null
+++ b/selenide_series/pom.xml
@@ -0,0 +1,28 @@
+
+ 4.0.0
+ cz.lukan
+ selenide_series
+ 1.0-SNAPSHOT
+ Archetype - selenide_series
+ http://maven.apache.org
+
+ 20
+ 20
+
+
+
+ com.codeborne
+ selenide
+ 6.17.0
+ test
+
+
+
+ org.testng
+ testng
+ 7.8.0
+ test
+
+
+
diff --git a/selenide_series/readme.md b/selenide_series/readme.md
new file mode 100644
index 0000000..37b1ebf
--- /dev/null
+++ b/selenide_series/readme.md
@@ -0,0 +1,12 @@
+Selenide ---> https://selenide.org/quick-start.html (pom.xml)
+
+TestNG ---> https://mvnrepository.com/artifact/org.testng/testng (pom.xml)
+
+
+Maven --->
+
+
+ 20
+ 20
+
+
diff --git a/selenide_series/src/main/resources/META-INF/maven/archetype.xml b/selenide_series/src/main/resources/META-INF/maven/archetype.xml
new file mode 100644
index 0000000..55da271
--- /dev/null
+++ b/selenide_series/src/main/resources/META-INF/maven/archetype.xml
@@ -0,0 +1,9 @@
+
+ selenide_series
+
+
+
+
+
+
+
diff --git a/selenide_series/src/main/resources/archetype-resources/pom.xml b/selenide_series/src/main/resources/archetype-resources/pom.xml
new file mode 100644
index 0000000..d8ef061
--- /dev/null
+++ b/selenide_series/src/main/resources/archetype-resources/pom.xml
@@ -0,0 +1,15 @@
+
+ 4.0.0
+ $cz.lukan
+ $selenide_series
+ $1.0-SNAPSHOT
+
+
+ junit
+ junit
+ 3.8.1
+ test
+
+
+
diff --git a/selenide_series/src/main/resources/archetype-resources/src/main/java/App.java b/selenide_series/src/main/resources/archetype-resources/src/main/java/App.java
new file mode 100644
index 0000000..83671f7
--- /dev/null
+++ b/selenide_series/src/main/resources/archetype-resources/src/main/java/App.java
@@ -0,0 +1,13 @@
+package $cz.lukan;
+
+/**
+ * Hello world!
+ *
+ */
+public class App
+{
+ public static void main( String[] args )
+ {
+ System.out.println( "Hello World!" );
+ }
+}
diff --git a/selenide_series/src/main/resources/archetype-resources/src/test/java/AppTest.java b/selenide_series/src/main/resources/archetype-resources/src/test/java/AppTest.java
new file mode 100644
index 0000000..27c1375
--- /dev/null
+++ b/selenide_series/src/main/resources/archetype-resources/src/test/java/AppTest.java
@@ -0,0 +1,38 @@
+package $cz.lukan;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public AppTest( String testName )
+ {
+ super( testName );
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite()
+ {
+ return new TestSuite( AppTest.class );
+ }
+
+ /**
+ * Rigourous Test :-)
+ */
+ public void testApp()
+ {
+ assertTrue( true );
+ }
+}
diff --git a/selenide_series/src/test/java/specs/HomeTest.java b/selenide_series/src/test/java/specs/HomeTest.java
new file mode 100644
index 0000000..a7e88a0
--- /dev/null
+++ b/selenide_series/src/test/java/specs/HomeTest.java
@@ -0,0 +1,29 @@
+package specs;
+
+import com.codeborne.selenide.WebDriverRunner;
+import org.openqa.selenium.WebDriver;
+import org.testng.annotations.Test;
+
+import static com.codeborne.selenide.Selenide.open;
+import static com.codeborne.selenide.Selenide.title;
+import static org.testng.AssertJUnit.assertEquals;
+
+public class HomeTest {
+ @Test
+ public void testPageUrlAndTitle() {
+ open("https://practice.sdetunicorns.com/");
+
+ // test očekávané url, String url do této proměné jsme vložily url
+ String url = WebDriverRunner.url();
+ assertEquals(url, "https://practice.sdetunicorns.com/");
+
+ // test titulu stránky
+ String title = title();
+ assertEquals(title, "Practice E-Commerce Site – SDET Unicorns – Helping you succeed in Software Quality.");
+ }
+
+ @Test
+ public void testInteractingWithElements() {
+ }
+}
+
diff --git a/selenide_series/target/classes/META-INF/maven/archetype.xml b/selenide_series/target/classes/META-INF/maven/archetype.xml
new file mode 100644
index 0000000..55da271
--- /dev/null
+++ b/selenide_series/target/classes/META-INF/maven/archetype.xml
@@ -0,0 +1,9 @@
+
+ selenide_series
+
+
+
+
+
+
+
diff --git a/selenide_series/target/classes/archetype-resources/pom.xml b/selenide_series/target/classes/archetype-resources/pom.xml
new file mode 100644
index 0000000..d8ef061
--- /dev/null
+++ b/selenide_series/target/classes/archetype-resources/pom.xml
@@ -0,0 +1,15 @@
+
+ 4.0.0
+ $cz.lukan
+ $selenide_series
+ $1.0-SNAPSHOT
+
+
+ junit
+ junit
+ 3.8.1
+ test
+
+
+
diff --git a/selenide_series/target/classes/archetype-resources/src/main/java/App.java b/selenide_series/target/classes/archetype-resources/src/main/java/App.java
new file mode 100644
index 0000000..83671f7
--- /dev/null
+++ b/selenide_series/target/classes/archetype-resources/src/main/java/App.java
@@ -0,0 +1,13 @@
+package $cz.lukan;
+
+/**
+ * Hello world!
+ *
+ */
+public class App
+{
+ public static void main( String[] args )
+ {
+ System.out.println( "Hello World!" );
+ }
+}
diff --git a/selenide_series/target/classes/archetype-resources/src/test/java/AppTest.java b/selenide_series/target/classes/archetype-resources/src/test/java/AppTest.java
new file mode 100644
index 0000000..27c1375
--- /dev/null
+++ b/selenide_series/target/classes/archetype-resources/src/test/java/AppTest.java
@@ -0,0 +1,38 @@
+package $cz.lukan;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public AppTest( String testName )
+ {
+ super( testName );
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite()
+ {
+ return new TestSuite( AppTest.class );
+ }
+
+ /**
+ * Rigourous Test :-)
+ */
+ public void testApp()
+ {
+ assertTrue( true );
+ }
+}
diff --git a/selenide_series/target/test-classes/specs/HomeTest.class b/selenide_series/target/test-classes/specs/HomeTest.class
new file mode 100644
index 0000000..3851e97
Binary files /dev/null and b/selenide_series/target/test-classes/specs/HomeTest.class differ
diff --git a/selenidetraining/.idea/.gitignore b/selenidetraining/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/selenidetraining/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/selenidetraining/.idea/compiler.xml b/selenidetraining/.idea/compiler.xml
new file mode 100644
index 0000000..2ea9712
--- /dev/null
+++ b/selenidetraining/.idea/compiler.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/selenidetraining/.idea/jarRepositories.xml b/selenidetraining/.idea/jarRepositories.xml
new file mode 100644
index 0000000..712ab9d
--- /dev/null
+++ b/selenidetraining/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/selenidetraining/.idea/misc.xml b/selenidetraining/.idea/misc.xml
new file mode 100644
index 0000000..172627f
--- /dev/null
+++ b/selenidetraining/.idea/misc.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/selenidetraining/.idea/vcs.xml b/selenidetraining/.idea/vcs.xml
new file mode 100644
index 0000000..62bd7a0
--- /dev/null
+++ b/selenidetraining/.idea/vcs.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/selenidetraining/pom.xml b/selenidetraining/pom.xml
new file mode 100644
index 0000000..5035915
--- /dev/null
+++ b/selenidetraining/pom.xml
@@ -0,0 +1,36 @@
+
+
+ 4.0.0
+
+ furbo.sk
+ selenide-training
+ 1.0-SNAPSHOT
+
+
+ 20
+ 20
+
+
+
+
+ org.seleniumhq.selenium
+ selenium-java
+ 4.11.0
+
+
+ junit
+ junit
+ 4.13.2
+ test
+
+
+ com.codeborne
+ selenide
+ 6.17.0
+ test
+
+
+
+
\ No newline at end of file
diff --git a/selenidetraining/selenidetraining.iml b/selenidetraining/selenidetraining.iml
new file mode 100644
index 0000000..78b2cc5
--- /dev/null
+++ b/selenidetraining/selenidetraining.iml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/selenidetraining/src/test/java/base/TestBase.java b/selenidetraining/src/test/java/base/TestBase.java
new file mode 100644
index 0000000..8e2b2ce
--- /dev/null
+++ b/selenidetraining/src/test/java/base/TestBase.java
@@ -0,0 +1,24 @@
+package base;
+
+import org.junit.After;
+import org.junit.Before;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.chrome.ChromeDriver;
+import org.openqa.selenium.chrome.ChromeOptions;
+
+public class TestBase {
+ protected WebDriver driver;
+ protected final String BASE_URL = "http://localhost:8888";
+
+ @Before
+ public void setUp() {
+ //System.setProperty("webdriver.chrome.driver", "src/test/resources/drivers/mac/chromedriver75_mac");
+ driver = new ChromeDriver();
+ }
+
+ @After
+ public void tearDown() {
+ driver.close();
+ driver.quit();
+ }
+}
diff --git a/selenidetraining/src/test/java/pages/SavingsCalculatorPage.java b/selenidetraining/src/test/java/pages/SavingsCalculatorPage.java
new file mode 100644
index 0000000..b5f3476
--- /dev/null
+++ b/selenidetraining/src/test/java/pages/SavingsCalculatorPage.java
@@ -0,0 +1,89 @@
+package pages;
+
+import org.openqa.selenium.By;
+import org.openqa.selenium.Keys;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.FindBy;
+import org.openqa.selenium.support.PageFactory;
+import org.openqa.selenium.support.ui.Select;
+
+public class SavingsCalculatorPage {
+ @FindBy(id = "emailInput")
+ private WebElement emailInput;
+
+ @FindBy(id = "yearsInput")
+ private WebElement yearsInput;
+
+ @FindBy(id = "oneTimeInvestmentInput")
+ private WebElement oneTimeInvestmentInput;
+
+ @FindBy(id = "fundSelect")
+ private WebElement fundSelect;
+
+ @FindBy(css = "button.btn")
+ private WebElement applyButton;
+
+ @FindBy(css = "div.result")
+ private WebElement resultElement;
+
+ @FindBy(css = "ul.saving-list div.saving-detail")
+ private WebElement mostRecentSavingsDetail;
+
+ private WebDriver pageDriver;
+
+ public SavingsCalculatorPage(WebDriver driver) {
+ this.pageDriver = driver;
+ PageFactory.initElements(driver, this);
+ }
+
+ public void enterEmail(String email) {
+ emailInput.clear();
+ emailInput.sendKeys(email);
+ emailInput.sendKeys(Keys.TAB);
+ }
+
+ public void enterYears(int years) {
+ yearsInput.clear();
+ yearsInput.sendKeys(String.valueOf(years));
+ }
+
+ public void enterOneTimeInvestment(String amount) {
+ oneTimeInvestmentInput.clear();
+ oneTimeInvestmentInput.sendKeys(amount);
+ }
+
+ public void selectFund(String fundToSelect) {
+ new Select(fundSelect).selectByVisibleText(fundToSelect);
+ }
+
+ public void applyForSaving() {
+ applyButton.click();
+ }
+
+
+ public WebElement getCalculatedTotalIncomeElement() {
+ return resultElement.findElement(By.xpath("./div[1]/p"));
+ }
+
+ public WebElement getCalculatedInterestIncomeElement() {
+ return pageDriver.findElement(By.cssSelector("div.result > div:nth-child(2) p"));
+ }
+
+ public WebElement getCalculatedRiskElement() {
+ return resultElement.findElement(By.xpath("./div[3]/p"));
+ }
+
+ public WebElement getRecentRequestDetail() {
+ return mostRecentSavingsDetail;
+ }
+
+ public WebElement getApplyButton() {
+ return applyButton;
+ }
+
+
+ public WebElement getEmailInputWrapper(){
+ return pageDriver.findElement(By.xpath("//input[@id='emailInput']/.."));
+ }
+}
\ No newline at end of file
diff --git a/selenidetraining/src/test/java/suites/TestSuite.java b/selenidetraining/src/test/java/suites/TestSuite.java
new file mode 100644
index 0000000..e25640b
--- /dev/null
+++ b/selenidetraining/src/test/java/suites/TestSuite.java
@@ -0,0 +1,18 @@
+package suites;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import tests.*;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ FellowshipTest.class,
+ GosslingatorTest.class,
+ RandomTableTest.class,
+ SavingsCalculatorTest.class,
+ SortingHatTest.class,
+ WaitForItTest.class,
+ SpelleologyTest.class
+})
+public class TestSuite {
+}
diff --git a/selenidetraining/src/test/java/tests/FellowshipTest.java b/selenidetraining/src/test/java/tests/FellowshipTest.java
new file mode 100644
index 0000000..afffd7e
--- /dev/null
+++ b/selenidetraining/src/test/java/tests/FellowshipTest.java
@@ -0,0 +1,103 @@
+package tests;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+
+import base.TestBase;
+
+public class FellowshipTest extends TestBase {
+
+ @Before
+ public void openPage() {
+ driver.get(BASE_URL + "/fellowship.php");
+ }
+
+ @Test
+ public void itShouldContainNameForEachFellow() {
+ List fellowElements = getFellowElements();
+
+ for (WebElement fellowElement : fellowElements) {
+ Assert.assertFalse(fellowElement.findElement(By.cssSelector("h1")).getText().isEmpty());
+ }
+ }
+
+ @Test
+ public void itShouldContainSpecifiedFellows() {
+ List fellowElements = getFellowElements();
+ List fellowNames = new ArrayList();
+
+ for (WebElement fellowElement : fellowElements) {
+ System.out.println(fellowElement.findElement(By.cssSelector("h1")).getText());
+ fellowNames.add(fellowElement.findElement(By.cssSelector("h1")).getText());
+ }
+ System.out.println(fellowNames);
+ Assert.assertTrue(fellowNames.contains("Gandalf"));
+ Assert.assertTrue(fellowNames.contains("Aragorn"));
+ Assert.assertTrue(fellowNames.contains("Frodo"));
+ }
+
+ @Test
+ public void itShouldDisplayMessageComplete() {
+ List fellowsToSelect = new ArrayList();
+ fellowsToSelect.add("Gandalf");
+ fellowsToSelect.add("Aragorn");
+ fellowsToSelect.add("Legolas");
+ fellowsToSelect.add("Frodo");
+
+ for (String fellowToSelect : fellowsToSelect) {
+ selectFellow(fellowToSelect);
+ }
+
+ Assert.assertEquals("Complete", driver.findElement(By.cssSelector("div.points-left h3")).getText());
+ }
+
+ @Test
+ public void itShouldDisplayPointsForEachFellow() {
+ List displayedFellows = getFellowElements();
+ for (WebElement displayedFellow : displayedFellows) {
+
+ String actualPoints = displayedFellow.findElement(By.cssSelector("div.fellow-points h2")).getText();
+
+ Assert.assertFalse(actualPoints.isEmpty());
+ }
+ }
+
+ @Test
+ public void itShouldHighlightFellows() {
+ List fellowsToSelect = new ArrayList();
+ fellowsToSelect.add("Gandalf");
+ fellowsToSelect.add("Aragorn");
+ fellowsToSelect.add("Legolas");
+ fellowsToSelect.add("Frodo");
+
+ for (String fellowToSelect : fellowsToSelect) {
+ selectFellow(fellowToSelect);
+ }
+
+ List higlightedFellows =
+ driver.findElements(By.xpath("//ul[contains(@class,'list-of-fellows')]/li/div[contains(@class,'active')]//h1"))
+ .stream()
+ .map(WebElement::getText)
+ .collect(Collectors.toList());
+
+ for (String higlightedFellow : higlightedFellows) {
+ Assert.assertTrue(fellowsToSelect.contains(higlightedFellow));
+ }
+ }
+
+ private void selectFellow(String fellowName) {
+ driver.findElement(By.xpath("//h1[contains(text(),'" + fellowName + "')]")).click();
+ }
+
+ private List getFellowElements() {
+ return driver.findElements(By.cssSelector("ul.list-of-fellows li"));
+ }
+}
diff --git a/selenidetraining/src/test/java/tests/GosslingatorTest.java b/selenidetraining/src/test/java/tests/GosslingatorTest.java
new file mode 100644
index 0000000..7efe1c4
--- /dev/null
+++ b/selenidetraining/src/test/java/tests/GosslingatorTest.java
@@ -0,0 +1,77 @@
+package tests;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.chrome.ChromeDriver;
+import org.openqa.selenium.chrome.ChromeOptions;
+
+public class GosslingatorTest {
+
+ private WebDriver driver;
+
+ @Before
+ public void setUp() {
+ //System.setProperty("webdriver.chrome.driver", "src/test/resources/drivers/chromedriver75_mac");
+ driver = new ChromeDriver();
+ driver.get("http://localhost:8888/gosslingator.php");
+ }
+
+ @Test
+ public void itShouldDisplayTitle() {
+ Assert.assertEquals("GOSLINGATE ME", driver.findElement(By.cssSelector(".ryan-title")).getText());
+ }
+
+ @Test
+ public void itShouldAddOneRyan() {
+ driver.findElement(By.id("addRyan")).click();
+
+ String actualNumberOfRyans = driver.findElement(By.id("ryanCounter")).getText();
+ Assert.assertEquals("1", actualNumberOfRyans);
+
+ System.out.println("Number of ryans: " + driver.findElement(By.cssSelector("div.ryan-counter h2")).getText());
+ Assert.assertEquals("ryan", driver.findElement(By.cssSelector("div.ryan-counter h3")).getText());
+ }
+
+ @Test
+ public void itShouldTwoRyans() {
+ driver.findElement(By.id("addRyan")).click();
+ driver.findElement(By.id("addRyan")).click();
+
+ String actualNumberOfRyans = driver.findElement(By.id("ryanCounter")).getText();
+ String actualRyanDescription = driver.findElement(By.cssSelector("div.ryan-counter h3")).getText();
+
+ Assert.assertEquals("2", actualNumberOfRyans);
+ Assert.assertEquals("ryans", actualRyanDescription);
+ }
+
+ @Test
+ public void itShouldDisplayWarningMessage() {
+ WebElement addRyanButton = driver.findElement(By.id("addRyan"));
+ for (int i = 0; i < 50; i++) {
+ addRyanButton.click();
+ }
+ Assert.assertEquals(
+ "NUMBER OF\n" +
+ "RYANS\n" +
+ "IS TOO DAMN\n" +
+ "HIGH",
+ driver.findElement(By.cssSelector("h1.tooManyRyans")).getText()
+ );
+ }
+
+ @Test
+ public void itShouldDisplayNoRyanOnPageOpen() {
+ Assert.assertEquals(0, driver.findElements(By.cssSelector("img")).size());
+ }
+
+ @After
+ public void tearDown() {
+ driver.close();
+ driver.quit();
+ }
+}
diff --git a/selenidetraining/src/test/java/tests/RandomTableTest.java b/selenidetraining/src/test/java/tests/RandomTableTest.java
new file mode 100644
index 0000000..ac8f56a
--- /dev/null
+++ b/selenidetraining/src/test/java/tests/RandomTableTest.java
@@ -0,0 +1,47 @@
+package tests;
+
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.JavascriptExecutor;
+import org.openqa.selenium.WebElement;
+
+import base.TestBase;
+
+public class RandomTableTest extends TestBase {
+ @Before
+ public void openPage() {
+ //1.otvorit stranku
+ driver.get(BASE_URL + "/tabulka.php");
+ }
+
+ @Test
+ public void itShouldContainDataForEachRow() {
+ for (WebElement tableRow : getRows()) {
+ Assert.assertFalse(tableRow.getText().isEmpty());
+ }
+ }
+
+ @Test
+ public void itShouldContainNameForEachRow() {
+ List tableRows = getRows();
+ for (WebElement tableRow : tableRows) {
+ tableRow.findElement(By.cssSelector("td:nth-child(2)"));
+ WebElement rowName = tableRow.findElement(By.xpath("./td[2]"));
+ Assert.assertFalse(rowName.getText().isEmpty());
+ }
+ }
+
+ @Test
+ public void itShouldScrollToLastElement() {
+ WebElement lastRow = driver.findElement(By.cssSelector("table > tbody > tr:last-child"));
+ ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", lastRow);
+ }
+
+ private List getRows() {
+ return driver.findElements(By.cssSelector("table tbody tr"));
+ }
+}
diff --git a/selenidetraining/src/test/java/tests/SavingsCalculatorTest.java b/selenidetraining/src/test/java/tests/SavingsCalculatorTest.java
new file mode 100644
index 0000000..2cfc84a
--- /dev/null
+++ b/selenidetraining/src/test/java/tests/SavingsCalculatorTest.java
@@ -0,0 +1,98 @@
+package tests;
+
+import base.TestBase;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.interactions.Actions;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
+import pages.SavingsCalculatorPage;
+
+import static org.junit.Assert.*;
+import static org.openqa.selenium.By.cssSelector;
+
+public class SavingsCalculatorTest extends TestBase {
+ private SavingsCalculatorPage savingsCalculatorPage;
+
+ @Before
+ public void openPage() {
+ driver.get(BASE_URL.concat("/savingscalculator.php"));
+ savingsCalculatorPage = new SavingsCalculatorPage(driver);
+ }
+
+ @Test
+ public void itShouldEnableApplyButton() {
+ savingsCalculatorPage.selectFund("Hoggwart's Fund");
+ savingsCalculatorPage.enterOneTimeInvestment("15000");
+ savingsCalculatorPage.enterYears(20);
+ savingsCalculatorPage.enterEmail("info@furbo.sk");
+
+ assertTrue(savingsCalculatorPage.getApplyButton().isEnabled());
+ }
+
+ @Test
+ public void itShouldDisplayCalculatedAmounts() {
+ savingsCalculatorPage.selectFund("Hoggwart's Fund");
+ savingsCalculatorPage.enterOneTimeInvestment("15000");
+ savingsCalculatorPage.enterYears(20);
+ savingsCalculatorPage.enterEmail("info@furbo.sk");
+
+ assertFalse(savingsCalculatorPage.getCalculatedTotalIncomeElement().getText().isEmpty());
+ assertFalse(savingsCalculatorPage.getCalculatedInterestIncomeElement().getText().isEmpty());
+ }
+
+ @Test
+ public void itShouldDisplayCalculatedRisk() {
+ savingsCalculatorPage.selectFund("Hoggwart's Fund");
+ savingsCalculatorPage.enterOneTimeInvestment("15000");
+ savingsCalculatorPage.enterYears(20);
+ savingsCalculatorPage.enterEmail("info@furbo.sk");
+
+ assertFalse(savingsCalculatorPage.getCalculatedRiskElement().getText().isEmpty());
+ }
+
+
+ @Test
+ public void itShouldContainFundNameInNewRequest() {
+ String fundToSelect = "Hoggwart's Fund";
+
+ savingsCalculatorPage.selectFund(fundToSelect);
+ savingsCalculatorPage.enterOneTimeInvestment("25000");
+ savingsCalculatorPage.enterYears(20);
+ savingsCalculatorPage.enterEmail("info@furbo.sk");
+
+ savingsCalculatorPage.applyForSaving();
+
+ assertEquals(
+ fundToSelect,
+ savingsCalculatorPage.getRecentRequestDetail().findElement(cssSelector("p.fund-description")).getText()
+ );
+ }
+
+ @Test
+ public void itShouldDisplayErrorMessageWhenEmailIsInvalid() {
+ savingsCalculatorPage.enterEmail("invalid");
+ assertTrue(savingsCalculatorPage.getEmailInputWrapper().getAttribute("class").contains("error"));
+ }
+
+ @Test
+ public void itShouldHighlightNewRequestOnHover() throws InterruptedException {
+ savingsCalculatorPage.selectFund("Hoggwart's Fund");
+ savingsCalculatorPage.enterOneTimeInvestment("15000");
+ savingsCalculatorPage.enterYears(20);
+ savingsCalculatorPage.enterEmail("info@furbo.sk");
+ savingsCalculatorPage.applyForSaving();
+
+ Actions action = new Actions(driver);
+ WebElement we = driver.findElement(By.cssSelector("div.saving-detail"));
+ action.moveToElement(we).build().perform();
+ Thread.sleep(300);
+ assertEquals("rgba(4, 102, 156, 1)", we.getCssValue("background-color"));
+ }
+}
+
+
+
diff --git a/selenidetraining/src/test/java/tests/SortingHatTest.java b/selenidetraining/src/test/java/tests/SortingHatTest.java
new file mode 100644
index 0000000..7d1926d
--- /dev/null
+++ b/selenidetraining/src/test/java/tests/SortingHatTest.java
@@ -0,0 +1,23 @@
+package tests;
+
+import base.TestBase;
+import org.junit.Assert;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
+
+public class SortingHatTest extends TestBase {
+
+
+ @Test
+ public void itShouldDisplayNameOfHouse() {
+ driver.get(BASE_URL + "/sortinghat.php");
+ driver.findElement(By.cssSelector("button")).click();
+ new WebDriverWait(driver, 10)
+ .until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("img.loading")));
+ new WebDriverWait(driver, 10)
+ .until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector("img.loading")));
+ Assert.assertFalse(driver.findElement(By.cssSelector("p.result")).getText().isEmpty());
+ }
+}
diff --git a/selenidetraining/src/test/java/tests/SpelleologyTest.java b/selenidetraining/src/test/java/tests/SpelleologyTest.java
new file mode 100644
index 0000000..18c0904
--- /dev/null
+++ b/selenidetraining/src/test/java/tests/SpelleologyTest.java
@@ -0,0 +1,68 @@
+package tests;
+
+import base.TestBase;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class SpelleologyTest extends TestBase {
+
+ @Before
+ public void openPage() {
+ driver.get(BASE_URL + "/spelleology.php");
+ }
+
+ @Test
+ public void itShouldContainSpells() {
+ String[] spellsToBePresent = {
+ "counters sonorus",
+ "erases memories",
+ "counterspells",
+ "controls a person – unforgivable"
+ };
+
+ new WebDriverWait(driver, 10)
+ .until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("ul.spells li")));
+ List displayedSpells = driver.findElements(By.cssSelector("ul.spells li"))
+ .stream()
+ .map(WebElement::getText)
+ .collect(Collectors.toList());
+
+ for (String spellToCheck : spellsToBePresent) {
+ Assert.assertTrue(displayedSpells.contains(spellToCheck));
+ }
+ }
+
+ @Test
+ public void itShouldDisplayTortureSpell() {
+ new WebDriverWait(driver, 10)
+ .until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("ul.spells li")));
+ List spellElements = driver.findElements(By.cssSelector("ul.spells li"));
+
+ for (WebElement spellElement : spellElements) {
+ if (spellElement.getText().equals("tortures a person")) {
+ spellElement.click();
+ }
+ }
+ new WebDriverWait(driver, 10)
+ .until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.modal-container")));
+ WebElement modal = driver.findElement(By.cssSelector("div.modal-container"));
+ Assert.assertTrue(modal.getText().contains("Crucio"));
+ }
+
+ @Test
+ public void itShouldFilterSpells() {
+ driver.findElement(By.cssSelector("input")).sendKeys("tortures a person");
+ new WebDriverWait(driver, 10).until(ExpectedConditions
+ .numberOfElementsToBe(By.cssSelector("ul.spells li"), 1));
+ Assert.assertEquals(driver.findElements(By.cssSelector("ul.spells li")).size(), 1);
+ }
+
+}
diff --git a/selenidetraining/src/test/java/tests/WaitForItTest.java b/selenidetraining/src/test/java/tests/WaitForItTest.java
new file mode 100644
index 0000000..72929f4
--- /dev/null
+++ b/selenidetraining/src/test/java/tests/WaitForItTest.java
@@ -0,0 +1,49 @@
+package tests;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
+
+import base.TestBase;
+
+public class WaitForItTest extends TestBase {
+
+ @Before
+ public void openPage() {
+ driver.get(BASE_URL + "/waitforit.php");
+ }
+
+ @Test
+ public void waitForValue() {
+ String expectedText = "dary !!!";
+ driver.findElement(By.id("startWaitForText")).click();
+ WebElement input = driver.findElement(By.id("waitForTextInput"));
+
+ new WebDriverWait(driver, 5)
+ .until(ExpectedConditions.attributeToBe(input, "value", expectedText));
+
+ Assert.assertEquals(expectedText, input.getAttribute("value"));
+ }
+
+ @Test
+ public void waitForClass() {
+ driver.findElement(By.id("startWaitForProperty")).click();
+
+ new WebDriverWait(driver, 10)
+ .until(ExpectedConditions.attributeContains(By.id("waitForProperty"),"class","error"));
+ }
+
+ @Test
+ public void itShouldDisplayResponseTimeMessage() {
+ driver.findElement(By.id("startWaitForText")).click();
+
+ new WebDriverWait(driver, 10).until(ExpectedConditions.textToBePresentInElement(
+ driver.findElement(By.cssSelector("div.current-wait-time")),
+ "Response time"));
+ Assert.assertTrue(driver.findElement(By.cssSelector("div.current-wait-time")).getText().contains("Response time"));
+ }
+}
diff --git a/selenidetraining/src/test/java/utils/DataUtils.java b/selenidetraining/src/test/java/utils/DataUtils.java
new file mode 100644
index 0000000..352b433
--- /dev/null
+++ b/selenidetraining/src/test/java/utils/DataUtils.java
@@ -0,0 +1,16 @@
+package utils;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class DataUtils {
+ public static List getExpectedSpells() throws FileNotFoundException {
+ FileReader fileReader = new FileReader(new File("src/test/resources/testData/spells.txt"));
+ BufferedReader br = new BufferedReader(fileReader);
+ return br.lines().collect(Collectors.toList());
+ }
+}
diff --git a/selenidetraining/src/test/resources/drivers/mac/chromedriver75_mac b/selenidetraining/src/test/resources/drivers/mac/chromedriver75_mac
new file mode 100644
index 0000000..a72e0a1
Binary files /dev/null and b/selenidetraining/src/test/resources/drivers/mac/chromedriver75_mac differ
diff --git a/selenidetraining/src/test/resources/drivers/mac/chromedriver76_mac b/selenidetraining/src/test/resources/drivers/mac/chromedriver76_mac
new file mode 100644
index 0000000..1939add
Binary files /dev/null and b/selenidetraining/src/test/resources/drivers/mac/chromedriver76_mac differ
diff --git a/selenidetraining/src/test/resources/drivers/win/chromedriver75_win.exe b/selenidetraining/src/test/resources/drivers/win/chromedriver75_win.exe
new file mode 100644
index 0000000..7506cef
Binary files /dev/null and b/selenidetraining/src/test/resources/drivers/win/chromedriver75_win.exe differ
diff --git a/selenidetraining/src/test/resources/drivers/win/chromedriver76_win.exe b/selenidetraining/src/test/resources/drivers/win/chromedriver76_win.exe
new file mode 100644
index 0000000..065c52c
Binary files /dev/null and b/selenidetraining/src/test/resources/drivers/win/chromedriver76_win.exe differ
diff --git a/selenidetraining/src/test/resources/testData/spells.txt b/selenidetraining/src/test/resources/testData/spells.txt
new file mode 100644
index 0000000..032ff06
--- /dev/null
+++ b/selenidetraining/src/test/resources/testData/spells.txt
@@ -0,0 +1,91 @@
+summons an object
+shoots water from wand
+opens locked objects
+clears the target's airway
+reveals invisible ink
+murders opponent
+turns small objects into birds
+launches birds from your wand
+strengthens an enclosure from enemies
+magically locks door
+explodes flames on target
+confuses opponent
+damages opponents eyesight
+tortures a person
+digs out materials
+counters `prior incatato`
+enlarges teeth
+blasts holes through walls and floors
+splits seams
+opens `one eyed witch` hump
+makes objects hard
+enlarges and item
+counters stupefy
+heals minor injuries
+erects things
+creates a patronus
+disarms your opponent
+makes objects explode
+creates bandages
+hides a secret within someone
+stops any current spells
+allows user to write on objects
+knocks an object backwards
+produces boils on opponent
+duplicates an object
+turns stairs into ramps
+reveals humans nearby
+cures werewolves (at least according to lockhart)
+renders target immobile.
+slows an advancing object
+controls a person – unforgivable
+makes an object repel water
+ties someone up
+starts a fire
+glues opponent's tongue to roof of mouth
+allows the caster to delve into the mind of the victim
+hangs victim upside down by feet
+counterspells
+locks opponents legs
+creates light at wand tip
+causes weather effect spells to stop
+moves objects with wand
+moves unconscious bodies
+conjures the dark mark
+prevents nearby people from listening to conversations
+counters lumos
+erases memories
+blindfolds the victim
+makes conjured items attack
+conjures a bunch of flowers
+packs a trunk (suitcase)
+removes pixies (maybe)
+binds body – unforgivable
+animates statues and armor suits
+makes wand act like a compass
+echoes most recent spells, result when brother wands duel
+reveals a wands last spell / cast
+causes spells to reflect back to the sender.
+protects one from dark magic
+protects area
+counters sonorus
+returns items to original size. counters engorgio
+blasts solid objects aside
+releases user from binding
+cures unconsciousness
+repairs things
+keeps muggles away
+tickles opponent
+turns boggart into ridiculous form so you can laugh it away
+protects against hexes
+destroys ectoplasm (remains of ghosts)
+causes wounds as if slashed by a sword
+produces snake
+silences victim
+amplifies voice
+reveals hidden secrets or magical properties
+knocks out opponent
+forces opponent to dance
+cleans up messes
+unsticks an object
+makes on object fly
\ No newline at end of file
diff --git a/selenidetraining/target/test-classes/base/TestBase.class b/selenidetraining/target/test-classes/base/TestBase.class
new file mode 100644
index 0000000..3177f2c
Binary files /dev/null and b/selenidetraining/target/test-classes/base/TestBase.class differ
diff --git a/selenidetraining/target/test-classes/drivers/mac/chromedriver75_mac b/selenidetraining/target/test-classes/drivers/mac/chromedriver75_mac
new file mode 100644
index 0000000..a72e0a1
Binary files /dev/null and b/selenidetraining/target/test-classes/drivers/mac/chromedriver75_mac differ
diff --git a/selenidetraining/target/test-classes/drivers/mac/chromedriver76_mac b/selenidetraining/target/test-classes/drivers/mac/chromedriver76_mac
new file mode 100644
index 0000000..1939add
Binary files /dev/null and b/selenidetraining/target/test-classes/drivers/mac/chromedriver76_mac differ
diff --git a/selenidetraining/target/test-classes/drivers/win/chromedriver75_win.exe b/selenidetraining/target/test-classes/drivers/win/chromedriver75_win.exe
new file mode 100644
index 0000000..7506cef
Binary files /dev/null and b/selenidetraining/target/test-classes/drivers/win/chromedriver75_win.exe differ
diff --git a/selenidetraining/target/test-classes/drivers/win/chromedriver76_win.exe b/selenidetraining/target/test-classes/drivers/win/chromedriver76_win.exe
new file mode 100644
index 0000000..065c52c
Binary files /dev/null and b/selenidetraining/target/test-classes/drivers/win/chromedriver76_win.exe differ
diff --git a/selenidetraining/target/test-classes/pages/SavingsCalculatorPage.class b/selenidetraining/target/test-classes/pages/SavingsCalculatorPage.class
new file mode 100644
index 0000000..8763d72
Binary files /dev/null and b/selenidetraining/target/test-classes/pages/SavingsCalculatorPage.class differ
diff --git a/selenidetraining/target/test-classes/suites/TestSuite.class b/selenidetraining/target/test-classes/suites/TestSuite.class
new file mode 100644
index 0000000..c032db1
Binary files /dev/null and b/selenidetraining/target/test-classes/suites/TestSuite.class differ
diff --git a/selenidetraining/target/test-classes/testData/spells.txt b/selenidetraining/target/test-classes/testData/spells.txt
new file mode 100644
index 0000000..032ff06
--- /dev/null
+++ b/selenidetraining/target/test-classes/testData/spells.txt
@@ -0,0 +1,91 @@
+summons an object
+shoots water from wand
+opens locked objects
+clears the target's airway
+reveals invisible ink
+murders opponent
+turns small objects into birds
+launches birds from your wand
+strengthens an enclosure from enemies
+magically locks door
+explodes flames on target
+confuses opponent
+damages opponents eyesight
+tortures a person
+digs out materials
+counters `prior incatato`
+enlarges teeth
+blasts holes through walls and floors
+splits seams
+opens `one eyed witch` hump
+makes objects hard
+enlarges and item
+counters stupefy
+heals minor injuries
+erects things
+creates a patronus
+disarms your opponent
+makes objects explode
+creates bandages
+hides a secret within someone
+stops any current spells
+allows user to write on objects
+knocks an object backwards
+produces boils on opponent
+duplicates an object
+turns stairs into ramps
+reveals humans nearby
+cures werewolves (at least according to lockhart)
+renders target immobile.
+slows an advancing object
+controls a person – unforgivable
+makes an object repel water
+ties someone up
+starts a fire
+glues opponent's tongue to roof of mouth
+allows the caster to delve into the mind of the victim
+hangs victim upside down by feet
+counterspells
+locks opponents legs
+creates light at wand tip
+causes weather effect spells to stop
+moves objects with wand
+moves unconscious bodies
+conjures the dark mark
+prevents nearby people from listening to conversations
+counters lumos
+erases memories
+blindfolds the victim
+makes conjured items attack
+conjures a bunch of flowers
+packs a trunk (suitcase)
+removes pixies (maybe)
+binds body – unforgivable
+animates statues and armor suits
+makes wand act like a compass
+echoes most recent spells, result when brother wands duel
+reveals a wands last spell / cast
+causes spells to reflect back to the sender.
+protects one from dark magic
+protects area
+counters sonorus
+returns items to original size. counters engorgio
+blasts solid objects aside
+releases user from binding
+cures unconsciousness
+repairs things
+keeps muggles away
+tickles opponent
+turns boggart into ridiculous form so you can laugh it away
+protects against hexes
+destroys ectoplasm (remains of ghosts)
+causes wounds as if slashed by a sword
+produces snake
+silences victim
+amplifies voice
+reveals hidden secrets or magical properties
+knocks out opponent
+forces opponent to dance
+cleans up messes
+unsticks an object
+makes on object fly
\ No newline at end of file
diff --git a/selenidetraining/target/test-classes/tests/FellowshipTest.class b/selenidetraining/target/test-classes/tests/FellowshipTest.class
new file mode 100644
index 0000000..4b80abc
Binary files /dev/null and b/selenidetraining/target/test-classes/tests/FellowshipTest.class differ
diff --git a/selenidetraining/target/test-classes/tests/GosslingatorTest.class b/selenidetraining/target/test-classes/tests/GosslingatorTest.class
new file mode 100644
index 0000000..e17342e
Binary files /dev/null and b/selenidetraining/target/test-classes/tests/GosslingatorTest.class differ
diff --git a/selenidetraining/target/test-classes/tests/RandomTableTest.class b/selenidetraining/target/test-classes/tests/RandomTableTest.class
new file mode 100644
index 0000000..04caeb8
Binary files /dev/null and b/selenidetraining/target/test-classes/tests/RandomTableTest.class differ
diff --git a/selenidetraining/target/test-classes/tests/SavingsCalculatorTest.class b/selenidetraining/target/test-classes/tests/SavingsCalculatorTest.class
new file mode 100644
index 0000000..14b208d
Binary files /dev/null and b/selenidetraining/target/test-classes/tests/SavingsCalculatorTest.class differ