Actions

Selenium Test Case Methods

From Joomla! Documentation

Revision as of 18:44, 9 June 2010 by Dextercowley (Talk | contribs)

Contents

News and Updates

2010 02 10 : Initial draft of this article

Introduction

With the introduction of System tests in February 2010, there are also a number of Joomla! specific methods that can be used. These methods are part of the SeleniumJoomlaTestCase class, as defined by the file tests/system/SeleniumJoomlaTestCase.php

These methods exist so that none of the path or login information is coded into the tests. Instead, it comes from the config file located at tests/system/servers/configdef.php See Running_Automated_Tests_for_Version_1.6#Create_a_Selenium_Configuration_File These methods can also be used for creating streamlined tests by replacing common and repetitive actions.

Available Selenium Test Case Methods

As of this writing, the following methods belong to the SeleniumJoomlaTestCase class. You can check the actual source code for this class by looking at the file tests/system/SeleniumJoomlaTestCase.php file.

setUp

  • Loads the configuration variables defined in tests/system/servers/configdef.php and launches the test browser accordingly.
public function setUp()
{
    $cfg = new SeleniumConfig();
    $this->cfg = $cfg; // save current configuration
    $this->setBrowser($cfg->browser);
    $this->setBrowserUrl($cfg->host.$cfg->path);
    if(isset($cfg->selhost)) {
        $this->setHost($cfg->selhost);
    }
    echo ".\n".'Starting '.get_class($this).".\n";
}

doAdminLogin

  • Logs into the administrative side of Joomla!
function doAdminLogin()
{
    //$this->setUp();
    echo "Logging in to admin.\n";
    $cfg = new SeleniumConfig();
    $this->open($cfg->path . "administrator/index.php?option=com_login");
    $this->waitForPageToLoad("30000");
    $this->type("mod-login-username", $cfg->username);
    $this->type("mod-login-password", $cfg->password);
    $this->click("link=Log in");
    $this->waitForPageToLoad("30000");
}

doAdminLogout

  • Logs out of the administrative side of Joomla!
function doAdminLogout()
{
    $this->gotoAdmin();
    echo "Logging out of back end.\n";
    $this->click("link=Logout");
}

gotoAdmin

  • Navigates to the administrative side of Joomla!
function gotoAdmin()
{
    echo "Browsing to admin.\n";
    $cfg = new SeleniumConfig();
    $this->open($cfg->path . "administrator");
}

gotoSite

  • Navigates to the front end of Joomla!
function gotoSite()
{
    echo "Browsing to site.\n";
    $cfg = new SeleniumConfig();
    $this->open($cfg->path);
}

doFrontEndLogin

  • Logs into the front end of Joomla!
function doFrontEndLogin()
{
    $this->gotoSite();
    echo "Logging into front end of site.\n";
    $this->type("modlgn_username", "admin");
    $this->type("modlgn_passwd", "password");
    $this->click("Submit");
    $this->waitForPageToLoad("30000");
}

doFrontEndLogout

  • Logs out of the front end of Joomla!
function doFrontEndLogout()
{
    $this->gotoSite();
    echo "Logging out of front end of site.\n";
    $this->click("Submit");
    $this->waitForPageToLoad("30000");
}

setTinyText

  • Allows the test to input data
function setTinyText($text)
{
    $this->selectFrame("text_ifr");
    $this->type("tinymce", $text);
    $this->selectFrame("relative=top");
}

createUser

  • Creates a user automatically. You can specify the various user data fields or keep the defaults.
    function createUser($name = 'Test User', $userName = 'TestUser', $password = 'password', $email = 'testuser@test.com', $group = 'Manager')
    {
        $this->click("link=User Manager");
        $this->waitForPageToLoad("30000");
        echo("Add new user named " . $name . " in Group=" . $group . "\n");
        $this->click("//li[@id='toolbar-new']/a/span");
        $this->waitForPageToLoad("30000");
        $this->type("jform_name", $name);
        $this->type("jform_username", $userName);
        $this->type("jform_password", $password);
        $this->type("jform_password2", $password);
        $this->type("jform_email", $email);
        $id = $this->getAttribute('//fieldset[@id=\'user-groups\']/ul/li[contains(label,\''.$group.'\')]/label@for');
        $this->click($id);
        $this->click("link=Save & Close");
        $this->waitForPageToLoad("30000");
        echo "New user created\n";
    }