diff --git a/engine/src/flutter/tests/TestExpectations b/engine/src/flutter/tests/TestExpectations
index b781ec733f..979e9bc803 100644
--- a/engine/src/flutter/tests/TestExpectations
+++ b/engine/src/flutter/tests/TestExpectations
@@ -7,3 +7,14 @@ crbug.com/1 mutation-observer/observer-wrapper-dropoff-transient.sky [ Skip ]
crbug.com/1 mutation-observer/observer-wrapper-dropoff.sky [ Skip ]
crbug.com/1 mutation-observer/transient-gc-crash.sky [ Skip ]
crbug.com/1 mutation-observer/weak-callback-gc-crash.sky [ Skip ]
+
+# These tests need more basic testing support plumbed right into the
+# platform, which we don't currently have:
+https://github.com/domokit/mojo/issues/15 parser/cr.sky [ Skip ]
+https://github.com/domokit/mojo/issues/15 parser/empty.sky [ Skip ]
+#https://github.com/domokit/mojo/issues/15 parser/utf16.sky [ Skip ]
+
+# These tests fail
+https://github.com/domokit/mojo/issues/14 parser/normaliser-null.sky [ Crash ]
+https://github.com/domokit/mojo/issues/14 parser/utf16.sky [ Crash ]
+https://github.com/domokit/mojo/issues/16 parser/normaliser-crlf.sky [ Skip ]
diff --git a/engine/src/flutter/tests/parser/README.md b/engine/src/flutter/tests/parser/README.md
new file mode 100644
index 0000000000..9609a21ce2
--- /dev/null
+++ b/engine/src/flutter/tests/parser/README.md
@@ -0,0 +1,133 @@
+The empty, cr, and utf16 tests don't import the test framework so they
+currently hang until timeout. Really they should just check that
+nothing crashes. For now they are disabled.
+
+We should also test the following (each line is its own test):
+
+```
+<
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+a
+&
+
+
+
+
+
+
+&a
+&a;
+&;
+```
+
+We should also test:
+
+- multiple elements per page
+- signature stuff
+-
diff --git a/engine/src/flutter/tests/parser/control-expected.txt b/engine/src/flutter/tests/parser/control-expected.txt
new file mode 100644
index 0000000000..bf614e3e03
--- /dev/null
+++ b/engine/src/flutter/tests/parser/control-expected.txt
@@ -0,0 +1,8 @@
+
+
+
+THIS TEST SHOULD PASS
+(control test for success)
+
+
+
diff --git a/engine/src/flutter/tests/parser/control.sky b/engine/src/flutter/tests/parser/control.sky
new file mode 100644
index 0000000000..ddcd9cc118
--- /dev/null
+++ b/engine/src/flutter/tests/parser/control.sky
@@ -0,0 +1,7 @@
+
+
+
+THIS TEST SHOULD PASS
+(control test for success)
+
+
diff --git a/engine/src/flutter/tests/parser/cr-expected.txt b/engine/src/flutter/tests/parser/cr-expected.txt
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/engine/src/flutter/tests/parser/cr.sky b/engine/src/flutter/tests/parser/cr.sky
new file mode 100644
index 0000000000..45a8ca02bf
--- /dev/null
+++ b/engine/src/flutter/tests/parser/cr.sky
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/engine/src/flutter/tests/parser/empty-expected.txt b/engine/src/flutter/tests/parser/empty-expected.txt
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/engine/src/flutter/tests/parser/empty.sky b/engine/src/flutter/tests/parser/empty.sky
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/engine/src/flutter/tests/parser/endtag-expected.txt b/engine/src/flutter/tests/parser/endtag-expected.txt
new file mode 100644
index 0000000000..908013bea6
--- /dev/null
+++ b/engine/src/flutter/tests/parser/endtag-expected.txt
@@ -0,0 +1,11 @@
+
+
+
+
+1
+2
+3
+4;>
+
+
+
diff --git a/engine/src/flutter/tests/parser/endtag.sky b/engine/src/flutter/tests/parser/endtag.sky
new file mode 100644
index 0000000000..6f0a6f6342
--- /dev/null
+++ b/engine/src/flutter/tests/parser/endtag.sky
@@ -0,0 +1,10 @@
+
+
+
+
+1
+2
+3
+4;>
+
+
diff --git a/engine/src/flutter/tests/parser/html-expected.txt b/engine/src/flutter/tests/parser/html-expected.txt
new file mode 100644
index 0000000000..63c2f1cdde
--- /dev/null
+++ b/engine/src/flutter/tests/parser/html-expected.txt
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML>
+
+
+
+
+A <!DOCTYPE HTMLAGAIN>
+B <!BOGUSCOMMENT>
+C
+E
+G <! -- -- >
+H
+I
+J
+K
+L
+M
+N
+O
+P
+
+
+
diff --git a/engine/src/flutter/tests/parser/html.sky b/engine/src/flutter/tests/parser/html.sky
new file mode 100644
index 0000000000..eb16312bf4
--- /dev/null
+++ b/engine/src/flutter/tests/parser/html.sky
@@ -0,0 +1,23 @@
+
+
+
+
+
+A
+B
+C
+D -->
+E
+G
+H
+I
+J
+K
+L
+M
+N
+O
+P
+
+
diff --git a/engine/src/flutter/tests/parser/normaliser-crlf-expected.txt b/engine/src/flutter/tests/parser/normaliser-crlf-expected.txt
new file mode 100644
index 0000000000..964136e0e2
--- /dev/null
+++ b/engine/src/flutter/tests/parser/normaliser-crlf-expected.txt
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/engine/src/flutter/tests/parser/normaliser-crlf.sky b/engine/src/flutter/tests/parser/normaliser-crlf.sky
new file mode 100644
index 0000000000..b898f2b435
--- /dev/null
+++ b/engine/src/flutter/tests/parser/normaliser-crlf.sky
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/engine/src/flutter/tests/parser/normaliser-null-expected.txt b/engine/src/flutter/tests/parser/normaliser-null-expected.txt
new file mode 100644
index 0000000000..18b4d1ea2b
--- /dev/null
+++ b/engine/src/flutter/tests/parser/normaliser-null-expected.txt
@@ -0,0 +1,12 @@
+
+
+
+�
+�����
+��
+��
+���
+���
+
+
+
diff --git a/engine/src/flutter/tests/parser/normaliser-null.sky b/engine/src/flutter/tests/parser/normaliser-null.sky
new file mode 100644
index 0000000000..6f63b69a61
Binary files /dev/null and b/engine/src/flutter/tests/parser/normaliser-null.sky differ
diff --git a/engine/src/flutter/tests/parser/script-expected.txt b/engine/src/flutter/tests/parser/script-expected.txt
new file mode 100644
index 0000000000..8bbdefd4f5
--- /dev/null
+++ b/engine/src/flutter/tests/parser/script-expected.txt
@@ -0,0 +1,57 @@
+ERROR: Uncaught SyntaxError: Unexpected token <
+SOURCE: http://127.0.0.1:8000/parser/script.sky:3
+ERROR: Uncaught SyntaxError: Unexpected token <
+SOURCE: http://127.0.0.1:8000/parser/script.sky:3
+ERROR: Uncaught SyntaxError: Unexpected token <
+SOURCE: http://127.0.0.1:8000/parser/script.sky:3
+ERROR: Uncaught ReferenceError: TEST is not defined
+SOURCE: http://127.0.0.1:8000/parser/script.sky:2
+ERROR: Uncaught SyntaxError: Invalid regular expression: missing /
+SOURCE: http://127.0.0.1:8000/parser/script.sky:2
+ERROR: Uncaught SyntaxError: Invalid regular expression: missing /
+SOURCE: http://127.0.0.1:8000/parser/script.sky:2
+ERROR: Uncaught SyntaxError: Unexpected token }
+SOURCE: http://127.0.0.1:8000/parser/script.sky:4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<
+script
+> TEST
+
+
+
+
+
+
+
+
+
diff --git a/engine/src/flutter/tests/parser/script.sky b/engine/src/flutter/tests/parser/script.sky
new file mode 100644
index 0000000000..7d44eb3ebe
--- /dev/null
+++ b/engine/src/flutter/tests/parser/script.sky
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<
+script
+> TEST
+
+
+
+
+
+
+
+
diff --git a/engine/src/flutter/tests/parser/starttag-expected.txt b/engine/src/flutter/tests/parser/starttag-expected.txt
new file mode 100644
index 0000000000..db3ad5c293
--- /dev/null
+++ b/engine/src/flutter/tests/parser/starttag-expected.txt
@@ -0,0 +1,28 @@
+
+
+
+
+ 1
+
+2
+3
+4
+5
+6
+7
+
+< a>8</ a>
+<.a>9
+<_a>a
+<-a>b-a>
+<!a>c</!a>
+<%a>d</%a>
+
+
+
+
+
+
+
+
+
diff --git a/engine/src/flutter/tests/parser/starttag.sky b/engine/src/flutter/tests/parser/starttag.sky
new file mode 100644
index 0000000000..fc56f31436
--- /dev/null
+++ b/engine/src/flutter/tests/parser/starttag.sky
@@ -0,0 +1,77 @@
+
+
+
+
+ 1
+
+2
+3
+4
+5
+6
+7
+
+< a>8 a>
+<.a>9
+<_a>a
+<-a>b-a>
+c!a>
+<%a>d%a>
+
+
+
+
+
+
+
+
diff --git a/engine/src/flutter/tests/parser/style-expected.txt b/engine/src/flutter/tests/parser/style-expected.txt
new file mode 100644
index 0000000000..2c4eb18f13
--- /dev/null
+++ b/engine/src/flutter/tests/parser/style-expected.txt
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+& TEST
+
+
+
+& TEST
+
+& TEST
+
+
+
+
+<
+style
+> & TEST
+
+& TEST
+
+
+
+
+
+
+
+& TEST
+
+
+
diff --git a/engine/src/flutter/tests/parser/style.sky b/engine/src/flutter/tests/parser/style.sky
new file mode 100644
index 0000000000..c3bec9f15f
--- /dev/null
+++ b/engine/src/flutter/tests/parser/style.sky
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+& TEST
+
+
+
+& TEST
+
+& TEST
+
+
+
+
+<
+style
+> & TEST
+
+& TEST
+
+
+
+
+
+
+
+& TEST
+
+
diff --git a/engine/src/flutter/tests/parser/utf16-expected.txt b/engine/src/flutter/tests/parser/utf16-expected.txt
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/engine/src/flutter/tests/parser/utf16.sky b/engine/src/flutter/tests/parser/utf16.sky
new file mode 100644
index 0000000000..63c8c19814
Binary files /dev/null and b/engine/src/flutter/tests/parser/utf16.sky differ
diff --git a/engine/src/flutter/tests/parser/voidtag-expected.txt b/engine/src/flutter/tests/parser/voidtag-expected.txt
new file mode 100644
index 0000000000..14aa6a5171
--- /dev/null
+++ b/engine/src/flutter/tests/parser/voidtag-expected.txt
@@ -0,0 +1,23 @@
+
+
+
+
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+
+
+
diff --git a/engine/src/flutter/tests/parser/voidtag.sky b/engine/src/flutter/tests/parser/voidtag.sky
new file mode 100644
index 0000000000..54d6c11250
--- /dev/null
+++ b/engine/src/flutter/tests/parser/voidtag.sky
@@ -0,0 +1,22 @@
+
+
+
+
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+ a
+
+