Skip to content

Latest commit

 

History

History
executable file
·
266 lines (218 loc) · 20.2 KB

README.md

File metadata and controls

executable file
·
266 lines (218 loc) · 20.2 KB

SHAFT: Unified Test Automation Engine

SHAFT_ENGINE
Fully documented

User Guide
Award Winning

Google Open Source
Selenium Ecosystem

Selenium Ecosystem

Tech for Palestine
License Contributors Latest Release
E2E Tests Code QL
Codacy Codecov


🌍 Our success partners:

Sponsors:

BrowserStack       Applitools       JetBrains     LambdaTest

Trusted solution of choice for: 1

_VOIS (Vodafone Intelligent Solution)       GET Group Holdings       MOMRA (Saudi Arabia's Ministry of Municipal and Rural Affairs)       Vodafone Egypt       Solutions by STC       GIZA Systems       Euronet       Terkwaz Business Solutions       Incorta       BayanTech       Adam.ai       ACT Global Soft       elmenus       IDEMIA       iHorizons       Robusta       Paymob Solutions       Jahez Group       Salt Bank       Baianat       



  • Check out our comprehensive and friendly user guide to learn why SHAFT should be your solution of choice if you're aiming for successful test automation.
  • SHAFT is a unified test automation engine for web, mobile, API, CLI, database, and desktop e2e testing. Powered by best-in-class frameworks, SHAFT provides a wizard-like syntax to drive your automation efficiently, maximize your ROI, and minimize your learning curve with no limitations! Stop reinventing the wheel! Upgrade now!

Supported Platforms:

Web:

Linux macOS Windows Android iOS
Google Chrome
Microsoft Edge _ _
Mozilla Firefox _ _
Apple Safari _ _ _

Apps:

Android iOS Windows
Native N/A
Hybrid N/A
Flutter N/A
WPF N/A N/A

Other:

API Database CLI PDF JSON YAML Excel Property

Built-in features:

  • SHAFT also provides a lot of out-of-the-box convenience features to facilitate your testing process:

Test orchestration:

TestNG JUnit5 Cucumber

Test authoring (Maintainability):

Fluent design Locator builder Native WebDriver access Element/Browser validations builder AI-powered visual validations

Reliability:

Auto synchronization Logging Reporting Screenshots/Attachments Video recording

Scalability:

CI/CD integration Cloud device farm integration Headless testing Parallel execution Containerized execution

👨‍💻 Tech Stack:

Developed using:

Java Maven       IntelliJ IDEA

Powered by:

Selenium WebDriver       Appium       REST Assured       TestNG       Allure Reports       Cucumber.io       OpenCV       Selenium Grid       GitHub Actions       Dependabot       CodeQL       Codacy       JaCoCo       CodeCov       sonatype

🤝 Support & Contributions:

  • Join us via Slack & Facebook
    automatest-workspace Automatest
  • And feel free to create PRs directly. This lovely tutorial will help.

🏃 Quick Start Guide:

Option 1: Maven Archetype

(Recommended for new local sandbox projects)

  • The easiest and most straightforward way to create a new project that uses SHAFT.
  • Just follow the simple steps here to generate your new project with one command (all configurations included).

Option 2: Template Project

(Recommended for new source controlled projects)

  • Use our Template Project to create a new project with one click.
  • Follow the steps in the ReadMe to handle project configuration.

Option 3: Start from scratch

(Recommended if you're upgrading an existing project from Native Selenium WebDriver to SHAFT)

Step 1: Initial Setup

  • Create a new Java/Maven project using Eclipse, IntelliJ or your favourite IDE.
  • Copy the highlighted contents of this pom.xml file into yours inside the <project> tag.
  • Follow the steps in this footnote in case you are using IntelliJ2.

Step 2: Creating Tests

  • Create a new Package TestPackage under src/test/java and create a new Java Class TestClass under that package.
  • Copy the below imports into your newly created java class.
import com.shaft.driver.SHAFT;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
  • Copy the below code snippet into your newly created java class.
SHAFT.GUI.WebDriver driver;
SHAFT.TestData.JSON testData;

By searchBox = By.name("q");
By resultStats = By.id("result-stats");

@Test
public void test() {
    driver.browser().navigateToURL("https://www.google.com/");
    driver.verifyThat().browser().title().isEqualTo("Google").perform();
    driver.element().type(searchBox, testData.getTestData("searchQuery"))
            .keyPress(searchBox, Keys.ENTER);
    driver.assertThat().element(resultStats).text().doesNotEqual("")
            .withCustomReportMessage("Check that result stats is not empty").perform();
}

@BeforeClass
public void beforeClass() {
    driver = new SHAFT.GUI.WebDriver();
    testData = new SHAFT.TestData.JSON("simpleJSON.json");
    }

@AfterClass(alwaysRun = true)
public void afterClass(){
        driver.quit();
    }

Step 3: Managing Test Data

  • Create the following file src/test/resources/testDataFiles/simpleJSON.json.
  • Copy the below code snippet into your newly created json file.
{
  "searchQuery": "SHAFT_Engine"
}

Step 4: Running Tests

  • Run your TestClass.java as a TestNG Test Class.
  • The execution report will open automatically in your default web browser after the test run is completed.
  • Join our GitHub Repo stars to get notified by email when a new release is pushed out.
  • After upgrading your Engine to a new major release it is sometimes recommended to delete the properties folder src\main\resources\properties and allow SHAFT to regenerate the defaults by running any test method.



Stop Reinventing the wheel! Start using SHAFT!

Footnotes

  1. Company names are collected via anonymous surveys and provided freely by engineers who claimed to be using SHAFT_Engine within these companies.

  2. If you're using Cucumber due to a known issue with IntelliJ you need to edit your run configuration template before running your tests by following these steps:
    - Open 'Edit Run/Debug Configurations' dialog > Edit Configurations... > Edit configuration templates...
    - Select Cucumber Java > Program Arguments > and add this argument:
    --plugin com.shaft.listeners.CucumberFeatureListener
    - After saving the changes, remember to delete any old runs you may have triggered by mistake before adding the needed config.