Skip to content

Latest commit

 

History

History
116 lines (91 loc) · 5.21 KB

README.md

File metadata and controls

116 lines (91 loc) · 5.21 KB

iam-robot-testsuite

A function testsuite for Indigo IAM, based on Robot Framework and Selenium.

Synopsis

This test suite provides a bunch of tests to validate the web User Interface of Indigo IAM.

Options

This testsuite has some customizable variables. They are the following:

Variable Default value Meaning
BROWSER firefox Browser to use for tests
IAM_BASE_URL http://localhost:8080 IAM endpoint to test
REMOTE_URL False URL of Selenium Grid Hub
TIMEOUT 10 Time, in seconds, before after that a waiting keyword fails
IMPLICIT_WAIT 2 Time, in seconds, meanwhile Selenium polls the DOM trying to find an element it isn't immediately available
SPEED 0.1 Delay, in seconds, between two Selenium actions
ADMIN_USER admin Username of IAM admin user
ADMIN_PASSWORD password Password of IAM admin user

Run manually

For run the testsuite, you need Robot Framework and Selenium. Install them with:

 $ sudo yum install -y python-pip
 $ sudo pip install robotframework
 $ sudo pip install selenium==2.53.6
 $ sudo pip install robotframework-selenium2library

By default, the testsuite run Selenium tests using Firefox web browser. If you want to use a different browser, you need to install the corrisponding webdriver and put it in the library path. For example, install Google Chrome webdriver with:

 $ wget -O /tmp/chromedriver.zip http://chromedriver.storage.googleapis.com/2.23/chromedriver_linux64.zip
 $ unzip /tmp/chromedriver.zip -d /usr/local/bin

Then, run the testsuite:

 $ cd iam-robot-testsuite
 $ pybot --pythonpath .:lib  -d reports/  tests/

You can restrict the run test specifying the sub-directory or the single file or the single test case (option -t).

Some useful option are:

  -d /path/to/some/dir : specify directory where write final output, log and report
  -t "Test name"       : execute only the test named with "Test name"

Run with Docker and Selenium Grid

This testsuite provides a Docker image to run the tests in headless environments. All the needed files are located in docker folder.

First, start the Selenium Grid Hub with the two node:

 $ sh docker/selenium-grid/selenium_grid.sh start

The command above brings on a Selenium Hub, listen on TCP port 4444 ad attaches its two nodes, one with Chrome and the other with Firefox. Verify the selenium hub status pointing a browser to http://localhost:4444/grid/console.

If you want connect Selenium Grid to an existing Docker network and inject an hostname into browser nodes, export the variables DOCKER_NET_NAME and IAM_HOSTNAME. For examples:

$ IAM_HOSTNAME=iam.local.io DOCKER_NET_NAME=iam_default sh docker/selenium-grid/selenium_grid.sh start

Then, build the testsuite image:

 $ cd docker
 $ ./build-image.sh

This shell script creates a new Docker image, named italiangrid/iam-robot-testsuite in the local image repository. Then run the testsuite container.

 $ docker run italiangrid/iam-robot-testsuite:latest

The last command launch a container that run the testsuite with default setup. For customize the execution, provide to Docker the proper environment variables with -e option. For example:

 $ docker run \ 
   -e TESTSUITE_REPO=file:///tmp/local_repo/iam-robot-testsuite \
   -e TESTSUITE_BRANCH=issue/issue-1 \
   -e IAM_BASE_URL=http://172.18.0.1:8080 \
   -e BROWSER=chrome \
   -e REMOTE_URL=http://selenium-hub:4444/wd/hub \
   -e TIMEOUT=30 \
   italiangrid/iam-testsuite:latest

To run the testsuite into dockerized environment, be aware that the testsuite container can resolve both IAM instance and Selenium Hub. Moreover, the Selenium nodes must can resolve IAM endpoint.

Available environment variables
Variable Default Meaning
TESTSUITE_REPO https://github.com/marcocaberletti/iam-robot-testsuite.git Repository hosting testsuite code
TESTSUITE_BRANCH master Git branch to checkout
OUTPUT_REPORTS /home/tester/iam-robot-testsuite/reports Directory where RobotFramework save execution report and tests outputs
BROWSER firefox Browser to use for tests
IAM_BASE_URL http://localhost:8080 IAM endpoint to test
REMOTE_URL False URL of Selenium Grid Hub to use
TIMEOUT 10 Time, in seconds, after that a keyword fails
IMPLICIT_WAIT 2 Time, in seconds, meanwhile Selenium polls the DOM trying to find an element it isn't immediately available