-
Improvement
-
Resolution: Fixed
-
Minor
-
3.5.8, 3.6.6, 3.7, 3.8, 3.9, 3.10.1, 3.11, 4.0
-
MOODLE_310_STABLE, MOODLE_311_STABLE, MOODLE_35_STABLE, MOODLE_36_STABLE, MOODLE_37_STABLE, MOODLE_38_STABLE, MOODLE_39_STABLE, MOODLE_400_STABLE
-
MOODLE_310_STABLE, MOODLE_39_STABLE
-
MDL-66979-master-7 -
Brief history
(note there are a bunch of intermediate layers involved, but this is a brief history to make it all understandable)
Behat, in order to control real browsers with Selenium has been using the called "JsonWire" protocol (invented by Selenium). That protocol provided a standard API to navigate, click type... control the browser, basically. And browsers had support for it (receiving the commands and performing the actions).
That "JsonWire" has evolved into a new, standard new API, called the "W3C protocol" that, while shares many of the concepts with its ancestor, it's not compatible with it and does things differently.
And the trend is to support the W3C protocol everywhere, with the old one being phased out / deprecated by all browsers.
Current status (by browser)
Right now, support for the old (JsonWire) and new (W3C) protocols are as follow:
- Firefox: Old protocol was supported until 2.53.1. All versions after that one do use, exclusively, the new W3C protocol.
- Chrome: It still supports both protocols, but recently switched the default to W3C, and clearly it's going to be the one remaining.
- Edge, Safari...: In theory, they only support the W3C protocol (in theory because we have not been able to test them ever, exactly because we are missing W3C support).
Current status (our testing framework)
Basically, and as commented above, we use Behat, that uses Mink, that uses some low level drivers and our own moodle behat extension. And that stack is missing support for the new W3C protocol.
We need to ensure that the whole stack is W3C compatible to get this done. And some of the pieces (mink, low level drivers...) aren't progressing as it should be desired. Without them, we hardly can try/perform the switch.
So right now we are using an old Firefox version (2.53.1) - that is lacking some good JS standards support and current Chrome with the protocol forced to the old "JsonWire" one.
And we are monitoring ongoing issues @ both mink and instaclick projects to see if there is any progress there:
- mink-selenium: https://github.com/minkphp/MinkSelenium2Driver/issues/293
- instaclick php-webdriver (that we have forked): https://github.com/instaclick/php-webdriver/issues/84
- facebook php-wedriver (we don't use this, but it's an alternative to the previous one): https://github.com/facebook/php-webdriver/issues/657
- ...
Goals
And that's basically, the problem. This issue is a container to add all the related information and updates we gather out there and plan which actions to perform once the goal (switch to W3C protocol) was possible.
- blocks
-
MDL-70637 Update composer.json with the new moodlehq/behat-extension (with php73 requirement)
- Closed
- has been marked as being related by
-
MDL-66378 Behat does not work with Chrome/ChromeDriver 76
- Closed
-
MDL-65817 Missing preg_quote() @ instaclick/php-webdriver leads to PHP 7.3 PCRE2 failures
- Closed
-
MDL-66945 Bump to newer selenium-firefox custom image arrived with surprises
- Closed
- is blocked by
-
MDL-70411 Messaging UI controls covered by MacOS scroll bars
- Closed
-
MDL-67657 Improve behat performance by jumping straight to editing on mode
- Closed
-
MDL-69122 Competency breakdown report title covers filters
- Closed
-
MDL-70151 Bulk assignment changes can randomly cause behat fails
- Closed
-
MDL-70167 Boolean attribute types should not be tested for a specific value
- Closed
-
MDL-69107 Form autocomplete not always detected by behat
- Closed
-
MDL-70148 Write new keyboard steps for Behat
- Closed
-
MDL-67668 Create form field type for inplace editables
- Closed
-
MDL-69072 Restart Mink session between Scenarios
- Closed
-
MDL-69134 Competency breakdown report random behat failures
- Closed
-
MDL-69135 Random behat failures on calendar event filtering
- Closed
-
MDL-69136 behat_navigation steps do not use correct step chaining
- Closed
-
MDL-69138 Behat visit should be passed through $this->execute
- Closed
-
MDL-69149 Invalid xpath in grade tests
- Closed
-
MDL-69160 mod_workshop behat submission allocation uses unchained step leading to random fails
- Closed
- Testing discovered
-
MDL-70728 Mixed uses of behat::get_timeout() stuff
- Open
-
MDL-67543 General Behat fixes
- Open
-
MDL-70734 Random behat failures with tool_httpsreplace scenarios (timeout)
- Closed
-
MDL-70740 Random switch_window firefox failures (W3C)
- Closed
- will be (partly) resolved by
-
MDL-65567 Random Behat tests failures related to tags in book, forum, glossary and wiki
- Open
-
MDL-67658 Improve behat resilience with pendingJS
- Reopened
-
MDL-67656 Fix and improve use of behat spin() function
- Closed
-
MDL-59817 Atto Accessibility Checker not catching accessibility issues in Firefox
- Closed
-
MDL-67657 Improve behat performance by jumping straight to editing on mode
- Closed
-
MDL-66437 Migrate to using Facebook Webdriver for behat
- Closed
- links to