Skip to content
Kishor Jyoti Sarma edited this page Oct 22, 2017 · 23 revisions

Welcome to the kabo wiki!

What is kabo?

A Weird name right.Not really . It was once a part of India. A exotic valley which was once a part of the kingdom of Manipur. Obviously it is not the only reason I named this framework as kabo. While naming I am following Anjuta's path, the famous Gnome IDE(https://developer.gnome.org/anjuta-faqs/stable/general-name.html.en) My motive is to make people's life a bit easier.

What kabo will do?

It will be a pain killer while automating a UI project. Hey folks , you do not have to worry about maintaining bulk excel files for hybrid automation framework. kabo will do it for you using Behavior-driven development approach. Automation does not mean writing ugly driver.findElement code everywhere in the test scripts. It should be well organized so that maintenance become easy.

From now on forget about creating webDriver instances , forget about the pain you have endured to handles windows. Your only concentration should be on business logic or we call the core functionality.

What is Behavior-driven development?

From now on start writing your test cases in a format everyone understand. Is not it fabulous(read in abish mathew's accent) if you start writing your test cases like below:

### Test case: test.story

Meta:

Narrative:
As a user
I want to perform an action
So that I can achieve a business goal

Scenario: scenario description

Given something 
When I do this 
Then that should happen
And That should happen too.

### Step definition class : 

Write your Step Definition class like below

import com.kabo.core.behavior.StepDefinition;
import org.jbehave.core.annotations.Given;
import org.jbehave.core.annotations.Then;
import org.jbehave.core.annotations.When;


public class GivenStepDefination implements StepDefinition{


    @Given("something")
    public void something(){

        System.out.println("something");
    }

    @When("I do this")
    public void do_this(){

        System.out.println("Do this");
    }

    @Then("that should happened")
    public void assert_what_happened(){

        System.out.println("that should happened");
    }

    @Then("That should happen too.")
    public void oh_some_more_assertion(){

        System.out.println("That should happen too");
    }
}


and run them as normal TestNG test as below

### TestNG test case class 

import com.kabo.core.behavior.StepDefinition;
import com.kabo.core.behavior.TestRunner;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class SampleTestCase {
    
    TestRunner testRunner;
    
    @BeforeTest
    public void before_test(){
        
        testRunner=new TestRunner();
    }
    
    @Test
    public void my_first_kabo_test(){
        
        /*500 is the configurable story time out*/

        StepDefinition definition=new GivenStepDefination();
        testRunner.runTests(500,definition);
    }
}

kabo will bring the power of JBehave and TestNg right to your IDE with just a maven dependency .

How to specify positive and negative scenario in a test?

Just start writing your story as

Given a positive scenario

or

Given a negative scenario

kabo will automatically set up the things for you.

Don't want TestNG?

Okay, if you do not want to write TestNG test classes, then you can run your test cases by writing a PSVM program like below:

import com.kabo.core.behavior.StepDefinition;
import com.kabo.core.behavior.TestRunner;

public class SampleTestCase {
    public  static void main(String[]args){

        TestRunner testRunner=new TestRunner();
        
        /*For example your sign up module*/
        StepDefinition signup=new signupSteps();
        
        /*For example your login module */
        StepDefinition login=new loginSteps();

        testRunner.runTests(500,signupSteps, loginSteps);
    }

}

Do you know kabo generate reports for you ?

Yes, you can write sophisticated report (forget your ugly testNG report) with just a simple method call.

Report.write( String testName, String des, boolean isStatus, boolean isNegative)

Test report with name kabo.html will be auto generated as below: kabo.html

How to create WebDriver Object?

Forget about old techniques. Just create a file kabo.properties in the project root directory and then copy paste the below. voila! you are good to go without writing a single line of code. kabo will take care rest of the things for you. Smart enough?

#kabo automation framework
#Do Not Change the below Keys. Change the value as per your choice

BROWSER=chrome

PLATFORM=Mac OS

PROCESSOR=64

PATH_TO_DRIVER=some path to chromedriver or whatever driver we are going to use 
# ------------------------

What will be there in the initial release ?

Hmm, Only selenium. But from second release onwards, will provide support for API automation and native mobile app automation and Aplitools eye too look after your UI, out of the box saucelab or browserstack integration.

So stay updated, for the initial version release .

To all the QA folks , Always believe something magical is about to happen.