Actions

Testing Area/Behat Testing/Steps: Difference between revisions

From Mahara Wiki

< Testing Area‎ | Behat Testing
mNo edit summary
Line 1: Line 1:
{{note|Replace the "And" with "Given, When, Then" where necessary|reminder}}
=Logging In=
=Logging In=



Revision as of 14:59, 10 November 2014

Note: Replace the "And" with "Given, When, Then" where necessary

Logging In

Logs you in as Admin for testing purpose

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


To create additional users.

Note: The users will be given an automatic PW of Password1 and the email account will be [email protected].
If you want to set a user up with aditional admin permissions you have to do that manually.
 @Given the following "users" exist:
     | firstname | lastname | username | 
     | Student | User | student |
     | Student2 | User2 | student2 |

Opening/Loading/Closing Pages

Checks, that current page PATH is equal to specified. eg; And I should be on "Profile" would be written as; And I should be on "artefact/internal/index.php"

 @Then I should be on "page path"

Opens user profile.

 @Given I am on user profile

Opens homepage.

 @When I go to the homepage

Opens Mahara homepage.

 @Given I am on homepage


Checks, that current page is the homepage.

 @Then I should be on the 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
    

Opens specified page.

 @Given I am on "page

Opens specified page.

 @When I go to "page"

Moves backward one page in history.

 @When I move backward one page

Moves forward one page in history

 @When I move forward one page
   

Checks, that current page response status is equal to specified.

 @Then the response status code should be 404
   
   

Checks, that current page response status is not equal to specified.

 @Then the response status code should not be 404


Switching Frames/Windows

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

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


Waits until the provided element does not exist in the DOM

 @Given I wait until "element_string" "selector_string" does not exist


Click Actions

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

 @Given I click on "element_string" "selector_string" in the "row_text_string" table row


@Given I drag "element_string" "selector1_string" and I drop it in "container_element_string" "selector2_string"


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"


Presses button with specified id|name|title|alt|value.

 @When I press "BUTTON_STRING"

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"


Filling in Forms

Fills in form field with specified id|name|label|value.

 @When I fill in "field" with "value"


Fills in form field with specified id|name|label|value.

 @When I fill in "value" for "field"
   
   

Fills in form fields with provided table.

 @When I fill in the following:
   
  

Selects option in select field with specified id|name|label|value.

 @When I select "option" from "select"
   
   

Selects additional option in select field with specified id|name|label|value.

 @When I additionally select "option" from "select"
   
  

Checks checkbox with specified id|name|label|value.

 @When I check "option"
   
   

Unchecks checkbox with specified id|name|label|value.

 @When I uncheck "option"
   

Checks, that form field with specified id|name|label|value has specified value.

 @Then the "field" field should contain "value"
   
   

Checks, that form field with specified id|name|label|value doesn't have specified value.

 @Then the "field" field should not contain "value"
   
   

Checks, that checkbox with specified in|name|label|value is checked.

 @Then the "checkbox" checkbox should be checked
   
  

Checks, that checkbox with specified in|name|label|value is checked.

 @Then the checkbox "checkbox" is|should be checked
   
  

Checks, that checkbox with specified in|name|label|value is unchecked.

 @Then the "checkbox" checkbox should not be checked
   

Checks, that checkbox with specified in|name|label|value is unchecked.

 @Then the checkbox "checkbox" should be unchecked|not be checked
   
   

Checks, that checkbox with specified in|name|label|value is unchecked.

 @Then the checkbox "checkbox" is unchecked|not checked)

Attaches file to field with specified id|name|label|value. eg; "/var/www/html/mahara/test/behat/upload_files/Mahara Testing notes.odt.tar.gz" to "Upload file"

 @When I attach the file "File Path and file name" to "field"


Fills a form with field/value data.

 @Given I set the following fields to these values:
   

Sets the specified value to the field.

 @Given I set the field "field_string" to "field_value_string"
   
   
   

Sets the specified value to the field with xpath.

 @Given I set the field with xpath "fieldxpath_string" to "field_value_string"
   
  

Checks, the field matches the value.

 @Then the field "field_string" matches value "field_value_string"

Checks, the field does not match the value.

 @Then the field "field_string" does not match value "field_value_string"
   
   

Checks, the provided field/value matches.

 @Then the following fields match these values:


Checks that the provided field/value pairs don't match.

 @Then the following fields do not match these values:
   

Checks, that given select box contains the specified option.

 @Then the "select_string" select box should contain "option_string"
   
  

Checks, that given select box contains the specified option.

 @Then the "select_string" select box should not contain "option_string"


Checking For Specfic Visible Elements

Checks, that (?P<num>\d+) CSS elements exist on the page

 @Then I should see (?P<num>\d+) "element" elements

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

 @Then I should see the element "element" "selectortype"
  

Checks, that field with specified identifier exists on page.

 @Then I should see the field "field"
     

Checks, that current page PATH matches regular expression.

 @Then the url should match "pattern" 
   

Prints current URL to console.

 @Then print current URL
   

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 the first specified element appears after the second one.

 @Given "following_element_string" "selector1_string" should appear after "preceding_element_string" "selector2_string"
   

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"


Checks, that page contains text matching specified pattern.

 @Then I should see text matching "pattern"

Checks, that page doesn't contain text matching specified pattern.

 @Then I should not see text matching "pattern"
   
   

Checks, that HTML response contains specified string.

 @Then the response should contain "text"


Checks, that HTML response doesn't contain specified string.

 @Then the response should not contain "text"
   

Checks, that element with specified CSS contains specified text.

 @Then I should see "text>" in the "element" element


Checks, that element with specified CSS doesn't contain specified text.

 @Then I should not see "text" in the "element" element


Checks, that element with specified CSS contains specified HTML.

 @Then the "element" element should contain "value"
   


Checks, that element with specified CSS doesn't contain specified HTML.

 @Then the "element" element should not contain "value"


Checks, that element with specified CSS exists on page.

 @Then I should see an? "element" element
   

Checks, that element with specified CSS doesn't exist on page.

 @Then I should not see an? "element" element


Printing/Display

Prints last response to console.

 @Then print last response

Prints current URL to console.

 @Then print current URL



Ungrouped Steps

Opens last response content in browser.

 @Then show last response
   

Internal step definition to find exceptions, debugging() messages and PHP debug messages.

 @Given I look for exceptions


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


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

 @Given I trigger cron