Actions

Testing Area/Behat Testing/Automated functional testing: Difference between revisions

From Mahara Wiki

< Testing Area‎ | Behat Testing
mNo edit summary
mNo edit summary
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Information on Automated Functional Testing
Information on Automated Functional Testing


===Behat Testing (Steps)===
===Behat Testing - Mahara Steps===


Use the steps below to aid you in writing Behat tests. Anywhere you see "@Given", you can substitute it for "And", "Then" and also "When"
Note: for ALL current Mahara steps refer to <your mahara environment>/htdocs/testing/frameworks/behat/classes/BehatGeneral.php
 
====Logging In====
Logs you in as an Admin for testing purposes
  @Given I am logged in as the user "admin" with password "Password1"


====Opening/Loading/Closing Pages====
====Opening/Loading/Closing Pages====
Line 20: Line 24:




====Actions Requiring Waiting====
====Actions Requiring Waiting====




Line 129: Line 133:




====Switching Frames/Windows====


These steps you wont necassarily need but they are here if you do.




Switches to the specified iframe.
====Ungrouped Steps====
  @Given I switch to "$iframename" iframe




Switches to the main Mahara frame.
  @Given I switch to the main frame




Switches to the specified window. Useful when interacting with popup windows.
Follows the page redirection. Use this step after any action that shows a message and waits for a redirection
   @Given I switch to “windowname” windows
   @Given I wait to be redirected
   


Accepts the currently displayed alert dialog. This step does not work in all the browsers, consider it experimental.
  @Given I accept the currently displayed dialog


Switches to the main Mahara window. Useful when you finish interacting with popup windows.
@Given I switch to the main window


Drags and drops the specified element to the specified container. This step does not work in all the browsers, consider it experimental.
  @Given I drag "$element" "$selector" and I drop it in "$containerelement" ”$selector"
   


This step triggers cron like a user would do going to lib/cron.php.
  @Given I trigger cron






====Switching Frames/Windows====


====Ungrouped Steps====
These steps you wont necassarily need but they are here if you do.




Switches to the specified iframe.
  @Given I switch to "$iframename" iframe




Follows the page redirection. Use this step after any action that shows a message and waits for a redirection
Switches to the main Mahara frame.
   @Given I wait to be redirected
   @Given I switch to the main frame
   


Accepts the currently displayed alert dialog. This step does not work in all the browsers, consider it experimental.
  @Given I accept the currently displayed dialog


Switches to the specified window. Useful when interacting with popup windows.
  @Given I switch to “windowname” windows


Drags and drops the specified element to the specified container. This step does not work in all the browsers, consider it experimental.
  @Given I drag "$element" "$selector" and I drop it in "$containerelement" ”$selector"
   


This step triggers cron like a user would do going to admin/cron.php.
Switches to the main Mahara window. Useful when you finish interacting with popup windows.
  @Given I trigger cron
@Given I switch to the main window

Latest revision as of 16:24, 24 July 2020

Information on Automated Functional Testing

Behat Testing - Mahara Steps

Note: for ALL current Mahara steps refer to <your mahara environment>/htdocs/testing/frameworks/behat/classes/BehatGeneral.php

Logging In

Logs you in as an Admin for testing purposes

 @Given I am logged in as the user "admin" with password "Password1"

Opening/Loading/Closing Pages

Opens Mahara homepage.

 @Given I am on homepage


Reloads the current page.

 @Given I reload the page

Waits until the page is completely loaded. This step is auto-executed after every step.

 @Given I wait until the page is ready
    


Actions Requiring Waiting

Waits X seconds. Required after an action that requires data from an AJAX request.

 @Then I wait "$numberofseconds" seconds


Waits until the provided element selector exists in the DOM

 @Given I wait until "$element" "$selector" exists


Click Actions

Generic mouse over action. Mouse over a element of the specified type.

 @When I hover "$element" "$selector"
    


Click on the element of the specified type which is located inside the second element.

 @When I click on "$element" "$selector"


Click on the specified element inside a table row containing the specified text.

 @Given I click on "$element" "$selector" in the table row
    

Clicks link with specified id|title|alt|text.

 @When I follow "id|title|alt|text"


Checking For Specfic Visible Elements

Checks, that the specified element is visible. Only available in tests using Javascript.

 @Then "$elements" "$selector" should be visible
    
 @Then "$element" "$selector" should not be visible


Checks, that the specified element is visible inside the specified container. Only available in tests using Javascript.

 @Then "$element" "$selector" in the "$elementcontainer" "$selector" should be visible     


Checks, that the specified element is not visible inside the specified container. Only available in tests using Javascript.

 @Then "$element" "$selector" in the "$elementcontainer" "$textselector" should not be visible
         

Checks, that page contains specified text. It also checks if the text is visible when running Javascript tests.

 @Then I should see "$text"
    

Checks, that page doesn't contain specified text. When running Javascript tests it also considers that texts may be hidden.

 @Then I should not see "$text"


Checks, that the specified element contains the specified text. When running Javascript tests it also considers that texts may be hidden.

 @Then I should see "$text" in the "$element" “$sector”

Checks, that the specified element does not contain the specified text. When running Javascript tests it also considers that texts may be hidden.

 @Then I should not see "$text" in the “$element" "$selector”


Checks, that the first specified element appears before the second one.

 @Given "$element" "$selector" should appear before "$element)" "$selector"
    

Checks, that the first specified element appears after the second one.

 @Given "$element" "selector" should appear after $"element"  $"selector"


Checks, that element of specified type is disabled.

 @Then the "$element" "$selector" should be disabled
    

Checks, that element of specified type is enabled.

 @Then the "$element" "$selector" should be enabled
    

Checks the provided element and selector type are readonly on the current page.

 @Then the "$element" "$selector" should be readonly

Checks the provided element and selector type exists in the current page. -This step is for advanced users, use it if you don't find anything else suitable for what you need.

 @Then "$element" "$selector" should exists

Checks that the provided element and selector type not exists in the current page. -This step is for advanced users, use it if you don't find anything else suitable for what you need.

 @Then "$element" "$selector" should not exists


Checks that an element and selector type exists in another element and selector type on the current page. -This step is for advanced users, use it if you don't find anything else suitable for what you need.

 @Then "$element" "$selector" should exist in the "$element" "$selector"



Ungrouped Steps

Follows the page redirection. Use this step after any action that shows a message and waits for a redirection

 @Given I wait to be redirected
    

Accepts the currently displayed alert dialog. This step does not work in all the browsers, consider it experimental.

 @Given I accept the currently displayed dialog


Drags and drops the specified element to the specified container. This step does not work in all the browsers, consider it experimental.

 @Given I drag "$element" "$selector" and I drop it in "$containerelement" ”$selector"
    

This step triggers cron like a user would do going to lib/cron.php.

 @Given I trigger cron


Switching Frames/Windows

These steps you wont necassarily need but they are here if you do.


Switches to the specified iframe.

 @Given I switch to "$iframename" iframe


Switches to the main Mahara frame.

 @Given I switch to the main frame


Switches to the specified window. Useful when interacting with popup windows.

 @Given I switch to “windowname” windows


Switches to the main Mahara window. Useful when you finish interacting with popup windows.

@Given I switch to the main window