diff --git a/core/modules/aggregator/config/optional/views.view.aggregator_sources.yml b/core/modules/aggregator/config/optional/views.view.aggregator_sources.yml
index bacfa46..b9ca2f7 100644
--- a/core/modules/aggregator/config/optional/views.view.aggregator_sources.yml
+++ b/core/modules/aggregator/config/optional/views.view.aggregator_sources.yml
@@ -407,9 +407,11 @@ display:
     display_options:
       path: aggregator/sources
       menu:
-        type: normal
+        type:
+          normal: normal
         title: Sources
         description: ''
+        parent: ''
         weight: 0
         context: '0'
         menu_name: tools
diff --git a/core/modules/block_content/config/optional/views.view.block_content.yml b/core/modules/block_content/config/optional/views.view.block_content.yml
index 7c2bba8..a04c363 100644
--- a/core/modules/block_content/config/optional/views.view.block_content.yml
+++ b/core/modules/block_content/config/optional/views.view.block_content.yml
@@ -474,7 +474,8 @@ display:
       display_extenders: {  }
       path: admin/structure/block/block-content
       menu:
-        type: tab
+        type:
+          tab: tab
         title: 'Custom block library'
         description: ''
         parent: block.admin_display
diff --git a/core/modules/file/config/optional/views.view.files.yml b/core/modules/file/config/optional/views.view.files.yml
index fc1b540..11aecce 100644
--- a/core/modules/file/config/optional/views.view.files.yml
+++ b/core/modules/file/config/optional/views.view.files.yml
@@ -725,12 +725,14 @@ display:
     display_options:
       path: admin/content/files
       menu:
-        type: tab
+        type:
+          tab: tab
         title: Files
         description: ''
-        menu_name: admin
+        parent: ''
         weight: 0
-        context: ''
+        context: '0'
+        menu_name: admin
       display_description: ''
       defaults:
         pager: true
diff --git a/core/modules/node/config/optional/views.view.content.yml b/core/modules/node/config/optional/views.view.content.yml
index 7849a0c..36954ff 100644
--- a/core/modules/node/config/optional/views.view.content.yml
+++ b/core/modules/node/config/optional/views.view.content.yml
@@ -568,17 +568,18 @@ display:
     display_options:
       path: admin/content/node
       menu:
-        type: 'default tab'
+        type:
+          'default tab': 'default tab'
         title: Content
         description: ''
-        menu_name: admin
+        parent: ''
         weight: -10
-        context: ''
+        context: '0'
+        menu_name: admin
       tab_options:
-        type: normal
+        type: tab
         title: Content
         description: 'Find and manage content'
-        menu_name: admin
         weight: -10
       display_extenders: {  }
     display_plugin: page
diff --git a/core/modules/node/config/optional/views.view.glossary.yml b/core/modules/node/config/optional/views.view.glossary.yml
index 1738e43..ae64951 100644
--- a/core/modules/node/config/optional/views.view.glossary.yml
+++ b/core/modules/node/config/optional/views.view.glossary.yml
@@ -412,8 +412,11 @@ display:
         options: {  }
       path: glossary
       menu:
-        type: normal
+        type:
+          normal: normal
         title: Glossary
+        description: ''
+        parent: ''
         weight: 0
+        context: '0'
         menu_name: main
-        parent: ''
diff --git a/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_contextual_links.yml b/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_contextual_links.yml
index b25fafc..11ce105 100644
--- a/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_contextual_links.yml
+++ b/core/modules/node/tests/modules/node_test_views/test_views/views.view.test_contextual_links.yml
@@ -87,12 +87,14 @@ display:
           entity_type: node
           entity_field: nid
       menu:
-        type: tab
+        type:
+          tab: tab
         title: 'Test contextual link'
         description: ''
-        menu_name: tools
+        parent: ''
         weight: 0
         context: '1'
+        menu_name: tools
     display_plugin: page
     display_title: Page
     id: page_1
diff --git a/core/modules/user/config/optional/views.view.user_admin_people.yml b/core/modules/user/config/optional/views.view.user_admin_people.yml
index 004471c..52fcf5d 100644
--- a/core/modules/user/config/optional/views.view.user_admin_people.yml
+++ b/core/modules/user/config/optional/views.view.user_admin_people.yml
@@ -835,17 +835,18 @@ display:
       path: admin/people/list
       show_admin_links: false
       menu:
