Adds behat support for group structures in the select menu field. When
looking for a particular option you can further specify the group under
which this option should be located by using the '>' delimiter
(e.g. "Group name > Option name"). In addition to that, this commit
intorduces new step definition which can be used to check whether the
select menu field contains a particular option.
Try to correct broken ul/ol/li tags, as they have an outsized impact
on course layout. Uses basic regex and loops to track open and closed
tags.
Also adds a deep clean option to the HTML cleaner, that runs less
frequent, more intensive cleanings. This is because normally _cleanHTML
gets called after each keystroke, which could cause problems with
large content on weak systems.
Behat changes are a fix for setting multiline strings in Atto, and
creating a multiline match step.
Normalise switching of window contexts by setting the main window name
to a null.
Where the window has no name (null/empty), then the root context is
selected.
The form_autocomplete is essentially a custom element. Unfortunately the
`setValue()` function in Mink has undesired actions so it is necessary
to write our own handling for it.
The standard Mink `setValue()` function focuses the element, sets a
value, and then blurs the element. In the case of the autocomplete this
can cause the autocomplete suggestions list to be closed in some
situations. Instead of using the setValue we click, and type the value,
but do not immediately blur.
Firstly - the list of roles to filter needs to be a combination of the assignable roles and the existing roles in the course.
Secondly - the auto-complete behat step needs to search for entire strings, not substrings.
Improve the helpers for autocomplete so that:
a) the set field for an auto complete will automatically close the suggestions list.
b) add a new helper to open the suggestions list
c) move the helper for clicking on an element in the suggestions list from tool_lp to core.
This fixes:
- An incorrect exception message.
- tablelib weird behavior creating up to
pagesize empty rows.
Also forces a version bump so new webservices will become installed.
Every single step that sets or gets a value from a field
has been updated to follow the same behaviour both when
using it through a single step or through generic steps
like "I fill the moodle form with:", to resume all the
changes:
- Created a behat_form_group to re-guess the field type
and act appropriately setting and getting it's value
- Normalize all getters and setters to use behat_form_field
children
- Complete behat_form_checkbox to trigger the appropiate JS
event needed to perform some JS scripts that are listening
- Refactor MDL-43713 multi-select changes and remove
the two new steps introduced there as that behaviour can
be managed from the generic getter
- Added a new step definition to check a capability permission
as we changed the way radio buttons gets it's value
This patch implements:
1) Normalization of options. Before the patch options
in a select were being returned as "op1 op2 op3" by selenium
and "op1 op2 op3" by goutte. With the patch, those lists
are always returned like "op1, op2, op3". If real commas are
needed when handling multiple selects they should
be escaped with backslash in feature files.
2) Support for selecting multiple options. Before the patch
only one option was selected and a new selection was cleaning the
previous one. With the patch it's possible to pass "op1, op2" in
these steps:
- I fill the moodle form with (table)
- I select "OPTION_STRING" from "SELECT_STRING"
3) Ability to match multiple options in this steps. Before the
patch matching of multiple was really random, now every every
passed option ("opt1, opt2") is individually verified. It applies
to these 2 steps:
- the "ELEMENT" select box should contain "OPTIONS"
- the "ELEMENT" select box should not contain "OPTIONS"
4) Two new steps able to verify if a form have some options selected or no:
- the "ELEMENT" select box should contain "OPTIONS" selected
- the "ELEMENT" select box should contain "OPTIONS" not selected
5) Change get_value from xpath search to Mink's getValue() that is immediate
(does not need form submission) and works for all browsers but Safari, that
fails because of the extra ->click() issued.
Note all the changes 1-4 only affect to multi-select fields. Single
selects should continue working 100% the same.
The change 5) causes Safari to fail. The problem has been traced down to
the extra ->click() present there. Anyway there are not test cases
requiring that "immediate" evaluation right now. Only the special feature
file attached verifies it.
There are steps where we want to check that
"something" does not appear in the page
or does not exist. We still have to spin
but we don't need to spin for 6 seconds.
* Expanding fieldsets before setting the course format
* Ensure editors are loaded moved to expand_all_fieldsets
* Return true rather than false when JS is disabled and
non-allowed steps should continue without throwing an
exception.
* Submit create user form after editing it
In general aiming for compatibility with multiple browsers,
firefox, chrome and phantomjs to be more specific.
* Removing hardcoded waits
* Adding @_alert, @_switch_window and @_switch_frame tags,
to label actions that different drivers have problems with.
* Adding missing @_files_upload and @_only_local tags to features that
uploads files.
* Fixing a few wait for page ready what specified miliseconds.
* New methods to ensure elements (usual selectors), sections and editors
are ready to interact with
* Changing the select an option implementation to deal with the different
drivers implementations when listening to JS events.