Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.

Differences Between: [Versions 310 and 401] [Versions 311 and 401] [Versions 39 and 401] [Versions 400 and 401] [Versions 401 and 402] [Versions 401 and 403]

Navigation steps definitions.

Copyright: 2012 David MonllaĆ³
License: http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
File Size: 1463 lines (65 kb)
Included or required: 3 times
Referenced: 0 times
Includes or requires: 1 file
 lib/behat/behat_base.php

Defines 1 class

behat_navigation:: (54 methods):
  i_should_see_is_active_in_navigation()
  get_node_text_node()
  navigation_node_should_be_expandable()
  navigation_node_should_not_be_expandable()
  i_follow_in_the_user_menu()
  i_expand_node()
  i_collapse_node()
  find_node_in_navigation()
  select_node_in_navigation()
  get_top_navigation_node()
  get_navigation_node()
  get_expand_navbar_step()
  i_navigate_to_in_current_page_administration()
  should_exist_in_current_page_administration()
  should_not_exist_in_current_page_administration()
  i_navigate_to_in_site_administration()
  i_open_my_profile_in_edit_mode()
  i_am_on_page()
  i_am_on_page_logged_in_as()
  resolve_page_helper()
  parse_page_name()
  i_am_on_page_instance()
  i_am_on_page_instance_logged_in_as()
  resolve_page_instance_helper()
  resolve_core_page_url()
  resolve_core_page_instance_url()
  i_open_a_tab_on_the_current_page()
  i_open_a_tab_on_the_page()
  i_open_a_tab_on_the_page_instance()
  open_tab()
  i_am_on_course_homepage()
  i_am_on_course_homepage_with_editing_mode_on()
  i_am_on_course_homepage_with_editing_mode_set_to()
  i_open_flat_navigation_drawer()
  i_close_flat_navigation_drawer()
  i_select_from_primary_navigation()
  i_select_from_secondary_navigation()
  go_to_main_course_page()
  select_on_administration_page()
  find_header_administration_menu()
  find_page_administration_menu()
  find_page_action_menu()
  toggle_page_administration_menu()
  select_from_administration_menu()
  i_am_on_fixture_page()
  go_to_breadcrumb_location()
  should_exist_in_user_menu()
  should_exist_in_user_submenu()
  i_should_see_user_submenu()
  get_user_menu_xpath()
  get_user_submenu_xpath()
  is_editing_on()
  i_turn_editing_mode_on()
  i_turn_editing_mode_off()


Class: behat_navigation  - X-Ref

Steps definitions to navigate through the navigation tree nodes.

i_should_see_is_active_in_navigation($element)   X-Ref
Checks whether a navigation node is active within the block navigation.

param: string      $element The name of the nav elemnent to look for.
return: void

get_node_text_node($text, $branch = false, $collapsed = null, $exception = null)   X-Ref
Helper function to get a navigation nodes text element given its text from within the navigation block.

This function finds the node with the given text from within the navigation block.
It checks to make sure the node is visible, and then returns it.

param: string $text
param: bool $branch Set this true if you're only interested in the node if its a branch.
param: null|bool $collapsed Set this to true or false if you want the node to either be collapsed or not.
param: null|string|Exception|false $exception The exception to throw if the node is not found.
return: \Behat\Mink\Element\NodeElement

navigation_node_should_be_expandable($nodetext)   X-Ref
Returns true if the navigation node with the given text is expandable.

param: string $nodetext
return: bool

navigation_node_should_not_be_expandable($nodetext)   X-Ref
Returns true if the navigation node with the given text is not expandable.

param: string $nodetext
return: bool

i_follow_in_the_user_menu($nodetext)   X-Ref
Click on an entry in the user menu.

param: string $nodetext

i_expand_node($nodetext)   X-Ref
Expands the selected node of the navigation tree that matches the text.

param: string $nodetext
return: bool|void

i_collapse_node($nodetext)   X-Ref
Collapses the selected node of the navigation tree that matches the text.

