** Changed in: mahara/16.10
    Milestone: 16.10.3 => 16.10.4

-- 
You received this bug notification because you are a member of Mahara
Contributors, which is subscribed to Mahara.
Matching subscriptions: Subscription for all Mahara Contributors -- please ask 
on #mahara-dev or mahara.org forum before editing or unsubscribing it!
https://bugs.launchpad.net/bugs/1575512

Title:
  Behat tests are failing due to not waiting for Javascript to finish

Status in Mahara:
  Confirmed
Status in Mahara 16.10 series:
  Confirmed
Status in Mahara 17.04 series:
  Confirmed
Status in Mahara 17.10 series:
  In Progress

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://test.mahara.org/job/mahara-
  gerrit/5558/console

  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\MinkExtension\Context\MinkContext) waits for
  the conclusion of any HTTP requests caused by the button press, but it
  doesn't wait for the Pieform callback to finish.

  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.

To manage notifications about this bug go to:
https://bugs.launchpad.net/mahara/+bug/1575512/+subscriptions

_______________________________________________
Mailing list: https://launchpad.net/~mahara-contributors
Post to     : mahara-contributors@lists.launchpad.net
Unsubscribe : https://launchpad.net/~mahara-contributors
More help   : https://help.launchpad.net/ListHelp

Reply via email to