Enabling Test Automation in Java

Overview

Build Status

Codacy Badge

Gitter

SeLion

Enabling Test Automation in Java

SeLion builds on top of TestNG and Selenium to provide a set of capabilities that get you up and running with WebDriver in a short time. It can be used for testing web and mobile applications.

  • A client module which you can add as a Maven dependency.
    • Annotation based WebDriver session management.
    • Runtime Reporter for real-time test execution status.
    • Swap out browser targets at run-time.
    • Automate native, hybrid, and web applications on iOS and Android devices.
    • and more
  • A set of TestNG compatible data providers which allow you to access test data from Excel, YAML, JSON, and XML.
  • A maven archetype for creating new SeLion based projects.
  • A customized Selenium Grid2 component.
  • A Code generator Maven plugin for generating Java "page objects" out of YAML.

Documentation

Project documentation including prerequisites, compilation, usage, and more is at http://paypal.github.io/SeLion/html/documentation.html

Create a new project using the SeLion maven archetype

mvn archetype:generate -B -DartifactId=Sample -Dversion=1.0.0 -DgroupId=com.mycompany.myproject \
 -DarchetypeGroupId=com.paypal.selion -DarchetypeArtifactId=SeLion-Archetype -DarchetypeVersion=1.2.0

Client module (includes SeLion DataProviders)

<dependency>
    <groupId>com.paypal.selion</groupId>
    <artifactId>SeLion</artifactId>
    <version>1.2.0</version>
</dependency>

SeLion-DataProviders only

<dependency>
  <groupId>com.paypal.selion</groupId>
  <artifactId>SeLion-DataProviders</artifactId>
  <version>1.2.0</version>
</dependency

SeLion Grid enhancements -- Required for local run support with the Client module

<dependency>
  <groupId>com.paypal.selion</groupId>
  <artifactId>SeLion-Grid</artifactId>
  <version>1.2.0</version>
</dependency

SeLion Code Generator Maven plugin -- Adds "page object" code generation

<plugin>
    <groupId>com.paypal.selion</groupId>
    <artifactId>SeLion-Code-Generator</artifactId>
    <version>1.2.0</version>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <basePackage>coo.foo.bar</basePackage>
    </configuration>
</plugin>

Run the SeLion Grid as a standalone selenium server

java -jar SeLion-Grid-1.2.0-jar-with-dependencies.jar

Run the SeLion Grid as a selenium hub

java -jar SeLion-Grid-1.2.0-jar-with-dependencies.jar -role hub

Run the SeLion Grid as a selenium web node

java -jar SeLion-Grid-1.2.0-jar-with-dependencies.jar -role node

Run the SeLion Grid as a Selendroid node (beta feature)

java -cp SeLion-Grid-1.2.0-jar-with-dependencies.jar com.paypal.selion.grid.SelendroidJarSpawner

Run the SeLion Grid as an ios-driver node (beta feature)

java -cp SeLion-Grid-1.2.0-jar-with-dependencies.jar com.paypal.selion.grid.IOSDriverJarSpawner

Run the SeLion Grid as an Appium node (beta feature)

java -cp SeLion-Grid-1.2.0-jar-with-dependencies.jar com.paypal.selion.grid.AppiumSpawner

Run the SeLion Grid as a Sauce labs proxy

java -cp SeLion-Grid-1.2.0-jar-with-dependencies.jar -role hub -type sauce

Contact

Feel free to ask questions and/or share ideas.

Submitting bugs and feature requests

We use GitHub for tracking issues. Please scan the list of GitHub Issues before filing a new one.

Contributing

Your contribution is welcome and appreciated!

  • Code Development is done on the develop branch.
  • Documentation is done on the gh-pages branch.
  1. Complete and return either the Personal or Corporate CLA.
  2. Make sure your ~/.gitconfig file has your full name with proper use of case as user.name and your real email address as user.email. GitHub has a nice write-up on this.
  3. Make sure you rebase off of the latest upstream version before submitting your pull request.

Areas that need contribution

  1. Project Documentation and/or Project Website.
  2. Project Tests and/or Testing.
  3. Any open item from GitHub Issues.
  4. Support for additional data formats such as CSV for data driven testing.

Projects we depend on that need contributors

Current version

1.2.0 (Selenium 2.53.x based)

Development version

2.0.0-SNAPSHOT (Selenium 3.x based)

License

Code - Apache Software License v2.0

Documentation and Site - Creative Commons Attribution 4.0 International License

