Behat tests are failing due to not waiting for Javascript to finish
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mahara |
Fix Released
|
High
|
Robert Lyon | ||
17.10 |
Fix Released
|
High
|
Robert Lyon |
Bug Description
We're seeing an annoying number of Behat tests that are failing due to a race condition between Behat and the Javascript in the browser. Here's an example: http://
In that case, the test is failing in this part:
1. I press "Create folder"
2. And I follow "Folder1"
The failure happens because Behat can't find a link named "Follow1" when it tries to carry out that step. The way it *should* work, is basically like this:
1. Behat step: I press "Create folder"
2. Behat web driver locates and presses the "Create folder" button.
3. The button press triggers a Pieform javascript method, which fires off an Ajax request to submit the form for creating a new folder.
4. The Ajax request is handled by a PHP script, which creates the artefact and sends back a success response, including updated HTML for what the file area should look like now.
5. Pieform Javascript receives the response from the Ajax script, and swaps the new HTML in place of the old HTML. The new HTML contains the link to the new folder.
6. Behat step: I follow "Folder1"
7. Behat web driver locates and clicks the link with text "Folder1".
The race condition seems to happen because when you do the "I press" step (defined in \Behat\
The quick workaround for these is to add a "And I wait "1" seconds" step on affected tests. But it would be better to get a systemic fix to it. I think maybe the best thing to do, would be to change all the underlying "find" methods into spin functions, which, if they don't find the element, will wait up to 5 seconds to find it. Behat's inheritance structure for steps may make that tricky to do, though.
Changed in mahara: | |
assignee: | nobody → Son Nguyen (ngson2000) |
status: | Confirmed → In Progress |
Changed in mahara: | |
milestone: | 16.10.0 → 16.10.1 |
Changed in mahara: | |
milestone: | 16.10.1 → 17.04.0 |
Changed in mahara: | |
assignee: | Son Nguyen (ngson2000) → nobody |
Changed in mahara: | |
assignee: | nobody → Robert Lyon (robertl-9) |
no longer affects: | mahara/16.04 |
no longer affects: | mahara/16.10 |
no longer affects: | mahara/17.04 |
Patch for "master" branch: https:/ /reviews. mahara. org/6988