diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/00-command/Tree_Command_Types.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/00-command/Tree_Command_Types.test.js
new file mode 100644
index 0000000..de1a714
--- /dev/null
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/00-command/Tree_Command_Types.test.js
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {testFrameQuerySelectorFn} from "/script/tobago-test.js";
+import {TobagoTestTool} from "/tobago/test/tobago-test-tool.js";
+
+QUnit.test("execute both 'Action 1' and 'Action 2' two times", function (assert) {
+  let action1Fn = testFrameQuerySelectorFn("#page\\:mainForm\\:tree\\:2\\:actionCommand");
+  let action2Fn = testFrameQuerySelectorFn("#page\\:mainForm\\:tree\\:3\\:actionCommand");
+  let actionCount1Fn = testFrameQuerySelectorFn("#page\\:mainForm\\:actionCount1 .tobago-out");
+  let actionCount2Fn = testFrameQuerySelectorFn("#page\\:mainForm\\:actionCount2 .tobago-out");
+
+  const counterBeforeTestResult1 = Number(actionCount1Fn().textContent);
+  const counterBeforeTestResult2 = Number(actionCount2Fn().textContent);
+
+  let TTT = new TobagoTestTool(assert);
+  TTT.action(function () {
+    action1Fn().dispatchEvent(new Event('click'));
+  });
+  TTT.waitForResponse();
+  TTT.asserts(1, function () {
+    assert.equal(Number(actionCount1Fn().textContent), counterBeforeTestResult1 + 1);
+  });
+  TTT.action(function () {
+    action2Fn().dispatchEvent(new Event('click'));
+  });
+  TTT.waitForResponse();
+  TTT.asserts(1, function () {
+    assert.equal(Number(actionCount2Fn().textContent), counterBeforeTestResult2 + 1);
+  });
+  TTT.action(function () {
+    action1Fn().dispatchEvent(new Event('click'));
+  });
+  TTT.waitForResponse();
+  TTT.asserts(1, function () {
+    assert.equal(Number(actionCount1Fn().textContent), counterBeforeTestResult1 + 2);
+  });
+  TTT.action(function () {
+    action2Fn().dispatchEvent(new Event('click'));
+  });
+  TTT.waitForResponse();
+  TTT.asserts(1, function () {
+    assert.equal(Number(actionCount2Fn().textContent), counterBeforeTestResult2 + 2);
+  });
+  TTT.startTest();
+});
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/00-command/Tree_Command_Types.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/00-command/Tree_Command_Types.xhtml
index 205ce10..f7d8477 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/00-command/Tree_Command_Types.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/00-command/Tree_Command_Types.xhtml
@@ -35,16 +35,18 @@
       Like the parent nodes suggest,
       the entries in 'Actions' run an action with the <code>action</code> attribute.
       And the entries in 'Links' are links to an external website using the <code>link</code> attribute.</p>
-    <tc:tree value="#{treeCommandTypesController.sample}" var="node">
-      <tc:treeNode>
+    <tc:tree id="tree" value="#{treeCommandTypesController.sample}" var="node">
+      <tc:treeNode id="treeNode">
         <tc:treeIndent showJunctions="false"/>
         <tc:treeLabel value="#{node.name}" rendered="#{node.childCount > 0}"/>
-        <tc:treeCommand label="#{node.name}" rendered="#{node.childCount == 0}"
-                        action="#{treeCommandTypesController.increaseActionCount(node.action)}" link="#{node.url}"/>
+        <tc:treeCommand id="actionCommand" label="#{node.name}" rendered="#{node.childCount == 0 and empty node.url}"
+                        action="#{treeCommandTypesController.increaseActionCount(node.action)}"/>
+        <tc:treeCommand label="#{node.name}" rendered="#{node.childCount == 0 and not empty node.url}"
+                        link="#{node.url}"/>
       </tc:treeNode>
     </tc:tree>
 
-    <tc:out label="Action 1 Count" value="#{treeCommandTypesController.actionOneCount}"/>
-    <tc:out label="Action 2 Count" value="#{treeCommandTypesController.actionTwoCount}"/>
+    <tc:out id="actionCount1" label="Action 1 Count" value="#{treeCommandTypesController.actionOneCount}"/>
+    <tc:out id="actionCount2" label="Action 2 Count" value="#{treeCommandTypesController.actionTwoCount}"/>
   </tc:section>
 </ui:composition>
