Actions

Testing Area/Behat Testing/Setup: Difference between revisions

From Mahara Wiki

< Testing Area‎ | Behat Testing
No edit summary
No edit summary
 
(73 intermediate revisions by 13 users not shown)
Line 1: Line 1:
<h1>How to install Mahara and Behat</h1>
{{note|These instructions for the Behat setup are only for machines running Linux. They will not work for Windows machines.}}


{{note|These instructions for Mahara and Behat setup are only for machines running Linux. They will not for Windows machines|}}
1. Set up your [[Developer_Area/Developer_Environment | developer environment]] if you haven't already done so.


2. Install Behat's dependencies:
<syntaxhighlight lang="bash">
$ sudo apt-get install curl openjdk-8-jre-headless
</syntaxhighlight>


Install Apache, PHP5, Database, Git:
3. Add the following config settings to the bottom of your Mahara config.php file inside the htdocs/ subdirectory of the Mahara codebase.
  sudo apt-get install php5 php5-cli php5-pgsql php5-xmlrpc php5-intl php5-curl php5-gd php5-xdebug php5-dbg postgresql apache2 git curl


Restart Apache
{{note|If /var/www/maharadata is not where you created your dataroot, you'll need to replace that with the correct path in the following commands}}
  sudo service apache2 restart


Make a mahara directory in the same place as Moodle
<syntaxhighlight lang="bash">
  sudo mkdir /var/www/html/mahara
 
Then change into the Mahara directory
cd /var/www/html/mahara
 
Then change the permission
sudo chown username:username /var/www/html/mahara
 
Get Mahara clone.
  git clone https://gitorious.org/mahara/ngson2000s-mahara.git .
 
Checkout correct version
  git checkout --track origin/behat
 
Become Postgres user:
  sudo su postgres
 
Open psql.After some preamble you should see the prompt postgres=#.
  psql
 
You should now see postgres=# ready and awaiting your command.
 
Create a user and don't use the PW that you use for your workstation:
  CREATE USER maharauser WITH PASSWORD 'yourpassword';
 
As you previously did, you should see postgres=#
You are now going to create a database:
  CREATE DATABASE mahara WITH OWNER maharauser;
 
Exit to leave psql by pressing Ctrl-D
 
Exit back to your own user:
  exit
 
Make a data directory:
  sudo mkdir /var/www/maharadata
 
Make directory writeable by mahara:
  sudo chmod 777 /var/www/maharadata
 
 
In the code below make sure you change <your email address> to your actual work email address, without the <> signs.
 
<pre>
<?php
$cfg = new stdClass();
 
$branch = 'master';
 
// database connection details
// valid values for dbtype are 'postgres8' and 'mysql5'
$cfg->dbtype  = 'postgres';
$cfg->dbhost  = 'localhost';
$cfg->dbuser  = 'maharauser';
$cfg->dbname  = "mahara";
$cfg->dbpass  = 'password';
 
$cfg->dataroot = "/var/www/maharadata";
 
$cfg->sendemail = true;
$cfg->sendallemailto = '<your email address>';
 
$cfg->productionmode = false;
$cfg->perftofoot = true;
</pre>
 
 
An example config.php should appear:
 
* Copy all of the code above
* open text editor from start menu
* paste code
* save file in the directory: /var/www/html/mahara/htdocs/ and call it config.php
* save
 
===Behat installation with Mahara===
 
Add these config settings to the bottom of your config.php file.
 
<pre>
// Behat config
// Behat config
$cfg->dbprefix = ''; // Behat complains without this
$cfg->behat_test = true; // Turn this off when you are not behat testing
$cfg->wwwroot = 'http://127.0.0.1/mahara/htdocs'
$cfg->behat_dbprefix = 'behat_'; // must not empty
$cfg->behat_dbprefix = 'behat_'; // must not empty
$cfg->behat_dataroot = '/var/www/maharadata/behat';
$cfg->behat_dataroot = "/var/lib/maharadata/main_behat"; // The Behat copy of maharadata.
$cfg->behat_wwwroot = 'http://localhost:8000';
$cfg->behat_wwwroot = 'http://localhost:8000'; // Must be this
</pre>
$cfg->behat_selenium2 = "http://127.0.0.1:4444/wd/hub"; // Must be this


Make a data directory:
// If you want failed step screenshots appear directly on screen while the step fails (only Ubuntu)
  sudo mkdir /var/www/maharadata/behat
$cfg->behat_view_screenshots = true;
</syntaxhighlight>


Make directory writeable by mahara:
{{note|There should be a behat_dataroot for each Mahara instance that you set up. Here the one for the main branch / this Mahara instance is created.}}
  sudo chmod 777 /var/www/maharadata/behat
{{note|If the directory for $cfg->behat_dataroot does not exist then it will need to be created.}}


Initialise Behat  
4. Make your Behat data directory (check this matches what you set in config.php):
 
<syntaxhighlight lang="bash">
  cd /var/www/html/mahara
$ sudo mkdir /var/lib/maharadata/main_behat
  php test/behat/scripts/init.php
</syntaxhighlight>


disable test site
5. Make the directory and any subdirectories writeable by Mahara (check the directory is correct):
  php test/behat/scripts/util.php --disable
<syntaxhighlight lang="bash">
$ sudo chmod 777 -R /var/lib/maharadata/main_behat
</syntaxhighlight>
<span id="chown"></span>
6. Change the directory and any subdirectories permissions to be owned by apache user (check the directory is correct):
<syntaxhighlight lang="bash">
$ sudo chown -R www-data:www-data /var/lib/maharadata/main_behat
</syntaxhighlight>


Go to url to install
*For Ubuntu, apache runs with user www-data
http://127.0.0.1/mahara/htdocs/admin/index.php
*For Centos, apache runs with user apache


Click "Install Mahara" on the webpage
7. Run Behat tests (change into your Mahara code directory first) as the apache user:
<syntaxhighlight lang="bash">
$ cd
$ cd code/mahara
./test/behat/mahara_behat.sh run
</syntaxhighlight>


Click "Continue" on the webpage
Or if you have sudo access:
<syntaxhighlight lang="bash">
$ cd
$ cd code/mahara
sudo -u www-data ./test/behat/mahara_behat.sh run
</syntaxhighlight>


You need to change the password and the email. Set the email to your work email address.


Re-enable the test site so we can run the tests
For the first time of running Behat, you need to wait for the Behat environment initialisation. This can take a while.


  php test/behat/scripts/util.php --enable
To run all tests:
./test/behat/mahara_behat.sh run


Run the selenium server in another terminal
To run your specific tests marked with @yourtags:
./test/behat/mahara_behat.sh run @yourtags


  java -jar /path/to/your/selenium/server/selenium-server-standalone-2.NN.N.jar
To run a particular feature file:
./test/behat/mahara_behat.sh run my_file.feature


Run the standalone PHP webserver
The run / runheadless / rundebug / rundebugheadless / runfresh are interchangable with run in above commands


  cd /var/www/html/mahara/htdocs
[[Category:Behat]]
  php -S 127.0.0.1:8000


Run a test suite
==Running Behat tests with html report and screenshots on failed steps==
  cd test/behat
  bin/behat
This will run tests for all features in the folder test/behat/features


To run tests with html output, add the flag 'html' to your test run command, e.g:


<syntaxhighlight lang="bash">./test/behat/mahara_behat.sh run create_page.feature html</syntaxhighlight>


This will automatically open an html report of the test run in your browser. If there were failed steps, the the html report plugin takes a screenshot of the page that failed.
You can find the screenshots in your behat dataroot (usually /var/lib/maharadata/main_behat) at the following path:
behat/html_results/<feature title>/<scenario title>.png


Ubuntu only (you need the image viewer '[https://packages.ubuntu.com/search?keywords=eog eog]'): If you set


$cfg->behat_view_screenshots = true;


in your config.php file then the images will be opened up in image browser.


Hopefully we will rig up the report to link to the screenshot soon.


==How to Run Mahara behat test on Chrome for versions older than 17.04==


{{note|Mahara behat is running on chrome driver by default in 17:04+}}


This is steps for older versions of Mahara


1. Download chromedriver here http://www.seleniumhq.org/download/ ( download the latest release)


2. Start selenium Server with chrome driver


$ java -jar selenium-server-standalone-2.53.1.jar -Dwebdriver.chrome.driver=path of chromedriver


3. Change the behat.yml file as follows,


Here is the file path var/lib/maharadata/main_behat/behat.yml


when you open the beaht.yml file replace the following code with the lines that contain sessions to go


javascript_session: selenium2
        selenium2:
          browser: chrome
            goutte: ~


4. Run the behat test without rundebug


for example  ./test/behat/mahara_behat.sh run example.feature


==Debugging==


 
Go here for tips: https://wiki.mahara.org/wiki/Testing/Behat_Testing/Error_%26_Solutions
[[Category:Behat]]

Latest revision as of 12:21, 15 Haziran 2023

Note: These instructions for the Behat setup are only for machines running Linux. They will not work for Windows machines.

1. Set up your developer environment if you haven't already done so.

2. Install Behat's dependencies:

$ sudo apt-get install curl openjdk-8-jre-headless

3. Add the following config settings to the bottom of your Mahara config.php file inside the htdocs/ subdirectory of the Mahara codebase.

Note: If /var/www/maharadata is not where you created your dataroot, you'll need to replace that with the correct path in the following commands
// Behat config
$cfg->behat_test = true; // Turn this off when you are not behat testing
$cfg->behat_dbprefix = 'behat_'; // must not empty
$cfg->behat_dataroot = "/var/lib/maharadata/main_behat"; // The Behat copy of maharadata.
$cfg->behat_wwwroot = 'http://localhost:8000'; // Must be this
$cfg->behat_selenium2 = "http://127.0.0.1:4444/wd/hub"; // Must be this

// If you want failed step screenshots appear directly on screen while the step fails (only Ubuntu)
$cfg->behat_view_screenshots = true;
Note: There should be a behat_dataroot for each Mahara instance that you set up. Here the one for the main branch / this Mahara instance is created.
Note: If the directory for $cfg->behat_dataroot does not exist then it will need to be created.

4. Make your Behat data directory (check this matches what you set in config.php):

$ sudo mkdir /var/lib/maharadata/main_behat

5. Make the directory and any subdirectories writeable by Mahara (check the directory is correct):

$ sudo chmod 777 -R /var/lib/maharadata/main_behat

6. Change the directory and any subdirectories permissions to be owned by apache user (check the directory is correct):

$ sudo chown -R www-data:www-data /var/lib/maharadata/main_behat
  • For Ubuntu, apache runs with user www-data
  • For Centos, apache runs with user apache

7. Run Behat tests (change into your Mahara code directory first) as the apache user:

$ cd
$ cd code/mahara
./test/behat/mahara_behat.sh run

Or if you have sudo access:

$ cd
$ cd code/mahara
sudo -u www-data ./test/behat/mahara_behat.sh run


For the first time of running Behat, you need to wait for the Behat environment initialisation. This can take a while.

To run all tests:

./test/behat/mahara_behat.sh run

To run your specific tests marked with @yourtags:

./test/behat/mahara_behat.sh run @yourtags

To run a particular feature file:

./test/behat/mahara_behat.sh run my_file.feature

The run / runheadless / rundebug / rundebugheadless / runfresh are interchangable with run in above commands

Running Behat tests with html report and screenshots on failed steps

To run tests with html output, add the flag 'html' to your test run command, e.g:

./test/behat/mahara_behat.sh run create_page.feature html

This will automatically open an html report of the test run in your browser. If there were failed steps, the the html report plugin takes a screenshot of the page that failed. You can find the screenshots in your behat dataroot (usually /var/lib/maharadata/main_behat) at the following path: behat/html_results/<feature title>/<scenario title>.png

Ubuntu only (you need the image viewer 'eog'): If you set

$cfg->behat_view_screenshots = true;

in your config.php file then the images will be opened up in image browser.

Hopefully we will rig up the report to link to the screenshot soon.

How to Run Mahara behat test on Chrome for versions older than 17.04

Note: Mahara behat is running on chrome driver by default in 17:04+

This is steps for older versions of Mahara

1. Download chromedriver here http://www.seleniumhq.org/download/ ( download the latest release)

2. Start selenium Server with chrome driver

$ java -jar selenium-server-standalone-2.53.1.jar -Dwebdriver.chrome.driver=path of chromedriver

3. Change the behat.yml file as follows,

Here is the file path var/lib/maharadata/main_behat/behat.yml

when you open the beaht.yml file replace the following code with the lines that contain sessions to go

javascript_session: selenium2

        selenium2:
          browser: chrome
           goutte: ~

4. Run the behat test without rundebug

for example ./test/behat/mahara_behat.sh run example.feature

Debugging

Go here for tips: https://wiki.mahara.org/wiki/Testing/Behat_Testing/Error_%26_Solutions