param: string $nodetext
return: bool|void

find_node_in_navigation($nodetext, $parentnodes, $nodetype = 'link')   X-Ref
Finds a node in the Navigation or Administration tree

param: string $nodetext
param: array $parentnodes
param: string $nodetype node type (link or text)
return: NodeElement|null

select_node_in_navigation($nodetext, $parentnodes)   X-Ref
Finds a node in the Navigation or Administration tree and clicks on it.

param: string $nodetext
param: array $parentnodes

get_top_navigation_node($nodetext)   X-Ref
Helper function to get top navigation node in tree.

param: string $nodetext name of top navigation node in tree.
return: NodeElement

get_navigation_node($nodetext, $parentnode = null)   X-Ref
Helper function to get sub-navigation node.

param: string $nodetext node to find.
param: NodeElement $parentnode parent navigation node.
return: NodeElement.

get_expand_navbar_step()   X-Ref
Step to open the navigation bar if it is needed.

The top log in and log out links are hidden when middle or small
size windows (or devices) are used. This step returns a step definition
clicking to expand the navbar if it is hidden.


i_navigate_to_in_current_page_administration($nodetext)   X-Ref
Go to current page setting item

This can be used on front page, course, category or modules pages.

param: string $nodetext navigation node to click, may contain path, for example "Reports > Overview"
return: void

should_exist_in_current_page_administration($element, $selectortype)   X-Ref
Checks that current page administration contains text

param: string $element The locator of the specified selector.
param: string $selectortype The selector type (link or text)
return: void

should_not_exist_in_current_page_administration($element, $selectortype)   X-Ref
Checks that current page administration contains text

param: string $element The locator of the specified selector.
param: string $selectortype The selector type (link or text)
return: void

i_navigate_to_in_site_administration($nodetext)   X-Ref
Go to site administration item

param: string $nodetext navigation node to click, may contain path, for example "Reports > Overview"
return: void

i_open_my_profile_in_edit_mode()   X-Ref
Opens the current users profile page in edit mode.

return: void

i_am_on_page(string $page)   X-Ref
Open a given page, belonging to a plugin or core component.

The page-type are interpreted by each plugin to work out the
corresponding URL. See the resolve_url method in each class like
behat_mod_forum. That method should document which page types are
recognised, and how the name identifies them.

For pages belonging to core, the 'core > ' bit is omitted.

param: string $page the component and page name.

i_am_on_page_logged_in_as(string $page, string $username)   X-Ref
Open a given page logged in as a given user.

This is like the combination
When I log in as "..."
And I am on the "..." page
but with the advantage that you go straight to the desired page, without
having to wait for the Dashboard to load.

param: string $page the type of page. E.g. 'Admin notifications' or 'core_user > Preferences'.
param: string $username the name of the user to log in as. E.g. 'admin'.

resolve_page_helper(string $page)   X-Ref
Helper used by i_am_on_page() and i_am_on_page_logged_in_as().

param: string $page the type of page. E.g. 'Admin notifications' or 'core_user > Preferences'.
return: moodle_url the corresponding URL.

parse_page_name(string $page)   X-Ref
Parse a full page name like 'Admin notifications' or 'core_user > Preferences'.

E.g. parsing 'mod_quiz > View' gives ['mod_quiz', 'View'].

param: string $page the full page name
return: array with two elements, component and page name.

i_am_on_page_instance(string $identifier, string $type)   X-Ref
Open a given instance of a page, belonging to a plugin or core component.

The instance identifier and page-type are interpreted by each plugin to
work out the corresponding URL. See the resolve_page_instance_url method
in each class like behat_mod_forum. That method should document which page
types are recognised, and how the name identifies them.

For pages belonging to core, the 'core > ' bit is omitted.

param: string $identifier identifies the particular page. E.g. 'Test quiz'.
param: string $type the component and page type. E.g. 'mod_quiz > View'.

