diff --git a/editions/test/tiddlers/tests/test-html-parser.js b/editions/test/tiddlers/tests/test-html-parser.js
new file mode 100644
index 000000000..f8db75164
--- /dev/null
+++ b/editions/test/tiddlers/tests/test-html-parser.js
@@ -0,0 +1,80 @@
+/*\
+title: test-html-parser.js
+type: application/javascript
+tags: [[$:/tags/test-spec]]
+
+Tests the parse rule for HTML elements
+
+\*/
+(function(){
+
+/*jslint node: true, browser: true */
+/*global $tw: false */
+"use strict";
+
+describe("HTML tag parser tests", function() {
+
+ // Create a wiki
+ var wiki = new $tw.Wiki();
+
+ // Define a parsing shortcut
+ var parse = function(text) {
+ return wiki.parseText("text/vnd.tiddlywiki",text).tree;
+ };
+
+ it("should parse unclosed tags", function() {
+ expect(parse("
")).toEqual(
+
+ [ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'br', isBlock : false, attributes : { }, children : [ ] } ] } ]
+
+ );
+ expect(parse("")).toEqual(
+
+ [ { type : 'element', tag : 'p', children : [ { type : 'text', text : '' } ] } ]
+
+ );
+ expect(parse("
")).toEqual(
+
+ [ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { }, children : [ ] } ] } ]
+
+ );
+ expect(parse("
")).toEqual(
+
+ [ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { }, children : [ ] } ] } ]
+
+ );
+ expect(parse("
")).toEqual(
+
+ [ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { }, children : [ ] } ] } ]
+
+ );
+ expect(parse("
some text
")).toEqual(
+
+ [ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { }, children : [ { type : 'text', text : 'some text' } ] } ] } ]
+
+ );
+ expect(parse("
some text
")).toEqual(
+
+ [ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { attribute : { type : 'string', value : 'true' } }, children : [ { type : 'text', text : 'some text' } ] } ] } ]
+
+ );
+ expect(parse("
some text
")).toEqual(
+
+ [ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { attribute : { type : 'string', value : 'value' } }, children : [ { type : 'text', text : 'some text' } ] } ] } ]
+
+ );
+ expect(parse("
some text
")).toEqual(
+
+ [ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { attribute : { type : 'indirect', textReference : 'TiddlerTitle' } }, children : [ { type : 'text', text : 'some text' } ] } ] } ]
+
+ );
+ expect(parse("
some text
")).toEqual(
+
+ [ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { attribute : { type : 'indirect', textReference : 'TiddlerTitle!!field' } }, children : [ { type : 'text', text : 'some text' } ] } ] } ]
+
+ );
+ });
+
+});
+
+})();