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 + 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 + + src/main/java/App.java + + + src/test/java/AppTest.java + + 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 + + src/main/java/App.java + + + src/test/java/AppTest.java + + 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 + + src/main/java/App.java + + + src/test/java/AppTest.java + + 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