diff --git a/tests/test-onboarding-templates.php b/tests/test-onboarding-templates.php
new file mode 100644
index 00000000..5df8163e
--- /dev/null
+++ b/tests/test-onboarding-templates.php
@@ -0,0 +1,55 @@
+, innerBlocks: list
>, innerHTML: string, innerContent: list}
+ */
+
+class Test_Onboarding_Templates extends WP_UnitTestCase {
+ /**
+ * Onboarding archive templates must list the posts of the archive being viewed.
+ *
+ * @return void
+ */
+ public function test_archive_templates_inherit_the_archive_query(): void {
+ $support = get_theme_support( 'otter-onboarding' );
+
+ /** @var array $archive_templates */
+ $archive_templates = $support[0]['templates']['archive'];
+
+ $this->assertNotEmpty( $archive_templates );
+
+ foreach ( $archive_templates as $slug => $template ) {
+ $queries = $this->find_query_blocks( parse_blocks( include $template['file'] ) );
+
+ $this->assertNotEmpty( $queries, $slug );
+
+ foreach ( $queries as $query ) {
+ $this->assertTrue( $query['attrs']['query']['inherit'], $slug );
+ }
+ }
+ }
+
+ /**
+ * Collect every Query block, including nested ones.
+ *
+ * @param list $blocks Parsed blocks.
+ *
+ * @return list
+ */
+ private function find_query_blocks( array $blocks ): array {
+ $queries = array();
+
+ foreach ( $blocks as $block ) {
+ if ( 'core/query' === $block['blockName'] ) {
+ $queries[] = $block;
+ }
+
+ $queries = array_merge( $queries, $this->find_query_blocks( $block['innerBlocks'] ) );
+ }
+
+ return $queries;
+ }
+}