+ /**
+ * Tests if exposed filtering via AJAX works in a modal.
+ */
+ public function testExposedFiltersInModal() {
+ $this->drupalGet('views-test-modal/modal');
+
+ $assert = $this->assertSession();
+
+ $assert->elementExists('named', ['link', 'Administer content'])->click();
+ $dialog = $assert->waitForElementVisible('css', '.views-test-modal');
+
+ $session = $this->getSession();
+ // Ensure that the Content we're testing for is present.
+ $html = $session->getPage()->getHtml();
+ $this->assertContains('Page One', $html);
+ $this->assertContains('Page Two', $html);
+
+ // Search for "Page One".
+ $session->getPage()->fillField('title', 'Page One');
+ $assert->elementExists('css', '.ui-dialog-buttonpane')->pressButton('Filter');
+ $this->assertSession()->assertWaitOnAjaxRequest();
+
+ // Verify that only the "Page One" Node is present.
+ $html = $session->getPage()->getHtml();
+ $this->assertContains('Page One', $html);
+ $this->assertNotContains('Page Two', $html);
+
+ // Close and re-open the modal.
+ $assert->buttonExists('Close', $dialog)->press();
+ $assert->elementExists('named', ['link', 'Administer content'])->click();
+ $assert->waitForElementVisible('css', '.views-test-modal');
+
+ // Ensure that the Content we're testing for is present.
+ $html = $session->getPage()->getHtml();
+ $this->assertContains('Page One', $html);
+ $this->assertContains('Page Two', $html);
+
+ // Search for "Page One".
+ $session->getPage()->fillField('title', 'Page One');
+ $assert->elementExists('css', '.ui-dialog-buttonpane')->pressButton('Filter');
+ $this->assertSession()->assertWaitOnAjaxRequest();
+
+ // Verify that only the "Page One" Node is present.
+ $html = $session->getPage()->getHtml();
+ $this->assertContains('Page One', $html);
+ $this->assertNotContains('Page Two', $html);
+ }
+