createContentType(['type' => 'page']); $this->createNode(['title' => 'Page One']); $this->createNode(['title' => 'Page Two']); // Create a user privileged enough to use exposed filters and view content. $user = $this->drupalCreateUser([ 'administer site configuration', 'access content', 'access content overview', 'edit any page content', ]); $this->drupalLogin($user); } /** * Tests the dynamic Bulk Operations form. */ public function testBulkOperationsUi(): void { $this->drupalGet('admin/content'); $page = $this->getSession()->getPage(); $assert_session = $this->assertSession(); $no_items_selected = 'No items selected'; $one_item_selected = '1 item selected'; $two_items_selected = '2 items selected'; $vbo_available_message = 'Bulk actions are now available'; $this->assertNotNull($assert_session->waitForElementVisible('css', ".js-views-bulk-actions-status:contains(\"$no_items_selected\")")); $select_all = $page->find('css', '.select-all > input'); $page->checkField('node_bulk_form[0]'); $this->assertNotNull($assert_session->waitForElementVisible('css', ".js-views-bulk-actions-status:contains(\"$one_item_selected\")")); // When the bulk operations controls are first activated, this should be // relayed to screen readers. $this->assertNotNull($assert_session->waitForElement('css', "#drupal-live-announce:contains(\"$vbo_available_message\")")); $this->assertFalse($select_all->isChecked()); $page->checkField('node_bulk_form[1]'); $this->assertNotNull($assert_session->waitForElementVisible('css', ".js-views-bulk-actions-status:contains(\"$two_items_selected\")")); $this->assertNotNull($assert_session->waitForElement('css', "#drupal-live-announce:contains(\"$two_items_selected\")")); $assert_session->pageTextNotContains($vbo_available_message); $this->assertTrue($select_all->isChecked()); $page->uncheckField('node_bulk_form[0]'); $this->assertNotNull($assert_session->waitForElementVisible('css', ".js-views-bulk-actions-status:contains(\"$one_item_selected\")")); $this->assertNotNull($assert_session->waitForElement('css', "#drupal-live-announce:contains(\"$one_item_selected\")")); $assert_session->pageTextNotContains($vbo_available_message); $this->assertFalse($select_all->isChecked()); $page->uncheckField('node_bulk_form[1]'); $this->assertNotNull($assert_session->waitForElementVisible('css', ".js-views-bulk-actions-status:contains(\"$no_items_selected\")")); $this->assertNotNull($assert_session->waitForElement('css', "#drupal-live-announce:contains(\"$no_items_selected\")")); $assert_session->pageTextNotContains($vbo_available_message); $this->assertFalse($select_all->isChecked()); $select_all->check(); $this->assertNotNull($assert_session->waitForElementVisible('css', ".js-views-bulk-actions-status:contains(\"$two_items_selected\")")); $this->assertNotNull($assert_session->waitForElement('css', "#drupal-live-announce:contains(\"$vbo_available_message\")")); $this->assertNotNull($assert_session->waitForElement('css', "#drupal-live-announce:contains(\"$two_items_selected\")")); $select_all->uncheck(); $this->assertNotNull($assert_session->waitForElementVisible('css', ".js-views-bulk-actions-status:contains(\"$no_items_selected\")")); $this->assertNotNull($assert_session->waitForElement('css', "#drupal-live-announce:contains(\"$no_items_selected\")")); $assert_session->pageTextNotContains($vbo_available_message); } }