diff --git a/core/profiles/demo_umami/demo_umami.profile b/core/profiles/demo_umami/demo_umami.profile
index 02a58535d457f6e7b1c438d20b34d6bfec919660..dc8384f77a68f8b0d083886bee9c010d3ee92b6b 100644
--- a/core/profiles/demo_umami/demo_umami.profile
+++ b/core/profiles/demo_umami/demo_umami.profile
@@ -34,8 +34,17 @@ function demo_umami_toolbar() {
// @todo: This can be removed once a generic warning for experimental profiles has been introduced.
// @see https://www.drupal.org/project/drupal/issues/2934374
$items['experimental-profile-warning'] = [
- '#type' => 'toolbar_item',
- 'tab' => [
+ '#weight' => 999,
+ '#cache' => [
+ 'contexts' => ['route'],
+ ],
+ ];
+
+ // Show warning only on administration pages.
+ $admin_context = \Drupal::service('router.admin_context');
+ if ($admin_context->isAdminRoute()) {
+ $items['experimental-profile-warning']['#type'] = 'toolbar_item';
+ $items['experimental-profile-warning']['tab'] = [
'#type' => 'inline_template',
'#template' => 'This installation is for demonstration purposes only.',
'#context' => [
@@ -44,8 +53,7 @@ function demo_umami_toolbar() {
'#attached' => [
'library' => ['demo_umami/toolbar-warning'],
],
- ],
- '#weight' => 999,
- ];
+ ];
+ }
return $items;
}
diff --git a/core/profiles/demo_umami/tests/src/Functional/DemoUmamiProfileTest.php b/core/profiles/demo_umami/tests/src/Functional/DemoUmamiProfileTest.php
index 3e8d697cb527008e2f724bb7ccdf600732691d55..f4bd76a3e49b92bca5f3775e3e4a7e86fb4e5d0c 100644
--- a/core/profiles/demo_umami/tests/src/Functional/DemoUmamiProfileTest.php
+++ b/core/profiles/demo_umami/tests/src/Functional/DemoUmamiProfileTest.php
@@ -122,4 +122,51 @@ public function testAppearance() {
$webassert->pageTextContains('Umami');
}
+ /**
+ * Tests that the toolbar warning only appears on the admin pages.
+ */
+ public function testDemonstrationWarningMessage() {
+ $permissions = [
+ 'access content overview',
+ 'administer nodes',
+ 'create recipe content',
+ 'edit any recipe content',
+ 'access toolbar',
+ ];
+ $account = $this->drupalCreateUser($permissions);
+ $this->drupalLogin($account);
+ $web_assert = $this->assertSession();
+
+ $nodes = $this->container->get('entity_type.manager')
+ ->getStorage('node')
+ ->loadByProperties(['title' => 'Deep mediterranean quiche']);
+ /* @var \Drupal\node\Entity\Node $recipe_node */
+ $recipe_node = reset($nodes);
+
+ // Check when editing a node, the warning is visible.
+ $this->drupalGet($recipe_node->toUrl('edit-form'));
+ $web_assert->statusCodeEquals('200');
+ $web_assert->pageTextContains('This installation is for demonstration purposes only.');
+
+ // Check when adding a node, the warning is visible.
+ $this->drupalGet('node/add/recipe');
+ $web_assert->statusCodeEquals('200');
+ $web_assert->pageTextContains('This installation is for demonstration purposes only.');
+
+ // Check when looking at admin/content, the warning is visible.
+ $this->drupalGet('admin/content');
+ $web_assert->statusCodeEquals('200');
+ $web_assert->pageTextContains('This installation is for demonstration purposes only.');
+
+ // Check when viewing a node, the warning is not visible.
+ $this->drupalGet($recipe_node->toUrl());
+ $web_assert->statusCodeEquals('200');
+ $web_assert->pageTextNotContains('This installation is for demonstration purposes only.');
+
+ // Check when viewing the homepage, the warning is not visible.
+ $this->drupalGet('');
+ $web_assert->statusCodeEquals('200');
+ $web_assert->pageTextNotContains('This installation is for demonstration purposes only.');
+ }
+
}