diff --git a/hakyll-diagrams.cabal b/hakyll-diagrams.cabal
--- a/hakyll-diagrams.cabal
+++ b/hakyll-diagrams.cabal
@@ -1,6 +1,6 @@
 cabal-version:      3.0
 name:               hakyll-diagrams
-version:            0.1.0.1
+version:            0.1.0.2
 
 synopsis: A Hakyll plugin for rendering diagrams figures from embedded Haskell code.
 
@@ -50,6 +50,29 @@
 extra-doc-files:    docs-data/target.svg
 
 tested-with: GHC == { 9.4.8, 9.12.2 }
+
+extra-source-files:
+  test/data/external.html
+  test/data/external.md
+  test/data/external_bare.html
+  test/data/external_bare.md
+  test/data/external_figure.html
+  test/data/external_figure.md
+  test/data/external_figure_bare.html
+  test/data/external_figure_bare.md
+  test/data/global_import.html
+  test/data/global_import.md
+  test/data/inline.html
+  test/data/inline.md
+  test/data/inline_bare.html
+  test/data/inline_bare.md
+  test/data/inline_figure.html
+  test/data/inline_figure.md
+  test/data/inline_figure_bare.html
+  test/data/inline_figure_bare.md
+  test/data/metadata.md
+  test/data/no_attributes.svg
+  test/data/with_attributes.svg
 
 source-repository head
   type:     git
