diff --git a/src/it/projects/doxia-formats/src/main/java/org/apache/maven/plugins/site/it/CustomVelocityTool.java b/src/it/projects/doxia-formats/src/main/java/org/apache/maven/plugins/site/it/CustomVelocityTool.java
index ccb5e48..2e0dbec 100644
--- a/src/it/projects/doxia-formats/src/main/java/org/apache/maven/plugins/site/it/CustomVelocityTool.java
+++ b/src/it/projects/doxia-formats/src/main/java/org/apache/maven/plugins/site/it/CustomVelocityTool.java
@@ -21,6 +21,7 @@
 
 import org.apache.velocity.tools.config.DefaultKey;
 
+// START SNIPPET: macros
 @DefaultKey("custom")
 public class CustomVelocityTool
 {
@@ -28,4 +29,5 @@
     {
         return "ok";
     }
-}
\ No newline at end of file
+}
+// END SNIPPET: macros
diff --git a/src/it/projects/doxia-formats/src/site/apt/apt-macro.apt b/src/it/projects/doxia-formats/src/site/apt/apt-macro.apt
index 1424ecd..e31f8c1 100644
--- a/src/it/projects/doxia-formats/src/site/apt/apt-macro.apt
+++ b/src/it/projects/doxia-formats/src/site/apt/apt-macro.apt
@@ -28,7 +28,6 @@
 
 Macros in APT
 
-~~ START SNIPPET: macros
 * TOC Macro
 
 %{toc}
@@ -39,5 +38,6 @@
 
 * Snippet Macro
 
-%{snippet|id=macros|file=src/site/apt/apt-macro.apt}
-~~ END SNIPPET: macros
+%{snippet|id=macros|file=src/main/java/org/apache/maven/plugins/site/it/CustomVelocityTool.java}
+
+Content for verify.groovy
diff --git a/src/it/projects/doxia-formats/src/site/apt/index.apt b/src/it/projects/doxia-formats/src/site/apt/index.apt
index eefc226..ab679c8 100644
--- a/src/it/projects/doxia-formats/src/site/apt/index.apt
+++ b/src/it/projects/doxia-formats/src/site/apt/index.apt
@@ -69,4 +69,6 @@
 Java version: 1.8.0_232, vendor: AdoptOpenJDK, runtime: C:\Program Files\AdoptOpenJDK\jdk-8.0.232.09-hotspot\jre
 Default locale: en_US, platform encoding: Cp1250
 OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
-+--------+
\ No newline at end of file
++--------+
+
+Content for verify.groovy
diff --git a/src/it/projects/doxia-formats/src/site/apt/velocity-context.apt.vm b/src/it/projects/doxia-formats/src/site/apt/velocity-context.apt.vm
index 5d07fed..122a931 100644
--- a/src/it/projects/doxia-formats/src/site/apt/velocity-context.apt.vm
+++ b/src/it/projects/doxia-formats/src/site/apt/velocity-context.apt.vm
@@ -37,7 +37,7 @@
 *-----------------------+-------------------------------------------------------+-----+
 #foreach( $key in $sorter.sort( $context.keys ) )
 #set( $value = $context.get($key) )
-| <<<$key>>>            | <<<#if ($value)$value.class.name#else?#end>>> | #if ($key != "decoration")<<<$value>>>#end |  
+| <<<$key>>>            | <<<#if ($value)$value.class.name#else?#end>>> | #if ($key != "decoration")<<<$value>>>#end |
 *-----------------------+-------------------------------------------------------+-----+
 #end
 
@@ -150,3 +150,5 @@
  <<<custom>>> = <<<$custom>>>
 
  <<<custom.test()>>> = <<<$custom.test()>>>
+
+Content for verify.groovy
diff --git a/src/it/projects/doxia-formats/src/site/apt/velocity-include-parse.apt.vm b/src/it/projects/doxia-formats/src/site/apt/velocity-include-parse.apt.vm
index e2f9076..29816fa 100644
--- a/src/it/projects/doxia-formats/src/site/apt/velocity-include-parse.apt.vm
+++ b/src/it/projects/doxia-formats/src/site/apt/velocity-include-parse.apt.vm
@@ -41,3 +41,5 @@
 +---------------+
 #include( "../../../pom.xml" )
 +---------------+
