Docs improvements

This commit is contained in:
Jeremy Ruston 2024-05-05 21:55:07 +01:00
parent 08913314c5
commit 6b4bd4728a
4 changed files with 82 additions and 15 deletions

View File

@ -0,0 +1,13 @@
title: TestCaseTiddlers
Behind the scenes, the templates used to view TestCaseTiddlers use the <<.wlink TestCaseWidget>> widget.
! Testcase Conventions
The following conventions are used for testcase tiddlers:
* `Description` contains a brief description of the test (rendered in inline mode)
* `Output` contains the tiddler text to be rendered. It can also reference other tiddlers
* `ExpectedResult` contains the HTML that should match the rendering of the tiddler `Output`

View File

@ -0,0 +1,11 @@
title: TestCases/TestCaseWidget/FailingTest
type: text/vnd.tiddlywiki-multiple
tags: [[$:/tags/wiki-test-spec]]
description: An example of a failing test
title: Output
The sum is <$text text={{{ [[2]add[2]] }}}/>.
+
title: ExpectedResult
text: The sum is not 8.

View File

@ -0,0 +1,19 @@
title: TestCases/TranscludeWidget/SimpleTransclusion
type: text/vnd.tiddlywiki-multiple
tags: [[$:/tags/wiki-test-spec]]
description: Simple transclusion
title: Output
Good morning, my name is {{Name}} and I live in {{Address}}
+
title: Name
Robert Rabbit
+
title: Address
14 Carrot Street, Vegetabletown
+
title: ExpectedResult
text: <p>Good morning, my name is Robert Rabbit and I live in 14 Carrot Street, Vegetabletown</p>

View File

@ -7,18 +7,50 @@ type: text/vnd.tiddlywiki
! Introduction
The testcase widget creates an independent subwiki loaded with the specified payload tiddlers and then renders a specified template from within the subwiki.The default template displays a split view with the source tiddlers on the left and the rendered tiddler titled `Output` on the right. It also displays the tiddler titled `Description` as the heading. This makes it possible to run independent tests that also serve as documentation examples.
The <<.wid testcase>> widget is designed to present interactive example test cases that are useful for learning and testing. It functions by creating an independent subwiki loaded with the specified payload tiddlers and then rendering a specified template from within the subwiki. The <<.wid testcase>> widget can optionally also be used to run and verify test results within the subwiki.
The testcase widget can optionally also be used to run and verify test results within the subwiki.
The default template displays a split view with the source tiddlers on the left and the rendered tiddler titled `Output` on the right. It also displays the tiddler titled `Description` as the heading. This makes it possible to run independent tests that also serve as documentation examples.
The testcase widget creates a lightweight TiddlyWiki environment with the following important limitations:
For example:
{{TestCases/TranscludeWidget/SimpleTransclusion||$:/core/ui/TestCaseTemplate}}
!! Features
The payload tiddlers listed in the tabs on the left are editable, with the results being immediately reflected in the preview pane on the right. However, if the <<.wid testcase>> widget is refreshed then the modifications are lost.
The green tick at the top left of a testcase indicates it a test has been set up and that it passes.
If the test fails, then the differences are shown:
{{TestCases/TestCaseWidget/FailingTest||$:/core/ui/TestCaseTemplate}}
To be more precise, the rendered HTML output matches the expected test results.
<$testcase>
<$data title="Description" text="Simple example of a testcase with expected results"/>
<$data title="Output" text="""<$testcase testOutput="Output" testExpectedResult="ExpectedResult">
<$data title="Description" text="How to calculate 2 plus 2"/>
<$data title="Output" text="<$text text={{{ [[2]add[2]] }}}/>"/>
<$data title="ExpectedResult" text="<p>8</p>"/>
</$testcase>
"""/>
</$testcase>
!! Usage
The <<.wid testcase>> widget can be used directly as documented below, but it is generally easier and more flexible to create [[TestCaseTiddlers]]. These are special, self contained tiddlers that can contain multiple payload tiddlers making up a testcase.
! Limitations
The <<.wid testcase>> widget creates a lightweight TiddlyWiki environment that is a parasite of the main wiki. Because it is not a full, independent TiddlyWiki environment, there are some important limitations:
* Output is rendered into a DIV, and so cannot be styled independently of the host wiki
* Any changes to the wiki made interactively by the user are volatile, and are lost when the testcase widget is refreshed
* Any changes to the wiki made interactively by the user are volatile, and are lost when the <<.wid testcase>> widget is refreshed
* Startup actions are not supported
* Only plugins available in the host wiki can be included in the testcase
The [[Innerwiki Plugin]] offers the ability to embed a fully independent subwiki via an `<iframe>` element, but without the testing related features of the testcase widget.
If these limitations are a problem, the [[Innerwiki Plugin]] offers the ability to embed a fully independent subwiki via an `<iframe>` element, but without the testing related features of the <<.wid testcase>> widget.
! Content and Attributes
@ -29,7 +61,7 @@ The content of the `<$testcase>` widget is not displayed but instead is scanned
|<<.attr testOutput>> |Optional title of the tiddler whose output should be subject to testing (note that both <<.attr testOutput>> and <<.attr testExpectedResult>> must be provided in order for testing to occur) |
|<<.attr testExpectedResult>> |Optional title of the tiddler whose content is the expected result of rendering the output tiddler (note that both <<.attr testOutput>> and <<.attr testExpectedResult>> must be provided in order for testing to occur) |
|<<.attr testActions>> |Optional title of the tiddler containing actions that should be executed before the test occurs |
|<<.attr testHideIfPass>> |If set to "yes", hides the testcase widget if the test passes |
|<<.attr testHideIfPass>> |If set to "yes", hides the <<.wid testcase>> widget if the test passes |
! Payload Tiddlers
@ -37,7 +69,7 @@ The payload tiddlers are the tiddler values that are loaded into the subwiki tha
! Testcase Template Variables
The testcase widget makes the following variables available within the rendered template:
The <<.wid testcase>> widget makes the following variables available within the rendered template:
|!Variable |!Description |
|<<.var transclusion>> |A hash that reflects the names and values of all the payload tiddlers. This makes it easier for testcase templates to create unique state tiddler titles using the [[qualify Macro]] or QualifyWidget |
@ -46,14 +78,6 @@ The testcase widget makes the following variables available within the rendered
|<<.var expectedHTML>> |The expected output HTML if running tests |
|<<.var testResult>> |The tests result if running tests (may be "pass" or "fail") |
! Testcase Conventions
The following conventions are used for testcase tiddlers:
* `Description` contains a brief description of the test (rendered in inline mode)
* `Output` contains the tiddler text to be rendered. It can also reference other tiddlers
* `ExpectedResult` contains the HTML that should match the rendering of the tiddler `Output`
! Example
<$testcase>