Issue #2830485 by klausi, michielnugter: \Drupal\Tests\outside_in\FunctionalJavascript\OutsideInBlockFormTest fails randomly
parent
a55b8ef19e
commit
fdbc6eb8a2
|
@ -73,7 +73,7 @@ class BookJavascriptTest extends JavascriptTestBase {
|
||||||
$dragged->dragTo($target);
|
$dragged->dragTo($target);
|
||||||
|
|
||||||
// Give javascript some time to manipulate the DOM.
|
// Give javascript some time to manipulate the DOM.
|
||||||
$this->getSession()->wait(1000, 'jQuery(".tabledrag-changed-warning").is(":visible")');
|
$this->assertJsCondition('jQuery(".tabledrag-changed-warning").is(":visible")');
|
||||||
|
|
||||||
// Check that the 'unsaved changes' text appeared in the message area.
|
// Check that the 'unsaved changes' text appeared in the message area.
|
||||||
$this->assertSession()->pageTextContains('You have unsaved changes.');
|
$this->assertSession()->pageTextContains('You have unsaved changes.');
|
||||||
|
|
|
@ -111,7 +111,7 @@ class OutsideInBlockFormTest extends OutsideInJavascriptTestBase {
|
||||||
if (isset($block['new_page_text'])) {
|
if (isset($block['new_page_text'])) {
|
||||||
$page->pressButton($block['button_text']);
|
$page->pressButton($block['button_text']);
|
||||||
// Make sure the changes are present.
|
// Make sure the changes are present.
|
||||||
$this->getSession()->wait(500);
|
$this->assertSession()->assertWaitOnAjaxRequest();
|
||||||
$web_assert->pageTextContains($block['new_page_text']);
|
$web_assert->pageTextContains($block['new_page_text']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,7 +141,7 @@ class OutsideInBlockFormTest extends OutsideInJavascriptTestBase {
|
||||||
protected function toggleEditingMode() {
|
protected function toggleEditingMode() {
|
||||||
$this->waitForElement('div[data-contextual-id="block:block=powered:langcode=en|outside_in::langcode=en"] .contextual-links a');
|
$this->waitForElement('div[data-contextual-id="block:block=powered:langcode=en|outside_in::langcode=en"] .contextual-links a');
|
||||||
|
|
||||||
$this->waitForElement('#toolbar-bar', 3000);
|
$this->waitForElement('#toolbar-bar');
|
||||||
|
|
||||||
$edit_button = $this->getSession()->getPage()->find('css', '#toolbar-bar div.contextual-toolbar-tab button');
|
$edit_button = $this->getSession()->getPage()->find('css', '#toolbar-bar div.contextual-toolbar-tab button');
|
||||||
|
|
||||||
|
|
|
@ -45,9 +45,9 @@ abstract class OutsideInJavascriptTestBase extends JavascriptTestBase {
|
||||||
* @param string $selector
|
* @param string $selector
|
||||||
* CSS selector.
|
* CSS selector.
|
||||||
* @param int $timeout
|
* @param int $timeout
|
||||||
* (optional) Timeout in milliseconds, defaults to 1000.
|
* (optional) Timeout in milliseconds, defaults to 10000.
|
||||||
*/
|
*/
|
||||||
protected function waitForElement($selector, $timeout = 1000) {
|
protected function waitForElement($selector, $timeout = 10000) {
|
||||||
$condition = "(jQuery('$selector').length > 0)";
|
$condition = "(jQuery('$selector').length > 0)";
|
||||||
$this->assertJsCondition($condition, $timeout);
|
$this->assertJsCondition($condition, $timeout);
|
||||||
}
|
}
|
||||||
|
@ -69,9 +69,9 @@ abstract class OutsideInJavascriptTestBase extends JavascriptTestBase {
|
||||||
* @param string $selector
|
* @param string $selector
|
||||||
* CSS selector.
|
* CSS selector.
|
||||||
* @param int $timeout
|
* @param int $timeout
|
||||||
* (optional) Timeout in milliseconds, defaults to 1000.
|
* (optional) Timeout in milliseconds, defaults to 10000.
|
||||||
*/
|
*/
|
||||||
protected function waitForNoElement($selector, $timeout = 1000) {
|
protected function waitForNoElement($selector, $timeout = 10000) {
|
||||||
$condition = "(jQuery('$selector').length == 0)";
|
$condition = "(jQuery('$selector').length == 0)";
|
||||||
$this->assertJsCondition($condition, $timeout);
|
$this->assertJsCondition($condition, $timeout);
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,12 +39,12 @@ class LibraryCachingTest extends JavascriptTestBase {
|
||||||
$add_link = $page->findById('views-add-field');
|
$add_link = $page->findById('views-add-field');
|
||||||
$this->assertTrue($add_link->isVisible(), 'Add fields button found.');
|
$this->assertTrue($add_link->isVisible(), 'Add fields button found.');
|
||||||
$add_link->click();
|
$add_link->click();
|
||||||
$this->getSession()->wait(5000, "jQuery('.ui-dialog-titlebar').length > 0");
|
$this->assertJsCondition("jQuery('.ui-dialog-titlebar').length > 0");
|
||||||
// Close the dialog and open it again. No no libraries will be loaded, but a
|
// Close the dialog and open it again. No no libraries will be loaded, but a
|
||||||
// cache entry will be made for not loading any libraries.
|
// cache entry will be made for not loading any libraries.
|
||||||
$page->pressButton('Close');
|
$page->pressButton('Close');
|
||||||
$add_link->click();
|
$add_link->click();
|
||||||
$this->getSession()->wait(5000, "jQuery('.ui-dialog-titlebar').length > 0");
|
$this->assertJsCondition("jQuery('.ui-dialog-titlebar').length > 0");
|
||||||
$page->pressButton('Close');
|
$page->pressButton('Close');
|
||||||
|
|
||||||
// Reload the page.
|
// Reload the page.
|
||||||
|
@ -55,14 +55,14 @@ class LibraryCachingTest extends JavascriptTestBase {
|
||||||
$preview = $page->findById('preview-submit');
|
$preview = $page->findById('preview-submit');
|
||||||
// The first click will load all the libraries.
|
// The first click will load all the libraries.
|
||||||
$preview->click();
|
$preview->click();
|
||||||
$this->getSession()->wait(5000, "jQuery('.ajax-progress').length === 0");
|
$this->assertJsCondition("jQuery('.ajax-progress').length === 0");
|
||||||
// The second click will not load any new libraries.
|
// The second click will not load any new libraries.
|
||||||
$preview->click();
|
$preview->click();
|
||||||
$this->getSession()->wait(5000, "jQuery('.ajax-progress').length === 0");
|
$this->assertJsCondition("jQuery('.ajax-progress').length === 0");
|
||||||
// Check to see if the dialogs still open.
|
// Check to see if the dialogs still open.
|
||||||
$add_link = $page->findById('views-add-field');
|
$add_link = $page->findById('views-add-field');
|
||||||
$add_link->click();
|
$add_link->click();
|
||||||
$this->getSession()->wait(5000, "jQuery('.ui-dialog-titlebar').length > 0");
|
$this->assertJsCondition("jQuery('.ui-dialog-titlebar').length > 0");
|
||||||
$page->pressButton('Close');
|
$page->pressButton('Close');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -86,7 +86,7 @@ class MachineNameTest extends JavascriptTestBase {
|
||||||
$title_1->setValue($test_info['input']);
|
$title_1->setValue($test_info['input']);
|
||||||
|
|
||||||
// Wait the set timeout for fetching the machine name.
|
// Wait the set timeout for fetching the machine name.
|
||||||
$this->getSession()->wait(1000, 'jQuery("#edit-machine-name-1-label-machine-name-suffix .machine-name-value").html() == "' . $test_info['expected'] . '"');
|
$this->assertJsCondition('jQuery("#edit-machine-name-1-label-machine-name-suffix .machine-name-value").html() == "' . $test_info['expected'] . '"');
|
||||||
|
|
||||||
// Validate the generated machine name.
|
// Validate the generated machine name.
|
||||||
$this->assertEquals($test_info['expected'], $machine_name_1_value->getHtml(), $test_info['message']);
|
$this->assertEquals($test_info['expected'], $machine_name_1_value->getHtml(), $test_info['message']);
|
||||||
|
|
|
@ -99,7 +99,7 @@ abstract class JavascriptTestBase extends BrowserTestBase {
|
||||||
* @param string $condition
|
* @param string $condition
|
||||||
* JS condition to wait until it becomes TRUE.
|
* JS condition to wait until it becomes TRUE.
|
||||||
* @param int $timeout
|
* @param int $timeout
|
||||||
* (Optional) Timeout in milliseconds, defaults to 1000.
|
* (Optional) Timeout in milliseconds, defaults to 10000.
|
||||||
* @param string $message
|
* @param string $message
|
||||||
* (optional) A message to display with the assertion. If left blank, a
|
* (optional) A message to display with the assertion. If left blank, a
|
||||||
* default message will be displayed.
|
* default message will be displayed.
|
||||||
|
@ -108,7 +108,7 @@ abstract class JavascriptTestBase extends BrowserTestBase {
|
||||||
*
|
*
|
||||||
* @see \Behat\Mink\Driver\DriverInterface::evaluateScript()
|
* @see \Behat\Mink\Driver\DriverInterface::evaluateScript()
|
||||||
*/
|
*/
|
||||||
protected function assertJsCondition($condition, $timeout = 1000, $message = '') {
|
protected function assertJsCondition($condition, $timeout = 10000, $message = '') {
|
||||||
$message = $message ?: "Javascript condition met:\n" . $condition;
|
$message = $message ?: "Javascript condition met:\n" . $condition;
|
||||||
$result = $this->getSession()->getDriver()->wait($timeout, $condition);
|
$result = $this->getSession()->getDriver()->wait($timeout, $condition);
|
||||||
$this->assertTrue($result, $message);
|
$this->assertTrue($result, $message);
|
||||||
|
|
Loading…
Reference in New Issue