diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigEntityListBuilder.php b/core/lib/Drupal/Core/Config/Entity/ConfigEntityListBuilder.php
index e26a03c..0cea8d2 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigEntityListBuilder.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigEntityListBuilder.php
@@ -35,14 +35,14 @@ public function getDefaultOperations(EntityInterface $entity) {
     if ($this->entityType->hasKey('status')) {
       if (!$entity->status() && $entity->hasLinkTemplate('enable')) {
         $operations['enable'] = [
-          'title' => t('Enable'),
+          'title' => $this->t('Enable <span class="visually-hidden">"@label"</span>', ['@label' => $entity->label()]),
           'weight' => -10,
           'url' => $this->ensureDestination($entity->toUrl('enable')),
         ];
       }
       elseif ($entity->hasLinkTemplate('disable')) {
         $operations['disable'] = [
-          'title' => t('Disable'),
+          'title' => $this->t('Disable <span class="visually-hidden">"@label"</span>', ['@label' => $entity->label()]),
           'weight' => 40,
           'url' => $this->ensureDestination($entity->toUrl('disable')),
         ];
diff --git a/core/lib/Drupal/Core/Entity/EntityListBuilder.php b/core/lib/Drupal/Core/Entity/EntityListBuilder.php
index bc68e06..632a542 100644
--- a/core/lib/Drupal/Core/Entity/EntityListBuilder.php
+++ b/core/lib/Drupal/Core/Entity/EntityListBuilder.php
@@ -130,14 +130,14 @@ protected function getDefaultOperations(EntityInterface $entity) {
     $operations = [];
     if ($entity->access('update') && $entity->hasLinkTemplate('edit-form')) {
       $operations['edit'] = [
-        'title' => $this->t('Edit'),
+        'title' => $this->t('Edit <span class="visually-hidden">"@label"</span>', ['@label' => $entity->label()]),
         'weight' => 10,
         'url' => $this->ensureDestination($entity->toUrl('edit-form')),
       ];
     }
     if ($entity->access('delete') && $entity->hasLinkTemplate('delete-form')) {
       $operations['delete'] = [
-        'title' => $this->t('Delete'),
+        'title' => $this->t('Delete <span class="visually-hidden">"@label"</span>', ['@label' => $entity->label()]),
         'weight' => 100,
         'url' => $this->ensureDestination($entity->toUrl('delete-form')),
       ];
diff --git a/core/modules/action/src/ActionListBuilder.php b/core/modules/action/src/ActionListBuilder.php
index 8dbbb6b..96b079a 100644
--- a/core/modules/action/src/ActionListBuilder.php
+++ b/core/modules/action/src/ActionListBuilder.php
@@ -99,7 +99,10 @@ public function buildHeader() {
   public function getDefaultOperations(EntityInterface $entity) {
     $operations = $entity->isConfigurable() ? parent::getDefaultOperations($entity) : [];
     if (isset($operations['edit'])) {
-      $operations['edit']['title'] = t('Configure');
+      $operations['edit']['title'] = t('Configure <span class="visually-hidden">action "@label"</span>', ['@label' => $entity->label()]);
+    }
+    if (isset($operations['delete'])) {
+      $operations['delete']['title'] = t('Delete <span class="visually-hidden">action "@label"</span>', ['@label' => $entity->label()]);
     }
     return $operations;
   }
diff --git a/core/modules/block/src/BlockListBuilder.php b/core/modules/block/src/BlockListBuilder.php
index 01ae598..914d258 100644
--- a/core/modules/block/src/BlockListBuilder.php
+++ b/core/modules/block/src/BlockListBuilder.php
@@ -348,11 +348,11 @@ public function getDefaultOperations(EntityInterface $entity) {
     $operations = parent::getDefaultOperations($entity);
 
     if (isset($operations['edit'])) {
-      $operations['edit']['title'] = $this->t('Configure');
+      $operations['edit']['title'] = $this->t('Configure <span class="visually-hidden">block "@label"</span>', ['@label' => $entity->label()]);
     }
 
     if (isset($operations['delete'])) {
-      $operations['delete']['title'] = $this->t('Remove');
+      $operations['delete']['title'] = $this->t('Remove <span class="visually-hidden">block "@label"</span>', ['@label' => $entity->label()]);
     }
     return $operations;
   }
diff --git a/core/modules/config/tests/src/Functional/ConfigEntityListTest.php b/core/modules/config/tests/src/Functional/ConfigEntityListTest.php
index 91860e4..a8e0402 100644
--- a/core/modules/config/tests/src/Functional/ConfigEntityListTest.php
+++ b/core/modules/config/tests/src/Functional/ConfigEntityListTest.php
@@ -59,17 +59,17 @@ public function testList() {
     // Test getOperations() method.
     $expected_operations = [
       'edit' => [
-        'title' => t('Edit'),
+        'title' => t('Edit <span class="visually-hidden">"Default"</span>'),
         'weight' => 10,
         'url' => $entity->toUrl()->setOption('query', $this->getRedirectDestination()->getAsArray()),
       ],
       'disable' => [
-        'title' => t('Disable'),
+        'title' => t('Disable <span class="visually-hidden">"Default"</span>'),
         'weight' => 40,
         'url' => $entity->toUrl('disable')->setOption('query', $this->getRedirectDestination()->getAsArray()),
       ],
       'delete' => [
-        'title' => t('Delete'),
+        'title' => t('Delete <span class="visually-hidden">"Default"</span>'),
         'weight' => 100,
         'url' => $entity->toUrl('delete-form')->setOption('query', $this->getRedirectDestination()->getAsArray()),
       ],
@@ -134,12 +134,12 @@ public function testList() {
     // Test getOperations() method.
     $expected_operations = [
       'edit' => [
-        'title' => t('Edit'),
+        'title' => t('Edit <span class="visually-hidden">"Default"</span>'),
         'weight' => 10,
         'url' => $entity->toUrl()->setOption('query', $this->getRedirectDestination()->getAsArray()),
       ],
       'delete' => [
-        'title' => t('Delete'),
+        'title' => t('Delete <span class="visually-hidden">"Default"</span>'),
         'weight' => 100,
         'url' => $entity->toUrl('delete-form')->setOption('query', $this->getRedirectDestination()->getAsArray()),
       ],
diff --git a/core/modules/field_ui/src/FieldConfigListBuilder.php b/core/modules/field_ui/src/FieldConfigListBuilder.php
index d0335c7..f313c00 100644
--- a/core/modules/field_ui/src/FieldConfigListBuilder.php
+++ b/core/modules/field_ui/src/FieldConfigListBuilder.php
@@ -174,7 +174,7 @@ public function getDefaultOperations(EntityInterface $entity) {
 
     if ($entity->access('update') && $entity->hasLinkTemplate("{$entity->getTargetEntityTypeId()}-field-edit-form")) {
       $operations['edit'] = [
-        'title' => $this->t('Edit'),
+        'title' => $this->t('Edit <span class="visually-hidden">field "@label"</span>', ['@label' => $entity->label()]),
         'weight' => 10,
         'url' => $entity->toUrl("{$entity->getTargetEntityTypeId()}-field-edit-form"),
         'attributes' => [
@@ -184,7 +184,7 @@ public function getDefaultOperations(EntityInterface $entity) {
     }
     if ($entity->access('delete') && $entity->hasLinkTemplate("{$entity->getTargetEntityTypeId()}-field-delete-form")) {
       $operations['delete'] = [
-        'title' => $this->t('Delete'),
+        'title' => $this->t('Delete <span class="visually-hidden">field "@label"</span>', ['@label' => $entity->label()]),
         'weight' => 100,
         'url' => $entity->toUrl("{$entity->getTargetEntityTypeId()}-field-delete-form"),
         'attributes' => [
@@ -194,7 +194,7 @@ public function getDefaultOperations(EntityInterface $entity) {
     }
 
     $operations['storage-settings'] = [
-      'title' => $this->t('Storage settings'),
+      'title' => $this->t('Storage settings <span class="visually-hidden">for field "@label"</span>', ['@label' => $entity->label()]),
       'weight' => 20,
       'attributes' => ['title' => $this->t('Edit storage settings.')],
       'url' => $entity->toUrl("{$entity->getTargetEntityTypeId()}-storage-edit-form"),
diff --git a/core/modules/filter/src/FilterFormatListBuilder.php b/core/modules/filter/src/FilterFormatListBuilder.php
index d63ea6c..a8b7bc5 100644
--- a/core/modules/filter/src/FilterFormatListBuilder.php
+++ b/core/modules/filter/src/FilterFormatListBuilder.php
@@ -135,7 +135,7 @@ public function getDefaultOperations(EntityInterface $entity) {
     $operations = parent::getDefaultOperations($entity);
 
     if (isset($operations['edit'])) {
-      $operations['edit']['title'] = $this->t('Configure');
+      $operations['edit']['title'] = $this->t('Configure <span class="visually-hidden">filter format "@label"</span>', ['@label' => $entity->label()]);
     }
 
     // The fallback format may not be disabled.
diff --git a/core/modules/image/src/ImageStyleListBuilder.php b/core/modules/image/src/ImageStyleListBuilder.php
index 41d9220..41ccd6e 100644
--- a/core/modules/image/src/ImageStyleListBuilder.php
+++ b/core/modules/image/src/ImageStyleListBuilder.php
@@ -34,7 +34,7 @@ public function buildRow(EntityInterface $entity) {
    */
   public function getDefaultOperations(EntityInterface $entity) {
     $flush = [
-      'title' => t('Flush'),
+      'title' => t('Flush <span class="visually-hidden">image style "@label"</span>', ['@label' => $entity->label()]),
       'weight' => 200,
       'url' => $entity->toUrl('flush-form'),
     ];
diff --git a/core/modules/media/tests/src/Functional/MediaOverviewPageTest.php b/core/modules/media/tests/src/Functional/MediaOverviewPageTest.php
index 646d4d2..f7829c2 100644
--- a/core/modules/media/tests/src/Functional/MediaOverviewPageTest.php
+++ b/core/modules/media/tests/src/Functional/MediaOverviewPageTest.php
@@ -134,10 +134,10 @@ public function testMediaOverviewPage() {
 
     // Operations.
     $edit_link1 = $assert_session->elementExists('css', 'td.views-field-operations li.edit a', $row1);
-    $this->assertSame('Edit', $edit_link1->getText());
+    $this->assertSame('Edit "Media 1"', $edit_link1->getText());
     $assert_session->linkByHrefExists('/media/' . $media1->id() . '/edit');
     $delete_link1 = $assert_session->elementExists('css', 'td.views-field-operations li.delete a', $row1);
-    $this->assertSame('Delete', $delete_link1->getText());
+    $this->assertSame('Delete "Media 1"', $delete_link1->getText());
     $assert_session->linkByHrefExists('/media/' . $media1->id() . '/delete');
 
     // Make the user the owner of the unpublished media item and assert the
diff --git a/core/modules/menu_ui/src/MenuListBuilder.php b/core/modules/menu_ui/src/MenuListBuilder.php
index c6efe07..6ea607d 100644
--- a/core/modules/menu_ui/src/MenuListBuilder.php
+++ b/core/modules/menu_ui/src/MenuListBuilder.php
@@ -44,15 +44,15 @@ public function getDefaultOperations(EntityInterface $entity) {
     $operations = parent::getDefaultOperations($entity);
 
     if (isset($operations['edit'])) {
-      $operations['edit']['title'] = t('Edit menu');
+      $operations['edit']['title'] = $this->t('Edit menu <span class="visually-hidden">"@label"</span>', ['@label' => $entity->label()]);
       $operations['add'] = [
-        'title' => t('Add link'),
+        'title' => t('Add link <span class="visually-hidden">in "@label"</span>', ['@label' => $entity->label()]),
         'weight' => 20,
         'url' => $entity->toUrl('add-link-form'),
       ];
     }
     if (isset($operations['delete'])) {
-      $operations['delete']['title'] = t('Delete menu');
+      $operations['delete']['title'] = t('Delete menu <span class="visually-hidden">"@label"</span>', ['@label' => $entity->label()]);
     }
     return $operations;
   }
diff --git a/core/modules/responsive_image/src/ResponsiveImageStyleListBuilder.php b/core/modules/responsive_image/src/ResponsiveImageStyleListBuilder.php
index cb69bb6..1e4ae82 100644
--- a/core/modules/responsive_image/src/ResponsiveImageStyleListBuilder.php
+++ b/core/modules/responsive_image/src/ResponsiveImageStyleListBuilder.php
@@ -32,7 +32,7 @@ public function buildRow(EntityInterface $entity) {
   public function getDefaultOperations(EntityInterface $entity) {
     $operations = parent::getDefaultOperations($entity);
     $operations['duplicate'] = [
-      'title' => t('Duplicate'),
+      'title' => t('Duplicate <span class="visually-hidden">responsive image style "@label"</span>', ['@label' => $entity->label()]),
       'weight' => 15,
       'url' => $entity->toUrl('duplicate-form'),
     ];
diff --git a/core/modules/search/src/SearchPageListBuilder.php b/core/modules/search/src/SearchPageListBuilder.php
index 6ebeda8..5687ccc 100644
--- a/core/modules/search/src/SearchPageListBuilder.php
+++ b/core/modules/search/src/SearchPageListBuilder.php
@@ -326,7 +326,7 @@ public function getDefaultOperations(EntityInterface $entity) {
     }
     else {
       $operations['default'] = [
-        'title' => $this->t('Set as default'),
+        'title' => $this->t('Set <span class="visually-hidden">"@label"</span> as default', ['@label' => $entity->label()]),
         'url' => Url::fromRoute('entity.search_page.set_default', [
           'search_page' => $entity->id(),
         ]),
diff --git a/core/modules/search/tests/src/Functional/SearchConfigSettingsFormTest.php b/core/modules/search/tests/src/Functional/SearchConfigSettingsFormTest.php
index 23a10fa..da70647 100644
--- a/core/modules/search/tests/src/Functional/SearchConfigSettingsFormTest.php
+++ b/core/modules/search/tests/src/Functional/SearchConfigSettingsFormTest.php
@@ -315,7 +315,7 @@ public function testMultipleSearchPages() {
     $this->verifySearchPageOperations($second_id, TRUE, TRUE, TRUE, FALSE);
 
     // Change the default search page.
-    $this->clickLink(t('Set as default'));
+    $this->xpath('//a[normalize-space(text()[1])="Set" and normalize-space(text()[2])="as default"]')[0]->click();
     $this->assertRaw(t('The default search page is now %label. Be sure to check the ordering of your search pages.', ['%label' => $second['label']]));
     $this->verifySearchPageOperations($first_id, TRUE, TRUE, TRUE, FALSE);
     $this->verifySearchPageOperations($second_id, TRUE, FALSE, FALSE, FALSE);
diff --git a/core/modules/shortcut/src/ShortcutSetListBuilder.php b/core/modules/shortcut/src/ShortcutSetListBuilder.php
index e873aae..3dfdf26 100644
--- a/core/modules/shortcut/src/ShortcutSetListBuilder.php
+++ b/core/modules/shortcut/src/ShortcutSetListBuilder.php
@@ -27,11 +27,11 @@ public function getDefaultOperations(EntityInterface $entity) {
     $operations = parent::getDefaultOperations($entity);
 
     if (isset($operations['edit'])) {
-      $operations['edit']['title'] = t('Edit shortcut set');
+      $operations['edit']['title'] = t('Edit shortcut set <span class="visually-hidden">"@label"</span>', ['@label' => $entity->label()]);
     }
 
     $operations['list'] = [
-      'title' => t('List links'),
+      'title' => t('List links <span class="visually-hidden">in shortcut set "@label"</span>', ['@label' => $entity->label()]),
       'url' => $entity->toUrl('customize-form'),
     ];
     return $operations;
diff --git a/core/modules/taxonomy/src/VocabularyListBuilder.php b/core/modules/taxonomy/src/VocabularyListBuilder.php
index 36027a2..e42a0d6 100644
--- a/core/modules/taxonomy/src/VocabularyListBuilder.php
+++ b/core/modules/taxonomy/src/VocabularyListBuilder.php
@@ -107,12 +107,12 @@ public function getDefaultOperations(EntityInterface $entity) {
     $operations = parent::getDefaultOperations($entity);
 
     if (isset($operations['edit'])) {
-      $operations['edit']['title'] = t('Edit vocabulary');
+      $operations['edit']['title'] = t('Edit vocabulary <span class="visually-hidden">"@label"</span>', ['@label' => $entity->label()]);
     }
 
     if ($entity->access('access taxonomy overview')) {
       $operations['list'] = [
-        'title' => t('List terms'),
+        'title' => t('List terms <span class="visually-hidden">in vocabulary "@label"</span>', ['@label' => $entity->label()]),
         'weight' => 0,
         'url' => $entity->toUrl('overview-form'),
       ];
@@ -121,7 +121,7 @@ public function getDefaultOperations(EntityInterface $entity) {
     $taxonomy_term_access_control_handler = $this->entityTypeManager->getAccessControlHandler('taxonomy_term');
     if ($taxonomy_term_access_control_handler->createAccess($entity->id())) {
       $operations['add'] = [
-        'title' => t('Add terms'),
+        'title' => t('Add terms <span class="visually-hidden">to vocabulary "@label"</span>', ['@label' => $entity->label()]),
         'weight' => 10,
         'url' => Url::fromRoute('entity.taxonomy_term.add_form', ['taxonomy_vocabulary' => $entity->id()]),
       ];
diff --git a/core/modules/taxonomy/tests/src/Functional/TermTest.php b/core/modules/taxonomy/tests/src/Functional/TermTest.php
index d67c393..4138b7b 100644
--- a/core/modules/taxonomy/tests/src/Functional/TermTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/TermTest.php
@@ -342,7 +342,7 @@ public function testTermInterface() {
     // Submitting a term takes us to the add page; we need the List page.
     $this->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/overview');
 
-    $this->clickLink(t('Edit'));
+    $this->clickLink(t('Edit "@label"', ['@label' => $term->label()]));
 
     $this->assertRaw($edit['name[0][value]'], 'The randomly generated term name is present.');
     $this->assertText($edit['description[0][value]'], 'The randomly generated term description is present.');
diff --git a/core/modules/user/src/RoleListBuilder.php b/core/modules/user/src/RoleListBuilder.php
index d864a55..aff53c8 100644
--- a/core/modules/user/src/RoleListBuilder.php
+++ b/core/modules/user/src/RoleListBuilder.php
@@ -83,7 +83,7 @@ public function getDefaultOperations(EntityInterface $entity) {
 
     if ($entity->hasLinkTemplate('edit-permissions-form')) {
       $operations['permissions'] = [
-        'title' => t('Edit permissions'),
+        'title' => t('Edit permissions <span class="visually-hidden">for role "@label"</span>', ['@label' => $entity->label()]),
         'weight' => 20,
         'url' => $entity->toUrl('edit-permissions-form'),
       ];
diff --git a/core/modules/user/tests/src/Functional/UserAdminTest.php b/core/modules/user/tests/src/Functional/UserAdminTest.php
index e61ae80..e0c5752 100644
--- a/core/modules/user/tests/src/Functional/UserAdminTest.php
+++ b/core/modules/user/tests/src/Functional/UserAdminTest.php
@@ -62,7 +62,7 @@ public function testUserAdmin() {
     $this->assertText($admin_user->getAccountName(), 'Found Admin user on admin users page');
 
     // Test for existence of edit link in table.
-    $link = $user_a->toLink(t('Edit'), 'edit-form', ['query' => ['destination' => $user_a->toUrl('collection')->toString()]])->toString();
+    $link = $user_a->toLink(t('Edit <span class="visually-hidden">"@label"</span>', ['@label' => $user_a->label()]), 'edit-form', ['query' => ['destination' => $user_a->toUrl('collection')->toString()]])->toString();
     $this->assertRaw($link, 'Found user A edit link on admin users page');
 
     // Test exposed filter elements.
diff --git a/core/modules/views/tests/src/Functional/Handler/FieldEntityOperationsTest.php b/core/modules/views/tests/src/Functional/Handler/FieldEntityOperationsTest.php
index 2aa7cc1..d3a80ab 100644
--- a/core/modules/views/tests/src/Functional/Handler/FieldEntityOperationsTest.php
+++ b/core/modules/views/tests/src/Functional/Handler/FieldEntityOperationsTest.php
@@ -85,7 +85,8 @@ public function testEntityOperations() {
           // Update destination property of the URL as generating it in the
           // test would by default point to the frontpage.
           $operation['url']->setOption('query', ['destination' => $expected_destination]);
-          $result = $this->xpath('//ul[contains(@class, dropbutton)]/li/a[@href=:path and text()=:title]', [':path' => $operation['url']->toString(), ':title' => (string) $operation['title']]);
+          list($operation_label) = explode(' ', strip_tags((string) $operation['title']), 2);
+          $result = $this->xpath('//ul[contains(@class, dropbutton)]/li/a[@href=:path and contains(text(), :operation)]', [':path' => $operation['url']->toString(), ':operation' => $operation_label]);
           $this->assertCount(1, $result, t('Found entity @operation link with destination parameter.', ['@operation' => $operation['title']]));
           // Entities which were created in Hungarian should link to the Hungarian
           // edit form, others to the English one (which has no path prefix here).
diff --git a/core/modules/views/tests/src/Kernel/Plugin/RowRenderCacheTest.php b/core/modules/views/tests/src/Kernel/Plugin/RowRenderCacheTest.php
index a8fdcd3..38518ef 100644
--- a/core/modules/views/tests/src/Kernel/Plugin/RowRenderCacheTest.php
+++ b/core/modules/views/tests/src/Kernel/Plugin/RowRenderCacheTest.php
@@ -180,8 +180,8 @@ protected function doTestRenderedOutput(AccountInterface $account, $check_cache
       $output = $view->style_plugin->getField($index, 'delete_node');
       $this->assertEqual($output, $expected);
       $expected = $access ? '  <div class="dropbutton-wrapper"><div class="dropbutton-widget"><ul class="dropbutton">' .
-        '<li><a href="' . $node_url . '/edit?destination=/" hreflang="en">Edit</a></li>' .
-        '<li><a href="' . $node_url . '/delete?destination=/" hreflang="en">Delete</a></li>' .
+        '<li><a href="' . $node_url . '/edit?destination=/" hreflang="en">Edit <span class="visually-hidden">"' . $node->label() . '"</span></a></li>' .
+        '<li><a href="' . $node_url . '/delete?destination=/" hreflang="en">Delete <span class="visually-hidden">"' . $node->label() . '"</span></a></li>' .
         '</ul></div></div>' : '';
       $output = $view->style_plugin->getField($index, 'operations');
       $this->assertEqual($output, $expected);
diff --git a/core/modules/views_ui/src/ViewListBuilder.php b/core/modules/views_ui/src/ViewListBuilder.php
index 2f6302a..d5ae1ec 100644
--- a/core/modules/views_ui/src/ViewListBuilder.php
+++ b/core/modules/views_ui/src/ViewListBuilder.php
@@ -161,7 +161,7 @@ public function getDefaultOperations(EntityInterface $entity) {
 
     if ($entity->hasLinkTemplate('duplicate-form')) {
       $operations['duplicate'] = [
-        'title' => $this->t('Duplicate'),
+        'title' => $this->t('Duplicate <span class="visually-hidden">view "@label"</span>', ['@label' => $entity->label()]),
         'weight' => 15,
         'url' => $entity->toUrl('duplicate-form'),
       ];
diff --git a/core/modules/views_ui/tests/src/Functional/DefaultViewsTest.php b/core/modules/views_ui/tests/src/Functional/DefaultViewsTest.php
index 72d2e56..9191d59 100644
--- a/core/modules/views_ui/tests/src/Functional/DefaultViewsTest.php
+++ b/core/modules/views_ui/tests/src/Functional/DefaultViewsTest.php
@@ -87,9 +87,10 @@ public function testDefaultViews() {
     // $this->drupalGet('glossary');
     // $this->assertNoText($new_title);
 
-    // Duplicate the view and check that the normal schema of duplicated views is used.
+    // Duplicate the view and check that the normal schema of duplicated
+    // views is used.
     $this->drupalGet('admin/structure/views');
-    $this->clickViewsOperationLink(t('Duplicate'), '/glossary');
+    $this->clickViewsOperationLink(t('Duplicate <span class="visually-hidden">view "@label"</span>', ['@label' => 'Glossary']), '/glossary');
     $edit = [
       'id' => 'duplicate_of_glossary',
     ];
@@ -99,7 +100,8 @@ public function testDefaultViews() {
 
     // Duplicate a view and set a custom name.
     $this->drupalGet('admin/structure/views');
-    $this->clickViewsOperationLink(t('Duplicate'), '/glossary');
+    $this->clickViewsOperationLink(t('Duplicate <span class="visually-hidden">view "@label"</span>', ['@label' => 'Glossary']), '/glossary');
+    $this->assertUrl('admin/structure/views/view/glossary/duplicate');
     $random_name = strtolower($this->randomMachineName());
     $this->drupalPostForm(NULL, ['id' => $random_name], t('Duplicate'));
     $this->assertUrl("admin/structure/views/view/$random_name", [], 'The custom view name got saved.');
@@ -220,34 +222,31 @@ public function testPathDestination() {
    * various views listing pages, and they might have tokens in them. So we
    * need special code to find the correct one to click.
    *
-   * @param $label
+   * @param string $label
    *   Text between the anchor tags of the desired link.
-   * @param $unique_href_part
+   * @param string $unique_href_part
    *   A unique string that is expected to occur within the href of the desired
    *   link. For example, if the link URL is expected to look like
    *   "admin/structure/views/view/glossary/*", then "/glossary/" could be
    *   passed as the expected unique string.
    *
-   * @return
+   * @return object|bool
    *   The page content that results from clicking on the link, or FALSE on
    *   failure. Failure also results in a failed assertion.
    */
   public function clickViewsOperationLink($label, $unique_href_part) {
-    $links = $this->xpath('//a[normalize-space(text())=:label]', [':label' => (string) $label]);
-    foreach ($links as $link_index => $link) {
+    // Remove HTML with their content and trim the label just
+    // like normalize-space() and text() are doing in the xpath query.
+    $operation_label = trim(preg_replace('@<(\w+)\b.*?>.*?</\1>@si', '', (string) $label));
+    $links = $this->xpath('//a[normalize-space(text())=:label]', [':label' => $operation_label]);
+    foreach ($links as $link) {
       $position = strpos($link->getAttribute('href'), $unique_href_part);
       if ($position !== FALSE) {
-        $index = $link_index;
-        break;
+        return $link->click();
       }
     }
-    $this->assertTrue(isset($index), new FormattableMarkup('Link to "@label" containing @part found.', ['@label' => $label, '@part' => $unique_href_part]));
-    if (isset($index)) {
-      return $this->clickLink((string) $label, $index);
-    }
-    else {
-      return FALSE;
-    }
+    $this->fail(format_string('Link to "@label" containing @part found.', ['@label' => $label, '@part' => $unique_href_part]));
+    return FALSE;
   }
 
 }
diff --git a/core/modules/workspaces/src/WorkspaceListBuilder.php b/core/modules/workspaces/src/WorkspaceListBuilder.php
index 23aa652..12eeb8d 100644
--- a/core/modules/workspaces/src/WorkspaceListBuilder.php
+++ b/core/modules/workspaces/src/WorkspaceListBuilder.php
@@ -151,7 +151,7 @@ public function getDefaultOperations(EntityInterface $entity) {
 
     if (!$entity->hasParent()) {
       $operations['deploy'] = [
-        'title' => $this->t('Deploy content'),
+        'title' => $this->t('Deploy content <span class="visually-hidden">in workspace "@label"</span>', ['@label' => $entity->label()]),
         // The 'Deploy' operation should be the default one for the currently
         // active workspace.
         'weight' => ($active_workspace && $entity->id() == $active_workspace->id()) ? 0 : 20,