i_am_on_page_instance_logged_in_as(string $identifier,string $type, string $username)   X-Ref
Open a given page logged in as a given user.

This is like the combination
When I log in as "..."
And I am on the "..." "..." page
but with the advantage that you go straight to the desired page, without
having to wait for the Dashboard to load.

param: string $identifier identifies the particular page. E.g. 'Test quiz'.
param: string $type the component and page type. E.g. 'mod_quiz > View'.
param: string $username the name of the user to log in as. E.g. 'student'.

resolve_page_instance_helper(string $identifier, string $pagetype)   X-Ref
Helper used by i_am_on_page() and i_am_on_page_logged_in_as().

param: string $identifier identifies the particular page. E.g. 'Test quiz'.
param: string $pagetype the component and page type. E.g. 'mod_quiz > View'.
return: moodle_url the corresponding URL.

resolve_core_page_url(string $name)   X-Ref
Convert core page names to URLs for steps like 'When I am on the "[page name]" page'.

Recognised page names are:
| Homepage            | Homepage (normally dashboard).                                 |
| Admin notifications | Admin notification screen.                                     |

param: string $name identifies which identifies this page, e.g. 'Homepage', 'Admin notifications'.
return: moodle_url the corresponding URL.

resolve_core_page_instance_url(string $type, string $identifier)   X-Ref
Convert page names to URLs for steps like 'When I am on the "[identifier]" "[page type]" page'.

Recognised page names are:
| Page type                  | Identifier meaning        | description                          |
| Category                   | category idnumber         | List of courses in that category.    |
| Course                     | course shortname          | Main course home pag                 |
| Course editing             | course shortname          | Edit settings page for the course    |
| Activity                   | activity idnumber         | Start page for that activity         |
| Activity editing           | activity idnumber         | Edit settings page for that activity |
| [modname] Activity         | activity name or idnumber | Start page for that activity         |
| [modname] Activity editing | activity name or idnumber | Edit settings page for that activity |
| Backup                     | course shortname          | Course to backup                     |
| Import                     | course shortname          | Course import from                   |
| Restore                    | course shortname          | Course to restore from               |
| Reset                      | course shortname          | Course to reset                      |
| Course copy                | course shortname          | Course to copy                       |
| Groups                     | course shortname          | Groups page for the course           |
| Permissions                | course shortname          | Permissions page for the course      |
| Enrolment methods          | course shortname          | Enrolment methods for the course     |
| Enrolled users             | course shortname          | The main participants page           |
| Other users                | course shortname          | The course other users page          |

Examples:

When I am on the "Welcome to ECON101" "forum activity" page logged in as student1

param: string $type identifies which type of page this is, e.g. 'Category page'.
param: string $identifier identifies the particular page, e.g. 'test-cat'.
return: moodle_url the corresponding URL.

i_open_a_tab_on_the_current_page(string $name)   X-Ref
Opens a new tab with given name on the same URL as current page and switches to it.

param: string $name Tab name that can be used for switching later (no whitespace)

i_open_a_tab_on_the_page(string $name, string $page)   X-Ref
Opens a new tab with given name on specified page, and switches to it.

param: string $name Tab name that can be used for switching later (no whitespace)
param: string $page Page name

i_open_a_tab_on_the_page_instance(string $name, string $identifier, string $page)   X-Ref
Opens a new tab with given name (on specified page), and switches to it.

param: string $name Tab name that can be used for switching later (no whitespace)
param: string $identifier Page identifier
param: string $page Page type

open_tab(string $name, string $jstarget)   X-Ref
Opens a new tab at the given target URL.

param: string $name Name for tab
param: string $jstarget Target in JavaScript syntax, i.e. if a string, must be quoted

i_am_on_course_homepage($coursefullname)   X-Ref
Opens the course homepage. (Consider using 'I am on the "shortname" "Course" page' step instead.)

param: string $coursefullname The full name of the course.
return: void