diff --git a/test/data/external.html b/test/data/external.html
new file mode 100644
--- /dev/null
+++ b/test/data/external.html
@@ -0,0 +1,1 @@
+<img src="external.svg" id="my_id" class="my_class_a my_class_b" alt="a circle" data-myattr="foo" width="10" />
diff --git a/test/data/external.md b/test/data/external.md
new file mode 100644
--- /dev/null
+++ b/test/data/external.md
@@ -0,0 +1,7 @@
+``` diagram { img:src="external.svg"
+      .my_class_a .my_class_b  #my_id
+      img:alt="a circle" img:myattr=foo img:width=10
+      svg:class="my_svg_class" svg:title="A title to SVG" svg:width=17
+    }
+circle 10
+```
diff --git a/test/data/external_bare.html b/test/data/external_bare.html
new file mode 100644
--- /dev/null
+++ b/test/data/external_bare.html
@@ -0,0 +1,1 @@
+<img src="external_bare.svg" />
diff --git a/test/data/external_bare.md b/test/data/external_bare.md
new file mode 100644
--- /dev/null
+++ b/test/data/external_bare.md
@@ -0,0 +1,3 @@
+``` diagram { img:src="external_bare.svg" }
+circle 10
+```
diff --git a/test/data/external_figure.html b/test/data/external_figure.html
new file mode 100644
--- /dev/null
+++ b/test/data/external_figure.html
@@ -0,0 +1,4 @@
+<figure id="my_id" class="my_class_a my_class_b" data-myattr="foo">
+<img src="external_figure.svg" alt="a circle" width="10" />
+<figcaption>foo</figcaption>
+</figure>
diff --git a/test/data/external_figure.md b/test/data/external_figure.md
new file mode 100644
--- /dev/null
+++ b/test/data/external_figure.md
@@ -0,0 +1,7 @@
+``` diagram { img:src="external_figure.svg" figcaption="foo"
+      .my_class_a .my_class_b  #my_id
+      img:alt="a circle" figure:myattr=foo img:width=10
+      svg:class="my_svg_class" svg:title="A title to SVG" svg:width=17
+    }
+circle 10
+```
diff --git a/test/data/external_figure_bare.html b/test/data/external_figure_bare.html
new file mode 100644
--- /dev/null
+++ b/test/data/external_figure_bare.html
@@ -0,0 +1,4 @@
+<figure>
+<img src="external_figure_bare.svg" />
+<figcaption>foo</figcaption>
+</figure>
diff --git a/test/data/external_figure_bare.md b/test/data/external_figure_bare.md
new file mode 100644
--- /dev/null
+++ b/test/data/external_figure_bare.md
@@ -0,0 +1,3 @@
+``` diagram { img:src="external_figure_bare.svg" figcaption="foo" }
+circle 10
+```
diff --git a/test/data/global_import.html b/test/data/global_import.html
new file mode 100644
--- /dev/null
+++ b/test/data/global_import.html
@@ -0,0 +1,1 @@
+<svg font-size="1" viewBox="0.0 0.0 19.999999999999996 19.999999999999996" stroke="rgb(0,0,0)" xmlns="http://www.w3.org/2000/svg" width="20.0000" stroke-opacity="1" height="20.0000" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink"><defs></defs><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.5"><path d="M 20.0000,10.0000 c 0.0000,-5.5228 -4.4772,-10.0000 -10.0000 -10.0000c -5.5228,-0.0000 -10.0000,4.4772 -10.0000 10.0000c -0.0000,5.5228 4.4772,10.0000 10.0000 10.0000c 5.5228,0.0000 10.0000,-4.4772 10.0000 -10.0000Z"/></g></svg>
diff --git a/test/data/global_import.md b/test/data/global_import.md
new file mode 100644
--- /dev/null
+++ b/test/data/global_import.md
@@ -0,0 +1,3 @@
+``` diagram { }
+circle (fromJust $ Just 10)
+```
diff --git a/test/data/inline.html b/test/data/inline.html
new file mode 100644
--- /dev/null
+++ b/test/data/inline.html
@@ -0,0 +1,1 @@
+<svg font-size="1" id="my_id" viewBox="0.0 0.0 50.0 50.0" stroke="rgb(0,0,0)" xmlns="http://www.w3.org/2000/svg" width="50.0000" stroke-opacity="1" height="50.0000" version="1.1" class="my_class_a my_class_b" xmlns:xlink="http://www.w3.org/1999/xlink"><defs></defs><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.5"><path d="M 50.0000,25.0000 c 0.0000,-13.8071 -11.1929,-25.0000 -25.0000 -25.0000c -13.8071,-0.0000 -25.0000,11.1929 -25.0000 25.0000c -0.0000,13.8071 11.1929,25.0000 25.0000 25.0000c 13.8071,0.0000 25.0000,-11.1929 25.0000 -25.0000Z"/></g></svg>
diff --git a/test/data/inline.md b/test/data/inline.md
new file mode 100644
--- /dev/null
+++ b/test/data/inline.md
@@ -0,0 +1,6 @@
+``` diagram {
+      .my_class_a .my_class_b #my_id
+      svg:height=50
+    }
+circle 10
+```
diff --git a/test/data/inline_bare.html b/test/data/inline_bare.html
new file mode 100644
--- /dev/null
+++ b/test/data/inline_bare.html
@@ -0,0 +1,1 @@
+<svg font-size="1" viewBox="0.0 0.0 19.999999999999996 19.999999999999996" stroke="rgb(0,0,0)" xmlns="http://www.w3.org/2000/svg" width="20.0000" stroke-opacity="1" height="20.0000" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink"><defs></defs><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.5"><path d="M 20.0000,10.0000 c 0.0000,-5.5228 -4.4772,-10.0000 -10.0000 -10.0000c -5.5228,-0.0000 -10.0000,4.4772 -10.0000 10.0000c -0.0000,5.5228 4.4772,10.0000 10.0000 10.0000c 5.5228,0.0000 10.0000,-4.4772 10.0000 -10.0000Z"/></g></svg>
diff --git a/test/data/inline_bare.md b/test/data/inline_bare.md
new file mode 100644
--- /dev/null
+++ b/test/data/inline_bare.md
@@ -0,0 +1,3 @@
+``` diagram { }
+circle 10
+```
diff --git a/test/data/inline_figure.html b/test/data/inline_figure.html
new file mode 100644
--- /dev/null
+++ b/test/data/inline_figure.html
@@ -0,0 +1,4 @@
+<figure id="my_id" class="my_class_a my_class_b" data-myattr="foo">
+<svg font-size="1" viewBox="0.0 0.0 17.0 17.0" stroke="rgb(0,0,0)" title="A title to SVG" xmlns="http://www.w3.org/2000/svg" width="17.0000" stroke-opacity="1" height="17.0000" version="1.1" class="my_svg_class" xmlns:xlink="http://www.w3.org/1999/xlink"><defs></defs><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.5"><path d="M 17.0000,8.5000 c 0.0000,-4.6944 -3.8056,-8.5000 -8.5000 -8.5000c -4.6944,-0.0000 -8.5000,3.8056 -8.5000 8.5000c -0.0000,4.6944 3.8056,8.5000 8.5000 8.5000c 4.6944,0.0000 8.5000,-3.8056 8.5000 -8.5000Z"/></g></svg>
+<figcaption>bar</figcaption>
+</figure>
diff --git a/test/data/inline_figure.md b/test/data/inline_figure.md
new file mode 100644
--- /dev/null
+++ b/test/data/inline_figure.md
@@ -0,0 +1,7 @@
+``` diagram { figcaption="bar"
+      .my_class_a .my_class_b #my_id
+      figure:myattr=foo
+      svg:class="my_svg_class" svg:title="A title to SVG" svg:width=17
+    }
+circle 10
+```
diff --git a/test/data/inline_figure_bare.html b/test/data/inline_figure_bare.html
new file mode 100644
--- /dev/null
+++ b/test/data/inline_figure_bare.html
@@ -0,0 +1,4 @@
+<figure>
+<svg font-size="1" viewBox="0.0 0.0 19.999999999999996 19.999999999999996" stroke="rgb(0,0,0)" xmlns="http://www.w3.org/2000/svg" width="20.0000" stroke-opacity="1" height="20.0000" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink"><defs></defs><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.5"><path d="M 20.0000,10.0000 c 0.0000,-5.5228 -4.4772,-10.0000 -10.0000 -10.0000c -5.5228,-0.0000 -10.0000,4.4772 -10.0000 10.0000c -0.0000,5.5228 4.4772,10.0000 10.0000 10.0000c 5.5228,0.0000 10.0000,-4.4772 10.0000 -10.0000Z"/></g></svg>
+<figcaption>bar</figcaption>
+</figure>
diff --git a/test/data/inline_figure_bare.md b/test/data/inline_figure_bare.md
new file mode 100644
--- /dev/null
+++ b/test/data/inline_figure_bare.md
@@ -0,0 +1,3 @@
+``` diagram { figcaption="bar" }
+circle 10
+```
diff --git a/test/data/metadata.md b/test/data/metadata.md
new file mode 100644
--- /dev/null
+++ b/test/data/metadata.md
@@ -0,0 +1,12 @@
+---
+uuid: f8d8fd04-3255-496a-84de-9eadff06f71b
+published: 1912-06-23 00:00:00
+
+dg.localModules: Utils, Commons as Cm
+dg.searchPaths: um, ..., dois
+dg.languageExtensions: ""
+---
+
+``` diagram {}
+circle 10
+```
diff --git a/test/data/no_attributes.svg b/test/data/no_attributes.svg
new file mode 100644
--- /dev/null
+++ b/test/data/no_attributes.svg
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+    "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg font-size="1" viewBox="0.0 0.0 19.999999999999996 19.999999999999996" stroke="rgb(0,0,0)" xmlns="http://www.w3.org/2000/svg" width="20.0000" stroke-opacity="1" height="20.0000" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink"><defs></defs><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.5"><path d="M 20.0000,10.0000 c 0.0000,-5.5228 -4.4772,-10.0000 -10.0000 -10.0000c -5.5228,-0.0000 -10.0000,4.4772 -10.0000 10.0000c -0.0000,5.5228 4.4772,10.0000 10.0000 10.0000c 5.5228,0.0000 10.0000,-4.4772 10.0000 -10.0000Z"/></g></svg>
diff --git a/test/data/with_attributes.svg b/test/data/with_attributes.svg
new file mode 100644
--- /dev/null
+++ b/test/data/with_attributes.svg
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+    "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg font-size="1" viewBox="0.0 0.0 17.0 17.0" stroke="rgb(0,0,0)" title="A title to SVG" xmlns="http://www.w3.org/2000/svg" width="17.0000" stroke-opacity="1" height="17.0000" version="1.1" class="my_svg_class" xmlns:xlink="http://www.w3.org/1999/xlink"><defs></defs><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.5"><path d="M 17.0000,8.5000 c 0.0000,-4.6944 -3.8056,-8.5000 -8.5000 -8.5000c -4.6944,-0.0000 -8.5000,3.8056 -8.5000 8.5000c -0.0000,4.6944 3.8056,8.5000 8.5000 8.5000c 4.6944,0.0000 8.5000,-3.8056 8.5000 -8.5000Z"/></g></svg>
