Testing Area/Behat Testing/Automated functional testing
From Mahara Wiki
< Testing Area | Behat Testing
Information on Automated Functional Testing
Behat Testing (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"
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
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
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 admin/cron.php.
@Given I trigger cron