diff --git a/core/modules/comment/tests/src/Functional/CommentActionsTest.php b/core/modules/comment/tests/src/Functional/CommentActionsTest.php
deleted file mode 100644
index a68ce11e836155121008c29424bdb22a139beaf4..0000000000000000000000000000000000000000
--- a/core/modules/comment/tests/src/Functional/CommentActionsTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-namespace Drupal\Tests\comment\Functional;
-
-use Drupal\comment\Entity\Comment;
-use Drupal\system\Entity\Action;
-
-/**
- * Tests actions provided by the Comment module.
- *
- * @group comment
- */
-class CommentActionsTest extends CommentTestBase {
-
-  /**
-   * Modules to install.
-   *
-   * @var array
-   */
-  protected static $modules = ['dblog', 'action'];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected $defaultTheme = 'stark';
-
-  /**
-   * Tests comment publish and unpublish actions.
-   */
-  public function testCommentPublishUnpublishActions() {
-    $this->drupalLogin($this->webUser);
-    $comment_text = $this->randomMachineName();
-    $subject = $this->randomMachineName();
-    $comment = $this->postComment($this->node, $comment_text, $subject);
-
-    // Unpublish a comment.
-    $action = Action::load('comment_unpublish_action');
-    $action->execute([$comment]);
-    $this->assertFalse($comment->isPublished(), 'Comment was unpublished');
-    $this->assertSame(['module' => ['comment']], $action->getDependencies());
-    // Publish a comment.
-    $action = Action::load('comment_publish_action');
-    $action->execute([$comment]);
-    $this->assertTrue($comment->isPublished(), 'Comment was published');
-  }
-
-  /**
-   * Tests the unpublish comment by keyword action.
-   */
-  public function testCommentUnpublishByKeyword() {
-    $this->drupalLogin($this->adminUser);
-    $keyword_1 = $this->randomMachineName();
-    $keyword_2 = $this->randomMachineName();
-    $action = Action::create([
-      'id' => 'comment_unpublish_by_keyword_action',
-      'label' => $this->randomMachineName(),
-      'type' => 'comment',
-      'configuration' => [
-        'keywords' => [$keyword_1, $keyword_2],
-      ],
-      'plugin' => 'comment_unpublish_by_keyword_action',
-    ]);
-    $action->save();
-
-    $comment = $this->postComment($this->node, $keyword_2, $this->randomMachineName());
-
-    // Load the full comment so that status is available.
-    $comment = Comment::load($comment->id());
-
-    $this->assertTrue($comment->isPublished(), 'The comment status was set to published.');
-
-    $action->execute([$comment]);
-    $this->assertFalse($comment->isPublished(), 'The comment status was set to not published.');
-  }
-
-}
diff --git a/core/modules/comment/tests/src/Kernel/CommentActionsTest.php b/core/modules/comment/tests/src/Kernel/CommentActionsTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..669a6848d129469a3a79f228841696fe6684bdd0
--- /dev/null
+++ b/core/modules/comment/tests/src/Kernel/CommentActionsTest.php
@@ -0,0 +1,159 @@
+<?php
+
+namespace Drupal\Tests\comment\Kernel;
+
+use Drupal\comment\Entity\Comment;
+use Drupal\comment\Entity\CommentType;
+use Drupal\comment\Tests\CommentTestTrait;
+use Drupal\Core\Datetime\Entity\DateFormat;
+use Drupal\entity_test\Entity\EntityTest;
+use Drupal\filter\Entity\FilterFormat;
+use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
+use Drupal\system\Entity\Action;
+
+/**
+ * Tests actions provided by the Comment module.
+ *
+ * @group comment
+ */
+class CommentActionsTest extends EntityKernelTestBase {
+  use CommentTestTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = ['comment', 'entity_test'];
+
+  /**
+   * Keywords used for testing.
+   *
+   * @var string[]
+   */
+  protected $keywords;
+
+  /**
+   * The comment entity.
+   *
+   * @var \Drupal\comment\CommentInterface
+   */
+  protected $comment;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp(): void {
+    parent::setUp();
+    $this->installConfig(['user', 'comment']);
+    $this->installSchema('comment', ['comment_entity_statistics']);
+
+    // Create a comment type.
+    CommentType::create([
+      'id' => 'comment',
+      'label' => 'Default comments',
+      'description' => 'Default comment field',
+      'target_entity_type_id' => 'entity_test',
+    ])->save();
+    $this->addDefaultCommentField('entity_test', 'entity_test', 'comment');
+
+    // Setup date format to render comment date.
+    DateFormat::create([
+      'id' => 'fallback',
+      'pattern' => 'D, m/d/Y - H:i',
+    ])->save();
+
+    // Create format without filters to prevent filtering.
+    FilterFormat::create([
+      'format' => 'no_filters',
+      'filters' => [],
+    ])->save();
+
+    // Set current user to allow filters display comment body.
+    $this->drupalSetCurrentUser($this->drupalCreateUser());
+
+    $this->keywords = [$this->randomMachineName(), $this->randomMachineName()];
+
+    // Create a comment against a test entity.
+    $host = EntityTest::create();
+    $host->save();
+
+    $this->comment = Comment::create([
+      'entity_type' => 'entity_test',
+      'name' => $this->randomString(),
+      'hostname' => 'magic.example.com',
+      'mail' => 'tonythemagicalpony@example.com',
+      'subject' => $this->keywords[0],
+      'comment_body' => $this->keywords[1],
+      'entity_id' => $host->id(),
+      'comment_type' => 'comment',
+      'field_name' => 'comment',
+    ]);
+    $this->comment->get('comment_body')->format = 'no_filters';
+    $this->comment->setPublished();
+  }
+
+  /**
+   * Tests comment module's default config actions.
+   *
+   * @see \Drupal\Core\Entity\Form\DeleteMultipleForm::submitForm()
+   * @see \Drupal\Core\Action\Plugin\Action\DeleteAction
+   * @see \Drupal\Core\Action\Plugin\Action\Derivative\EntityDeleteActionDeriver
+   * @see \Drupal\Core\Action\Plugin\Action\PublishAction
+   * @see \Drupal\Core\Action\Plugin\Action\SaveAction
+   */
+  public function testCommentDefaultConfigActions() {
+    $this->assertTrue($this->comment->isNew());
+    $action = Action::load('comment_save_action');
+    $action->execute([$this->comment]);
+    $this->assertFalse($this->comment->isNew());
+
+    $this->assertTrue($this->comment->isPublished());
+    // Tests comment unpublish.
+    $action = Action::load('comment_unpublish_action');
+    $action->execute([$this->comment]);
+    $this->assertFalse($this->comment->isPublished(), 'Comment was unpublished');
+    $this->assertSame(['module' => ['comment']], $action->getDependencies());
+    // Tests comment publish.
+    $action = Action::load('comment_publish_action');
+    $action->execute([$this->comment]);
+    $this->assertTrue($this->comment->isPublished(), 'Comment was published');
+
+    $action = Action::load('comment_delete_action');
+    $action->execute([$this->comment]);
+    /** @var \Drupal\Core\TempStore\PrivateTempStoreFactory $temp_store */
+    $temp_store = $this->container->get('tempstore.private');
+    $account_id = $this->container->get('current_user')->id();
+    $store_entries = $temp_store->get('entity_delete_multiple_confirm')->get($account_id . ':comment');
+    $this->assertSame([$account_id => ['en' => 'en']], $store_entries);
+  }
+
+  /**
+   * Tests the unpublish comment by keyword action.
+   *
+   * @see \Drupal\comment\Plugin\Action\UnpublishByKeywordComment
+   */
+  public function testCommentUnpublishByKeyword() {
+    $this->comment->save();
+    $action = Action::create([
+      'id' => 'comment_unpublish_by_keyword_action',
+      'label' => $this->randomMachineName(),
+      'type' => 'comment',
+      'plugin' => 'comment_unpublish_by_keyword_action',
+    ]);
+
+    // Tests no keywords.
+    $action->execute([$this->comment]);
+    $this->assertTrue($this->comment->isPublished(), 'The comment status was set to published.');
+
+    // Tests keyword in subject.
+    $action->set('configuration', ['keywords' => [$this->keywords[0]]]);
+    $action->execute([$this->comment]);
+    $this->assertFalse($this->comment->isPublished(), 'The comment status was set to not published.');
+
+    // Tests keyword in comment body.
+    $this->comment->setPublished();
+    $action->set('configuration', ['keywords' => [$this->keywords[1]]]);
+    $action->execute([$this->comment]);
+    $this->assertFalse($this->comment->isPublished(), 'The comment status was set to not published.');
+  }
+
+}