+ source text before the summary
+
+ nested summary is not the details summary
+
+ visible summary
+
+ hidden descendant
+
+ later summary is content
+
+
+ "#,
+ );
+ let layout = layout_dom(&tree, (400.0, 200.0));
+ let id = |name| tree.get_element_by_id(name).unwrap();
+
+ assert!(layout.rects.contains_key(&id("closed")));
+ assert!(layout.rects.contains_key(&id("first")));
+ for hidden in ["before", "nested", "content", "descendant", "second"] {
+ assert!(
+ !layout.rects.contains_key(&id(hidden)),
+ "closed details content must not generate a box: {hidden}"
+ );
+ }
+ assert!(
+ (layout.rects[&id("closed")].height - 20.0).abs() < 0.1,
+ "only the first direct summary contributes to closed details geometry"
+ );
+}
+
+#[test]
+fn open_details_lays_out_all_of_its_content() {
+ let tree = parse_html(
+ r#"
+
+