diff --git a/maud/tests/warnings/attribute-missing-value.rs b/maud/tests/warnings/attribute-missing-value.rs
new file mode 100644
index 0000000..fc27c51
--- /dev/null
+++ b/maud/tests/warnings/attribute-missing-value.rs
@@ -0,0 +1,7 @@
+use maud::html;
+
+fn main() {
+    html! {
+        a href=
+    };
+}
diff --git a/maud/tests/warnings/attribute-missing-value.stderr b/maud/tests/warnings/attribute-missing-value.stderr
new file mode 100644
index 0000000..ee35006
--- /dev/null
+++ b/maud/tests/warnings/attribute-missing-value.stderr
@@ -0,0 +1,9 @@
+error: unexpected end of input
+ --> $DIR/attribute-missing-value.rs:4:5
+  |
+4 | /     html! {
+5 | |         a href=
+6 | |     };
+  | |______^
+  |
+  = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/maud/tests/warnings/class-shorthand-missing-value.rs b/maud/tests/warnings/class-shorthand-missing-value.rs
new file mode 100644
index 0000000..e2f3dfb
--- /dev/null
+++ b/maud/tests/warnings/class-shorthand-missing-value.rs
@@ -0,0 +1,7 @@
+use maud::html;
+
+fn main() {
+    html! {
+        p.
+    };
+}
diff --git a/maud/tests/warnings/class-shorthand-missing-value.stderr b/maud/tests/warnings/class-shorthand-missing-value.stderr
new file mode 100644
index 0000000..0b946d1
--- /dev/null
+++ b/maud/tests/warnings/class-shorthand-missing-value.stderr
@@ -0,0 +1,9 @@
+error: unexpected end of input
+ --> $DIR/class-shorthand-missing-value.rs:4:5
+  |
+4 | /     html! {
+5 | |         p.
+6 | |     };
+  | |______^
+  |
+  = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/maud/tests/warnings/element-missing-body.rs b/maud/tests/warnings/element-missing-body.rs
new file mode 100644
index 0000000..ff59cb6
--- /dev/null
+++ b/maud/tests/warnings/element-missing-body.rs
@@ -0,0 +1,7 @@
+use maud::html;
+
+fn main() {
+    html! {
+        p
+    };
+}
diff --git a/maud/tests/warnings/element-missing-body.stderr b/maud/tests/warnings/element-missing-body.stderr
new file mode 100644
index 0000000..6d3ffb1
--- /dev/null
+++ b/maud/tests/warnings/element-missing-body.stderr
@@ -0,0 +1,9 @@
+error: unexpected end of input
+ --> $DIR/element-missing-body.rs:4:5
+  |
+4 | /     html! {
+5 | |         p
+6 | |     };
+  | |______^
+  |
+  = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/maud/tests/warnings/non-string-literal.rs b/maud/tests/warnings/non-string-literal.rs
new file mode 100644
index 0000000..b40dbf5
--- /dev/null
+++ b/maud/tests/warnings/non-string-literal.rs
@@ -0,0 +1,7 @@
+use maud::html;
+
+fn main() {
+    html! {
+        42
+    };
+}
diff --git a/maud/tests/warnings/non-string-literal.stderr b/maud/tests/warnings/non-string-literal.stderr
new file mode 100644
index 0000000..4f9729d
--- /dev/null
+++ b/maud/tests/warnings/non-string-literal.stderr
@@ -0,0 +1,5 @@
+error: expected string
+ --> $DIR/non-string-literal.rs:5:9
+  |
+5 |         42
+  |         ^^