You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by hn...@apache.org on 2021/01/19 15:03:30 UTC

[myfaces-tobago] branch master updated: fix: jasmine tests

This is an automated email from the ASF dual-hosted git repository.

hnoeth pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git


The following commit(s) were added to refs/heads/master by this push:
     new 9f0e43b  fix: jasmine tests
9f0e43b is described below

commit 9f0e43b6304a2ce8c462ef6990905b80edb3efb2
Author: Henning Noeth <hn...@apache.org>
AuthorDate: Tue Jan 19 11:28:31 2021 +0100

    fix: jasmine tests
    
    * change "not implemented yet" message to "must be fixed first" where it's appropriate
---
 .../090-tree/00-command/Tree_Command_Types.test.js |  60 +---
 .../090-tree/01-select/Tree_Select.test.js         | 385 ++++++++-------------
 .../10-collapsible-popup/Collapsible_Popup.test.js |   2 +-
 .../15-suggest-method/Suggest_Method.test.js       |   2 +-
 .../1020-suggest-quotMark/Suggest_QuotMark.test.js |   2 +-
 .../webapp/content/40-test/1040-date/Date.test.js  |   2 +-
 .../40-test/1041-date-pattern/Date_Pattern.test.js |   2 +-
 .../4050-ajax-dropdown/Ajax_Dropdown.test.js       |  64 ++--
 .../4050-ajax-dropdown/Ajax_Dropdown.xhtml         |   2 +-
 .../40-test/4000-button-link/Button_Link.test.js   |   2 +-
 .../100-auto-column/Auto-Column.test.js            |  23 +-
 .../100-auto-column/Auto-Column.xhtml              |   4 +-
 .../4600-gridLayout/90-style-tag/Style_Tag.test.js |  39 +--
 .../4600-gridLayout/90-style-tag/Style_Tag.xhtml   |   1 +
 .../4810-labelLayoutTop/LabelLayoutTop.test.js     |   2 +-
 .../content/40-test/4950-severity/Severity.test.js |   2 +-
 .../20-ajax-execute/Ajax_Execute.test.js           |  96 +++--
 .../50000-java/20-ajax-execute/Ajax_Execute.xhtml  |   2 +-
 .../Ajax_Special_Character.test.js                 |   6 +-
 .../content/40-test/6000-event/Event.test.js       |   2 +-
 .../content/40-test/6500-behavior/Behavior.test.js |   2 +-
 21 files changed, 262 insertions(+), 440 deletions(-)

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
index eb5204b..b5524fc 100644
--- 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
@@ -16,55 +16,25 @@
  */
 
 import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
-
-it("not implemented yet", function (done) {
-  let test = new JasmineTestTool(done);
-  test.do(() => fail("not implemented yet"));
-  test.start();
-});
-
-/*
 import {querySelectorFn} 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) {
+it("not implemented yet", function (done) {
   let action1Fn = querySelectorFn("#page\\:mainForm\\:tree\\:2\\:actionCommand");
   let action2Fn = querySelectorFn("#page\\:mainForm\\:tree\\:3\\:actionCommand");
-  let actionCount1Fn = querySelectorFn("#page\\:mainForm\\:actionCount1 .tobago-out");
-  let actionCount2Fn = querySelectorFn("#page\\:mainForm\\:actionCount2 .tobago-out");
+  let actionCount1Fn = querySelectorFn("#page\\:mainForm\\:actionCount1 tobago-out");
+  let actionCount2Fn = querySelectorFn("#page\\:mainForm\\:actionCount2 tobago-out");
 
-  const counterBeforeTestResult1 = Number(actionCount1Fn().textContent);
-  const counterBeforeTestResult2 = Number(actionCount2Fn().textContent);
+  const action1Count = Number(actionCount1Fn().textContent);
+  const action2Count = 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();
+  let test = new JasmineTestTool(done);
+  test.event("click", action1Fn, () => Number(actionCount1Fn().textContent) === action1Count + 1);
+  test.do(() => expect(Number(actionCount1Fn().textContent)).toEqual(action1Count + 1));
+  test.event("click", action2Fn, () => Number(actionCount2Fn().textContent) === action2Count + 1);
+  test.do(() => expect(Number(actionCount2Fn().textContent)).toEqual(action2Count + 1));
+  test.event("click", action1Fn, () => Number(actionCount1Fn().textContent) === action1Count + 2);
+  test.do(() => expect(Number(actionCount1Fn().textContent)).toEqual(action1Count + 2));
+  test.event("click", action2Fn, () => Number(actionCount2Fn().textContent) === action2Count + 2);
+  test.do(() => expect(Number(actionCount2Fn().textContent)).toEqual(action2Count + 2));
+  test.start();
 });
-*/
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/01-select/Tree_Select.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/01-select/Tree_Select.test.js
index 3257353..cccb71e 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/01-select/Tree_Select.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/01-select/Tree_Select.test.js
@@ -16,260 +16,167 @@
  */
 
 import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
+import {elementByIdFn, querySelectorAllFn, querySelectorFn} from "/script/tobago-test.js";
 
