All Projects â†’ WasiqB â†’ Coteafs Appium

WasiqB / Coteafs Appium

Licence: apache-2.0
📱 Wrapper Appium Framework in Java which supports Automation of Mobile and Tablet apps.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Coteafs Appium

Mobileautomationframework
Single code base framework to test android and iOS app using appium (v6.1.0), maven, testng,java. Option to start appium server programmatically.
Stars: ✭ 66 (-29.03%)
Mutual labels:  hacktoberfest, test-automation, appium
Unium
Automation for Unity games
Stars: ✭ 132 (+41.94%)
Mutual labels:  automation, test-automation, appium
Carina
Carina automation framework: Web, Mobile, API, DB
Stars: ✭ 549 (+490.32%)
Mutual labels:  framework, test-automation, appium
Falcon
The no-nonsense REST API and microservices framework for Python developers, with a focus on reliability, correctness, and performance at scale.
Stars: ✭ 8,654 (+9205.38%)
Mutual labels:  hacktoberfest, framework
Dragon
⚡A powerful HTTP router and URL matcher for building Deno web servers.
Stars: ✭ 56 (-39.78%)
Mutual labels:  hacktoberfest, framework
Backtesting.py
🔎 📈 🐍 💰 Backtest trading strategies in Python.
Stars: ✭ 1,124 (+1108.6%)
Mutual labels:  hacktoberfest, framework
Walkoff
A flexible, easy to use, automation framework allowing users to integrate their capabilities and devices to cut through the repetitive, tedious tasks slowing them down. #nsacyber
Stars: ✭ 855 (+819.35%)
Mutual labels:  automation, framework
Poco
A cross-engine test automation framework based on UI inspection
Stars: ✭ 1,177 (+1165.59%)
Mutual labels:  automation, test-automation
Nativescript Dev Appium
A package to help with writing and executing e2e Appium tests in NativeScript apps
Stars: ✭ 69 (-25.81%)
Mutual labels:  automation, appium
Loadingshimmer
An easy way to add a shimmering effect to any view with just one line of code. It is useful as an unobtrusive loading indicator.
Stars: ✭ 1,180 (+1168.82%)
Mutual labels:  hacktoberfest, framework
Terraform
Terraform - Beginners | Intermediate | Advanced
Stars: ✭ 77 (-17.2%)
Mutual labels:  automation, hacktoberfest
Watchtower
A process for automating Docker container base image updates.
Stars: ✭ 9,526 (+10143.01%)
Mutual labels:  automation, hacktoberfest
Appium Selenium Starter
Open source, complete and easy to use QA Automation platform
Stars: ✭ 30 (-67.74%)
Mutual labels:  automation, appium
Fastlane
🚀 The easiest way to automate building and releasing your iOS and Android apps
Stars: ✭ 33,382 (+35794.62%)
Mutual labels:  automation, hacktoberfest
Prettier action
GitHub action for running prettier on your projects pull requests
Stars: ✭ 77 (-17.2%)
Mutual labels:  automation, hacktoberfest
Ritchie Formulas
This repository contains the community formulas that can be executed through Ritchie CLI once imported. This tool is an open source product that allows you to create, store and share any kind of automations, executing them through command lines, to run operations or start workflows ⚙ī¸ đŸ–Ĩ 💡
Stars: ✭ 84 (-9.68%)
Mutual labels:  automation, hacktoberfest
Edxposedmanager
Companion Android application for EdXposed
Stars: ✭ 1,172 (+1160.22%)
Mutual labels:  hacktoberfest, framework
Pastepwn
Python framework to scrape Pastebin pastes and analyze them
Stars: ✭ 87 (-6.45%)
Mutual labels:  hacktoberfest, framework
Chef
Chef Infra, a powerful automation platform that transforms infrastructure into code automating how infrastructure is configured, deployed and managed across any environment, at any scale
Stars: ✭ 6,766 (+7175.27%)
Mutual labels:  automation, hacktoberfest
Flaui
UI automation library for .Net
Stars: ✭ 892 (+859.14%)
Mutual labels:  automation, framework

Wrapper Appium Framework in Java which supports Automation of Mobile and Tablet apps.

Open Source Love Gitter CircleCI Bugs Test Coverage Quality Gate Maintainability Reliability Security Vulnurability Duplicate Code Maven Central Github Releases License

📹 Demo

🚀 Quick Start

  • The documentations of coteafs-appium includes all the information you need to get started including setup, usage, advantages, sample test.
  • To know what changes are Released, check out the change log for complete list of changes.
  • Want to know when our next feature or fix release is going to happen? Watch out our planned milestones.

📌 Want to know Key Features?

In order to use a framework, it's important to know it's advantages. Let's see what are the key features of this framework:

👉 📱 Supports Android and iOS Real Devices and Emulators.

👉 đŸ’ģ Able to start and stop server on run-time and also can connect to already running server.

👉 📓 Enforces Page object model style of coding.

👉 🌌 Allows parallel and sequential execution of tests.

👉 🔨 All capabilities, playback and delay settings are configurable through config file.

👉 ☁ī¸ Supports execution of tests on any Cloud solution like BrowserStack, SauceLabs, TestingBot, etc.

👉 📹 Supports video recording of tests on Android and iOS.

👉 📷 Supports capturing screenshots for Android and iOS.

👉 📋 Supports reading Clipboard from devices.

👉 📔 Supports logging of all events occurred during test execution.

👉 ❌ Provides pre-defined errors which wraps the Appium exceptions in a meaningful way.

👉 ✅ Provides inbuilt assertions to verify the device elements.

👉 ♨ī¸ Supports any Testing frameworks like TestNG, JUnit or Cucumber.

