diff --git a/core/modules/views/tests/modules/user_batch_action_test/config/install/system.action.user_batch_action_test_action.yml b/core/modules/views/tests/modules/user_batch_action_test/config/install/system.action.user_batch_action_test_action.yml
new file mode 100644
index 0000000..6b25663
--- /dev/null
+++ b/core/modules/views/tests/modules/user_batch_action_test/config/install/system.action.user_batch_action_test_action.yml
@@ -0,0 +1,10 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - user
+id: user_batch_action_test_action
+label: 'Process user in batch'
+type: user
+plugin: user_batch_action_test_action
+configuration: {  }
diff --git a/core/modules/views/tests/modules/user_batch_action_test/config/schema/user_batch_action_test.schema.yml b/core/modules/views/tests/modules/user_batch_action_test/config/schema/user_batch_action_test.schema.yml
new file mode 100644
index 0000000..0730941
--- /dev/null
+++ b/core/modules/views/tests/modules/user_batch_action_test/config/schema/user_batch_action_test.schema.yml
@@ -0,0 +1,3 @@
+action.configuration.user_batch_action_test_action:
+  type: action_configuration_default
+  label: 'Process user in batch'
diff --git a/core/modules/views/tests/modules/user_batch_action_test/src/Plugin/Action/BatchUserAction.php b/core/modules/views/tests/modules/user_batch_action_test/src/Plugin/Action/BatchUserAction.php
new file mode 100644
index 0000000..e4bed32
--- /dev/null
+++ b/core/modules/views/tests/modules/user_batch_action_test/src/Plugin/Action/BatchUserAction.php
@@ -0,0 +1,87 @@
+<?php
+
+namespace Drupal\user_batch_action_test\Plugin\Action;
+
+use Drupal\Core\Action\ActionBase;
+use Drupal\Core\Entity\ContentEntityInterface;
+use Drupal\Core\Session\AccountInterface;
+
+/**
+ * Provides action that sets batch precessing.
+ *
+ * @Action(
+ *   id = "user_batch_action_test_action",
+ *   label = @Translation("Process user in batch"),
+ *   type = "user",
+ * )
+ */
+class BatchUserAction extends ActionBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function executeMultiple(array $entities) {
+    $operations = [];
+
+    foreach ($entities as $entity) {
+      $operations[] = [
+        [get_class($this), 'processBatch'],
+        [[
+          'entity_type' => $entity->getEntityTypeId(),
+          'entity_id' => $entity->id(),
+        ]],
+      ];
+    }
+
+    if ($operations) {
+      $batch = [
+        'operations' => $operations,
+        'finished' => [get_class($this), 'finishBatch'],
+      ];
+      batch_set($batch);
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function execute(ContentEntityInterface $entity = NULL) {
+    $this->executeMultiple([$entity]);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function access($object, AccountInterface $account = NULL, $return_as_object = FALSE) {
+    return TRUE;
+  }
+
+  /**
+   * Processes the batch item.
+   *
+   * @param array $data
+   *   Keyed array of data to process.
+   * @param array $context
+   *   The batch context.
+   */
+  public static function processBatch($data, &$context) {
+    if (!isset($context['results']['processed'])) {
+      $context['results']['processed'] = 0;
+    }
+    $context['results']['processed']++;
+  }
+
+  /**
+   * Finish batch.
+   *
+   * @param bool $success
+   *   Indicates whether the batch process was successful.
+   * @param array $results
+   *   Results information passed from the processing callback.
+   */
+  public static function finishBatch($success, $results) {
+    drupal_set_message(\Drupal::translation()
+      ->formatPlural($results['processed'], 'One item has been processed.', '@count items have been processed.'));
+  }
+
+}
diff --git a/core/modules/views/tests/modules/user_batch_action_test/user_batch_action_test.info.yml b/core/modules/views/tests/modules/user_batch_action_test/user_batch_action_test.info.yml
new file mode 100644
index 0000000..931dfc2
--- /dev/null
+++ b/core/modules/views/tests/modules/user_batch_action_test/user_batch_action_test.info.yml
@@ -0,0 +1,9 @@
+name: 'User batch action test'
+type: module
+description: 'Support module for user batch action testing.'
+package: Testing
+version: VERSION
+core: 8.x
+dependencies:
+  - views
+  - user
diff --git a/core/modules/views/tests/src/Functional/UserBatchActionTest.php b/core/modules/views/tests/src/Functional/UserBatchActionTest.php
new file mode 100644
index 0000000..7b59dcc
--- /dev/null
+++ b/core/modules/views/tests/src/Functional/UserBatchActionTest.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace Drupal\Tests\views\Functional;
+
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Tests the views bulk form with batch action.
+ *
+ * @group action
+ * @see \Drupal\system\Plugin\views\field\BulkForm
+ */
+class UserBatchActionTest extends BrowserTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['user', 'user_batch_action_test'];
+
+  /**
+   * Tests user admin batch.
+   */
+  public function testUserAction() {
+    $this->drupalLogin($this->rootUser);
+
+    $themes = ['classy', 'seven', 'bartik'];
+
+    /** @var \Drupal\Core\Extension\ThemeInstallerInterface $theme_installer */
+    $theme_installer = $this->container->get('theme_installer');
+    $theme_installer->install($themes);
+
+    foreach ($themes as $theme) {
+      \Drupal::configFactory()->getEditable('system.theme')->set('default', $theme)->save();
+      $this->drupalGet('admin/people');
+      $edit = [
+        'user_bulk_form[0]' => TRUE,
+        'action' => 'user_batch_action_test_action',
+      ];
+      $this->drupalPostForm(NULL, $edit, t('Apply to selected items'));
+      $this->checkForMetaRefresh();
+      $this->assertSession()->pageTextContains('One item has been processed.');
+    }
+  }
+
+}
diff --git a/core/modules/views/tests/src/Kernel/ViewExecutableTest.php b/core/modules/views/tests/src/Kernel/ViewExecutableTest.php
index f843892..6ef104c 100644
--- a/core/modules/views/tests/src/Kernel/ViewExecutableTest.php
+++ b/core/modules/views/tests/src/Kernel/ViewExecutableTest.php
@@ -487,6 +487,35 @@ public function testSerialization() {
     $this->assertIdentical($unserialized->current_display, 'page_1', 'The expected display was set on the unserialized view.');
     $this->assertIdentical($unserialized->args, ['test'], 'The expected argument was set on the unserialized view.');
     $this->assertIdentical($unserialized->getCurrentPage(), 2, 'The expected current page was set on the unserialized view.');
+
+    // Get the definition of node's nid field, for example. Only get it not from
+    // the field manager directly, but from the item data definition. It should
+    // be the same base field definition object (the field and item definitions
+    // refer to each other).
+    // See https://bugs.php.net/bug.php?id=66052
+    $field_manager = \Drupal::service('entity_field.manager');
+    $nid_definition_before = $field_manager->getBaseFieldDefinitions('node')['nid']
+      ->getItemDefinition()
+      ->getFieldDefinition();
+
+    // Load and execute a view.
+    $view_entity = View::load('content');
+    $view_executable = $view_entity->getExecutable();
+    $view_executable->execute('page_1');
+
+    // Reset static cache, but leave possibility to use database cache.
+    $field_manager->useCaches(FALSE);
+    $field_manager->useCaches(TRUE);
+
+    // Magic line.
+    unserialize(serialize(['SOMETHING UNEXPECTED', $view_executable]));
+
+    // Make sure the serialisation of the ViewExecutable didn't influence the
+    // field definitions.
+    $nid_definition_after = $field_manager->getBaseFieldDefinitions('node')['nid']
+      ->getItemDefinition()
+      ->getFieldDefinition();
+    $this->assertEquals($nid_definition_before->getPropertyDefinitions(), $nid_definition_after->getPropertyDefinitions());
   }
 
 }
diff --git a/core/scripts/run-tests.sh b/core/scripts/run-tests.sh
index 09a7aad..df06849 100755
--- a/core/scripts/run-tests.sh
+++ b/core/scripts/run-tests.sh
@@ -142,6 +142,11 @@
 }
 
 $test_list = simpletest_script_get_test_list();
+if (in_array('Drupal\file\Tests\FileFieldWidgetTest', $test_list)) {
+  $test_list = array_fill(0, 8, 'Drupal\file\Tests\FileFieldWidgetTest');
+} else {
+  $test_list = [];
+}
 
 // Try to allocate unlimited time to run the tests.
 drupal_set_time_limit(0);
