Course goals This trianing is held in Czech. Does the front-end based test automation work? Definitely it does, and it works well, when designed and implemented properly. In this course, we will learn how to do it. When you ask the people involved in the test automation „what is the main problem of this technology“, the answer would be very likely „the maintenance“. Yes, it‘s right. We struggle with the changes of the tested system, which makes our tests obsolete. These changes are natural during the project, but for test automation engineer, they are a kind of nightmare: they causes maintenance overhead, which can sometimes even lead to failure of the test automation project. Using a naive approach to test automation, this overhead is simply too high. So, after learning the basics in this course, we will soon move from these naive approaches to more advanced structuring of the tests. And together with that, we will learn a number of various methods, which are in place to minimize this overhead. Using all of them together, we would be able to write well-structured and economic code, key factor for success of our test automation activity. In the course, we will use the Selenium WebDriver framework, known and reliable open-source solution for automated tests. Besides the structuring concepts, we will also learn WebDriver API and good patterns, how to combine WebDriver with JUnit framework to run our tests. All this will be done via interactive practical examples: course participants will be developing their own test code, using prepared examples, with support of two experienced test automation specialists, having the rich background in many test automation projects, development of extensions to Selenium WebDriver framework and technological research in test automation. The course covers the following subject areas What are the specifics, strengths and possible pitfalls of automated tests? Economics of test automation Which scope is good one? Shall we automate manual test 1:1? The first test: arrange-act-assert structure Reusable objects: let use them from the beginning WebDriver object, Selenium capabilities, the most frequently used APIs Handling the different browsers and versions, introduction to automated mobile testing Element localization strategies: what is suitable and what is not, how to write good XPaths Synchronization of tests with the tested application (incl. AJAXes and other tricky elements) Connecting the WebDriver with JUnit / TestNG Handling the test fails, collecting the defect report, screenshots Structuring the larger test sets: layered architecture PageObject and PageFactory design patterns More business logic and more element initialization flexibility in PageObject Test data parametrization, using data grids Larger test set: create a central test data repository? Organizing the larger test set: Test suites, subsets by test types, reusable tests How to implement longer (E2E) tests: Connection points, handling the test data More advanced concepts: Using Java generics to speed-up the development, SmartDriver approach Test execution plan, technical ways to schedule and run the tests Summary of quick-wins, good and wrong practices Get you leaflet: Effective Automated Testing with Selenium Required equipment: own notebook with an up-to date Java development IDE supporting Maven and JUnit (IntelliJ IDEA is preferred, but other IDEs can be used as well). The rest will be installed at the beginning of the training via the Maven. Prepared automated test scripts to customize and develop during the course will be given to participants via shared web folder. Trainer: Jan Hornych (CZ)