📌 Usage?

<dependency>
    <groupId>com.github.wasiqb.coteafs</groupId>
    <artifactId>appium</artifactId>
    <version>3.5.0</version>
</dependency>

😄 How it is easy to write Tests with this Framework?

1. 🏭 How to configure the tests?

First step in writing tests using coteafs-appium framework is defining a Yaml config file in the src/test/resources folder.

(For more details, check the link above.)

Sample file is shown below.

servers:
  android:
    host: 127.0.0.1
    port: 4723
    external: true
    arguments:
      log_level: DEBUG
      log_time_stamp: true
      local_time_zone: true
      session_override: true
      android:
        suppress_adb_kill_server: true
devices:
  test:
    platform_type: ANDROID
    device_name: MI Redmi Note 4
    device_version: 7.0
    app_type: HYBRID
    device_type: REAL
    automation_name: APPIUM
    app_location: apps/android/VodQA.apk
    session_timeout: 120000
    playback:
      delay_before_swipe: 200
      delay_after_swipe: 100
      delay_before_tap: 0
      delay_after_tap: 0
2. đŸŽ¯ How simple it is to write the tests?

By using Action classes for each Activity, the flow specific for that activity can be modularized and tests looks much clean and readable. See the sample test below.

import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;

import com.github.wasiqb.coteafs.appium.android.vodqa.actions.LoginActivityAction;
import com.github.wasiqb.coteafs.appium.service.AppiumServer;

public class SampleTest {
    protected AndroidDevice androidDevice;
    private   AppiumServer  androidServer;

    @BeforeClass
    public void setupTestSuite () {
        // Here the parameter refers to the key in server block in config file.
        this.androidServer = new AppiumServer ("android");
        this.androidServer.start ();

        // Here the param refers to the key in devices block in config file.
        this.androidDevice = new AndroidDevice (this.androidServer, "test");
        this.androidDevice.start ();
    }

    @AfterClass (alwaysRun = true)
    public void tearDownTestSuite () {
        this.androidDevice.stop ();
        this.androidServer.stop ();
    }

    @Test
    public void login () {
        final LoginActivityAction login = new LoginActivityAction (this.androidDevice);
        login.addInputValue ("UserName", "admin")
            .addInputValue ("Password", "admin")
            .perform ();
    }
}
3. â›ŗī¸ How to create Activity class?

New class needs to be created for each Activity. There's an abstract activity class for each type of device. Here prepare method needs to be implemented with all the elements available on that Activity.

See the below sample for an Android activity with comments for better understanding.

import org.openqa.selenium.By;

import com.github.wasiqb.coteafs.appium.android.AndroidDevice;
import com.github.wasiqb.coteafs.appium.device.DeviceElement;

public class LoginActivity extends AndroidActivity {
    public LoginActivity (final AndroidDevice device) {
        super (device);
    }

    @Override
    protected DeviceElement prepare () {
        final DeviceElement main = DeviceElement.create ("Main")
            .forAndroid (By.id ("android:id/content"));
        DeviceElement.create ("Back")
            .parent (main)
            .forAndroid (By.xpath ("//android.widget.TextView[@text=\"Back\"]"))
            // We can set multiple locators for different Automation names.
            .forAndroid (AutomationType.UIAUTOMATOR2,
                MobileBy.AndroidUIAutomator ("new UiSelector ().text (\"Back\");"));
        DeviceElement.create ("UserName")
            .forAndroid (MobileBy.AccessibilityId ("username"))
            .parent (main);
        DeviceElement.create ("Password")
            .forAndroid (MobileBy.AccessibilityId ("password"))
            .parent (main);
        DeviceElement.create ("Login")
            .index (1)    // Index of element when multiple elements for same locator exists.
            .waitStrategy (WaitStrategy.VISIBLE)  // Wait strategy to be used while finding the element.
            .forAndroid (MobileBy.AccessibilityId ("login"))     // Locator used to find the element.
            .parent (main);    // Parent of current element.
        return main;
    }
}
4. âšŊī¸ How to create your Activity action class?

There is abstract action class provided by the framework where Activity specific flow is implemented in perform method. See the sample Activity action class below.

import com.github.wasiqb.coteafs.appium.android.AndroidActivityActions;
import com.github.wasiqb.coteafs.appium.android.AndroidDevice;
import com.github.wasiqb.coteafs.appium.android.vodqa.activities.LoginActivity;

public class LoginActivityAction extends AndroidActivityActions {
    public LoginActivityAction (final AndroidDevice device) {
        super (device);
    }

    @Override
    public void perform () {
        final LoginActivity login = new LoginActivity (getDevice ());
        login.onElement ("UserName")
            .enterText (value ("UserName"));
        login.onElement ("Password")
            .enterText (value ("Password"));
        login.onDevice ()
            .hideKeyboard ();
        login.onElement ("Login")
            .tap ();
    }
}

❓ What to do when you need help?

  • You can chat with us on our Gitter room.
  • Directly chat with me on my site and I'll revert to you as soon as possible.
  • Discuss your queries by writing to us on our mailing list
  • If you find any issue which is bottleneck for you, search the issue tracker to see if it is already raised.
  • If not raised, then you can create a new issue with required details as mentioned in the issue template.

⭐ī¸ What you do if you like the project?

  • Spread the word with your network.
  • Star the project to make the project popular.
  • Stay updated with the project progress by Watching it.
  • Contribute to fix open issues, documentations or add new features. To know more, see our contributing page.

✔ī¸ Contributors

💝 Thanks for the support.

For allowing us to run our unit tests on different platforms.

đŸŽĢ Versioning ideology

Šī¸ Wasiq Bhamla

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].