Comments
  • @MobileTest iOS not honoring locale and language settings

    @MobileTest iOS not honoring locale and language settings

    Please see the example below if I run this test case the simulator is still being launched with language=en and locale=en_US.

    package com.symbio.test;
    
    import java.util.List;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebElement;
    import org.testng.Assert;
    import org.testng.annotations.Test;
    
    import com.paypal.selion.annotations.MobileTest;
    import com.paypal.selion.platform.grid.Grid;
    import com.paypal.selion.reports.runtime.MobileReporter;
    
    public class IOS_Multi_Locale {
    
        @MobileTest(appName = "InternationalMountains", language="fr", locale="fr_FR")
        @Test
        public void testMethod() throws InterruptedException {
            MobileReporter.log("My Screenshot 1", true);
            List cells = Grid.iOSDriver().findElements(By.className("UIATableCell"));
            Assert.assertEquals(9, cells.size());
    
            // get the 1st mountain
            WebElement first = (WebElement) cells.get(0);
            first.click();
            Thread.sleep(10 * 1000);
    
            // take a screenshot using the normal selenium api.
            MobileReporter.log("My Screenshot 2", true);
    
            // access the content
            By selector = By.xpath("//UIAStaticText[contains(@name,'climbed')]");
            WebElement text = Grid.iOSDriver().findElement(selector);
            System.out.println(text.getAttribute("name"));
        }
    
    }
    
    opened by renelux 28
  • sample execution failed with below error

    sample execution failed with below error

    Running TestSuite 10.20.2014 15:43:05.911,[1] com.paypal.selion INFO JDK Information: Java HotSpot(TM) 64-Bit Server VM from Oracle Corporation ver. 1.7.0_45 10.20.2014 15:43:05.916,[1] com.paypal.selion INFO Runtime Report : /Users/bbheemanadham/testProject/Sample/target/surefire-reports/RuntimeReporter/index.html 2014-10-20 15:43:06.465:INFO:osjs.Server:jetty-7.x.y-SNAPSHOT 2014-10-20 15:43:06.496:INFO:osjsh.ContextHandler:started o.s.j.s.ServletContextHandler{/,null} 2014-10-20 15:43:06.506:INFO:osjs.AbstractConnector:Started SocketConnector@localhost:4444 10.20.2014 15:43:06.506,[9] com.paypal.selion INFO Local Hub spawned 10.20.2014 15:43:07.105,[9] com.paypal.selion INFO Local node spawned 10.20.2014 15:43:07.240,[9] com.paypal.selion INFO Attached node to local hub http://localhost:4444/grid/register org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output: ightweightThemeManager"] 1413837787990 addons.xpi DEBUG startup 1413837787990 addons.xpi DEBUG Skipping unavailable install location app-system-share 1413837787991 addons.xpi INFO Mapping {972ce4c6-7e08-4474-a285-3208198ce6fd} to /Applications/Firefox.app/Contents/MacOS/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} 1413837787991 addons.xpi INFO Mapping [email protected] to /var/folders/yy/c70_0kdn7nz_p4ys8pxm_n3438x977/T/anonymous508798624517507211webdriver-profile/extensions/[email protected] 1413837787991 addons.xpi DEBUG Ignoring file entry whose name is not a valid add-on ID: /var/folders/yy/c70_0kdn7nz_p4ys8pxm_n3438x977/T/anonymous508798624517507211webdriver-profile/extensions/webdriver-staging 1413837787992 addons.xpi DEBUG checkForChanges 1413837787998 addons.xpi DEBUG Directory state JSON differs: cache [] state [{"name":"app-global","addons":{"{972ce4c6-7e08-4474-a285-3208198ce6fd}":{"descriptor":"/Applications/Firefox.app/Contents/MacOS/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}","mtime":1411702628000,"rdfTime":1411702627000}}},{"name":"app-profile","addons":{"[email protected]":{"descriptor":"/var/folders/yy/c70_0kdn7nz_p4ys8pxm_n3438x977/T/anonymous508798624517507211webdriver-profile/extensions/[email protected]","mtime":1413837787000,"rdfTime":1413837787000}}}] 1413837788002 addons.xpi-utils DEBUG Opening XPI database /var/folders/yy/c70_0kdn7nz_p4ys8pxm_n3438x977/T/anonymous508798624517507211webdriver-profile/extensions.json 1413837788003 addons.xpi DEBUG New add-on [email protected] installed in app-profile *** Blocklist::_loadBlocklistFromFile: blocklist is disabled 1413837788040 addons.xpi-utils DEBUG Make addon app-profile:[email protected] visible 1413837788041 DeferredSave.extensions.json DEBUG Save changes 1413837788041 DeferredSave.extensions.json DEBUG Save changes 1413837788041 addons.xpi DEBUG New add-on {972ce4c6-7e08-4474-a285-3208198ce6fd} installed in app-global 1413837788043 addons.xpi-utils DEBUG Make addon app-global:{972ce4c6-7e08-4474-a285-3208198ce6fd} visible 1413837788043 DeferredSave.extensions.json DEBUG Save changes 1413837788043 DeferredSave.extensions.json DEBUG Save changes 1413837788047 addons.xpi DEBUG Updating database with changes to installed add-ons 1413837788047 addons.xpi-utils DEBUG Updating add-on states 1413837788048 addons.xpi-utils DEBUG Writing add-ons list 1413837788266 DeferredSave.extensions.json DEBUG Starting timer 1413837788293 DeferredSave.extensions.json DEBUG Starting write 1413837788297 addons.manager DEBUG shutdown 1413837788299 addons.xpi DEBUG shutdown 1413837788299 addons.xpi-utils DEBUG shutdown 1413837788330 DeferredSave.extensions.json DEBUG Write succeeded 1413837788330 addons.xpi-utils DEBUG XPI Database saved, setting schema version preference to 16 1413837788330 addons.xpi DEBUG Notifying XPI shutdown observers 1413837788332 addons.manager DEBUG Async provider shutdown done 1413837788532 addons.manager DEBUG Loaded provider scope for resource://gre/modules/addons/XPIProvider.jsm: ["XPIProvider"] 1413837788533 addons.manager DEBUG Loaded provider scope for resource://gre/modules/LightweightThemeManager.jsm: ["LightweightThemeManager"] 1413837788534 addons.xpi DEBUG startup 1413837788535 addons.xpi DEBUG Skipping unavailable install location app-system-share 1413837788535 addons.xpi INFO Mapping {972ce4c6-7e08-4474-a285-3208198ce6fd} to /Applications/Firefox.app/Contents/MacOS/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} 1413837788536 addons.xpi INFO Mapping [email protected] to /var/folders/yy/c70_0kdn7nz_p4ys8pxm_n3438x977/T/anonymous508798624517507211webdriver-profile/extensions/[email protected] 1413837788536 addons.xpi DEBUG Ignoring file entry whose name is not a valid add-on ID: /var/folders/yy/c70_0kdn7nz_p4ys8pxm_n3438x977/T/anonymous508798624517507211webdriver-profile/extensions/webdriver-staging 1413837788536 addons.xpi DEBUG checkForChanges 1413837788541 addons.xpi DEBUG No changes found *** Blocklist::_preloadBlocklistFile: blocklist is disabled

    at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:118)
    at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:246)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:114)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:191)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:186)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:103)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.openqa.selenium.remote.server.DefaultDriverFactory.callConstructor(DefaultDriverFactory.java:62)
    at org.openqa.selenium.remote.server.DefaultDriverFactory.newInstance(DefaultDriverFactory.java:56)
    at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:216)
    at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:203)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:170)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
    

    An error occured while setting up the test environment. Root cause: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output: ightweightThemeManager"] 1413837787990 addons.xpi DEBUG startup 1413837787990 addons.xpi DEBUG Skipping unavailable install location app-system-share 1413837787991 addons.xpi INFO Mapping {972ce4c6-7e08-4474-a285-3208198ce6fd} to /Applications/Firefox.app/Contents/MacOS/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} 1413837787991 addons.xpi INFO Mapping [email protected] to /var/folders/yy/c70_0kdn7nz_p4ys8pxm_n3438x977/T/anonymous508798624517507211webdriver-profile/extensions/[email protected] 1413837787991 addons.xpi DEBUG Ignoring file entry whose name is not a valid add-on ID: /var/folders/yy/c70_0kdn7nz_p4ys8pxm_n3438x977/T/anonymous508798624517507211webdriver-profile/extensions/webdriver-staging 1413837787992 addons.xpi DEBUG checkForChanges 1413837787998 addons.xpi DEBUG Directory state JSON differs: cache [] state [{"name":"app-global","addons":{"{972ce4c6-7e08-4474-a285-3208198ce6fd}":{"descriptor":"/Applications/Firefox.app/Contents/MacOS/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}","mtime":1411702628000,"rdfTime":1411702627000}}},{"name":"app-profile","addons":{"[email protected]":{"descriptor":"/var/folders/yy/c70_0kdn7nz_p4ys8pxm_n3438x977/T/anonymous508798624517507211webdriver-profile/extensions/[email protected]","mtime":1413837787000,"rdfTime":1413837787000}}}] 1413837788002 addons.xpi-utils DEBUG Opening XPI database /var/folders/yy/c70_0kdn7nz_p4ys8pxm_n3438x977/T/anonymous508798624517507211webdriver-profile/extensions.json 1413837788003 addons.xpi DEBUG New add-on [email protected] installed in app-profile *** Blocklist::_loadBlocklistFromFile: blocklist is disabled 1413837788040 addons.xpi-utils DEBUG Make addon app-profile:[email protected] visible 1413837788041 DeferredSave.extensions.json DEBUG Save changes 1413837788041 DeferredSave.extensions.json DEBUG Save changes 1413837788041 addons.xpi DEBUG New add-on {972ce4c6-7e08-4474-a285-3208198ce6fd} installed in app-global 1413837788043 addons.xpi-utils DEBUG Make addon app-global:{972ce4c6-7e08-4474-a285-3208198ce6fd} visible 1413837788043 DeferredSave.extensions.json DEBUG Save changes 1413837788043 DeferredSave.extensions.json DEBUG Save changes 1413837788047 addons.xpi DEBUG Updating database with changes to installed add-ons 1413837788047 addons.xpi-utils DEBUG Updating add-on states 1413837788048 addons.xpi-utils DEBUG Writing add-ons list 1413837788266 DeferredSave.extensions.json DEBUG Starting timer 1413837788293 DeferredSave.extensions.json DEBUG Starting write 1413837788297 addons.manager DEBUG shutdown 1413837788299 addons.xpi DEBUG shutdown 1413837788299 addons.xpi-utils DEBUG shutdown 1413837788330 DeferredSave.extensions.json DEBUG Write succeeded 1413837788330 addons.xpi-utils DEBUG XPI Database saved, setting schema version preference to 16 1413837788330 addons.xpi DEBUG Notifying XPI shutdown observers 1413837788332 addons.manager DEBUG Async provider shutdown done 1413837788532 addons.manager DEBUG Loaded provider scope for resource://gre/modules/addons/XPIProvider.jsm: ["XPIProvider"] 1413837788533 addons.manager DEBUG Loaded provider scope for resource://gre/modules/LightweightThemeManager.jsm: ["LightweightThemeManager"] 1413837788534 addons.xpi DEBUG startup 1413837788535 addons.xpi DEBUG Skipping unavailable install location app-system-share 1413837788535 addons.xpi INFO Mapping {972ce4c6-7e08-4474-a285-3208198ce6fd} to /Applications/Firefox.app/Contents/MacOS/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} 1413837788536 addons.xpi INFO Mapping [email protected] to /var/folders/yy/c70_0kdn7nz_p4ys8pxm_n3438x977/T/anonymous508798624517507211webdriver-profile/extensions/[email protected] 1413837788536 addons.xpi DEBUG Ignoring file entry whose name is not a valid add-on ID: /var/folders/yy/c70_0kdn7nz_p4ys8pxm_n3438x977/T/anonymous508798624517507211webdriver-profile/extensions/webdriver-staging 1413837788536 addons.xpi DEBUG checkForChanges 1413837788541 addons.xpi DEBUG No changes found *** Blocklist::_preloadBlocklistFile: blocklist is disabled

    Command duration or timeout: 46.19 seconds Build info: version: 'unknown', revision: 'unknown', time: 'unknown' System info: host: 'LM-AUN-00874562', ip: '127.0.0.1', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.9.5', java.version: '1.7.0_45' Driver info: org.openqa.selenium.remote.RemoteWebDriver 10.20.2014 15:43:53.511,[9] com.paypal.selion INFO Please review the test report for the screenshot at the time of failure. 2014-10-20 15:43:53.571:INFO:osjsh.ContextHandler:stopped o.s.j.s.ServletContextHandler{/,null} 10.20.2014 15:43:53.623,[1] com.paypal.selion INFO Local hub has been stopped 10.20.2014 15:43:53.887,[1] com.paypal.selion INFO Local node has been stopped 10.20.2014 15:43:53.948,[1] com.paypal.selion INFO generating report /Users/bbheemanadham/testProject/Sample/target/surefire-reports/html/report.html Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 48.581 sec <<< FAILURE!

    Results :

    Failed tests: DemoTest1(com.mycompany.test.Demo): An error occured while setting up the test environment. (..)

    Tests run: 1, Failures: 1, Errors: 0, Skipped: 0

    question 
    opened by sankarbhavanib 21
  • common interface for android and ios

    common interface for android and ios

    As discussed in #259 , this is a fork for having a common interface for both Android and Ios. this PR contains the changes required to do the job. this Pr contains the following changes: 1- adding a new android project to sample-apps which is more like the IOS sample app version for testing. 2- changing code generator to support new system and generate files according to new requirement. 3- creating new common elements interfaces and implementing them for ios and android. 4- changing yaml reader to be able to read new style of yaml files. 5- adding some config properties for selecting platform and setting MobileElement annotation parameters from test suite. 6- changing config builder to support selenium grid with multiple appium instances with diferent platforms. 7- adding some test cases and a suite for testing if new system works properly.

    Please let me know if any other change is required.

    enhancement component: client component: codegen 
    opened by alizelzele 19
  • changes to run locally and misc fixes and/or refactoring

    changes to run locally and misc fixes and/or refactoring

    1. Client now uses selion enhanced grid for local runs
    2. ios-driver 0.6.6-snapshot is gone but optional
    3. Client has no selenium-sever dependencies unless running locally. Server dependencies for local runs are downloaded on demand and/or configured in by user
    4. Misc other changes ... view commit message(s) for additional details
    enhancement 
    opened by mach6 14
  • using same interface for IOS and ANDROID Elements

    using same interface for IOS and ANDROID Elements

    I was wondering if there is any specific reason that you separate android and ios platform's Elements from each other? why not using the same interface for both of them, with some specific functions on each of them; and using interfaces names in yaml files?

    Maybe a yaml reader version 3 will be required to handle different locators for each platform in each specific languages? Usually you want to test the app in both android and ios and they are almost the same style and design, why not use the same script for testing them?

    enhancement question component: client component: codegen 
    opened by alizelzele 12
  • Common platform

    Common platform

    changing the common mobile platform to support both platforms with only one class make it easier to maintenance + normally the functions that are required for automation are common and dont need any specific driver commands.

    enhancement component: client 
    opened by alizelzele 11
  • Find free hub port to support multiple local grids in common environments

    Find free hub port to support multiple local grids in common environments

    Added a check to see whether the hub port in configuration is available. Find a another free port when the hub port in the configuration is occupied.

    I have not been able to test it for some reasons specific to my env.

    enhancement component: client 
    opened by squash-merge 11
  • Please help me to disable persistant hover in internet explorer driver.

    Please help me to disable persistant hover in internet explorer driver.

    Please find the below code, still i am see the persistent hover is enabled in the driver info. Please check and revert.

    public void browserCheck(){
        String browserName=Config.getConfigProperty(ConfigProperty.BROWSER.getName());
         System.setProperty(ExcelReport.ENABLE_EXCEL_REPORTER_LISTENER, "true");
        if (browserName.equalsIgnoreCase("*iexplore")){
            capab = DesiredCapabilities.internetExplorer();
            capab.setCapability(InternetExplorerDriver.ENABLE_PERSISTENT_HOVERING,false);
            capab.setCapability(InternetExplorerDriver.NATIVE_EVENTS,false);
    
                            }
        System.out.println("Running Test On Browser : "+Config.getConfigProperty(ConfigProperty.BROWSER.getName()));
    
    }
    

    public void CXOLogin() throws IOException, InterruptedException {

        cxloginPage = new CortexLoginPage();
        dbcxologinPage = new DBCortexLoginPage();
        cxoHomePage = new CortexHomePage();
        Properties prop = new Properties();
        InputStream input = null;
        input = new FileInputStream("src/test/resources/Properties/Environment.properties");
        prop.load(input);
        String URL = prop.getProperty("URL");
        System.out.println("URL --> "+URL);
    
        Grid.driver().get( URL);
    
    
        if (URL.contains("TEST7")){  
            Grid.driver().navigate().to("javascript:document.getElementById('overridelink').click()");
            Grid.driver().manage().window().maximize();
            Config.setConfigProperty(Config.ConfigProperty.EXECUTION_TIMEOUT, "20000");
            Grid.driver().manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
        cxloginPage.setUserNameTextFieldValue("novusit");
        cxloginPage.setPasswordTextFieldValue("novusit1");
        cxloginPage.clickLoginButton();
        Grid.driver().navigate().to("javascript:document.getElementById('overridelink').click()");
        }
    

    public void CXOAdminTestwithData(userMaintenanceDAO usrMaintnceData) throws Exception {

        CortexCommonWorkflows cxoCommonWorkflows = new CortexCommonWorkflows();     
        cxoCommonWorkflows.CXOLogin();
        Thread.sleep(2000);
    
        UserMaintenanceWorkflows.Addusrmaint(usrMaintnceData);
    

    }

    question 
    opened by SridharDayalan1986 10
  • Simplify local executions

    Simplify local executions

    • Ripped out local hub/node concept
    • Introduced a local driver factory that produces concrete browser web driver implementations for local runs.
    • Removed support for htmlunit in local executions because it doesn’t extend RemoteWebDriver.
    • Introduced a new config parameter to obtain the command to start a local node.
    • Removed out the capability matcher from client because now we don’t need it any more.
    • Removed the Hub class that we had duplicated from selenium codebase.
    opened by krmahadevan 10
  • injecting javascript to exercise tap() doesn't work with Appium 1.5 and beyond

    injecting javascript to exercise tap() doesn't work with Appium 1.5 and beyond

    Using javascript to exercise tap instead of using touchActions throws an error with versions of Appium 1.5 and beyond (1.5.2, 1.5.3).

    Related to: https://github.com/appium/appium/issues/6132

    enhancement component: client 
    opened by brandontineo 9
  • Add before and after screenshot events to the element event listener.

    Add before and after screenshot events to the element event listener.

    We need this method to make changes to the webpage before a screenshot gets taken. SeLion by default takes screenshots of the whole page (which we love). But a lot of websites nowadays are using floating headers/elements, this means that when the page is scrolled the header shows in the middle of the page.

    This becomes a problem for the QA's that review the screenshots, with this change we can add a scroll up before the screenshot gets take, and scroll down afterwards.

    enhancement component: client 
    opened by renelux 9
  • Bump spring-web from 4.2.4.RELEASE to 6.0.0 in /server

    Bump spring-web from 4.2.4.RELEASE to 6.0.0 in /server

    Bumps spring-web from 4.2.4.RELEASE to 6.0.0.

    Release notes

    Sourced from spring-web's releases.

    v6.0.0

    See What's New in Spring Framework 6.x and Upgrading to Spring Framework 6.x for upgrade instructions and details of new features.

    :star: New Features

    • Avoid direct URL construction and URL equality checks #29486
    • Simplify creating RFC 7807 responses from functional endpoints #29462
    • Allow test classes to provide runtime hints via declarative mechanisms #29455

    :notebook_with_decorative_cover: Documentation

    • Align javadoc of DefaultParameterNameDiscoverer with its behavior #29494
    • Document AOT support in the TestContext framework #29482
    • Document Ahead of Time processing in the reference guide #29350

    :hammer: Dependency Upgrades

    • Upgrade to Reactor 2022.0.0 #29465

    :heart: Contributors

    Thank you to all the contributors who worked on this release:

    @​ophiuhus and @​wilkinsona

    v6.0.0-RC4

    :star: New Features

    • Introduce DataFieldMaxValueIncrementer for SQL Server sequences #29447
    • Introduce findAllAnnotationsOnBean variant on ListableBeanFactory #29446
    • Introduce support for Jakarta WebSocket 2.1 #29436
    • Allow @ControllerAdvice in WebFlux to handle exceptions before a handler is selected #22991

    :lady_beetle: Bug Fixes

    • Bean with unresolved generics do not use fallback algorithms with AOT #29454
    • TomcatRequestUpgradeStrategy is not compatible with Tomcat 10.1 #29434
    • Autowiring of a generic type produced by a factory bean fails after AOT processing #29385

    :notebook_with_decorative_cover: Documentation

    • Reference PDF containing full docs not available #28451

    :hammer: Dependency Upgrades

    • Revisit Servlet API baseline: Servlet 6.0 in the build, Servlet 5.0 compatibility at runtime #29435
    • Upgrade to Context Propagation 1.0.0 #29442
    • Upgrade to Jackson 2.14.0 #29351
    • Upgrade to Micrometer 1.10.0 #29441

    ... (truncated)

    Commits
    • 5a30a43 Release v6.0.0
    • 42856ba Add milestone repo for optional Netty 5 support
    • 9be6cea Polishing deprecated methods
    • 37b4391 Align javadoc of DefaultParameterNameDiscoverer with its behavior
    • 09a58a5 Polish
    • 10f4ad1 Assert fixed in DefaultErrorResponseBuilder
    • 9457ed3 Document AOT support in the TestContext framework
    • 074ec97 Fix section formatting in the testing chapter
    • 9ede4af Revert "Ignore HttpComponents Javadoc"
    • bfc1251 Merge branch '5.3.x'
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump poi from 3.6 to 4.1.1 in /project-bom

    Bump poi from 3.6 to 4.1.1 in /project-bom

    Bumps poi from 3.6 to 4.1.1.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump gson from 2.8.0 to 2.8.9 in /project-bom

    Bump gson from 2.8.0 to 2.8.9 in /project-bom

    Bumps gson from 2.8.0 to 2.8.9.

    Release notes

    Sourced from gson's releases.

    Gson 2.8.9

    • Make OSGi bundle's dependency on sun.misc optional (#1993).
    • Deprecate Gson.excluder() exposing internal Excluder class (#1986).
    • Prevent Java deserialization of internal classes (#1991).
    • Improve number strategy implementation (#1987).
    • Fix LongSerializationPolicy null handling being inconsistent with Gson (#1990).
    • Support arbitrary Number implementation for Object and Number deserialization (#1290).
    • Bump proguard-maven-plugin from 2.4.0 to 2.5.1 (#1980).
    • Don't exclude static local classes (#1969).
    • Fix RuntimeTypeAdapterFactory depending on internal Streams class (#1959).
    • Improve Maven build (#1964).
    • Make dependency on java.sql optional (#1707).

    Gson 2.8.8

    • Fixed issue with recursive types (#1390).
    • Better behaviour with Java 9+ and Unsafe if there is a security manager (#1712).
    • EnumTypeAdapter now works better when ProGuard has obfuscated enum fields (#1495).
    Changelog

    Sourced from gson's changelog.

    Version 2.8.9

    • Make OSGi bundle's dependency on sun.misc optional (#1993).
    • Deprecate Gson.excluder() exposing internal Excluder class (#1986).
    • Prevent Java deserialization of internal classes (#1991).
    • Improve number strategy implementation (#1987).
    • Fix LongSerializationPolicy null handling being inconsistent with Gson (#1990).
    • Support arbitrary Number implementation for Object and Number deserialization (#1290).
    • Bump proguard-maven-plugin from 2.4.0 to 2.5.1 (#1980).
    • Don't exclude static local classes (#1969).
    • Fix RuntimeTypeAdapterFactory depending on internal Streams class (#1959).
    • Improve Maven build (#1964).
    • Make dependency on java.sql optional (#1707).

    Version 2.8.8

    • Fixed issue with recursive types (#1390).
    • Better behaviour with Java 9+ and Unsafe if there is a security manager (#1712).
    • EnumTypeAdapter now works better when ProGuard has obfuscated enum fields (#1495).

    Version 2.8.7

    • Fixed ISO8601UtilsTest failing on systems with UTC+X.
    • Improved javadoc for JsonStreamParser.
    • Updated proguard.cfg (#1693).
    • Fixed IllegalStateException in JsonTreeWriter (#1592).
    • Added JsonArray.isEmpty() (#1640).
    • Added new test cases (#1638).
    • Fixed OSGi metadata generation to work on JavaSE < 9 (#1603).

    Version 2.8.6

    2019-10-04 GitHub Diff

    • Added static methods JsonParser.parseString and JsonParser.parseReader and deprecated instance method JsonParser.parse
    • Java 9 module-info support

    Version 2.8.5

    2018-05-21 GitHub Diff

    • Print Gson version while throwing AssertionError and IllegalArgumentException
    • Moved utils.VersionUtils class to internal.JavaVersion. This is a potential backward incompatible change from 2.8.4
    • Fixed issue google/gson#1310 by supporting Debian Java 9

    Version 2.8.4

    2018-05-01 GitHub Diff

    • Added a new FieldNamingPolicy, LOWER_CASE_WITH_DOTS that mapps JSON name someFieldName to some.field.name
    • Fixed issue google/gson#1305 by removing compile/runtime dependency on sun.misc.Unsafe

    Version 2.8.3

    2018-04-27 GitHub Diff

    • Added a new API, GsonBuilder.newBuilder() that clones the current builder
    • Preserving DateFormatter behavior on JDK 9

    ... (truncated)

    Commits
    • 6a368d8 [maven-release-plugin] prepare release gson-parent-2.8.9
    • ba96d53 Fix missing bounds checks for JsonTreeReader.getPath() (#2001)
    • ca1df7f #1981: Optional OSGi bundle's dependency on sun.misc package (#1993)
    • c54caf3 Deprecate Gson.excluder() exposing internal Excluder class (#1986)
    • e6fae59 Prevent Java deserialization of internal classes (#1991)
    • bda2e3d Improve number strategy implementation (#1987)
    • cd748df Fix LongSerializationPolicy null handling being inconsistent with Gson (#1990)
    • fe30b85 Support arbitrary Number implementation for Object and Number deserialization...
    • 1cc1627 Fix incorrect feature request template label (#1982)
    • 7b9a283 Bump bnd-maven-plugin from 5.3.0 to 6.0.0 (#1985)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump xercesImpl from 2.11.0 to 2.12.2 in /project-bom

    Bump xercesImpl from 2.11.0 to 2.12.2 in /project-bom

    Bumps xercesImpl from 2.11.0 to 2.12.2.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump httpclient from 4.5.3 to 4.5.13 in /project-bom

    Bump httpclient from 4.5.3 to 4.5.13 in /project-bom

    Bumps httpclient from 4.5.3 to 4.5.13.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump commons-io from 2.5 to 2.7 in /project-bom

    Bump commons-io from 2.5 to 2.7 in /project-bom

    Bumps commons-io from 2.5 to 2.7.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(v1.2.1-grid)
A sample repo to help you run automation test in incognito mode in Java-selenium on LambdaTest. Run your Java Selenium tests on LambdaTest platform.

How to run automation test in incognito mode in Java-selenium on LambdaTest Prerequisites Install and set environment variable for java. Windows - htt

null 12 Jul 13, 2022
A sample repo to help you handle cookies for automation test in Java-selenium on LambdaTest. Run your Java Selenium tests on LambdaTest platform.

How to handle cookies for automation test in Java-selenium on LambdaTest Prerequisites Install and set environment variable for java. Windows - https:

null 13 Jul 13, 2022
A sample repo to help you set geolocation for automation test in Java-selenium on LambdaTest. Run your Java Selenium tests on LambdaTest platform.

How to set geolocation for automation test in Java-selenium on LambdaTest Prerequisites Install and set environment variable for java. Windows - https

null 12 Jul 13, 2022
A sample repo to help you capture JavaScript exception for automation test in Java-selenium on LambdaTest. Run your Java Selenium tests on LambdaTest platform.

How to capture JavaScript exception for automation test in Java-selenium on LambdaTest Prerequisites Install and set environment variable for java. Wi

null 12 Jul 13, 2022
A sample repo to help you find an element by text for automation test in Java-selenium on LambdaTest. Run your Java Selenium tests on LambdaTest platform.

How to find an element by text for automation test in Java-selenium on LambdaTest Prerequisites Install and set environment variable for java. Windows

null 12 Jul 13, 2022
A sample repo to help you emulate network conditions in Java-selenium automation test on LambdaTest. Run your Java Selenium tests on LambdaTest platform.

How to emulate network conditions in Java-selenium automation test on LambdaTest Prerequisites Install and set environment variable for java. Windows

null 12 Jul 13, 2022
Ready-to-use UI Test Automation Architecture using Java and Selenium WebDriver.

Selenium Test Automation Boilerplate Ready-to-use UI Test Automation Architecture using Java and Selenium WebDriver. Languages and Frameworks The proj

Tahanima Chowdhury 133 Dec 26, 2022
Restful-booker API test automation project using Java and REST Assured.

Restful-booker API Test Automation Restful-booker API is an API playground created by Mark Winteringham for those wanting to learn more about API test

Tahanima Chowdhury 7 Aug 14, 2022
Framework for Mobile test automation using Appium with Java - BDD

appium-mobile-automation-framework-bdd Mobile automation framework using appium - BDD ?? Quick Start - Appium set up on Windows (Android): Install Jav

Thangaraj 18 Oct 19, 2022
A sample repo to help you capture JavaScript exception for automation test in Java-TestNG on LambdaTest. Run Selenium tests with TestNG on LambdaTest platform.

How to capture JavaScript exception for automation test in Java-TestNG on LambdaTest Environment Setup Global Dependencies Install Maven Or Install Ma

null 11 Jul 13, 2022
A sample repo to help you use relative locators for automation test in Java-TestNG on LambdaTest. Run Selenium tests with TestNG on LambdaTest platform.

How to use relative locators for automation test in Java-TestNG on LambdaTest Environment Setup Global Dependencies Install Maven Or Install Maven wit

null 11 Jul 13, 2022
A sample repo to help you use CDP console in Java-TestNG automation test on LambdaTest. Run Selenium tests with TestNG on LambdaTest platform.

How to use CDP console in Java-TestNG automation test on LambdaTest Environment Setup Global Dependencies Install Maven Or Install Maven with Homebrew

null 11 Jul 13, 2022
A sample repo to help you set geolocation for automation test in Java-TestNG on LambdaTest. Run Selenium tests with TestNG on LambdaTest platform.

How to set geolocation for automation test in Java-TestNG on LambdaTest Environment Setup Global Dependencies Install Maven Or Install Maven with Home

null 12 Jul 13, 2022
A sample repo to help you emulate network control using CDP in Java-TestNG automation test on LambdaTest. Run Selenium tests with TestNG on LambdaTest platform.

How to emulate network control using CDP in Java-TestNG automation test on LambdaTest Environment Setup Global Dependencies Install Maven Or Install M

null 12 Oct 23, 2022
A sample repo to help you handle basic auth for automation test in Java-TestNG on LambdaTest. Run Selenium tests with TestNG on LambdaTest platform.

How to handle basic auth for automation test in Java-TestNG on LambdaTest Environment Setup Global Dependencies Install Maven Or Install Maven with Ho

null 11 Jul 13, 2022
A sample repo to help you set device mode using CDP in Java-TestNG automation test on LambdaTest. Run Selenium tests with TestNG on LambdaTest platform.

How to set device mode using CDP in Java-TestNG automation test on LambdaTest Environment Setup Global Dependencies Install Maven Or Install Maven wit

null 11 Jul 13, 2022
Test Automation Made Simple

Karate Test Automation Made Simple. Karate is the only open-source tool to combine API test-automation, mocks, performance-testing and even UI automat

Intuit 6.5k Dec 28, 2022
Serenity BDD is a test automation library designed to make writing automated acceptance tests easier, and more fun.

That feeling you get when you know you can trust your tests Serenity BDD is a library designed to make writing automated acceptance tests easier, and

Serenity BDD 654 Dec 28, 2022
Test Automation Made Simple

Karate Test Automation Made Simple. Karate is the only open-source tool to combine API test-automation, mocks, performance-testing and even UI automat

Karate Labs 6.5k Dec 31, 2022