This document provides an overview of the JDI (Java UI test automation framework). It discusses features of JDI including being UI element oriented, providing common UI elements and solutions to common problems. It provides examples of how to write tests using JDI annotations and page object pattern. The document also summarizes benefits of JDI such as reducing test code, improving test clarity, reuse across projects. Finally it outlines new features planned for JDI 2.0 including layout verification, page object generator, integration with Selenium and expanding JDI to other languages like Python.
Report
Share
Report
Share
1 of 44
More Related Content
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
4. • UI Test Framework
• UI Elements oriented
• Dozens of UI elements already implemented
• Most of common problems already solved (e.g.
stabilization)
4
JDI IS
5. • UI Test Framework
• UI Elements oriented
5
JDI IS
6. • UI Test Framework
• UI Elements oriented
• Interfaces above engines
6
JDI IS
7. 7
JDI - CODE EXAMPLE
public class Login extends Form<User>
@Css(“.login”) TextField submit;
@XPath(“//*[@id=‘psw’]”) TextField name;
@Text(“Login”) Button login;
@FindBy(xpath = “//*[*[value=‘%’]]Hello”) Menu siteNavigation;
loginForm.loginAs(adminUser);
siteNavigation.select(“About”);
8. 8
JDI - CODE EXAMPLE
@JSite(“http://awesome.site.com”)
public class AwesomeSite extends WebSite;
@JPage(url=“/home”) public static HomePage page;
public class HomePage extends WebPage;
@Css(“.name”) public TextField name;
@XPath(“//*[text()=‘%s’]”) public Menu mainMenu;
…
@Frame(“frameId”) public Advert advertisement;
public class Advert extends Section;
@FindBy(className =“pict”) public Image picture;
@FindBy(css = “.descr") public Text description;
Init(AwesomeSite.class);
9. • Save your time for Automation Testing
• Fast on start and easy for support tests in future
• Provide stable and detailed results
• Platform - Flexible for any UI project
9
JDI - PROFIT
Test like a boss
10. • Write test code faster up to 5 times
• Average result around 2.8 times
• 4.7 times speedup on the project with standard implementation
• Produce less amount of test code (loc) up to 3 times
• Average result around 2.1 times
• 2.8 times reduction on the project with standard implementation
• Achieve higher clearness of tests
• Decrease of support time for test projects
• Lowering of project entry barrier for newcomers
• Complete projects with higher quality
• Based on 70 % answers in survey
10
JDI BENEFITS
11. • Reuse investments from one Project on another
• Based on 5 years of work and more than 30 projects that already use JDI
• Save up to 80% test effort by migrating tests to other Platforms
• Based estimated average scope reductions for all test process stages
• Example: migrate Web tests to Mobile platform
11
JDI BENEFITS
• Can be used any project with UI Automation
• Actually we have no projects where JDI is not applicable.
The only reason why not all of our projects use JDI is Client
requirements
• Save up to 30-40% money for testing
• Based on average calculation of scope reductions for all test
process stages
14. 14
NEW ARCHITECTURE
• Less code for new Engines
• More unification
• Guideline for Engines developers
• Implement list of methods with your engine
• Add your engine specific features
• Create list of elements (add only specific
functionality)
15. 15
NEW ARCHITECTURE
• Elements collections
• Simple Web
• Extended Web
• Complex forms and tables
• Shop elements
• Bank / Government / Document elements
…Your collections
16. • All elements and methods documentation
• Simple start guideline
• Cookbook: JDI features tutorial
• Guideline for contributors
… anything else?
16
DOCUMENTATION
22. public class EpamSite extends WebSite {
public static HomePage homePage;
22
VERIFY LAYOUT - DEFAULT
public class HomePage extends WebPage
@Text(“Submit”) public Button submit;
“src/test/resources/jdi-images/epamsite/
homepage/submit.jpg”
23. 23
VERIFY LAYOUT
homePage.verifyLayout()
homePage.assertLayout() / homePage.checkLayout()
public class HomePage extends WebPage
@Text(“Submit”) Button submit;
@Css(“.name”) TextField name;
@XPath(“//*[text()=‘%s’]”) Menu mainMenu;
@FindBy(text = “Hello”) Label label;