There are instances where JavascriptTestBase tests need a waitForElement (or other waitFor method) after a normal page (re)load to prevent intermittent fails

See:
#2934997: Intermittent failure in MediaUiJavascriptTest
#2864177: Random failure in FormErrorHandlerCKEditorTest

We need to find out why and when this is needed to prevent further intermittent fails from being introduced.

Comments

Lendude created an issue. See original summary.

benjifisher’s picture

The steps in #2934997: Intermittent failure in MediaUiJavascriptTest that lead to the failure (before the patch on that test) are

    $this->drupalGet('admin/structure/media/add');
    // ...
    $page->pressButton('Save');
    $assert_session->pageTextContains('The media type ' . $name . ' has been added.');

So the problem is the normal page load triggered by pressButton(), not the page load from drupalGet().

Version: 8.5.x-dev » 8.6.x-dev

Drupal 8.5.0-alpha1 will be released the week of January 17, 2018, which means new developments and disruptive changes should now be targeted against the 8.6.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Anonymous’s picture

Trying to solve a similar error in the #2924201-21: Resolve random failure in LayoutBuilderTest so that it can be added to HEAD, I spent a tone of strength, but could not determine the source :(

Waiting elements on page - it did not help (#2934064-8: Random fail in JS-tests due to unstable pressButton() has fail with testing fix from #2934997: Intermittent failure in MediaUiJavascriptTest)

It seems to me that the problem is only in pressButton() method. Sometimes with it, the page simply does not reloading.
But 'submit' trigger occured. Because misc/form.js::onFormSubmit() works, and works correctly (I checked this through local runs).

So, perhaps something with phantomjs, or gastonjs, or mink-phantomjs-driver?

Anonymous’s picture

#4: my bad. Fix from #2934997: Intermittent failure in MediaUiJavascriptTest works perfect. I just checked the wrong part of it. See #11 (fix) / #12 (test-only). Thanks @benjifisher for hint.

So we have to wait after pressButton(), press(), clickLink(), click(). Because they (in rare cases) do not guarantee a reload of the page.

As I said, in these cases we can get a page on which all js-scripts worked, but the sending event itself did not have time to happen, and hence page not reload.

I still suspect third-part in this.

Anonymous’s picture

lendude’s picture

@vaplas I was secretly hoping that would be the case, nice research! the evidence in #2934064: Random fail in JS-tests due to unstable pressButton() that we can mark this as 'outdated' is pretty strong.

Version: 8.6.x-dev » 8.7.x-dev

Drupal 8.6.0-alpha1 will be released the week of July 16, 2018, which means new developments and disruptive changes should now be targeted against the 8.7.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.7.x-dev » 8.8.x-dev

Drupal 8.7.0-alpha1 will be released the week of March 11, 2019, which means new developments and disruptive changes should now be targeted against the 8.8.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

krzysztof domański’s picture

Random test failure that probably related to the problem with pressButton() in MediaStandardProfileTest.php:
#3045612: Random test failure in MediaStandardProfileTest::testMediaSources

Version: 8.8.x-dev » 8.9.x-dev

Drupal 8.8.0-alpha1 will be released the week of October 14th, 2019, which means new developments and disruptive changes should now be targeted against the 8.9.x-dev branch. (Any changes to 8.9.x will also be committed to 9.0.x in preparation for Drupal 9’s release, but some changes like significant feature additions will be deferred to 9.1.x.). For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.9.x-dev » 9.1.x-dev

Drupal 8.9.0-beta1 was released on March 20, 2020. 8.9.x is the final, long-term support (LTS) minor release of Drupal 8, which means new developments and disruptive changes should now be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 9.1.x-dev » 9.2.x-dev

Drupal 9.1.0-alpha1 will be released the week of October 19, 2020, which means new developments and disruptive changes should now be targeted for the 9.2.x-dev branch. For more information see the Drupal 9 minor version schedule and the Allowed changes during the Drupal 9 release cycle.

Version: 9.2.x-dev » 9.3.x-dev

Drupal 9.2.0-alpha1 will be released the week of May 3, 2021, which means new developments and disruptive changes should now be targeted for the 9.3.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.3.x-dev » 9.4.x-dev

Drupal 9.3.0-rc1 was released on November 26, 2021, which means new developments and disruptive changes should now be targeted for the 9.4.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.4.x-dev » 9.5.x-dev

Drupal 9.4.0-alpha1 was released on May 6, 2022, which means new developments and disruptive changes should now be targeted for the 9.5.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.5.x-dev » 10.1.x-dev

Drupal 9.5.0-beta2 and Drupal 10.0.0-beta2 were released on September 29, 2022, which means new developments and disruptive changes should now be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 10.1.x-dev » 11.x-dev

Drupal core is moving towards using a “main” branch. As an interim step, a new 11.x branch has been opened, as Drupal.org infrastructure cannot currently fully support a branch named main. New developments and disruptive changes should now be targeted for the 11.x branch, which currently accepts only minor-version allowed changes. For more information, see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

mstrelan’s picture

Version: 11.x-dev » main

Drupal core is now using the main branch as the primary development branch. New developments and disruptive changes should now be targeted to the main branch.

Read more in the announcement.

donquixote’s picture

The reason could be javascript validation scripts that need to complete before the page actually submits.
And overall we should not assume it to be instant.

I created a possible solution here, #3576262: [random test failure] MediaSourceFileTest::testMediaFileSource
https://git.drupalcode.org/project/drupal/-/merge_requests/15230