All Projects → autonomx → Autonomx

autonomx / Autonomx

Licence: MIT License
Autonomx provides a complete testing platform for UI (Web, iOS, Android, Win) and API testing. It provides a feature rich and viable testing solution for end to end testing. It's designed to be fast, scalable, reliable and adaptable to any requirements for ever growing projects.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Autonomx

AppiumGrid
A framework for running appium tests in parallel across devices and also on desktop browser... U like it STAR it !!
Stars: ✭ 17 (+21.43%)
Mutual labels:  parallel, appium, testng
Selion
Enabling Test Automation in Java
Stars: ✭ 252 (+1700%)
Mutual labels:  webdriver, appium, testng
Java.appium
Mobile test automation using Appium in Java
Stars: ✭ 59 (+321.43%)
Mutual labels:  webdriver, appium, testng
Appiumtestdistribution
A tool for running android and iOS appium tests in parallel across devices... U like it STAR it !
Stars: ✭ 764 (+5357.14%)
Mutual labels:  parallel, appium, testng
Appium
📱 Automation for iOS, Android, and Windows Apps.
Stars: ✭ 14,469 (+103250%)
Mutual labels:  webdriver, appium
seletest
Seletest is a web and mobile automation testing framework
Stars: ✭ 19 (+35.71%)
Mutual labels:  webdriver, appium
TestLeafSeleniumTraining
This is public repository for Selenium Learners at TestLeaf
Stars: ✭ 80 (+471.43%)
Mutual labels:  webdriver, testng
python-appium-framework
Complete Python Appium framework in 360 degree
Stars: ✭ 43 (+207.14%)
Mutual labels:  parallel, appium
appium-mac2-driver
Next-gen Appium macOS driver, backed by Apple XCTest
Stars: ✭ 55 (+292.86%)
Mutual labels:  webdriver, appium
SeleniumTDD
A Selenium TDD framework that incorporates key features of Selenium and TestNG which can be used to create web-based automation scripts.
Stars: ✭ 23 (+64.29%)
Mutual labels:  webdriver, testng
Selenium-Foundation
Selenium Foundation is an automation framework designed to extend and enhance the capabilities provided by Selenium (WebDriver).
Stars: ✭ 51 (+264.29%)
Mutual labels:  appium, testng
Java.webdriver
Browser test automation using Selenium WebDriver in Java
Stars: ✭ 135 (+864.29%)
Mutual labels:  webdriver, testng
Autolink
AutoLink是一个开源Web IDE自动化测试集成解决方案
Stars: ✭ 129 (+821.43%)
Mutual labels:  webdriver, appium
robotframework-anywherelibrary
AnywhereLibrary is a cross platform(desktop browser,Android,iOS) testing library for Robot Framework that leverages the [Selenium 2(WebDriver)] libraries internally to control a web browser and [appium] as mobile test automation framework for use with native and hybrid app.
Stars: ✭ 62 (+342.86%)
Mutual labels:  webdriver, appium
qa-automation-base
There are basic projects for automation frameworks based on Kotlin/Java and TypeScript for the backend, frontend, and mobile.
Stars: ✭ 45 (+221.43%)
Mutual labels:  appium, testng
carina
Carina automation framework: Web, Mobile, API, DB etc testing...
Stars: ✭ 652 (+4557.14%)
Mutual labels:  appium, testng
OneFramework
Automation for iOS, Android, & Web Apps with one codebase. Like it, Star it & spread the word !!!
Stars: ✭ 46 (+228.57%)
Mutual labels:  appium, testng
Selenium Java Lean Test Achitecture
Ready to use Lean Test Automation Architecture using Java and Selenium WebDriver to speed up your test automation
Stars: ✭ 152 (+985.71%)
Mutual labels:  parallel, testng
sahagin-java
Sahagin generates highly readable Selenium/Appium test report from your test code.
Stars: ✭ 26 (+85.71%)
Mutual labels:  webdriver, appium
MasterAppiumFramework
Automation Testing | Mobile | Java | OOPS | Appium | TestNG | Maven | ExtentReport | Java mail API | Logging (Log4J2) | Design Patterns (Page Object Model, Singleton) | Page Factories | Jenkins | Data-Driven Testing using JSON file | Expected Data using XML file
Stars: ✭ 27 (+92.86%)
Mutual labels:  appium, testng

Build Status Maven Central

Main Site: https://autonomx.io/

Documentation: https://docs.autonomx.io

Autonomx Core: https://github.com/autonomx/AutonomxCore

Autonomx

Autonomx provides a complete testing platform for UI (Web, iOS, Android, Win) and API testing. It provides a feature rich and viable testing solution for end to end testing. They’re designed to be fast, scalable, reliable and adaptable to any requirements for ever growing projects. 

Overview

  • Open source UI automation testing framework based on Webdriver/Appium, TestNG/Junit, with maven integration.
  • Unifies mobile and web testing, using a common, version controlled code base (Autonomx Core)
  • Each testing project is treated as a client for the Autonomx Core, meaning one central code base for all UI testing projects
  • A client can have multiple test projects, as well as multiple platforms (web, Android, iOS, Win), associated with it.
  • Modular design. Each project/component is treated as a module,  fully capable of interacting with one another. This allows for multi component and multiplatform testing. Eg. Create user through component A (API), validate in component B (web), do action in component C (Android), validate results in component D (iOS)
  • All interaction with the UI are through utility functions called Helpers, which are stable and optimized set of wrapper functions, removing inconsistencies in coding styles and enforcing testing best practices
  • Integrates seamlessly with the API testing framework for end to end testing
  • Detailed reports through ExtentTest reports

