diff -u b/core/modules/system/tests/src/FunctionalJavascript/ModuleFilterTest.php b/core/modules/system/tests/src/FunctionalJavascript/ModuleFilterTest.php --- b/core/modules/system/tests/src/FunctionalJavascript/ModuleFilterTest.php +++ b/core/modules/system/tests/src/FunctionalJavascript/ModuleFilterTest.php @@ -30,9 +30,11 @@ // Find the module filter field. $this->drupalGet('admin/modules'); - $session = $this->assertSession(); - $session->statusCodeEquals(200); - $page = $this->getSession()->getPage(); + $assertSession = $this->assertSession(); + $assertSession->statusCodeEquals(200); + $session = $this->getSession(); + $page = $session->getPage(); + $filter = $page->findField('edit-text'); // Get all module rows, for assertions later. @@ -40,28 +42,31 @@ // Test module filter reduces the number of visible rows. $filter->setValue('test'); - $this->getSession()->wait(1000); + $session->wait(1000, 'jQuery("#module-node:visible").length == 0'); $visible_rows = $this->filterVisibleElements($module_rows); self::assertNotEquals(count($module_rows), count($visible_rows)); // Test Drupal.announce() message when multiple matches are expected. $expected_message = count($visible_rows) . ' modules are available in the modified list.'; - $this->assertSession()->elementTextContains('css', '#drupal-live-announce', $expected_message); + $assertSession->elementTextContains('css', '#drupal-live-announce', $expected_message); // Test Drupal.announce() message only one match is expected. // Using a very specific module name, we expect only one row. $filter->setValue('System dependency test'); - $this->getSession()->wait(1000); + $session->wait(1000, 'jQuery("#module-node:visible").length == 0'); $visible_rows = $this->filterVisibleElements($module_rows); + self::assertEquals(1, count($visible_rows)); $expected_message = '1 module is available in the modified list.'; - $this->assertSession()->elementTextContains('css', '#drupal-live-announce', $expected_message); + $assertSession->elementTextContains('css', '#drupal-live-announce', $expected_message); // Test Drupal.announce() message when no matches are expected. $filter->setValue('Pan-Galactic Gargle Blaster'); - $this->getSession()->wait(1000); + $session->wait(1000, 'jQuery("#module-node:visible").length == 0'); $visible_rows = $this->filterVisibleElements($module_rows); + self::assertEquals(0, count($visible_rows)); + $expected_message = '0 modules are available in the modified list.'; - $this->assertSession()->elementTextContains('css', '#drupal-live-announce', $expected_message); + $assertSession->elementTextContains('css', '#drupal-live-announce', $expected_message); } /**