-        type: 'default tab'
+        type:
+          'default tab': 'default tab'
         title: List
         description: 'Find and manage people interacting with your site.'
-        menu_name: admin
+        parent: ''
         weight: -10
-        context: ''
+        context: '0'
+        menu_name: admin
       tab_options:
         type: normal
         title: People
         description: 'Manage user accounts, roles, and permissions.'
-        menu_name: admin
         weight: 0
       defaults:
         show_admin_links: false
diff --git a/core/modules/views/config/schema/views.display.schema.yml b/core/modules/views/config/schema/views.display.schema.yml
index d31678f..bcc1c39 100644
--- a/core/modules/views/config/schema/views.display.schema.yml
+++ b/core/modules/views/config/schema/views.display.schema.yml
@@ -23,8 +23,11 @@ views.display.page:
       label: 'Menu'
       mapping:
         type:
-          type: string
+          type: sequence
           label: 'Type'
+          sequence:
+            - type: string
+              label: 'Menu type'
         title:
           type: text
           label: 'Title'
diff --git a/core/modules/views/src/Plugin/Derivative/ViewsLocalTask.php b/core/modules/views/src/Plugin/Derivative/ViewsLocalTask.php
index 434a503..18bedad 100644
--- a/core/modules/views/src/Plugin/Derivative/ViewsLocalTask.php
+++ b/core/modules/views/src/Plugin/Derivative/ViewsLocalTask.php
@@ -69,25 +69,27 @@ public function getDerivativeDefinitions($base_plugin_definition) {
 
       $executable->setDisplay($display_id);
       $menu = $executable->display_handler->getOption('menu');
-      if (in_array($menu['type'], array('tab', 'default tab'))) {
-        $plugin_id = 'view.' . $executable->storage->id() . '.' . $display_id;
-        $route_name = $view_route_names[$executable->storage->id() . '.' . $display_id];
-
-        // Don't add a local task for views which override existing routes.
-        // @todo Alternative it could just change the existing entry.
-        if ($route_name != $plugin_id) {
-          continue;
-        }
+      foreach ($menu['type'] as $type) {
+        if (in_array($type, array('tab', 'default tab'))) {
+          $plugin_id = 'view.' . $executable->storage->id() . '.' . $display_id;
+          $route_name = $view_route_names[$executable->storage->id() . '.' . $display_id];
+
+          // Don't add a local task for views which override existing routes.
+          // @todo Alternative it could just change the existing entry.
+          if ($route_name != $plugin_id) {
+            continue;
+          }
 
-        $this->derivatives[$plugin_id] = array(
-          'route_name' => $route_name,
-          'weight' => $menu['weight'],
-          'title' => $menu['title'],
-        ) + $base_plugin_definition;
+          $this->derivatives[$plugin_id] = array(
+            'route_name' => $route_name,
+            'weight' => $menu['weight'],
+            'title' => $menu['title'],
+          ) + $base_plugin_definition;
 
-        // Default local tasks have themselves as root tab.
-        if ($menu['type'] == 'default tab') {
-          $this->derivatives[$plugin_id]['base_route'] = $route_name;
+          // Default local tasks have themselves as root tab.
+          if ($type == 'default tab') {
+            $this->derivatives[$plugin_id]['base_route'] = $route_name;
+          }
         }
       }
     }
@@ -108,7 +110,7 @@ public function alterLocalTasks(&$local_tasks) {
       $menu = $executable->display_handler->getOption('menu');
 
       // We already have set the base_route for default tabs.
-      if (in_array($menu['type'], array('tab'))) {
+      if (in_array('tab', array_filter($menu['type']))) {
         $plugin_id = 'view.' . $executable->storage->id() . '.' . $display_id;
         $view_route_name = $view_route_names[$executable->storage->id() . '.' . $display_id];
 
diff --git a/core/modules/views/src/Plugin/views/display/Page.php b/core/modules/views/src/Plugin/views/display/Page.php
index 751b2fe..ef457c5 100644
--- a/core/modules/views/src/Plugin/views/display/Page.php
+++ b/core/modules/views/src/Plugin/views/display/Page.php
@@ -91,7 +91,8 @@ protected function defineOptions() {
 
     $options['menu'] = array(
       'contains' => array(
-        'type' => array('default' => 'none'),
+        'type' => array('default' => array()),
+        // Do not translate menu and title as menu system will.
         'title' => array('default' => ''),
         'description' => array('default' => ''),
         'weight' => array('default' => 0),
@@ -143,23 +144,27 @@ public function optionsSummary(&$categories, &$options) {
     parent::optionsSummary($categories, $options);
 
     $menu = $this->getOption('menu');
-    if (!is_array($menu)) {
-      $menu = array('type' => 'none');
+    if (!is_array($menu) || empty($menu['type'])) {
+      $menu = array('type' => array('none'));
     }
-    switch ($menu['type']) {
-      case 'none':
-      default:
-        $menu_str = $this->t('No menu');
-        break;
-      case 'normal':
-        $menu_str = $this->t('Normal: @title', array('@title' => $menu['title']));
-        break;
-      case 'tab':
-      case 'default tab':
-        $menu_str = $this->t('Tab: @title', array('@title' => $menu['title']));
-        break;
+    $menus = array();
+    foreach (array_filter($menu['type']) as $type) {
+      switch ($type) {
+        case 'none':
+          $menus[] = $this->t('No menu');
+          break;
+        case 'normal':
+          $menus[] = $this->t('Normal: @title', array('@title' => $menu['title']));
+          break;
+        case 'tab':
+        case 'default tab':
+          $menus[] = $this->t('Tab: @title', array('@title' => $menu['title']));
+          break;
+      }
     }
 
+    $menu_str = implode(' | ', $menus);
+
     $options['menu'] = array(
       'category' => 'page',
       'title' => $this->t('Menu'),
@@ -168,7 +173,7 @@ public function optionsSummary(&$categories, &$options) {
 
     // This adds a 'Settings' link to the style_options setting if the style
     // has options.
-    if ($menu['type'] == 'default tab') {
+    if (!empty($menu['type']['default tab'])) {
       $options['menu']['setting'] = $this->t('Parent menu item');
       $options['menu']['links']['tab_options'] = $this->t('Change settings for the parent menu');
     }
@@ -189,16 +194,21 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
           '#tree' => TRUE,
         );
         $menu = $this->getOption('menu');
-        if (empty($menu)) {
-          $menu = array('type' => 'none', 'title' => '', 'weight' => 0);
-        }
+        $menu += array(
+          'type' => array('none'),
+          'title' => '',
+          'description' => '',
+          'weight' => 0,
+          'menu_name' => '',
+          'parent' => '',
+        );
         $form['menu']['type'] = array(
           '#prefix' => '<div class="views-left-30">',
           '#suffix' => '</div>',
-          '#title' => $this->t('Type'),
-          '#type' => 'radios',
+          '#title' => $this->t('Menu Link Types'),
+          '#type' => 'checkboxes',
+          '#multiple' => TRUE,
           '#options' => array(
-            'none' => $this->t('No menu entry'),
             'normal' => $this->t('Normal menu entry'),
             'tab' => $this->t('Menu tab'),
             'default tab' => $this->t('Default menu tab')
@@ -214,13 +224,13 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
           '#states' => array(
             'visible' => array(
               array(
-                ':input[name="menu[type]"]' => array('value' => 'normal'),
+                ':input[name="menu[type][normal]"]' => array('checked' => TRUE),
               ),
               array(
-                ':input[name="menu[type]"]' => array('value' => 'tab'),
+                ':input[name="menu[type][tab]"]' => array('checked' => TRUE),
               ),
               array(
-                ':input[name="menu[type]"]' => array('value' => 'default tab'),
+                ':input[name="menu[type][default tab]"]' => array('checked' => TRUE),
               ),
             ),
           ),
@@ -233,13 +243,13 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
           '#states' => array(
             'visible' => array(
               array(
-                ':input[name="menu[type]"]' => array('value' => 'normal'),
+                ':input[name="menu[type][normal]"]' => array('checked' => TRUE),
               ),
               array(
-                ':input[name="menu[type]"]' => array('value' => 'tab'),
+                ':input[name="menu[type][tab]"]' => array('checked' => TRUE),
               ),
               array(
-                ':input[name="menu[type]"]' => array('value' => 'default tab'),
+                ':input[name="menu[type][default tab]"]' => array('checked' => TRUE),
               ),
             ),
           ),
@@ -257,10 +267,10 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
             '#states' => array(
               'visible' => array(
                 array(
-                  ':input[name="menu[type]"]' => array('value' => 'normal'),
+                  ':input[name="menu[type][normal]"]' => array('checked' => TRUE),
                 ),
                 array(
-                  ':input[name="menu[type]"]' => array('value' => 'tab'),
+                  ':input[name="menu[type][tab]"]' => array('checked' => TRUE),
                 ),
               ),
             ),
@@ -283,13 +293,13 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
           '#states' => array(
             'visible' => array(
               array(
-                ':input[name="menu[type]"]' => array('value' => 'normal'),
+                ':input[name="menu[type][normal]"]' => array('checked' => TRUE),
               ),
               array(
-                ':input[name="menu[type]"]' => array('value' => 'tab'),
+                ':input[name="menu[type][tab]"]' => array('checked' => TRUE),
               ),
               array(
-                ':input[name="menu[type]"]' => array('value' => 'default tab'),
+                ':input[name="menu[type][default tab]"]' => array('checked' => TRUE),
               ),
             ),
           ),
@@ -302,7 +312,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
           '#description' => $this->t('Displays the link in contextual links'),
           '#states' => array(
             'visible' => array(
-              ':input[name="menu[type]"]' => array('value' => 'tab'),
+              ':input[name="menu[type][tab]"]' => array('checked' => TRUE),
             ),
           ),
         );
@@ -389,12 +399,14 @@ public function validateOptionsForm(&$form, FormStateInterface $form_state) {
 
     if ($form_state->get('section') == 'menu') {
       $path = $this->getOption('path');
-      $menu_type = $form_state->getValue(array('menu', 'type'));
-      if ($menu_type == 'normal' && strpos($path, '%') !== FALSE) {
+      $menu_types = array_filter($form_state->getValue(array('menu', 'type')));
+      $form_state->setValueForElement($form['menu']['type'], $menu_types);
+
+      if (in_array('normal', $menu_types) && strpos($path, '%') !== FALSE) {
         $form_state->setError($form['menu']['type'], $this->t('Views cannot create normal menu items for paths with a % in them.'));
       }
 
-      if ($menu_type == 'default tab' || $menu_type == 'tab') {
+      if (in_array('default tab', $menu_types) || in_array('tab', $menu_types)) {
         $bits = explode('/', $path);
         $last = array_pop($bits);
         if ($last == '%') {
@@ -402,7 +414,7 @@ public function validateOptionsForm(&$form, FormStateInterface $form_state) {
         }
       }
 
-      if ($menu_type != 'none' && $form_state->isValueEmpty(array('menu', 'title'))) {
+      if (!in_array('none', $menu_types) &&  $form_state->isValueEmpty(array('menu', 'title'))) {
         $form_state->setError($form['menu']['title'], $this->t('Title is required for this menu type.'));
       }
     }
@@ -420,7 +432,7 @@ public function submitOptionsForm(&$form, FormStateInterface $form_state) {
         list($menu['menu_name'], $menu['parent']) = explode(':', $menu['parent'], 2);
         $this->setOption('menu', $menu);
         // send ajax form to options page if we use it.
-        if ($form_state->getValue(array('menu', 'type')) == 'default tab') {
+        if ($form_state->getValue(array('menu', 'type', 'default tab'))) {
           $form_state->get('view')->addFormToStack('display', $this->display['id'], 'tab_options');
         }
         break;
@@ -437,11 +449,11 @@ public function validate() {
     $errors = parent::validate();
 
     $menu = $this->getOption('menu');
-    if (!empty($menu['type']) && $menu['type'] != 'none' && empty($menu['title'])) {
+    if (!empty($menu['type']) && empty($menu['title'])) {
       $errors[] = $this->t('Display @display is set to use a menu but the menu link text is not set.', array('@display' => $this->display['display_title']));
     }
 
-    if ($menu['type'] == 'default tab') {
+    if (!empty($menu['type']['default tab'])) {
       $tab_options = $this->getOption('tab_options');
       if (!empty($tab_options['type']) && $tab_options['type'] != 'none' && empty($tab_options['title'])) {
         $errors[] = $this->t('Display @display is set to use a parent menu but the parent menu link text is not set.', array('@display' => $this->display['display_title']));
@@ -479,7 +491,7 @@ public function calculateDependencies() {
     $dependencies = parent::calculateDependencies();
 
     $menu = $this->getOption('menu');
-    if ($menu['type'] === 'normal' && ($menu_entity = $this->menuStorage->load($menu['menu_name']))) {
+    if (in_array('normal', $menu['type']) && ($menu_entity = $this->menuStorage->load($menu['menu_name']))) {
       $dependencies[$menu_entity->getConfigDependencyKey()][] = $menu_entity->getConfigDependencyName();
     }
 
diff --git a/core/modules/views/src/Plugin/views/display/PathPluginBase.php b/core/modules/views/src/Plugin/views/display/PathPluginBase.php
index 415b704..63835c2 100644
--- a/core/modules/views/src/Plugin/views/display/PathPluginBase.php
+++ b/core/modules/views/src/Plugin/views/display/PathPluginBase.php
@@ -108,7 +108,7 @@ public function getPath() {
   protected function isDefaultTabPath() {
     $menu = $this->getOption('menu');
     $tab_options = $this->getOption('tab_options');
-    return $menu['type'] == 'default tab' && !empty($tab_options['type']) && $tab_options['type'] != 'none';
+    return !empty($menu['type']['default tab']) && !empty($tab_options['type']) && $tab_options['type'] != 'none';
   }
 
   /**
@@ -300,33 +300,39 @@ public function getMenuLinks() {
     $view_id_display =  "{$view_id}.{$display_id}";
     $menu_link_id = 'views.' . str_replace('/', '.', $view_id_display);
 
-    if ($path) {
-      $menu = $this->getOption('menu');
-      if (!empty($menu['type']) && $menu['type'] == 'normal') {
-        $links[$menu_link_id] = array();
-        // Some views might override existing paths, so we have to set the route
-        // name based upon the altering.
-        $links[$menu_link_id] = array(
-          'route_name' => $this->getRouteName(),
-          // Identify URL embedded arguments and correlate them to a handler.
-          'load arguments'  => array($this->view->storage->id(), $this->display['id'], '%index'),
-          'id' => $menu_link_id,
-        );
-        $links[$menu_link_id]['title'] = $menu['title'];
-        $links[$menu_link_id]['description'] = $menu['description'];
-        $links[$menu_link_id]['parent'] = $menu['parent'];
-
-        if (isset($menu['weight'])) {
-          $links[$menu_link_id]['weight'] = intval($menu['weight']);
+    if ($path && ($menu = $this->getOption('menu')) && !empty($menu['type'])) {
+      foreach ($menu['type'] as $type) {
+        if ($type == 'normal') {
+          $links[$menu_link_id] = array();
+          // Some views might override existing paths, so we have to set the
+          // route name based upon the altering.
+          $links[$menu_link_id] = array(
+            'route_name' => $this->getRouteName(),
+            // Identify URL embedded arguments and correlate them to a handler.
+            'load arguments' => array(
+              $this->view->storage->id(),
+              $this->display['id'],
+              '%index'
+            ),
+            'id' => $menu_link_id,
+          );
+          $links[$menu_link_id]['title'] = $menu['title'];
+          $links[$menu_link_id]['description'] = $menu['description'];
+          $links[$menu_link_id]['parent'] = $menu['parent'];
+
+
+          if (isset($menu['weight'])) {
+            $links[$menu_link_id]['weight'] = intval($menu['weight']);
+          }
+
+          // Insert item into the proper menu.
+          $links[$menu_link_id]['menu_name'] = $menu['menu_name'];
+          // Keep track of where we came from.
+          $links[$menu_link_id]['metadata'] = array(
+            'view_id' => $view_id,
+            'display_id' => $display_id,
+          );
         }
-
-        // Insert item into the proper menu.
-        $links[$menu_link_id]['menu_name'] = $menu['menu_name'];
-        // Keep track of where we came from.
-        $links[$menu_link_id]['metadata'] = array(
-          'view_id' => $view_id,
-          'display_id' => $display_id,
-        );
       }
     }
 
diff --git a/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php b/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php
index 997e8c3..9080875 100644
--- a/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php
+++ b/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php
@@ -1049,7 +1049,7 @@ protected function pageDisplayOptions(array $form, FormStateInterface $form_stat
 
     // Generate the menu links settings if the user checked the link checkbox.
     if (!empty($page['link'])) {
-      $display_options['menu']['type'] = 'normal';
+      $display_options['menu']['type'] = array('normal' => 'normal');
       $display_options['menu']['title'] = $page['link_properties']['title'];
       $display_options['menu']['menu_name'] = $page['link_properties']['menu_name'];
     }
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_page_display_menu.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_page_display_menu.yml
index 814ad4e..a827f0a 100644
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_page_display_menu.yml
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_page_display_menu.yml
@@ -31,17 +31,18 @@ display:
       path: test_page_display_menu/default
       title: 'Test default page'
       menu:
-        type: 'default tab'
+        type:
+          'default tab': 'default tab'
         title: 'Test default tab'
         description: ''
-        menu_name: tools
+        parent: ''
         weight: -10
         context: '0'
+        menu_name: tools
       tab_options:
         type: normal
         title: 'Test parent path'
         description: ''
-        menu_name: tools
         weight: 0
       defaults:
         title: false
@@ -54,12 +55,14 @@ display:
       path: test_page_display_menu/local
       title: 'Test local page'
       menu:
-        type: tab
+        type:
+          tab: tab
         title: 'Test local tab'
         description: ''
-        menu_name: tools
+        parent: ''
         weight: 0
         context: '0'
+        menu_name: tools
       defaults:
         title: false
     display_plugin: page
@@ -71,12 +74,14 @@ display:
       path: test_page_display_menu_link
       title: 'Test menu link'
       menu:
-        type: normal
+        type:
+          normal: normal
         title: 'Test menu link'
         description: ''
-        menu_name: tools
+        parent: ''
         weight: 0
         context: '0'
+        menu_name: tools
       defaults:
         title: false
     display_plugin: page
@@ -88,13 +93,14 @@ display:
       path: test_page_display_menu/child
       title: 'Test page as child'
       menu:
-        type: normal
+        type:
+          normal: normal
         title: 'Test child (with parent)'
-        parent: system.admin
         description: ''
-        menu_name: admin
+        parent: system.admin
         weight: 0
         context: '0'
+        menu_name: admin
       defaults:
         title: false
     display_plugin: page
@@ -106,13 +112,14 @@ display:
       path: test-path
       title: 'Tests a menu with a non-existing parent'
       menu:
-        type: normal
+        type:
+          normal: normal
         title: 'Test child with non-existing parent'
-        parent: llamasarelame
         description: ''
-        menu_name: admin
+        parent: llamasarelame
         weight: 0
         context: '0'
+        menu_name: admin
       defaults:
         title: false
     display_plugin: page
diff --git a/core/modules/views/tests/src/Unit/Plugin/Derivative/ViewsLocalTaskTest.php b/core/modules/views/tests/src/Unit/Plugin/Derivative/ViewsLocalTaskTest.php
index c75d96f..486dba7 100644
--- a/core/modules/views/tests/src/Unit/Plugin/Derivative/ViewsLocalTaskTest.php
+++ b/core/modules/views/tests/src/Unit/Plugin/Derivative/ViewsLocalTaskTest.php
@@ -78,7 +78,7 @@ public function testGetDerivativeDefinitionsWithoutLocalTask() {
     $display_plugin->expects($this->once())
       ->method('getOption')
       ->with('menu')
-      ->will($this->returnValue(array('type' => 'normal')));
+      ->will($this->returnValue(array('type' => array('normal' => 'normal'))));
     $executable->display_handler = $display_plugin;
 
     $result = array(array($executable, 'page_1'));
@@ -110,7 +110,7 @@ public function testGetDerivativeDefinitionsWithLocalTask() {
     $display_plugin->expects($this->once())
       ->method('getOption')
       ->with('menu')
-      ->will($this->returnValue(array('type' => 'tab', 'weight' => 12, 'title' => 'Example title')));
+      ->will($this->returnValue(array('type' => array('tab' => 'tab'), 'weight' => 12, 'title' => 'Example title')));
     $executable->display_handler = $display_plugin;
 
     $result = array(array($executable, 'page_1'));
@@ -155,7 +155,7 @@ public function testGetDerivativeDefinitionsWithOverrideRoute() {
     $display_plugin->expects($this->once())
       ->method('getOption')
       ->with('menu')
-      ->will($this->returnValue(array('type' => 'tab', 'weight' => 12)));
+      ->will($this->returnValue(array('type' => array('tab' => 'tab'), 'weight' => 12)));
     $executable->display_handler = $display_plugin;
 
     $result = array(array($executable, 'page_1'));
@@ -196,7 +196,7 @@ public function testGetDerivativeDefinitionsWithDefaultLocalTask() {
     $display_plugin->expects($this->exactly(2))
       ->method('getOption')
       ->with('menu')
-      ->will($this->returnValue(array('type' => 'default tab', 'weight' => 12, 'title' => 'Example title')));
+      ->will($this->returnValue(array('type' => array('default tab' => 'default tab'), 'weight' => 12, 'title' => 'Example title')));
     $executable->display_handler = $display_plugin;
 
     $result = array(array($executable, 'page_1'));
@@ -257,7 +257,7 @@ public function testGetDerivativeDefinitionsWithExistingLocalTask() {
     $display_plugin->expects($this->exactly(2))
       ->method('getOption')
       ->with('menu')
-      ->will($this->returnValue(array('type' => 'tab', 'weight' => 12, 'title' => 'Example title')));
+      ->will($this->returnValue(array('type' => array('tab' => 'tab'), 'weight' => 12, 'title' => 'Example title')));
     $display_plugin->expects($this->once())
       ->method('getPath')
       ->will($this->returnValue('path/example'));
diff --git a/core/modules/views_ui/src/Tests/DisplayPathTest.php b/core/modules/views_ui/src/Tests/DisplayPathTest.php
index cc6826f..ea6ca61 100644
--- a/core/modules/views_ui/src/Tests/DisplayPathTest.php
+++ b/core/modules/views_ui/src/Tests/DisplayPathTest.php
@@ -112,19 +112,27 @@ public function testMenuOptions() {
     $this->drupalPostForm('admin/structure/views/nojs/display/test_view/page_1/path', array('path' => $random_string), t('Apply'));
     $this->drupalGet('admin/structure/views/view/test_view');
 
-    $this->drupalPostForm('admin/structure/views/nojs/display/test_view/page_1/menu', array('menu[type]' => 'default tab', 'menu[title]' => 'Test tab title'), t('Apply'));
+    $this->drupalPostForm('admin/structure/views/nojs/display/test_view/page_1/menu', array('menu[type][default tab]' => 'default tab', 'menu[title]' => 'Test tab title'), t('Apply'));
     $this->assertResponse(200);
     $this->assertUrl('admin/structure/views/nojs/display/test_view/page_1/tab_options');
 
-    $this->drupalPostForm(NULL, array('tab_options[type]' => 'tab', 'tab_options[title]' => $this->randomString()), t('Apply'));
+    $this->drupalPostForm(NULL, array('tab_options[type]' => 'normal', 'tab_options[title]' => 'Test tab title'), t('Apply'));
     $this->assertResponse(200);
     $this->assertUrl('admin/structure/views/view/test_view/edit/page_1');
-
-    $this->drupalGet('admin/structure/views/view/test_view');
     $this->assertLink(t('Tab: @title', array('@title' => 'Test tab title')));
     // If it's a default tab, it should also have an additional settings link.
     $this->assertLinkByHref('admin/structure/views/nojs/display/test_view/page_1/tab_options');
 
+    // It can be default tab and normal menu item as well.
+    $this->drupalPostForm('admin/structure/views/nojs/display/test_view/page_1/menu', array('menu[type][normal]' => 'normal', 'menu[title]' => 'Test'), t('Apply'));
+    $this->assertResponse(200);
+    $this->assertUrl('admin/structure/views/nojs/display/test_view/page_1/tab_options');
+
+    $this->drupalPostForm(NULL, array('tab_options[type]' => 'normal', 'tab_options[title]' => 'Test tab title'), t('Apply'));
+    $this->assertResponse(200);
+    $this->assertUrl('admin/structure/views/view/test_view/edit/page_1');
+    $this->assertLink(t('Normal: @title | Tab: @title', array('@title' => 'Test')));
+
     // Ensure that you can select a parent in case the parent does not exist.
     $this->drupalGet('admin/structure/views/nojs/display/test_page_display_menu/page_5/menu');
     $this->assertResponse(200);
