Chris@0: drupalLogin($this->createUser(['access contextual links'])); Chris@0: $this->placeBlock('system_branding_block', ['id' => 'branding']); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests the visibility of contextual links. Chris@0: */ Chris@0: public function testContextualLinksVisibility() { Chris@0: $this->drupalGet('user'); Chris@0: $contextualLinks = $this->assertSession()->waitForElement('css', '.contextual button'); Chris@0: $this->assertEmpty($contextualLinks); Chris@0: Chris@0: // Ensure visibility remains correct after cached paged load. Chris@0: $this->drupalGet('user'); Chris@0: $contextualLinks = $this->assertSession()->waitForElement('css', '.contextual button'); Chris@0: $this->assertEmpty($contextualLinks); Chris@0: Chris@0: // Grant permissions to use contextual links on blocks. Chris@0: $this->grantPermissions(Role::load(Role::AUTHENTICATED_ID), [ Chris@0: 'access contextual links', Chris@0: 'administer blocks', Chris@0: ]); Chris@0: Chris@0: $this->drupalGet('user'); Chris@0: $contextualLinks = $this->assertSession()->waitForElement('css', '.contextual button'); Chris@0: $this->assertNotEmpty($contextualLinks); Chris@0: Chris@0: // Ensure visibility remains correct after cached paged load. Chris@0: $this->drupalGet('user'); Chris@0: $contextualLinks = $this->assertSession()->waitForElement('css', '.contextual button'); Chris@0: $this->assertNotEmpty($contextualLinks); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Test clicking contextual links. Chris@0: */ Chris@0: public function testContextualLinksClick() { Chris@0: $this->container->get('module_installer')->install(['contextual_test']); Chris@0: // Test clicking contextual link without toolbar. Chris@0: $this->drupalGet('user'); Chris@0: $this->assertSession()->assertWaitOnAjaxRequest(); Chris@0: $this->clickContextualLink('#block-branding', 'Test Link'); Chris@0: $this->assertSession()->pageTextContains('Everything is contextual!'); Chris@0: Chris@0: // Test clicking contextual link with toolbar. Chris@0: $this->container->get('module_installer')->install(['toolbar']); Chris@0: $this->grantPermissions(Role::load(Role::AUTHENTICATED_ID), ['access toolbar']); Chris@0: $this->drupalGet('user'); Chris@0: $this->assertSession()->assertWaitOnAjaxRequest(); Chris@0: Chris@0: // Click "Edit" in toolbar to show contextual links. Chris@0: $this->getSession()->getPage()->find('css', '.contextual-toolbar-tab button')->press(); Chris@0: $this->clickContextualLink('#block-branding', 'Test Link', FALSE); Chris@0: $this->assertSession()->pageTextContains('Everything is contextual!'); Chris@0: } Chris@0: Chris@0: }