Skip to content

Scenarios

Purpose

Note: Starting from Rapise 8.0, it is recommended to utilize Test Cases and Modules / Page Objects for creating scenarios and maintaining reusable building blocks respectively.

Scenarios serve as reusable building blocks that can be incorporated into your test scripts. They offer a way to structure and organize your tests, making them more modular and maintainable. Scenarios can be included in both fully automated test scripts and predominantly manual test script.

Another valuable application of scenarios is in Web Service test recording. When you record script steps for a Web Service test and click on Create Script, the recorded steps in JavaScript form are appended to the Test() function. At this point, you can wrap them into separate scenarios using the method described in this chapter.

Creating Scenarios

Let's say for example that you have the following Rapise test that was recorded from our sample library information web application:

function Test()
{
    //Click on Log In
    SeS('Log_In').DoClick();        
    //Set Text librarian in Username:
    SeS('Username_').DoSetText("librarian");
    //Set Text librarian in Password:
    SeS('Password_').DoSetText("librarian");
    //Click on ctl00$MainContent$LoginUser$LoginButton
    SeS('ctl00$MainContent$LoginUser$Logi').DoClick();
    //Click on Book Management
    SeS('Book_Management').DoClick();
    //Click on (Create new book)
    SeS('_Create_new_book__').DoClick();
    //Set Name:
    SeS('Name_').DoSetText(g_book_name);
    //Select Author:
    SeS('Author_').DoSelect(g_book_author);
    //Select Genre:
    SeS('Genre_').DoSelect(g_book_genre);
    //Click on ctl00$MainContent$btnSubmit
    SeS('ctl00$MainContent$btnSubmit').DoClick();
    //Click on Log Out
    SeS('Log_Out').DoClick();
}

If we want to break up this monolithic test into individual functions (called scenarios), simply highlight the test you want to extract (for example the Login steps):

scenarios_1

Then right-click on the section and choose the option to Extract User Scenario:

scenarios_2

Now in the dialog box that appears, give the scenario a name (e.g. Login):

scenarios_3

This will extract the highlighted section into its own scenario.

In Main.js we get

function Test()
{
    //Call scenario Login
    Login();

    //Click on Book Management
    SeS('Book_Management').DoClick();
    //Click on (Create new book)
    SeS('_Create_new_book__').DoClick();
    //Set Name:
    SeS('Name_').DoSetText(g_book_name);
    //Select Author:
    SeS('Author_').DoSelect(g_book_author);
    //Select Genre:
    SeS('Genre_').DoSelect(g_book_genre);
    //Click on ctl00$MainContent$btnSubmit
    SeS('ctl00$MainContent$btnSubmit').DoClick();
    //Click on Log Out
    SeS('Log_Out').DoClick();
}

In User.js we get

/** @scenario Login */
function Login()
{
    //Click on Log In
    SeS('Log_In').DoClick();        
    //Set Text librarian in Username:
    SeS('Username_').DoSetText("librarian");
    //Set Text librarian in Password:
    SeS('Password_').DoSetText("librarian");
    //Click on ctl00$MainContent$LoginUser$LoginButton
    SeS('ctl00$MainContent$LoginUser$Logi').DoClick();
}

Usage in Automated Tests

When you create a new test in Rapise it will contain a Main.js file that contains the main test code and a User.js file that contains any user-defined functions (called Scenarios). For example in the following test:

function Test()
{
    Login();
    CreateBook(g_book_name, g_book_author, g_book_genre);
    Logout();
}

The test function calls three scenarios that comprise the main test. The scenarios themselves are JavaScript functions:

/** @scenario Login */
function Login()
{
    //Click on Log In
    SeS('Log_In').DoClick();        
    //Set Text librarian in Username:
    SeS('Username_').DoSetText("librarian");
    //Set Text librarian in Password:
    SeS('Password_').DoSetText("librarian");
    //Click on ctl00$MainContent$LoginUser$LoginButton
    SeS('ctl00$MainContent$LoginUser$Logi').DoClick();
}

/** @scenario Logout */
function Logout()
{
    //Click on Log Out
    SeS('Log_Out').DoClick();
}

/** @scenario CreateBook */
function CreateBook(name, author, genre)
{
    //Click on Book Management
    SeS('Book_Management').DoClick();
    //Click on (Create new book)
    SeS('_Create_new_book__').DoClick();
    //Set Name:
    SeS('Name_').DoSetText(name);
    //Select Author:
    SeS('Author_').DoSelect(author);
    //Select Genre:
    SeS('Genre_').DoSelect(genre);
    //Click on ctl00$MainContent$btnSubmit
    SeS('ctl00$MainContent$btnSubmit').DoClick();

    //Verify that the Book is added to the grid
    //We need to xpath query the grid to see if any
    //added rows match the item added
    var tr = FindRowByName(name);
    Tester.Assert('Book was added successfully [TS:5]', tr.length != 0);
}

If you go to the Object Tree you will see these user functions/scenarios displayed:

object_tree_user_functions

You can then drag and drop those into the test script editor to include in the main test script.

Usage in Manual Tests

When you create a new test in Rapise it will contain a Main.js file that contains the main test code and a User.js file that contains any user-defined functions (called Scenarios). For example you may have the following scenario defined in the User.js file:

/** @scenario Login */
function Login()
{
    //Click on Log In
    SeS('Log_In').DoClick();        
    //Set Text librarian in Username:
    SeS('Username_').DoSetText("librarian");
    //Set Text librarian in Password:
    SeS('Password_').DoSetText("librarian");
    //Click on ctl00$MainContent$LoginUser$LoginButton
    SeS('ctl00$MainContent$LoginUser$Logi').DoClick();
}

You can now include that in a manual test step, by simply making the test step description start with an "@" symbol to denote that it is a scenario:

@Login();

Then when the manual test is executed, that one step will be passed to the scripting engine for automated execution.

Example

If you open the CreateNewBook sample (located in C:\\Users\\Public\\Documents\\Rapise\\Samples\\CreateNewBook) you will see a test that has multiple scenarios.

See Also