diff --git a/core/modules/contextual/tests/modules/contextual_test/contextual_test.info.yml b/core/modules/contextual/tests/modules/contextual_test/contextual_test.info.yml new file mode 100644 index 0000000000..2ec0eadeaa --- /dev/null +++ b/core/modules/contextual/tests/modules/contextual_test/contextual_test.info.yml @@ -0,0 +1,9 @@ +name: 'Contextual tests' +type: module +description: 'Provides conextual test links.' +package: Testing +version: VERSION +core: 8.x +dependencies: + - block + - contextual diff --git a/core/modules/contextual/tests/modules/contextual_test/contextual_test.links.contextual.yml b/core/modules/contextual/tests/modules/contextual_test/contextual_test.links.contextual.yml new file mode 100644 index 0000000000..f7b245508b --- /dev/null +++ b/core/modules/contextual/tests/modules/contextual_test/contextual_test.links.contextual.yml @@ -0,0 +1,4 @@ +contextual_test_link: + title: 'Another block link' + route_name: 'entity.block.edit_form' + group: 'block' diff --git a/core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinksTest.php b/core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinksTest.php index 12ce10db8b..0115556350 100644 --- a/core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinksTest.php +++ b/core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinksTest.php @@ -35,13 +35,13 @@ public function testContextualLinksVisibility() { ])); $this->drupalGet('user'); - $contextualLinks = $this->assertSession()->waitForElement('css', '.contextual button'); - $this->assertEmpty($contextualLinks); + $contextualButton = $this->assertSession()->waitForElement('css', '.contextual button'); + $this->assertEmpty($contextualButton); // Ensure visibility remains correct after cached paged load. $this->drupalGet('user'); - $contextualLinks = $this->assertSession()->waitForElement('css', '.contextual button'); - $this->assertEmpty($contextualLinks); + $contextualButton = $this->assertSession()->waitForElement('css', '.contextual button'); + $this->assertEmpty($contextualButton); // Grant permissions to use contextual links on blocks. $this->grantPermissions(Role::load(Role::AUTHENTICATED_ID), [ @@ -50,13 +50,33 @@ public function testContextualLinksVisibility() { ]); $this->drupalGet('user'); - $contextualLinks = $this->assertSession()->waitForElement('css', '.contextual button'); - $this->assertNotEmpty($contextualLinks); + $contextualButton = $this->assertSession()->waitForElement('css', '.contextual button'); + $this->assertNotEmpty($contextualButton); + $this->assertContextualLinkWithClass('block-configure'); // Ensure visibility remains correct after cached paged load. $this->drupalGet('user'); - $contextualLinks = $this->assertSession()->waitForElement('css', '.contextual button'); - $this->assertNotEmpty($contextualLinks); + $contextualButton = $this->assertSession()->waitForElement('css', '.contextual button'); + $this->assertNotEmpty($contextualButton); + $this->assertContextualLinkWithClass('block-configure'); + + $this->container->get('module_installer')->install(['contextual_test']); + $this->drupalGet('user'); + $contextualButton = $this->assertSession()->waitForElement('css', '.contextual button'); + $this->assertNotEmpty($contextualButton); + $this->assertContextualLinkWithClass('block-configure'); + $this->assertContextualLinkWithClass('contextual-test-link'); + } + + /** + * Assert that contextual link with with a class exists. + * + * @param string $class + * The class for the li element surrounding the link. + */ + protected function assertContextualLinkWithClass($class) { + $contextLink = $this->assertSession()->waitForElement('css', ".contextual-links li.$class a"); + $this->assertNotEmpty($contextLink); } }