GithubHelp home page GithubHelp logo

jdi-testing / jdi-light Goto Github PK

View Code? Open in Web Editor NEW
108.0 37.0 47.0 164.83 MB

Powerful Framework for UI Automation Testing on Java

Home Page: https://jdi-docs.github.io/jdi-light/

License: MIT License

Java 98.84% Gherkin 0.80% XSLT 0.11% Shell 0.25% Batchfile 0.01%
automation-ui automated-testing jdi-light selenium java ui-testing bdd-style-testing-framework jdi tutorial effort

jdi-light's Introduction

JDI Light Test Automation Framework

License: MIT stackoverflow PDD Status FOSSA Status SLACK

Important

Starting from release 1.5.0 we will support JDK 11+ only. In case of any critical updates required in previous releases (for example, due to vulnarabilities), please contact to our team.

Documentation

For fast start you can go through tutorial

More links:
Documentation: https://jdi-docs.github.io/jdi-light/?java - different types of documentation from introduction and tutorial to technical methods documentation
Introduction + fast start example: https://jdi-docs.github.io/jdi-light/?java#introduction
Tutorial: https://jdi-docs.github.io/jdi-light/?java#tutorial - helps to get main ideas on practice
Tutorial repo: https://github.com/jdi-tutorials
Project templates: https://github.com/jdi-templates - for fast projects start
Examples: https://github.com/jdi-examples
How to use UI Elements examples
Increase test performance examples
How to start contribution setup environment
How to design element basic description

Introduction

JDI Light โ€“ is the test Framework for UI test automation that helps to makes your tests fast and sustainable and provide obvious and predictable test run result

Highlights

  • Has simple integration with any Selenium based project that allows to increase projects stability, add user actions logs and enrich standard WebElements capabilities with new features in minutes (TBD add Guide)
  • Extends Page Objects pattern with powerful UI Elements: Buttons, TextFields, Forms, Tables etc ( TBD add good links to examples)
  • Write stable and predictable tests that fail only because of changing business logic or layout. No more waits, thread sleep and other flaky staff
  • Increase your tests execution speed in general and especially for complex cases like search in big tables, dropdowns with hundreds elements or enter text with thousand lines
  • Get detailed logs and good reports of all user actions with no effort
  • Easy integration with all modern Automation tools: CI (Jenkins, TC etc.), Logging (Log4j or any other slf4j based logs), Reporting (Allure or Report Portal); Browser/Devices farms (Selenium Grid, Browser Stack, Selenoid etc.), Test Runners (TestNG, JUnit) etc.

Our plans

Ultimate Goal

Develop an automation framework based on AI that can identify and write correct stable PageObject automatically without engineers effort, generate smoke tests for application in seconds and some negative cases too. Run test execution automatically and correct tests if any changes in layout happens provide good reports for test project team and recommendations how Project can be improved

Nearest plans

Features

Useful Links

Test site: https://jdi-testing.github.io/jdi-light/

Login to get access to all pages (Login: Roman; Password: Jdi1234)

Html Elements examples: https://jdi-testing.github.io/jdi-light/html5.html

Example Html elements tests: https://github.com/jdi-testing/jdi-light/tree/master/jdi-light-html-tests

Example Scenario tests: https://github.com/jdi-testing/jdi-light/tree/master/jdi-light-examples

Site: http://jdi.epam.com/

Facebook: https://www.facebook.com/groups/jdi.framework/

You can ask your questions on StackOverflow with htmlelements tag

Community and Support

Get Help in active users Slak chat: https://join.slack.com/t/jdi-family/shared_invite/zt-toag8fgg-ppPiW~lZDU9873JAiSwTJw

(Depricated) Get Help in active users Skype chat: https://join.skype.com/clvyVvnZvWqc

Contacts

Mail: [email protected]

Skype: roman.iovlev

License

FOSSA Status

jdi-light's People

Contributors