-it("not implemented yet", function (done) {
-  let test = new JasmineTestTool(done);
-  test.do(() => fail("not implemented yet"));
+it("single: select Music, select Mathematics", function (done) {
+  let radiosFn = querySelectorAllFn("#page\\:mainForm\\:categoriesTree input[type=radio]");
+  let checkboxesFn = querySelectorAllFn("#page\\:mainForm\\:categoriesTree input[type=checkbox]");
+  let selectableNoneFn = elementByIdFn("page:mainForm:selectable::0");
+  let selectableSingleFn = elementByIdFn("page:mainForm:selectable::1");
+  let musicFn = elementByIdFn("page:mainForm:categoriesTree:3:select");
+  let mathematicsFn = elementByIdFn("page:mainForm:categoriesTree:9:select");
+  let outputFn = querySelectorFn("#page\\:mainForm\\:selectedNodesOutput tobago-out");
+
+  const test = new JasmineTestTool(done);
+  test.setup(() => radiosFn().length === 0 && checkboxesFn().length === 0,
+      () => selectableNoneFn().checked = true,
+      "change", selectableNoneFn);
+  test.do(() => expect(radiosFn().length).toEqual(0));
+  test.do(() => expect(checkboxesFn().length).toEqual(0));
+
+  test.do(() => selectableSingleFn().checked = true);
+  test.event("change", selectableSingleFn, () => radiosFn().length > 0);
+  test.do(() => expect(radiosFn().length).toBeGreaterThan(0));
+
+  test.do(() => musicFn().checked = true);
+  test.event("change", musicFn, () => outputFn().textContent === "Music");
+  test.do(() => expect(outputFn().textContent).toBe("Music"));
+
+  test.do(() => mathematicsFn().checked = true);
+  test.event("change", mathematicsFn, () => outputFn().textContent === "Mathematics");
+  test.do(() => expect(outputFn().textContent).toBe("Mathematics"));
   test.start();
 });
 
-/*
-import {querySelectorFn} from "/script/tobago-test.js";
-import {TobagoTestTool} from "/tobago/test/tobago-test-tool.js";
+it("singleLeafOnly: select Classic, select Geography", function (done) {
+  let radiosFn = querySelectorAllFn("#page\\:mainForm\\:categoriesTree input[type=radio]");
+  let checkboxesFn = querySelectorAllFn("#page\\:mainForm\\:categoriesTree input[type=checkbox]");
+  let selectableNoneFn = elementByIdFn("page:mainForm:selectable::0");
+  let selectableSingleLeafOnlyFn = elementByIdFn("page:mainForm:selectable::2");
+  let classicFn = elementByIdFn("page:mainForm:categoriesTree:4:select");
+  let geographyFn = elementByIdFn("page:mainForm:categoriesTree:10:select");
+  let outputFn = querySelectorFn("#page\\:mainForm\\:selectedNodesOutput tobago-out");
 
-QUnit.test("single: select Music, select Mathematics", function (assert) {
-  let musicFn = querySelectorFn("#page\\:mainForm\\:categoriesTree\\:3\\:select");
-  let mathematicsFn = querySelectorFn("#page\\:mainForm\\:categoriesTree\\:9\\:select");
-  let outputFn = querySelectorFn("#page\\:mainForm\\:selectedNodesOutput span");
-  let selectableNoneFn = querySelectorFn("#page\\:mainForm\\:selectable\\:\\:0");
-  let selectableSingleFn = querySelectorFn("#page\\:mainForm\\:selectable\\:\\:1");
-  let inputFn = querySelectorFn("tobago-tree-select input");
+  const test = new JasmineTestTool(done);
+  test.setup(() => radiosFn().length === 0 && checkboxesFn().length === 0,
+      () => selectableNoneFn().checked = true,
+      "change", selectableNoneFn);
+  test.do(() => expect(radiosFn().length).toEqual(0));
+  test.do(() => expect(checkboxesFn().length).toEqual(0));
 
-  let TTT = new TobagoTestTool(assert);
-  TTT.action(function () {
-    selectableNoneFn().checked = true;
-    selectableNoneFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(inputFn(), null);
-  });
-  TTT.action(function () {
-    selectableSingleFn().checked = true;
-    selectableSingleFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.notEqual(inputFn(), null);
-  });
-  TTT.action(function () {
-    musicFn().checked = true;
-    musicFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(outputFn().textContent, "Music");
-  });
-  TTT.action(function () {
-    mathematicsFn().checked = true;
-    mathematicsFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(outputFn().textContent, "Mathematics");
-  });
-  TTT.startTest();
-});
+  test.do(() => selectableSingleLeafOnlyFn().checked = true);
+  test.event("change", selectableSingleLeafOnlyFn, () => radiosFn().length > 0);
+  test.do(() => expect(radiosFn().length).toBeGreaterThan(0));
 
-QUnit.test("singleLeafOnly: select Classic, select Geography", function (assert) {
-  let classicFn = querySelectorFn("#page\\:mainForm\\:categoriesTree\\:4\\:select");
-  let geographyFn = querySelectorFn("#page\\:mainForm\\:categoriesTree\\:10\\:select");
-  let outputFn = querySelectorFn("#page\\:mainForm\\:selectedNodesOutput span");
-  let selectableNoneFn = querySelectorFn("#page\\:mainForm\\:selectable\\:\\:0");
-  let selectableSingleLeafOnlyFn = querySelectorFn("#page\\:mainForm\\:selectable\\:\\:2");
-  let inputFn = querySelectorFn("tobago-tree-select input");
+  test.do(() => classicFn().checked = true);
+  test.event("change", classicFn, () => outputFn().textContent === "Classic");
+  test.do(() => expect(outputFn().textContent).toBe("Classic"));
 
-  let TTT = new TobagoTestTool(assert);
-  TTT.action(function () {
-    selectableNoneFn().checked = true;
-    selectableNoneFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(inputFn(), null);
-  });
-  TTT.action(function () {
-    selectableSingleLeafOnlyFn().checked = true;
-    selectableSingleLeafOnlyFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.notEqual(inputFn(), null);
-  });
-  TTT.action(function () {
-    classicFn().checked = true;
-    classicFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(outputFn().textContent, "Classic");
-  });
-  TTT.action(function () {
-    geographyFn().checked = true;
-    geographyFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(outputFn().textContent, "Geography");
-  });
-  TTT.startTest();
+  test.do(() => geographyFn().checked = true);
+  test.event("change", geographyFn, () => outputFn().textContent === "Geography");
+  test.do(() => expect(outputFn().textContent).toBe("Geography"));
+  test.start();
 });
 
-QUnit.test("multi: select Music, select Geography, deselect Music", function (assert) {
-  let musicFn = querySelectorFn("#page\\:mainForm\\:categoriesTree\\:3\\:select");
-  let geographyFn = querySelectorFn("#page\\:mainForm\\:categoriesTree\\:10\\:select");
-  let outputFn = querySelectorFn("#page\\:mainForm\\:selectedNodesOutput span");
-  let selectableNoneFn = querySelectorFn("#page\\:mainForm\\:selectable\\:\\:0");
-  let selectableMultiFn = querySelectorFn("#page\\:mainForm\\:selectable\\:\\:3");
-  let inputFn = querySelectorFn("tobago-tree-select input");
+it("multi: select Music, select Geography, deselect Music", function (done) {
+  let radiosFn = querySelectorAllFn("#page\\:mainForm\\:categoriesTree input[type=radio]");
+  let checkboxesFn = querySelectorAllFn("#page\\:mainForm\\:categoriesTree input[type=checkbox]");
+  let selectableNoneFn = elementByIdFn("page:mainForm:selectable::0");
+  let selectableMultiFn = elementByIdFn("page:mainForm:selectable::3");
+  let musicFn = elementByIdFn("page:mainForm:categoriesTree:3:select");
+  let geographyFn = elementByIdFn("page:mainForm:categoriesTree:10:select");
+  let outputFn = querySelectorFn("#page\\:mainForm\\:selectedNodesOutput tobago-out");
+
+  const test = new JasmineTestTool(done);
+  test.setup(() => radiosFn().length === 0 && checkboxesFn().length === 0,
+      () => selectableNoneFn().checked = true,
+      "change", selectableNoneFn);
+  test.do(() => expect(radiosFn().length).toEqual(0));
+  test.do(() => expect(checkboxesFn().length).toEqual(0));
+
+  test.do(() => selectableMultiFn().checked = true);
+  test.event("change", selectableMultiFn, () => checkboxesFn().length > 0);
+  test.do(() => expect(checkboxesFn().length).toBeGreaterThan(0));
+
+  test.do(() => musicFn().checked = true);
+  test.event("change", musicFn, () => outputFn().textContent === "Music");
+  test.do(() => expect(outputFn().textContent).toBe("Music"));
+
+  test.do(() => geographyFn().checked = true);
+  test.event("change", geographyFn, () => outputFn().textContent === "Music, Geography");
+  test.do(() => expect(outputFn().textContent).toBe("Music, Geography"));
 
-  let TTT = new TobagoTestTool(assert);
-  TTT.action(function () {
-    selectableNoneFn().checked = true;
-    selectableNoneFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(inputFn(), null);
-  });
-  TTT.action(function () {
-    selectableMultiFn().checked = true;
-    selectableMultiFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.notEqual(inputFn(), null);
-  });
-  TTT.action(function () {
-    musicFn().checked = true;
-    musicFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(outputFn().textContent, "Music");
-  });
-  TTT.action(function () {
-    geographyFn().checked = true;
-    geographyFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(outputFn().textContent, "Music, Geography");
-  });
-  TTT.action(function () {
-    musicFn().checked = false;
-    musicFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(outputFn().textContent, "Geography");
-  });
-  TTT.startTest();
+  test.do(() => musicFn().checked = false);
+  test.event("change", musicFn, () => outputFn().textContent === "Geography");
+  test.do(() => expect(outputFn().textContent).toBe("Geography"));
+  test.start();
 });
 
-QUnit.test("multiLeafOnly: select Classic, select Geography, deselect Classic", function (assert) {
-  let classicFn = querySelectorFn("#page\\:mainForm\\:categoriesTree\\:4\\:select");
-  let geographyFn = querySelectorFn("#page\\:mainForm\\:categoriesTree\\:9\\:select");
-  let outputFn = querySelectorFn("#page\\:mainForm\\:selectedNodesOutput span");
-  let selectableNoneFn = querySelectorFn("#page\\:mainForm\\:selectable\\:\\:0");
-  let selectableMultiLeafOnlyFn = querySelectorFn("#page\\:mainForm\\:selectable\\:\\:4");
-  let inputFn = querySelectorFn("tobago-tree-select input");
+it("multiLeafOnly: select Classic, select Geography, deselect Classic", function (done) {
+  let radiosFn = querySelectorAllFn("#page\\:mainForm\\:categoriesTree input[type=radio]");
+  let checkboxesFn = querySelectorAllFn("#page\\:mainForm\\:categoriesTree input[type=checkbox]");
+  let selectableNoneFn = elementByIdFn("page:mainForm:selectable::0");
+  let selectableMultiLeafOnlyFn = elementByIdFn("page:mainForm:selectable::4");
+  let classicFn = elementByIdFn("page:mainForm:categoriesTree:4:select");
+  let geographyFn = elementByIdFn("page:mainForm:categoriesTree:10:select");
+  let outputFn = querySelectorFn("#page\\:mainForm\\:selectedNodesOutput tobago-out");
+
+  const test = new JasmineTestTool(done);
+  test.setup(() => radiosFn().length === 0 && checkboxesFn().length === 0,
+      () => selectableNoneFn().checked = true,
+      "change", selectableNoneFn);
+  test.do(() => expect(radiosFn().length).toEqual(0));
+  test.do(() => expect(checkboxesFn().length).toEqual(0));
+
+  test.do(() => selectableMultiLeafOnlyFn().checked = true);
+  test.event("change", selectableMultiLeafOnlyFn, () => checkboxesFn().length > 0);
+  test.do(() => expect(checkboxesFn().length).toBeGreaterThan(0));
 
-  let TTT = new TobagoTestTool(assert);
-  TTT.action(function () {
-    selectableNoneFn().checked = true;
-    selectableNoneFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(inputFn(), null);
-  });
-  TTT.action(function () {
-    selectableMultiLeafOnlyFn().checked = true;
-    selectableMultiLeafOnlyFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.notEqual(inputFn(), null);
-  });
-  TTT.action(function () {
-    classicFn().checked = true;
-    classicFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(outputFn().textContent, "Classic");
-  });
-  TTT.action(function () {
-    geographyFn().checked = true;
-    geographyFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(outputFn().textContent, "Classic, Geography");
-  });
-  TTT.action(function () {
-    classicFn().checked = false;
-    classicFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(outputFn().textContent, "Geography");
-  });
-  TTT.startTest();
+  test.do(() => classicFn().checked = true);
+  test.event("change", classicFn, () => outputFn().textContent === "Classic");
+  test.do(() => expect(outputFn().textContent).toBe("Classic"));
+
+  test.do(() => geographyFn().checked = true);
+  test.event("change", geographyFn, () => outputFn().textContent === "Classic, Geography");
+  test.do(() => expect(outputFn().textContent).toBe("Classic, Geography"));
+
+  test.do(() => classicFn().checked = false);
+  test.event("change", classicFn, () => outputFn().textContent === "Geography");
+  test.do(() => expect(outputFn().textContent).toBe("Geography"));
+  test.start();
 });
 
-QUnit.test("multiCascade: select Music, select Mathematics, deselect Classic", function (assert) {
-  let musicFn = querySelectorFn("#page\\:mainForm\\:categoriesTree\\:3\\:select");
-  let classicFn = querySelectorFn("#page\\:mainForm\\:categoriesTree\\:4\\:select");
-  let mathematicsFn = querySelectorFn("#page\\:mainForm\\:categoriesTree\\:9\\:select");
-  let outputFn = querySelectorFn("#page\\:mainForm\\:selectedNodesOutput span");
-  let selectableNoneFn = querySelectorFn("#page\\:mainForm\\:selectable\\:\\:0");
-  let selectableMultiCascadeFn = querySelectorFn("#page\\:mainForm\\:selectable\\:\\:5");
-  let inputFn = querySelectorFn("tobago-tree-select input");
+it("multiCascade: select Music, select Mathematics, deselect Classic", function (done) {
+  let radiosFn = querySelectorAllFn("#page\\:mainForm\\:categoriesTree input[type=radio]");
+  let checkboxesFn = querySelectorAllFn("#page\\:mainForm\\:categoriesTree input[type=checkbox]");
+  let selectableNoneFn = elementByIdFn("page:mainForm:selectable::0");
+  let selectableMultiCascadeFn = elementByIdFn("page:mainForm:selectable::5");
+  let musicFn = elementByIdFn("page:mainForm:categoriesTree:3:select");
+  let classicFn = elementByIdFn("page:mainForm:categoriesTree:4:select");
+  let mathematicsFn = elementByIdFn("page:mainForm:categoriesTree:9:select");
+  let outputFn = querySelectorFn("#page\\:mainForm\\:selectedNodesOutput tobago-out");
 
-  let TTT = new TobagoTestTool(assert);
-  TTT.action(function () {
-    selectableNoneFn().checked = true;
-    selectableNoneFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(inputFn(), null);
-  });
-  TTT.action(function () {
-    selectableMultiCascadeFn().checked = true;
-    selectableMultiCascadeFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.notEqual(inputFn(), null);
-  });
-  TTT.action(function () {
-    musicFn().checked = true;
-    musicFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse(); // an ajax request is send for every leaf (Music, Classic, Pop, World)
-  TTT.waitMs(2000); // wait for the last ajax
-  TTT.asserts(1, function () {
-    assert.equal(outputFn().textContent, "Music, Classic, Pop, World");
-  });
-  TTT.action(function () {
-    mathematicsFn().checked = true;
-    mathematicsFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(outputFn().textContent, "Music, Classic, Pop, World, Mathematics");
-  });
-  TTT.action(function () {
-    classicFn().checked = false;
-    classicFn().dispatchEvent(new Event("change", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.equal(outputFn().textContent, "Music, Pop, World, Mathematics");
-  });
-  TTT.startTest();
+  const test = new JasmineTestTool(done);
+  test.setup(() => radiosFn().length === 0 && checkboxesFn().length === 0,
+      () => selectableNoneFn().checked = true,
+      "change", selectableNoneFn);
+  test.do(() => expect(radiosFn().length).toEqual(0));
+  test.do(() => expect(checkboxesFn().length).toEqual(0));
+
+  test.do(() => selectableMultiCascadeFn().checked = true);
+  test.event("change", selectableMultiCascadeFn, () => checkboxesFn().length > 0);
+  test.do(() => expect(checkboxesFn().length).toBeGreaterThan(0));
+
+  test.do(() => musicFn().checked = true);
+  test.event("change", musicFn, () => outputFn().textContent === "Music, Classic, Pop, World");
+  test.do(() => expect(outputFn().textContent).toBe("Music, Classic, Pop, World"));
+
+  test.do(() => mathematicsFn().checked = true);
+  test.event("change", mathematicsFn, () => outputFn().textContent === "Music, Classic, Pop, World, Mathematics");
+  test.do(() => expect(outputFn().textContent).toBe("Music, Classic, Pop, World, Mathematics"));
+
+  test.do(() => classicFn().checked = false);
+  test.event("change", classicFn, () => outputFn().textContent === "Music, Pop, World, Mathematics");
+  test.do(() => expect(outputFn().textContent).toBe("Music, Pop, World, Mathematics"));
+  test.start();
 });
-*/
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/53-collapsible/10-collapsible-popup/Collapsible_Popup.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/53-collapsible/10-collapsible-popup/Collapsible_Popup.test.js
index 3e35a29..aee4965 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/53-collapsible/10-collapsible-popup/Collapsible_Popup.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/53-collapsible/10-collapsible-popup/Collapsible_Popup.test.js
@@ -19,7 +19,7 @@ import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
 
 it("not implemented yet", function (done) {
   let test = new JasmineTestTool(done);
-  test.do(() => fail("not implemented yet"));
+  test.do(() => fail("must be fixed first"));
   test.start();
 });
 
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/35-deprecated/15-suggest-method/Suggest_Method.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/35-deprecated/15-suggest-method/Suggest_Method.test.js
index c6673de..65abc4a 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/35-deprecated/15-suggest-method/Suggest_Method.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/35-deprecated/15-suggest-method/Suggest_Method.test.js
@@ -19,7 +19,7 @@ import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
 
 it("not implemented yet", function (done) {
   let test = new JasmineTestTool(done);
-  test.do(() => fail("not implemented yet"));
+  test.do(() => fail("must be fixed first"));
   test.start();
 });
 
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/1020-suggest-quotMark/Suggest_QuotMark.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/1020-suggest-quotMark/Suggest_QuotMark.test.js
index 22af9cb..323a73a 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/1020-suggest-quotMark/Suggest_QuotMark.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/1020-suggest-quotMark/Suggest_QuotMark.test.js
@@ -19,7 +19,7 @@ import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
 
 it("not implemented yet", function (done) {
   let test = new JasmineTestTool(done);
-  test.do(() => fail("not implemented yet"));
+  test.do(() => fail("must be fixed first"));
   test.start();
 });
 
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/1040-date/Date.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/1040-date/Date.test.js
index 8a0bbed..46c69a8 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/1040-date/Date.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/1040-date/Date.test.js
@@ -19,7 +19,7 @@ import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
 
 it("not implemented yet", function (done) {
   let test = new JasmineTestTool(done);
-  test.do(() => fail("not implemented yet"));
+  test.do(() => fail("must be fixed first"));
   test.start();
 });
 
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/1041-date-pattern/Date_Pattern.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/1041-date-pattern/Date_Pattern.test.js
index c4c7451..91ac112 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/1041-date-pattern/Date_Pattern.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/1041-date-pattern/Date_Pattern.test.js
@@ -19,7 +19,7 @@ import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
 
 it("not implemented yet", function (done) {
   let test = new JasmineTestTool(done);
-  test.do(() => fail("not implemented yet"));
+  test.do(() => fail("must be fixed first"));
   test.start();
 });
 
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button-link/4050-ajax-dropdown/Ajax_Dropdown.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button-link/4050-ajax-dropdown/Ajax_Dropdown.test.js
index 985c1bd..63fca43 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button-link/4050-ajax-dropdown/Ajax_Dropdown.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button-link/4050-ajax-dropdown/Ajax_Dropdown.test.js
@@ -16,49 +16,31 @@
  */
 
 import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
+import {elementByIdFn, querySelectorAllFn, querySelectorFn} from "/script/tobago-test.js";
 
-it("not implemented yet", function (done) {
-  let test = new JasmineTestTool(done);
-  test.do(() => fail("not implemented yet"));
-  test.start();
-});
+it("Execute 'AJAX' entry in dropdown menu", function (done) {
+  let dropdownButtonFn = elementByIdFn("page:mainForm:dropdownButton::command");
+  let dropdownMenuFn = querySelectorFn(".dropdown-menu[name=page\\:mainForm\\:dropdownButton]");
+  let dropdownAjaxEntryFn = elementByIdFn("page:mainForm:ajaxEntry");
+  let inputFn = elementByIdFn("page:mainForm:inputAjax::field");
+  let outputFn = querySelectorFn("#page\\:mainForm\\:outputAjax tobago-out");
 
-/*
-import {querySelectorFn} from "/script/tobago-test.js";
-import {TobagoTestTool} from "/tobago/test/tobago-test-tool.js";
+  const test = new JasmineTestTool(done);
+  // no test.setup() because controller is @RequestScoped
+  test.do(() => expect(dropdownMenuFn().classList).not.toContain("show"));
+  test.do(() => expect(outputFn().textContent).toBe(""));
 
-QUnit.test("Execute 'AJAX' entry in dropdown menu", function (assert) {
-  let dropdownMenuButtonFn = querySelectorFn("#page\\:mainForm\\:dropdownMenuButton\\:\\:command");
-  const ajaxEntryId = "#page\\:mainForm\\:ajaxEntry";
-  let ajaxEntryFn = querySelectorFn(ajaxEntryId);
-  let tobagoPageMenuStoreFn = querySelectorFn(".tobago-page-menuStore");
-  let inputFn = querySelectorFn("#page\\:mainForm\\:inputAjax\\:\\:field");
-  let outputFn = querySelectorFn("#page\\:mainForm\\:outputAjax .tobago-out");
+  test.event("click", dropdownButtonFn, () => dropdownMenuFn().classList.contains("show"));
+  test.do(() => expect(dropdownMenuFn().classList).toContain("show"));
+  test.do(() => expect(dropdownMenuFn().parentElement.classList).toContain("tobago-page-menuStore"));
 
-  let TTT = new TobagoTestTool(assert);
-  TTT.asserts(1, function () {
-    assert.ok(tobagoPageMenuStoreFn().querySelector(ajaxEntryId) === null, "Dropdown menu should be closed.");
-  });
-  TTT.action(function () {
-    dropdownMenuButtonFn().dispatchEvent(new Event("click", {bubbles: true}));
-  });
-  TTT.asserts(1, function () {
-    assert.ok(tobagoPageMenuStoreFn().querySelector(ajaxEntryId) !== null, "Dropdown menu should be opened.");
-  });
-  TTT.action(function () {
-    inputFn().value = "Tobago, yay!";
-  });
-  TTT.asserts(1, function () {
-    assert.equal(outputFn().textContent, "", "Output should be empty.");
-  });
-  TTT.action(function () {
-    ajaxEntryFn().dispatchEvent(new Event("click", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(2, function () {
-    assert.equal(outputFn().textContent, "Tobago, yay!");
-    assert.ok(tobagoPageMenuStoreFn().querySelector(ajaxEntryId) === null, "Dropdown menu should be closed.");
-  });
-  TTT.startTest();
+  test.do(() => inputFn().value = "Tobago");
+  test.event("click", dropdownAjaxEntryFn, () => outputFn().textContent === "Tobago");
+  test.do(() => expect(outputFn().textContent).toBe("Tobago"));
+  test.do(() => expect(dropdownMenuFn().classList)
+      .not.toContain("show", "dropdown menu should be closed after menu entry is clicked"));
+
+  const pageOverlays = querySelectorAllFn(".tobago-page-overlay");
+  test.do(() => expect(pageOverlays().length).toBe(0, "there must be no tobago-page-overlay"));
+  test.start();
 });
-*/
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button-link/4050-ajax-dropdown/Ajax_Dropdown.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button-link/4050-ajax-dropdown/Ajax_Dropdown.xhtml
index ae1ad80..263868d 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button-link/4050-ajax-dropdown/Ajax_Dropdown.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button-link/4050-ajax-dropdown/Ajax_Dropdown.xhtml
@@ -24,7 +24,7 @@
   <p>The dropdown menu should be closed, after clicking the 'AJAX' entry in the dropdown menu.</p>
 
   <tc:section label="Dropdown with AJAX command">
-    <tc:button id="dropdownMenuButton" label="Dropdown Menu" omit="true">
+    <tc:button id="dropdownButton" label="Dropdown Menu" omit="true">
       <tc:link id="ajaxEntry" label="AJAX">
         <f:ajax execute="inputAjax" render="outputAjax"/>
       </tc:link>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button-link/Button_Link.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button-link/Button_Link.test.js
index 4c8712a..2868cc2 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button-link/Button_Link.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button-link/Button_Link.test.js
@@ -19,7 +19,7 @@ import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
 
 it("not implemented yet", function (done) {
   let test = new JasmineTestTool(done);
-  test.do(() => fail("not implemented yet"));
+  test.do(() => fail("must be fixed first"));
   test.start();
 });
 /*
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4600-gridLayout/100-auto-column/Auto-Column.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4600-gridLayout/100-auto-column/Auto-Column.test.js
index 2db073c..72044bd 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4600-gridLayout/100-auto-column/Auto-Column.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4600-gridLayout/100-auto-column/Auto-Column.test.js
@@ -16,23 +16,14 @@
  */
 
 import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
+import {elementByIdFn} from "/script/tobago-test.js";
+
+it("test width of grid layout and 'auto' button", function (done) {
+  let gridLayoutFn = elementByIdFn("page:mainForm:grid");
+  let buttonAutoFn = elementByIdFn("page:mainForm:buttonAuto");
 
-it("not implemented yet", function (done) {
   let test = new JasmineTestTool(done);
-  test.do(() => fail("not implemented yet"));
+  test.do(() => expect(gridLayoutFn().offsetWidth).toEqual(266));
+  test.do(() => expect(buttonAutoFn().offsetWidth).toBeLessThan(65));
   test.start();
 });
-
-/*
-import {querySelectorFn} from "/script/tobago-test.js";
-
-QUnit.test("test width of grid layout and 'auto' button", function (assert) {
-  assert.expect(2);
-
-  let gridLayoutFn = querySelectorFn("#page\\:mainForm\\:grid");
-  let buttonAutoFn = querySelectorFn("#page\\:mainForm\\:buttonAuto");
-
-  assert.equal(gridLayoutFn().offsetWidth, 358);
-  assert.equal(buttonAutoFn().offsetWidth, 58);
-});
-*/
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4600-gridLayout/100-auto-column/Auto-Column.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4600-gridLayout/100-auto-column/Auto-Column.xhtml
index a8d154e..9dc3fce 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4600-gridLayout/100-auto-column/Auto-Column.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4600-gridLayout/100-auto-column/Auto-Column.xhtml
@@ -21,8 +21,8 @@
                 xmlns="http://www.w3.org/1999/xhtml"
                 xmlns:tc="http://myfaces.apache.org/tobago/component"
                 xmlns:ui="http://java.sun.com/jsf/facelets">
-  <tc:box label="'auto' value">
-    <tc:style width="400px"/>
+  <tc:box id="surroundingBox" label="'auto' value">
+    <tc:style width="300px"/>
     <p>Grid Layout - column with 'auto' but without '*'</p>
     <tc:gridLayout id="grid" columns="100px auto">
       <tc:button id="button100Px" label="100px"/>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4600-gridLayout/90-style-tag/Style_Tag.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4600-gridLayout/90-style-tag/Style_Tag.test.js
index d8d61d6..d75ea32 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4600-gridLayout/90-style-tag/Style_Tag.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4600-gridLayout/90-style-tag/Style_Tag.test.js
@@ -16,32 +16,21 @@
  */
 
 import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
+import {elementByIdFn, querySelectorFn} from "/script/tobago-test.js";
 
-it("not implemented yet", function (done) {
-  let test = new JasmineTestTool(done);
-  test.do(() => fail("not implemented yet"));
-  test.start();
-});
+it("Style tag inside grid layout", function (done) {
+  let submitFn = elementByIdFn("page:mainForm:submitButton");
+  let outputFn = querySelectorFn("#page\\:mainForm\\:output tobago-out");
+  let timestampFn = querySelectorFn("#page\\:mainForm\\:timestamp tobago-out");
+  let timestamp;
 
-/*
-import {querySelectorFn} from "/script/tobago-test.js";
-import {TobagoTestTool} from "/tobago/test/tobago-test-tool.js";
-
-QUnit.test("Style tag inside grid layout", function (assert) {
-  let outputFn = querySelectorFn("#page\\:mainForm\\:output .tobago-out");
-  let buttonFn = querySelectorFn("#page\\:mainForm\\:submitButton");
+  let test = new JasmineTestTool(done);
+  test.do(() => expect(outputFn().classList).toContain("text-warning"));
+  test.do(() => timestamp = timestampFn().textContent)
+  test.event("click", submitFn, () => timestamp < timestampFn().textContent);
+  test.do(() => expect(timestamp < timestampFn().textContent)
+      .toBe(true, "value of new timestamp must be higher"));
+  test.do(() => expect(outputFn().classList).toContain("text-warning"));
 
-  let TTT = new TobagoTestTool(assert);
-  TTT.asserts(1, function () {
-    assert.ok(outputFn().classList.contains("text-warning"));
-  });
-  TTT.action(function () {
-    buttonFn().dispatchEvent(new Event("click", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(1, function () {
-    assert.ok(outputFn().classList.contains("text-warning"));
-  });
-  TTT.startTest();
+  test.start();
 });
-*/
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4600-gridLayout/90-style-tag/Style_Tag.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4600-gridLayout/90-style-tag/Style_Tag.xhtml
index 5339b14..02cf01a 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4600-gridLayout/90-style-tag/Style_Tag.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4600-gridLayout/90-style-tag/Style_Tag.xhtml
@@ -34,5 +34,6 @@
         <tc:in value="Input"/>
       </tc:gridLayout>
     </tc:box>
+    <tc:out id="timestamp" label="Timestamp" value="#{eventController.currentTimestamp}"/>
   </tc:section>
 </ui:composition>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4810-labelLayoutTop/LabelLayoutTop.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4810-labelLayoutTop/LabelLayoutTop.test.js
index 7cd431f..f51a5e0 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4810-labelLayoutTop/LabelLayoutTop.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4810-labelLayoutTop/LabelLayoutTop.test.js
@@ -17,7 +17,7 @@
 
 import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
 
-it("not implemented yet", function (done) {
+it("fix tc:file first", function (done) {
   let test = new JasmineTestTool(done);
   test.do(() => fail("not implemented yet"));
   test.start();
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4950-severity/Severity.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4950-severity/Severity.test.js
index 0377b17..6df4cdc 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4950-severity/Severity.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4950-severity/Severity.test.js
@@ -17,7 +17,7 @@
 
 import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
 
-it("not implemented yet", function (done) {
+it("must be fixed first", function (done) {
   let test = new JasmineTestTool(done);
   test.do(() => fail("not implemented yet"));
   test.start();
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/20-ajax-execute/Ajax_Execute.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/20-ajax-execute/Ajax_Execute.test.js
index c48deea..204d8a1 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/20-ajax-execute/Ajax_Execute.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/20-ajax-execute/Ajax_Execute.test.js
@@ -16,64 +16,46 @@
  */
 
 import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
+import {elementByIdFn} from "/script/tobago-test.js";
 
-it("not implemented yet", function (done) {
-  let test = new JasmineTestTool(done);
-  test.do(() => fail("not implemented yet"));
-  test.start();
-});
-/*
-import {querySelectorFn} from "/script/tobago-test.js";
-import {TobagoTestTool} from "/tobago/test/tobago-test-tool.js";
+it("ajax execute", function (done) {
+  let in1Fn = elementByIdFn("page:mainForm:in1::field");
+  let in2Fn = elementByIdFn("page:mainForm:in2::field");
+  let in3Fn = elementByIdFn("page:mainForm:in3::field");
+  let in4Fn = elementByIdFn("page:mainForm:in4::field");
+  let clearButtonFn = elementByIdFn("page:mainForm:clear");
+  let submitButtonFn = elementByIdFn("page:mainForm:submit");
+  let reloadButtonFn = elementByIdFn("page:mainForm:reload");
+
+  const test = new JasmineTestTool(done);
+  test.setup(
+      () => in1Fn().value === "" && in2Fn().value === "" && in3Fn().value === "" && in4Fn().value === "",
+      null, "click", clearButtonFn);
+  test.do(() => expect(in1Fn().value).toBe(""));
+  test.do(() => expect(in2Fn().value).toBe(""));
+  test.do(() => expect(in3Fn().value).toBe(""));
+  test.do(() => expect(in4Fn().value).toBe(""));
 
-QUnit.test("ajax excecute", function (assert) {
-  let in1Fn = querySelectorFn("#page\\:mainForm\\:in1\\:\\:field");
-  let in2Fn = querySelectorFn("#page\\:mainForm\\:in2\\:\\:field");
-  let in3Fn = querySelectorFn("#page\\:mainForm\\:in3\\:\\:field");
-  let in4Fn = querySelectorFn("#page\\:mainForm\\:in4\\:\\:field");
-  let clearButtonFn = querySelectorFn("#page\\:mainForm\\:clear");
-  let submitButtonFn = querySelectorFn("#page\\:mainForm\\:submit");
-  let reloadButtonFn = querySelectorFn("#page\\:mainForm\\:reload");
+  test.do(() => in1Fn().value = "Alice");
+  test.do(() => in2Fn().value = "Bob");
+  test.do(() => in3Fn().value = "Charlie");
+  test.do(() => in4Fn().value = "Dave");
 
-  let TTT = new TobagoTestTool(assert);
-  TTT.action(function () {
-    in1Fn().value = "a";
-    in2Fn().value = "b";
-    in3Fn().value = "c";
-    in4Fn().value = "d";
-    clearButtonFn().dispatchEvent(new Event("click", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(4, function () {
-    assert.equal(in1Fn().value, "");
-    assert.equal(in2Fn().value, "");
-    assert.equal(in3Fn().value, "");
-    assert.equal(in4Fn().value, "");
-  });
-  TTT.action(function () {
-    in1Fn().value = "a";
-    in2Fn().value = "b";
-    in3Fn().value = "c";
-    in4Fn().value = "d";
-    submitButtonFn().dispatchEvent(new Event("click", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(4, function () {
-    assert.equal(in1Fn().value, "a");
-    assert.equal(in2Fn().value, "b");
-    assert.equal(in3Fn().value, "c");
-    assert.equal(in4Fn().value, "");
-  });
-  TTT.action(function () {
-    reloadButtonFn().dispatchEvent(new Event("click", {bubbles: true}));
-  });
-  TTT.waitForResponse();
-  TTT.asserts(4, function () {
-    assert.equal(in1Fn().value, "a");
-    assert.equal(in2Fn().value, "");
-    assert.equal(in3Fn().value, "c");
-    assert.equal(in4Fn().value, "");
-  });
-  TTT.startTest();
+  test.event("click", submitButtonFn,
+      () => in1Fn().value === "Alice" && in2Fn().value === "Bob"
+          && in3Fn().value === "Charlie" && in4Fn().value === "");
+  test.do(() => expect(in1Fn().value).toBe("Alice"));
+  test.do(() => expect(in2Fn().value).toBe("Bob"));
+  test.do(() => expect(in3Fn().value).toBe("Charlie"));
+  test.do(() => expect(in4Fn().value).toBe(""));
+
+  test.event("click", reloadButtonFn,
+      () => in1Fn().value === "Alice" && in2Fn().value === ""
+          && in3Fn().value === "Charlie" && in4Fn().value === "");
+  test.do(() => expect(in1Fn().value).toBe("Alice"));
+  test.do(() => expect(in2Fn().value).toBe(""));
+  test.do(() => expect(in3Fn().value).toBe("Charlie"));
+  test.do(() => expect(in4Fn().value).toBe(""));
+
+  test.start();
 });
-*/
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/20-ajax-execute/Ajax_Execute.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/20-ajax-execute/Ajax_Execute.xhtml
index b8b1c8e..e0d5957 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/20-ajax-execute/Ajax_Execute.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/20-ajax-execute/Ajax_Execute.xhtml
@@ -51,7 +51,7 @@
     <tc:out value="Execute field 1 and 3 and render the box.
       The result is, field 1, 2 and 3 are set and field 4 is cleared.
       This is, because field 1 and 2 are not rendered (so they are untouched).
-      Field 3 and 4 are rerendered, but only filed 3 has a value, because it was executed
+      Field 3 and 4 are rerendered, but only field 3 has a value, because it was executed
       in contrast to field 4."/>
 
     <tc:button label="4. Full Reload" id="reload" immediate="true">
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/30-ajax-special-character/Ajax_Special_Character.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/30-ajax-special-character/Ajax_Special_Character.test.js
index 0514db2..21dbc01 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/30-ajax-special-character/Ajax_Special_Character.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/30-ajax-special-character/Ajax_Special_Character.test.js
@@ -19,9 +19,9 @@ import {querySelectorFn} from "/script/tobago-test.js";
 import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
 
 it("ajax execute", function (done) {
-  let timestampFn = querySelectorFn("#page\\:mainForm\\:timestamp span");
-  let textFn = querySelectorFn("#page\\:mainForm\\:outText span");
-  let tipFn = querySelectorFn("#page\\:mainForm\\:outTip span");
+  let timestampFn = querySelectorFn("#page\\:mainForm\\:timestamp tobago-out");
+  let textFn = querySelectorFn("#page\\:mainForm\\:outText tobago-out");
+  let tipFn = querySelectorFn("#page\\:mainForm\\:outTip tobago-out");
   let buttonFn = querySelectorFn("#page\\:mainForm\\:ajaxButton");
 
   let timestampValue = timestampFn().textContent;
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/6000-event/Event.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/6000-event/Event.test.js
index dd7a828..57ed49a 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/6000-event/Event.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/6000-event/Event.test.js
@@ -17,7 +17,7 @@
 
 import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
 
-it("not implemented yet", function (done) {
+it("must be fixed first", function (done) {
   let test = new JasmineTestTool(done);
   test.do(() => fail("not implemented yet"));
   test.start();
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/6500-behavior/Behavior.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/6500-behavior/Behavior.test.js
index d7b7cae..2e8c3eb 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/6500-behavior/Behavior.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/6500-behavior/Behavior.test.js
@@ -17,7 +17,7 @@
 
 import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
 
-it("not implemented yet", function (done) {
+it("must be fixed first", function (done) {
   let test = new JasmineTestTool(done);
   test.do(() => fail("not implemented yet"));
   test.start();