diff --git a/src/components/main/layout/construct.rs b/src/components/main/layout/construct.rs
index 82026d28bce..bf5ed0673d0 100644
--- a/src/components/main/layout/construct.rs
+++ b/src/components/main/layout/construct.rs
@@ -558,6 +558,9 @@ impl<'a> FlowConstructor<'a> {
// Concatenate all the boxes of our kids, creating {ib} splits as necessary.
for kid in node.children() {
+ if kid.get_element_type() != Normal {
+ self.process(&kid);
+ }
match kid.swap_out_construction_result() {
NoConstructionResult => {}
FlowConstructionResult(flow, kid_abs_descendants) => {
diff --git a/src/test/html/test_pseudo.html b/src/test/html/test_pseudo.html
new file mode 100644
index 00000000000..bfe528df145
--- /dev/null
+++ b/src/test/html/test_pseudo.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+, S
+, S
+Servo
+R
+
+
diff --git a/src/test/ref/basic.list b/src/test/ref/basic.list
index d59e1fb229f..55b6aad9506 100644
--- a/src/test/ref/basic.list
+++ b/src/test/ref/basic.list
@@ -66,3 +66,4 @@
== background_repeat_none_a.html background_repeat_none_b.html
== background_repeat_both_a.html background_repeat_both_b.html
== setattribute_id_restyle_a.html setattribute_id_restyle_b.html
+== pseudo_element_a.html pseudo_element_b.html
diff --git a/src/test/ref/pseudo_element_a.html b/src/test/ref/pseudo_element_a.html
new file mode 100644
index 00000000000..4700d0e593a
--- /dev/null
+++ b/src/test/ref/pseudo_element_a.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+, S
+, S
+Servo
+R
+
+
diff --git a/src/test/ref/pseudo_element_b.html b/src/test/ref/pseudo_element_b.html
new file mode 100644
index 00000000000..892ce7ed4d9
--- /dev/null
+++ b/src/test/ref/pseudo_element_b.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+Hello, Servo
+Hello, Servo
+Smile
+Servo
+And thanks
+Hello,
+Rust
+
+