akiofaris avatar alexarm avatar alexeygirin avatar alexkashin90 avatar andreysinelnikov avatar annav00 avatar b14ckster avatar daarklight avatar dmitriibabakaevtr avatar epam-roman-iovlev avatar fwerfad avatar gbuh avatar iharlkkr avatar innokentiy945 avatar kchebulaev avatar knadonenko avatar liliya-web avatar lunandrey avatar mazurk239 avatar nechepurenkon avatar newernaigil avatar obitkin avatar pnatashap avatar romaniovlev avatar stanislavdmitriev-epam avatar strrust avatar tsvetaevalex avatar valentinbodrov avatar vklonin avatar vsevolod-adrianov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jdi-light's Issues

Add PageFactory init tests

Add test-examples for different kinds of site initialization using PageFactory.initElements

  1. Init Site
  2. Init list of WebPages
  3. Init single WebPage
  4. Init single page with no class in extends
  5. Init list of pages with no class in extends
  6. Init two different sites
  7. Open two browsers in parallel
  8. Work with 2+ sites in parallel tabs in one browser example

Documentation on move from Selenide

Dependency change
PageFactory Init
SelenideElement > UIElement
ElementsCollection > WebList or List<UIElement>

Immediate profits:
Logs
Stability
Performance
Code reduction with Forms and tables
Remove Thread sleeps and waits

Documentation for Setup test project

test properties
WebSettings
DriverSettings
Run jdi tests via console (Jenkins as example)
properties from mvn params console
properties from gradle params console
Before all tests (example testng)
Kill run web drivers

Remove Site entity

Add ability to init static pages in some folder / folders directly without JDISite class
scan expected folder and init static PageObjects

Implement Cucumber steps for Html elements

Implement methods for Cucumber for html elements methods

See example in jdi-cucumber

  1. Create new methods for Cucumber steps (Cucumber Core) - use request from the team
  2. Implement steps for Cucumber
    2.1 Implement steps for Cucumber for Common Elements
    2.2 Implement steps for Cucumber for Complex Elements
    2.2 Implement steps for Cucumber for Composite Elements
  3. Cover steps with tests - add JDI Light Cucumber dependency

Documentation for Parallel test run

How to run tests in parallel with examples
Local
Use Custom Driver

Integration with thirdparty tools:
Selenium Grid
Browser Stack
Selenoid

Tips on parallel tests limitations (preconditions, independent test data)

Add Search by custom attribute functionality

Add ability to map custom attributes to way how to search element
Add default Annotations:
@ ById -> #elName
@ ByText -> //*[text()='elName']
@ ByClass -> .elName
@ ByType -> [type='elName']
@ ByName -> [name='elName']

Implement Test Fail handling

While test fails we should do by default:

  1. Put in log elements Html code
  2. Highlight element on page
  3. Make a screenshot

Documentation on Composite elements

Write documentation on all methods for
Section - This means to add different types of elements on section and validate that they are not null after Section init (via Site) and use Section (parent) locator as context

  • public WebElement
  • WebElement
  • public static WebElement
  • public TextField
  • TextField
  • public static TextField
  • extend PageObject from some BaseClass that extends Section (public class Header extends BasePage; public class BasePage extends Section); place some elements on Base Page and validate that these elements are not null
  • Create Section for IFrame with @frame annotation (use this page https://jdi-testing.github.io/jdi-light/index.html) and validate that elements in IFrame are intractable
  • Validate that Base action also work for section (like isDisplayed and all is() validations)
  • Add tests for PageObjects that not extend Section and placed on some WebPage

Form

  • Validate all form actions
  • Validate changing FILL_ACTION and GET_ACTION methods
  • Validate filters functionality
  • Add test for form with overridden fillAction() and getAction()

WebPage

  • Add @url and @title validation tests with all combinations of these annotations params (including cases where some annotations missed)
  • Add tests on all Page actions
  • Add the same tests as for Section
  • Add tests for PageObjects that not extend WebPage and placed on some Site

Documentation on move from Selenium to JDI Light

Dependency change
PageFactory Init
WebElement > UIElement
List<WebElement> > WebList or List<UIElement>

Immediate profits:
Logs
Stability
Performance
Code reduction with Forms and tables
Remove Thread sleeps and waits

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.