. /** * Moodle-specific selectors. * * @package core * @category test * @copyright 2013 David Monllaó * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ /** * Moodle selectors manager. * * @package core * @category test * @copyright 2013 David Monllaó * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class behat_partial_named_selector extends \Behat\Mink\Selector\PartialNamedSelector { /** * Creates selector instance. */ public function __construct() { foreach (self::$customselectors as $alias => $selectors) { $this->registerNamedXpath($alias, implode(' | ', $selectors)); } foreach (static::$moodleselectors as $name => $xpath) { $this->registerNamedXpath($name, $xpath); } $this->registerReplacement('%iconMatch%', "(contains(concat(' ', @class, ' '), ' icon ') or name() = 'img')"); $this->registerReplacement('%imgAltMatch%', './/*[%iconMatch% and (%altMatch% or %titleMatch%)]'); parent::__construct(); } /** * @var Allowed types when using text selectors arguments. */ protected static $allowedtextselectors = array( 'activity' => 'activity', 'block' => 'block', 'css_element' => 'css_element', 'dialogue' => 'dialogue', 'fieldset' => 'fieldset', 'icon' => 'icon', 'list_item' => 'list_item', 'message_area_region' => 'message_area_region', 'message_area_region_content' => 'message_area_region_content', 'question' => 'question', 'region' => 'region', 'section' => 'section', 'table' => 'table', 'table_row' => 'table_row', 'xpath_element' => 'xpath_element', 'form_row' => 'form_row', ); /** * @var Allowed types when using selector arguments. */ protected static $allowedselectors = array( 'activity' => 'activity', 'block' => 'block', 'button' => 'button', 'checkbox' => 'checkbox', 'css_element' => 'css_element', 'dialogue' => 'dialogue', 'field' => 'field', 'fieldset' => 'fieldset', 'file' => 'file', 'filemanager' => 'filemanager', 'icon' => 'icon', 'link' => 'link', 'link_or_button' => 'link_or_button', 'list_item' => 'list_item', 'message_area_action' => 'message_area_action', 'message_area_region' => 'message_area_region', 'message_area_region_content' => 'message_area_region_content', 'optgroup' => 'optgroup', 'option' => 'option', 'question' => 'question', 'radio' => 'radio', 'region' => 'region', 'section' => 'section', 'select' => 'select', 'table' => 'table', 'table_row' => 'table_row', 'text' => 'text', 'xpath_element' => 'xpath_element', 'form_row' => 'form_row', ); /** * Behat by default comes with XPath, CSS and named selectors, * named selectors are a mapping between names (like button) and * xpaths that represents that names and includes a placeholder that * will be replaced by the locator. These are Moodle's own xpaths. * * @var XPaths for moodle elements. */ protected static $moodleselectors = array( 'activity' => << << << << << << << << << << << << << << << [ 'upstream' => << << <<