+
+Content for verify.groovy
diff --git a/src/it/projects/doxia-formats/src/site/confluence/confluence.confluence b/src/it/projects/doxia-formats/src/site/confluence/confluence.confluence
index d3ba5ec..89c3f06 100644
--- a/src/it/projects/doxia-formats/src/site/confluence/confluence.confluence
+++ b/src/it/projects/doxia-formats/src/site/confluence/confluence.confluence
@@ -31,3 +31,5 @@
 ** Other
 
 Example from [https://confluence.atlassian.com/display/CONF25/Confluence+Notation+Guide+Overview]
+
+Content for verify.groovy
diff --git a/src/it/projects/doxia-formats/src/site/docbook/docbook.xml b/src/it/projects/doxia-formats/src/site/docbook/docbook.xml
index 43c7b1c..a5d77f2 100644
--- a/src/it/projects/doxia-formats/src/site/docbook/docbook.xml
+++ b/src/it/projects/doxia-formats/src/site/docbook/docbook.xml
@@ -50,7 +50,7 @@
 
   <sect1><title>Section 2</title>
     <para>
-      blah blah blah
+      Content for verify.groovy
     </para>
   </sect1>
 </article>
diff --git a/src/it/projects/doxia-formats/src/site/fml/faq-macro.fml b/src/it/projects/doxia-formats/src/site/fml/faq-macro.fml
index 6c23728..b872133 100644
--- a/src/it/projects/doxia-formats/src/site/fml/faq-macro.fml
+++ b/src/it/projects/doxia-formats/src/site/fml/faq-macro.fml
@@ -25,7 +25,6 @@
   <part id="Macros in FML">
     <title>Macros in FML</title>
 
-    <!-- START SNIPPET: macros -->
     <faq id="TOC">
       <question>Is TOC Macro supported?</question>
       <answer>
@@ -49,12 +48,11 @@
       <answer>
         <macro name="snippet">
           <param name="id" value="macros"/>
-          <param name="file" value="src/site/fml/faq-macro.fml"/>
+          <param name="file" value="src/main/java/org/apache/maven/plugins/site/it/CustomVelocityTool.java" />
         </macro>
+        <p>Content for verify.groovy</p>
       </answer>
     </faq>
-    <!-- END SNIPPET: macros -->
   </part>
 
 </faqs>
-
diff --git a/src/it/projects/doxia-formats/src/site/fml/faq.fml b/src/it/projects/doxia-formats/src/site/fml/faq.fml
index de6bb49..8eefc97 100644
--- a/src/it/projects/doxia-formats/src/site/fml/faq.fml
+++ b/src/it/projects/doxia-formats/src/site/fml/faq.fml
@@ -50,10 +50,10 @@
           Test nested <code>&lt;source&gt;&lt;/source&gt;</code> tags (DOXIA-16):
         </p>
         <source><![CDATA[<source>1.5</source>]]></source>
+        <p>Content for verify.groovy</p>
       </answer>
     </faq>
 
   </part>
 
 </faqs>
-
diff --git a/src/it/projects/doxia-formats/src/site/markdown/markdown-macro.md b/src/it/projects/doxia-formats/src/site/markdown/markdown-macro.md
index 561cd46..20c12a7 100644
--- a/src/it/projects/doxia-formats/src/site/markdown/markdown-macro.md
+++ b/src/it/projects/doxia-formats/src/site/markdown/markdown-macro.md
@@ -20,7 +20,6 @@
 Macros in Markdown
 ----------------
 
-<!-- START SNIPPET: macros -->
 ### TOC Macro
 
 <!-- MACRO{toc} -->
@@ -31,5 +30,6 @@
 
 ### Snippet Macro
 
-<!-- MACRO{snippet|id=macros|file=src/site/markdown/markdown-macro.md} -->
-<!-- END SNIPPET: macros -->
+<!-- MACRO{snippet|id=macros|file=src/main/java/org/apache/maven/plugins/site/it/CustomVelocityTool.java} -->
+
+Content for verify.groovy
diff --git a/src/it/projects/doxia-formats/src/site/markdown/markdown.md b/src/it/projects/doxia-formats/src/site/markdown/markdown.md
index a40978c..21c9d60 100644
--- a/src/it/projects/doxia-formats/src/site/markdown/markdown.md
+++ b/src/it/projects/doxia-formats/src/site/markdown/markdown.md
@@ -17,26 +17,14 @@
 under the License.
 -->
 
-
 Markdown Format works
----------------
-
-But 'quotes' and "double quotes" were stripped from HTML result with DOXIA 1.3:
-see [DOXIA-473](https://issues.apache.org/jira/browse/DOXIA-473).
+=====================
 
 <!-- MACRO{toc|fromDepth=1|toDepth=2} -->
 
-### Subsection
+Subsection
+----------
 
-Missing `monospaced` support [DOXIA-597](https://issues.apache.org/jira/browse/DOXIA-597)
+This is a subsection.
 
-Missing code block color [DOXIA-571](https://issues.apache.org/jira/browse/DOXIA-571):
-
-```
-code block
-Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
-Maven home: D:\apache-maven-3.6.3\apache-maven\bin\..
-Java version: 1.8.0_232, vendor: AdoptOpenJDK, runtime: C:\Program Files\AdoptOpenJDK\jdk-8.0.232.09-hotspot\jre
-Default locale: en_US, platform encoding: Cp1250
-OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
-```
+Content for verify.groovy
diff --git a/src/it/projects/doxia-formats/src/site/markdown/markdown2-macro.markdown b/src/it/projects/doxia-formats/src/site/markdown/markdown2-macro.markdown
deleted file mode 100644
index 561cd46..0000000
--- a/src/it/projects/doxia-formats/src/site/markdown/markdown2-macro.markdown
+++ /dev/null
@@ -1,35 +0,0 @@
-<!---
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-Macros in Markdown
-----------------
-
-<!-- START SNIPPET: macros -->
-### TOC Macro
-
-<!-- MACRO{toc} -->
-
-### Echo Macro
-
-<!-- MACRO{echo|param1=value1|param2=value2} -->
-
-### Snippet Macro
-
-<!-- MACRO{snippet|id=macros|file=src/site/markdown/markdown-macro.md} -->
-<!-- END SNIPPET: macros -->
diff --git a/src/it/projects/doxia-formats/src/site/markdown/markdown2.markdown b/src/it/projects/doxia-formats/src/site/markdown/markdown2.markdown
index 7f25ec4..053216a 100644
--- a/src/it/projects/doxia-formats/src/site/markdown/markdown2.markdown
+++ b/src/it/projects/doxia-formats/src/site/markdown/markdown2.markdown
@@ -17,13 +17,12 @@
 under the License.
 -->
 
-
-Markdown Format works
----------------
-
-But 'quotes' and "double quotes" were stripped from HTML result with DOXIA 1.3:
-see [DOXIA-473](https://issues.apache.org/jira/browse/DOXIA-473).
+# Markdown Format works
 
 <!-- MACRO{toc|fromDepth=1|toDepth=2} -->
 
-### Subsection
+## Subsection
+
+This is the subsection.
+
+Content for verify.groovy
diff --git a/src/it/projects/doxia-formats/src/site/twiki/twiki.twiki b/src/it/projects/doxia-formats/src/site/twiki/twiki.twiki
index d235934..1c9876d 100644
--- a/src/it/projects/doxia-formats/src/site/twiki/twiki.twiki
+++ b/src/it/projects/doxia-formats/src/site/twiki/twiki.twiki
@@ -20,4 +20,6 @@
    * level 1
       * level 2
    * back on 1
-   * last bullet
\ No newline at end of file
+   * last bullet
+
+Content for verify.groovy
diff --git a/src/it/projects/doxia-formats/src/site/xdoc/xdoc-macro.xml b/src/it/projects/doxia-formats/src/site/xdoc/xdoc-macro.xml
index 711dd89..e2bfef2 100644
--- a/src/it/projects/doxia-formats/src/site/xdoc/xdoc-macro.xml
+++ b/src/it/projects/doxia-formats/src/site/xdoc/xdoc-macro.xml
@@ -27,7 +27,6 @@
   </properties>
   <body>
     <section name="Macros in Xdoc">
-    <!-- START SNIPPET: macros -->
     <subsection name="TOC">
       <macro name="toc">
       </macro>
@@ -41,10 +40,10 @@
     <subsection name="Snippet">
       <macro name="snippet">
         <param name="id" value="macros"/>
-        <param name="file" value="src/site/xdoc/xdoc-macro.xml"/>
+        <param name="file" value="src/main/java/org/apache/maven/plugins/site/it/CustomVelocityTool.java" />
       </macro>
+      <p>Content for verify.groovy</p>
     </subsection>
-    <!-- END SNIPPET: macros -->
     </section>
   </body>
 </document>
diff --git a/src/it/projects/doxia-formats/src/site/xdoc/xdoc.xml b/src/it/projects/doxia-formats/src/site/xdoc/xdoc.xml
index 230293f..0cdec6d 100644
--- a/src/it/projects/doxia-formats/src/site/xdoc/xdoc.xml
+++ b/src/it/projects/doxia-formats/src/site/xdoc/xdoc.xml
@@ -129,6 +129,8 @@
 
         <p>Copyright symbol: &#169; &#169; &#169;.</p>
 
+        <p>Content for verify.groovy</p>
+
       </subsection>
     </section>
 
diff --git a/src/it/projects/doxia-formats/src/site/xhtml/xhtml-macro.xhtml b/src/it/projects/doxia-formats/src/site/xhtml/xhtml-macro.xhtml
index eaf8e78..48c8480 100644
--- a/src/it/projects/doxia-formats/src/site/xhtml/xhtml-macro.xhtml
+++ b/src/it/projects/doxia-formats/src/site/xhtml/xhtml-macro.xhtml
@@ -31,7 +31,6 @@
 
 <h2>Macros in XHTML</h2>
 
-<!-- START SNIPPET: macros -->
 <h3>TOC Macro</h3>
 
 <!-- MACRO{toc} -->
@@ -42,8 +41,9 @@
 
 <h3>Snippet Macro</h3>
 
-<!-- MACRO{snippet|id=macros|file=src/site/xhtml/xhtml-macro.xhtml} -->
-<!-- END SNIPPET: macros -->
+<!-- MACRO{snippet|id=macros|file=src/main/java/org/apache/maven/plugins/site/it/CustomVelocityTool.java} -->
+
+<p>Content for verify.groovy</p>
 
 </body>
 
diff --git a/src/it/projects/doxia-formats/src/site/xhtml/xhtml.xhtml b/src/it/projects/doxia-formats/src/site/xhtml/xhtml.xhtml
index 886672c..c2c0131 100644
--- a/src/it/projects/doxia-formats/src/site/xhtml/xhtml.xhtml
+++ b/src/it/projects/doxia-formats/src/site/xhtml/xhtml.xhtml
@@ -145,6 +145,8 @@
 
 </div></div></div></div></div>
 
+<p>Content for verify.groovy</p>
+
 </body>
 
 </html>
diff --git a/src/it/projects/doxia-formats/verify.groovy b/src/it/projects/doxia-formats/verify.groovy
index fd5299b..6b2f273 100644
--- a/src/it/projects/doxia-formats/verify.groovy
+++ b/src/it/projects/doxia-formats/verify.groovy
@@ -18,32 +18,55 @@
  * under the License.
  */
 
-content = new File( basedir, 'target/site/markdown.html' ).text;
+// These files must have been generated
+[
+  'apt-macro.html',
+  'index.html',
+  'velocity-context.html',
+  'velocity-include-parse.html',
+  'confluence.html',
+  'docbook.html',
+  'faq-macro.html',
+  'faq.html',
+  'markdown-macro.html',
+  'markdown.html',
+  'markdown2.html',
+  'twiki.html',
+  'xdoc.html',
+  'xdoc-macro.html',
+  'xhtml.html',
+  'xhtml-macro.html'
+].each {
 
-assert content.contains( 'Markdown Format works' );
+  // File exists
+  def verifiedFile = new File( basedir, "target/site/$it" )
+  assert verifiedFile.exists() : "$it must have been generated"
 
-assert !content.contains( ' quotes and double quotes were stripped' ); // DOXIA-473
-assert content.contains( '<code>monospaced</code> support' ); // DOXIA-597
-assert content.contains( '<div class="source"><pre class="prettyprint linenums">code block' ); // DOXIA-571
+  // File contains the content marker 'Content for verify.groovy'
+  def verifiedContent = verifiedFile.text
+  assert verifiedContent.contains( 'Content for verify.groovy' ) :
+    "$it must have content from the source ('Content for verify.groovy')"
 
-assert !content.contains( 'MACRO' );
-assert content.contains( 'href="#Subsection"' );
+  // File does NOT contain the path to the source file referenced by the SNIPPET macro.
+  // This means that the SNIPPET macro has been properly processed.
+  // This test can be run in all files produced, even those with no macros.
+  assert !verifiedContent.contains( 'src/main/java/org/apache/maven/plugins/site/it/CustomVelocityTool.java' ) :
+    "Macros must have been processed in $it and SNIPPET source file path removed"
 
-ignore = new File( basedir, 'target/site/ignore.txt' );
-assert !ignore.exists();
+}
 
-velocity = new File( basedir, 'target/generated-site/processed/velocity-context.apt' );
-assert velocity.exists();
-content = velocity.text;
+// ignore.txt must NOT have been generated
+assert !( new File( basedir, 'target/site/ignore.txt' ).exists() ) :
+  "ignore.txt does not end up in the generated content"
+assert !( new File( basedir, 'target/site/ignore.html' ).exists() ) :
+  "ignore.txt does not produce ignore.html"
 
-assert content.contains( '= <<<val1>>>' ); // MSITE-550
+// .vm files must have been processed with Velocity
+def velocity = new File( basedir, 'target/generated-site/processed/velocity-context.apt' )
+assert velocity.exists() : "*.vm files must be processed with Velocity and stored in target/generated-site"
 
-assert !content.replace('<<<$value', '').contains( '<<<$' );
+def content = velocity.text
+assert content.contains( '= <<<val1>>>' ) : "Velocity-processed content must conform to MSITE-550"
 
-assert new File( basedir, 'target/site/markdown2.html' ).exists(); // DOXIA-535
-
-assert new File( basedir, 'target/site/confluence.html' ).exists(); // MSITE-838
-assert new File( basedir, 'target/site/docbook.html' ).exists(); //MSITE-838
-assert new File( basedir, 'target/site/twiki.html' ).exists(); //MSITE-838
-
-return true;
+assert !( content.replace('<<<$value', '').contains( '<<<$' ) ) :
+  'Velocity-processed content must not contain any veloci-macro reference'