Prerequisites:

Web:

Android:

iOS:

IDE Setup

Getting Started:

  • Download the latest release of Autonomx based on your project needs
  • Run the setup:
  • setup.bat (windows), setup.sh (osx, linux)
  • This will download maven if not installed, and all the required dependencies
  • Navigate to runner//. eg. runner/mac/restTests.sh
  • The run scripts are generated from testng testSuites by runner/generateScripts.sh. Each script is associated with a suite of tests
  • https://docs.autonomx.io/quick-start

Reporting

  • Extent Reports is used for BDD style reporting of the test results

alt text

Web Tests

     public static class elements {
            public static EnhancedBy USER_NAME_FIELD = Element.byCss("[placeholder='John Doe']", "username field");
            public static EnhancedBy PASSWORD_FIELD = Element.byCss("#password", "password field");
            public static EnhancedBy LOGIN_SUBMIT = Element.byCss("[type='submit']", "submit button");
            public static EnhancedBy LOGOUT_BUTTON = Element.byCss("[href*='logout']", "logout button");
            public static EnhancedBy MAIN_SITE = Element.byCss(".main-site", "main site button");
            public static EnhancedBy ERROR_MESSAGE = Element.byCss("[class*='InputErrors']", "input errors");

            public static EnhancedBy LOADING_INDICATOR = Element.byCss("[class*='Loading']", "loading indicator");

        }

    
  • Define actions webApp ▸ LoginPanel.java
        /**
      * enter login info and click login button
      * 
      * @param user
      */
     public void login(User user) {
         setLoginFields(user);
         Helper.form.formSubmit(elements.LOGIN_SUBMIT, MainPanel.elements.ADMIN_LOGO, elements.LOADING_INDICATOR);

     }

     public void loginError(User user) {
         setLoginFields(user);
         Helper.form.formSubmit(elements.LOGIN_SUBMIT, elements.ERROR_MESSAGE);
     }

     public void relogin(User user) {
         manager.main.logout();
         login(user);
     }

     public void setLoginFields(User user) {
         Helper.form.setField(elements.USER_NAME_FIELD, user.username().get());
         Helper.form.setField(elements.PASSWORD_FIELD, user.password().get());
     }
  • Define objects

    • autonomx⁩ ▸ ⁨automation⁩ ▸ ⁨src⁩ ▸ ⁨main⁩ ▸ ⁨java⁩ ▸ ⁨module ▸ webApp ▸ user.csv
    • We are going to use the csv file to setup our data. For more info Csv alt text
  • setup test

     @BeforeMethod
     public void beforeMethod() throws Exception {
        setupWebDriver(app.webApp.getWebDriver());
    }

    @Test
    public void validate_user_Login() {
        UserObject user = UserObject.user().withAdminLogin();
        TestLog.When("I login with admin user");
        app.strapi.login.login(user);

        TestLog.Then("I verify admin logo is displayed");
        Helper.verifyElementIsDisplayed(MainPanel.elements.ADMIN_LOGO);

        TestLog.When("I logout");
        app.strapi.main.logout();

        TestLog.Then("I should see the login panel");
        Helper.verifyElementIsDisplayed(LoginPanel.elements.LOGIN_SUBMIT);
    }
    

Service Level Tests

  • https://docs.autonomx.io/service-level-testing

    • Service level testing encompasses any backend, service, api, and database level testing
    • These tests are compromised of: request, response, and verification
    • Since these follow the same template, we have opted for using csv file to write the tests
    • 1 line 1 complete test
    • This allows us to add lots of tests to each csv file, covering large number of permutations
  • Add Test cases in CSV file at apiTestData/testCases

  • Run tests using the runner at apiTestData/runner//apiRunner

  • CSV files will run in parallel

  • Parallel run value can be set at automation/resources/properties.property "parallel_test_count" alt text

Service Code Integration

  • https://docs.autonomx.io/service-level-testing/service-code-integration

  • We can run our service test with the UI based tests

  • There are 2 methods of achieving this goal

    • Creating a service object and calling the service interface directly
    public Response loginWithServiceObject(CommonUser user) {
        
        ServiceObject loginApi = Service.create()
                .withUriPath("/auth/local")
                .withContentType("application/json")
                .withMethod("POST")
                .withRequestBody("{" + 
                        "\"identifier\": \""+ user.username +"\",\r\n" + 
                        "\"password\": \"" +user.password + "\"" + 
                        "}")
                .withOutputParams(
                        "user.role.id:<$roles>;"
                        + "jwt:<$accessTokenAdmin>;"
                        + "user.id:<$userId>");
                
        return RestApiInterface.RestfullApiInterface(loginApi);
    }
    • Creating a service keyword in a csv file and calling the test case name
    public void login(CommonUser user) {
        Service.getToken
                .withUsername(user.username)
                .withPassword(user.password)
                .build();
    }

Script Runner

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].