i_am_on_course_homepage_with_editing_mode_on($coursefullname)   X-Ref
Open the course homepage with editing mode enabled.

param: string $coursefullname The course full name of the course.

i_am_on_course_homepage_with_editing_mode_set_to(string $coursefullname, string $onoroff)   X-Ref
Open the course homepage with editing mode set to either on, or off.

param: string $coursefullname The course full name of the course.
param: string $onoroff Whehter to switch editing on, or off.

i_open_flat_navigation_drawer()   X-Ref
Opens the flat navigation drawer if it is not already open


i_close_flat_navigation_drawer()   X-Ref
Closes the flat navigation drawer if it is open (does nothing if JS disabled)


i_select_from_primary_navigation(string $link)   X-Ref
Clicks link with specified id|title|alt|text in the primary navigation

param: string $link

i_select_from_secondary_navigation(string $link)   X-Ref
Clicks link with specified id|title|alt|text in the secondary navigation

param: string $link

go_to_main_course_page()   X-Ref
If we are not on the course main page, click on the course link in the navbar


select_on_administration_page($nodelist)   X-Ref
Finds and clicks a link on the admin page (site administration or course administration)

param: array $nodelist

find_header_administration_menu($mustexist = false)   X-Ref
Locates the administration menu in the <header> element and returns its xpath

param: bool $mustexist if specified throws an exception if menu is not found
return: null|string

find_page_administration_menu($mustexist = false)   X-Ref
Locates the administration menu on the page (but not in the header) and returns its xpath

param: bool $mustexist if specified throws an exception if menu is not found
return: null|string

find_page_action_menu($mustexist = false)   X-Ref
Locates the action menu on the page (but not in the header) and returns its xpath

param: null|bool $mustexist if specified throws an exception if menu is not found
return: null|string

toggle_page_administration_menu($menuxpath = null)   X-Ref
Toggles administration menu

param: string $menuxpath (optional) xpath to the page administration menu if already known

select_from_administration_menu($nodelist)   X-Ref
Finds a page edit cog and select an item from it

If the page edit cog is in the page header and the item is not found there, click "More..." link
and find the item on the course/frontpage administration page

param: array $nodelist

i_am_on_fixture_page($url)   X-Ref
Visit a fixture page for testing stuff that is not available in core.

Please always, to prevent unwanted requests, protect behat fixture files with:
defined('BEHAT_SITE_RUNNING') || die();

param: string $url local path to fixture page

go_to_breadcrumb_location(string $pagename)   X-Ref
First checks to see if we are on this page via the breadcrumb. If not we then attempt to follow the link name given.

param: string $pagename Name of the breadcrumb item to check and follow.

should_exist_in_user_menu($itemtext, $selectortype, $not = null)   X-Ref
Checks whether an item exists in the user menu.

param: string $itemtext The menu item to find
param: string $selectortype The selector type
param: string|null $not Instructs to checks whether the element does not exist in the user menu, if defined
return: void

should_exist_in_user_submenu($itemtext, $selectortype, $submenuname, $not = null)   X-Ref
Checks whether an item exists in a given user submenu.

param: string $itemtext The submenu item to find
param: string $selectortype The selector type
param: string $submenuname The name of the submenu
param: string|null $not Instructs to checks whether the element does not exist in the user menu, if defined
return: void

i_should_see_user_submenu($submenuname)   X-Ref
Checks whether a given user submenu is visible.

param: string $submenuname The name of the submenu
return: void

get_user_menu_xpath()   X-Ref
Return the xpath for the user menu element.

return: string The xpath

get_user_submenu_xpath($submenuname)   X-Ref
Return the xpath for a given user submenu element.

param: string $submenuname The name of the submenu
return: string The xpath

is_editing_on()   X-Ref
Returns whether the user can edit the current page.

return: bool

i_turn_editing_mode_on()   X-Ref
Turns editing mode on.


i_turn_editing_mode_off()   X-Ref
Turns editing mode off.