From 0a24cf6711c5979be6d2fe2d5dd6a8ea45a1baeb Mon Sep 17 00:00:00 2001
From: caendesilva <caendesilva@users.noreply.github.com>
Date: Sun, 14 Apr 2024 11:52:29 +0000
Subject: [PATCH] Upload live reports from test suite run
 bf136ff1ebf322a4bdca54649934f873481ec490

---
 index.html                                    |    8 +-
 master/README.md                              |    2 +-
 master/coverage/dashboard.html                |    2 +-
 master/coverage/framework/dashboard.html      |    2 +-
 master/coverage/framework/index.html          |    2 +-
 .../Commands/BuildRssFeedCommand.php.html     |    2 +-
 .../Commands/BuildSearchCommand.php.html      |    2 +-
 .../Commands/BuildSiteCommand.php.html        |    2 +-
 .../Commands/BuildSitemapCommand.php.html     |    2 +-
 .../ChangeSourceDirectoryCommand.php.html     |    2 +-
 .../Console/Commands/DebugCommand.php.html    |    2 +-
 .../Console/Commands/MakePageCommand.php.html |    2 +-
 .../Console/Commands/MakePostCommand.php.html |    2 +-
 .../Commands/PackageDiscoverCommand.php.html  |    2 +-
 .../Commands/PublishConfigsCommand.php.html   |    2 +-
 .../Commands/PublishHomepageCommand.php.html  |    2 +-
 .../Commands/PublishViewsCommand.php.html     |    2 +-
 .../Commands/RebuildPageCommand.php.html      |    2 +-
 .../Commands/RouteListCommand.php.html        |    2 +-
 .../Console/Commands/ServeCommand.php.html    |    2 +-
 .../Console/Commands/ValidateCommand.php.html |    2 +-
 .../Commands/VendorPublishCommand.php.html    |    2 +-
 .../src/Console/Commands/dashboard.html       |    2 +-
 .../framework/src/Console/Commands/index.html |    2 +-
 .../Concerns/AsksToRebuildSite.php.html       |    2 +-
 .../src/Console/Concerns/Command.php.html     |    2 +-
 .../src/Console/Concerns/dashboard.html       |    2 +-
 .../framework/src/Console/Concerns/index.html |    2 +-
 .../Console/ConsoleServiceProvider.php.html   |    2 +-
 .../framework/src/Console/dashboard.html      |    2 +-
 .../coverage/framework/src/Console/index.html |    2 +-
 .../framework/src/Enums/Feature.php.html      |    2 +-
 .../framework/src/Enums/dashboard.html        |    2 +-
 .../coverage/framework/src/Enums/index.html   |    2 +-
 .../framework/src/Facades/Asset.php.html      |    2 +-
 .../framework/src/Facades/Author.php.html     |    2 +-
 .../framework/src/Facades/Config.php.html     |    2 +-
 .../framework/src/Facades/Features.php.html   |    2 +-
 .../framework/src/Facades/Filesystem.php.html |    2 +-
 .../framework/src/Facades/Meta.php.html       |    2 +-
 .../framework/src/Facades/Site.php.html       |    2 +-
 .../framework/src/Facades/dashboard.html      |    2 +-
 .../coverage/framework/src/Facades/index.html |    2 +-
 .../src/Foundation/Application.php.html       |    2 +-
 .../BaseFoundationCollection.php.html         |    2 +-
 .../Concerns/BootsHydeKernel.php.html         |    2 +-
 .../Concerns/ForwardsFilesystem.php.html      |    2 +-
 .../Concerns/ForwardsHyperlinks.php.html      |    2 +-
 .../HandlesFoundationCollections.php.html     |    2 +-
 .../Concerns/HydeExtension.php.html           |    2 +-
 .../Concerns/ImplementsStringHelpers.php.html |    2 +-
 .../Concerns/ManagesExtensions.php.html       |    2 +-
 .../Concerns/ManagesHydeKernel.php.html       |    2 +-
 .../Concerns/ManagesViewData.php.html         |    2 +-
 .../src/Foundation/Concerns/dashboard.html    |    2 +-
 .../src/Foundation/Concerns/index.html        |    2 +-
 .../src/Foundation/ConsoleKernel.php.html     |    2 +-
 .../src/Foundation/Facades/Files.php.html     |    2 +-
 .../src/Foundation/Facades/Pages.php.html     |    2 +-
 .../src/Foundation/Facades/Routes.php.html    |    2 +-
 .../src/Foundation/Facades/dashboard.html     |    2 +-
 .../src/Foundation/Facades/index.html         |    2 +-
 .../src/Foundation/HydeCoreExtension.php.html |    2 +-
 .../src/Foundation/HydeKernel.php.html        |    2 +-
 .../Internal/LoadConfiguration.php.html       |    2 +-
 .../Internal/LoadYamlConfiguration.php.html   |    2 +-
 .../src/Foundation/Internal/dashboard.html    |    2 +-
 .../src/Foundation/Internal/index.html        |    2 +-
 .../Foundation/Kernel/FileCollection.php.html |    2 +-
 .../src/Foundation/Kernel/Filesystem.php.html |    2 +-
 .../src/Foundation/Kernel/Hyperlinks.php.html |    2 +-
 .../Foundation/Kernel/PageCollection.php.html |    2 +-
 .../Kernel/RouteCollection.php.html           |    2 +-
 .../src/Foundation/Kernel/dashboard.html      |    2 +-
 .../src/Foundation/Kernel/index.html          |    2 +-
 .../src/Foundation/PharSupport.php.html       |    2 +-
 .../ConfigurationServiceProvider.php.html     |    2 +-
 .../Providers/ViewServiceProvider.php.html    |    2 +-
 .../src/Foundation/Providers/dashboard.html   |    2 +-
 .../src/Foundation/Providers/index.html       |    2 +-
 .../framework/src/Foundation/dashboard.html   |    2 +-
 .../framework/src/Foundation/index.html       |    2 +-
 .../Actions/AnonymousViewCompiler.php.html    |    2 +-
 .../Actions/BladeMatterParser.php.html        |    2 +-
 .../ConvertsArrayToFrontMatter.php.html       |    2 +-
 .../ConvertsMarkdownToPlainText.php.html      |    2 +-
 .../CreatesNewMarkdownPostFile.php.html       |    2 +-
 .../Actions/CreatesNewPageSourceFile.php.html |    2 +-
 ...GeneratesDocumentationSearchIndex.php.html |    2 +-
 .../Actions/GeneratesTableOfContents.php.html |    2 +-
 .../Actions/MarkdownFileParser.php.html       |    2 +-
 .../GenerateBuildManifest.php.html            |    2 +-
 .../PostBuildTasks/GenerateRssFeed.php.html   |    2 +-
 .../PostBuildTasks/GenerateSearch.php.html    |    2 +-
 .../PostBuildTasks/GenerateSitemap.php.html   |    2 +-
 .../Actions/PostBuildTasks/dashboard.html     |    2 +-
 .../Actions/PostBuildTasks/index.html         |    2 +-
 .../PreBuildTasks/CleanSiteDirectory.php.html |    2 +-
 .../Actions/PreBuildTasks/dashboard.html      |    2 +-
 .../Actions/PreBuildTasks/index.html          |    2 +-
 .../Actions/SourceFileParser.php.html         |    2 +-
 .../Actions/StaticPageBuilder.php.html        |    2 +-
 .../src/Framework/Actions/dashboard.html      |    2 +-
 .../src/Framework/Actions/index.html          |    2 +-
 .../InteractsWithDirectories.php.html         |    2 +-
 .../InteractsWithFrontMatter.php.html         |    2 +-
 .../ForwardsIlluminateFilesystem.php.html     |    2 +-
 .../Internal/MockableFeatures.php.html        |    2 +-
 .../Internal/SetsUpMarkdownConverter.php.html |    2 +-
 .../Concerns/Internal/dashboard.html          |    2 +-
 .../Framework/Concerns/Internal/index.html    |    2 +-
 .../Concerns/RegistersFileLocations.php.html  |    2 +-
 .../Concerns/TracksExecutionTime.php.html     |    2 +-
 .../Concerns/ValidatesExistence.php.html      |    2 +-
 .../src/Framework/Concerns/dashboard.html     |    2 +-
 .../src/Framework/Concerns/index.html         |    2 +-
 .../BaseUrlNotSetException.php.html           |    2 +-
 .../Exceptions/BuildWarning.php.html          |    2 +-
 .../Exceptions/FileConflictException.php.html |    2 +-
 .../Exceptions/FileNotFoundException.php.html |    2 +-
 .../RouteNotFoundException.php.html           |    2 +-
 .../UnsupportedPageTypeException.php.html     |    2 +-
 .../src/Framework/Exceptions/dashboard.html   |    2 +-
 .../src/Framework/Exceptions/index.html       |    2 +-
 .../Factories/BlogPostDataFactory.php.html    |    2 +-
 .../Concerns/CoreDataObject.php.html          |    2 +-
 .../Factories/Concerns/HasFactory.php.html    |    2 +-
 .../Concerns/PageDataFactory.php.html         |    2 +-
 .../Factories/Concerns/dashboard.html         |    2 +-
 .../Framework/Factories/Concerns/index.html   |    2 +-
 .../Factories/FeaturedImageFactory.php.html   |    2 +-
 .../Factories/HydePageDataFactory.php.html    |    2 +-
 .../Factories/NavigationDataFactory.php.html  |    2 +-
 .../src/Framework/Factories/dashboard.html    |    2 +-
 .../src/Framework/Factories/index.html        |    2 +-
 .../Blogging/Models/FeaturedImage.php.html    |    2 +-
 .../Blogging/Models/PostAuthor.php.html       |    2 +-
 .../Features/Blogging/Models/dashboard.html   |    2 +-
 .../Features/Blogging/Models/index.html       |    2 +-
 .../Features/Blogging/dashboard.html          |    2 +-
 .../Framework/Features/Blogging/index.html    |    2 +-
 .../Features/BuildTasks/BuildTask.php.html    |    2 +-
 .../BuildTaskSkippedException.php.html        |    2 +-
 .../BuildTasks/PostBuildTask.php.html         |    2 +-
 .../Features/BuildTasks/PreBuildTask.php.html |    2 +-
 .../Features/BuildTasks/dashboard.html        |    2 +-
 .../Framework/Features/BuildTasks/index.html  |    2 +-
 .../DocumentationSearchPage.php.html          |    2 +-
 .../SemanticDocumentationArticle.php.html     |    2 +-
 .../Features/Documentation/dashboard.html     |    2 +-
 .../Features/Documentation/index.html         |    2 +-
 .../Metadata/Elements/LinkElement.php.html    |    2 +-
 .../Elements/MetadataElement.php.html         |    2 +-
 .../Elements/OpenGraphElement.php.html        |    2 +-
 .../Features/Metadata/Elements/dashboard.html |    2 +-
 .../Features/Metadata/Elements/index.html     |    2 +-
 .../Metadata/GlobalMetadataBag.php.html       |    2 +-
 .../Features/Metadata/MetadataBag.php.html    |    2 +-
 .../Metadata/MetadataElementContract.php.html |    2 +-
 .../Metadata/PageMetadataBag.php.html         |    2 +-
 .../Features/Metadata/dashboard.html          |    2 +-
 .../Framework/Features/Metadata/index.html    |    2 +-
 .../Navigation/BaseNavigationMenu.php.html    |    2 +-
 .../Navigation/DocumentationSidebar.php.html  |    2 +-
 .../Navigation/DropdownNavItem.php.html       |    2 +-
 .../Features/Navigation/NavItem.php.html      |    2 +-
 .../Navigation/NavigationData.php.html        |    2 +-
 .../Navigation/NavigationMenu.php.html        |    2 +-
 .../Features/Navigation/dashboard.html        |    2 +-
 .../Framework/Features/Navigation/index.html  |    2 +-
 .../XmlGenerators/BaseXmlGenerator.php.html   |    2 +-
 .../XmlGenerators/RssFeedGenerator.php.html   |    2 +-
 .../XmlGenerators/SitemapGenerator.php.html   |    2 +-
 .../Features/XmlGenerators/dashboard.html     |    2 +-
 .../Features/XmlGenerators/index.html         |    2 +-
 .../src/Framework/Features/dashboard.html     |    2 +-
 .../src/Framework/Features/index.html         |    2 +-
 .../Framework/HydeServiceProvider.php.html    |    2 +-
 .../Framework/Services/AssetService.php.html  |    2 +-
 .../Framework/Services/BuildService.php.html  |    2 +-
 .../Services/BuildTaskService.php.html        |    2 +-
 .../Services/MarkdownService.php.html         |    2 +-
 .../Services/ValidationService.php.html       |    2 +-
 .../Services/ViewDiffService.php.html         |    2 +-
 .../src/Framework/Services/dashboard.html     |    2 +-
 .../src/Framework/Services/index.html         |    2 +-
 .../Components/BreadcrumbsComponent.php.html  |    2 +-
 .../Views/Components/LinkComponent.php.html   |    2 +-
 .../Framework/Views/Components/dashboard.html |    2 +-
 .../src/Framework/Views/Components/index.html |    2 +-
 .../src/Framework/Views/dashboard.html        |    2 +-
 .../framework/src/Framework/Views/index.html  |    2 +-
 .../framework/src/Framework/dashboard.html    |    2 +-
 .../framework/src/Framework/index.html        |    2 +-
 master/coverage/framework/src/Hyde.php.html   |    2 +-
 .../FrontMatter/BlogPostSchema.php.html       |    2 +-
 .../FrontMatter/FrontMatterSchema.php.html    |    2 +-
 .../Contracts/FrontMatter/PageSchema.php.html |    2 +-
 .../SubSchemas/AuthorSchema.php.html          |    2 +-
 .../SubSchemas/FeaturedImageSchema.php.html   |    2 +-
 .../SubSchemas/NavigationSchema.php.html      |    2 +-
 .../FrontMatter/SubSchemas/dashboard.html     |    2 +-
 .../FrontMatter/SubSchemas/index.html         |    2 +-
 .../Contracts/FrontMatter/dashboard.html      |    2 +-
 .../Markdown/Contracts/FrontMatter/index.html |    2 +-
 .../MarkdownDocumentContract.php.html         |    2 +-
 .../MarkdownPostProcessorContract.php.html    |    2 +-
 .../MarkdownPreProcessorContract.php.html     |    2 +-
 .../MarkdownShortcodeContract.php.html        |    2 +-
 .../src/Markdown/Contracts/dashboard.html     |    2 +-
 .../src/Markdown/Contracts/index.html         |    2 +-
 .../src/Markdown/MarkdownConverter.php.html   |    2 +-
 .../src/Markdown/Models/FrontMatter.php.html  |    2 +-
 .../src/Markdown/Models/Markdown.php.html     |    2 +-
 .../Markdown/Models/MarkdownDocument.php.html |    2 +-
 .../src/Markdown/Models/dashboard.html        |    2 +-
 .../framework/src/Markdown/Models/index.html  |    2 +-
 .../Processing/BladeDownProcessor.php.html    |    2 +-
 .../CodeblockFilepathProcessor.php.html       |    2 +-
 .../Processing/ColoredBlockquotes.php.html    |    2 +-
 .../Processing/ShortcodeProcessor.php.html    |    2 +-
 .../src/Markdown/Processing/dashboard.html    |    2 +-
 .../src/Markdown/Processing/index.html        |    2 +-
 .../framework/src/Markdown/dashboard.html     |    2 +-
 .../framework/src/Markdown/index.html         |    2 +-
 .../framework/src/Pages/BladePage.php.html    |    2 +-
 .../Pages/Concerns/BaseMarkdownPage.php.html  |    2 +-
 .../src/Pages/Concerns/HydePage.php.html      |    2 +-
 .../src/Pages/Concerns/dashboard.html         |    2 +-
 .../framework/src/Pages/Concerns/index.html   |    2 +-
 .../src/Pages/DocumentationPage.php.html      |    2 +-
 .../framework/src/Pages/HtmlPage.php.html     |    2 +-
 .../framework/src/Pages/InMemoryPage.php.html |    2 +-
 .../framework/src/Pages/MarkdownPage.php.html |    2 +-
 .../framework/src/Pages/MarkdownPost.php.html |    2 +-
 .../framework/src/Pages/dashboard.html        |    2 +-
 .../coverage/framework/src/Pages/index.html   |    2 +-
 .../src/Support/BuildWarnings.php.html        |    2 +-
 .../Support/Concerns/Serializable.php.html    |    2 +-
 .../src/Support/Concerns/dashboard.html       |    2 +-
 .../framework/src/Support/Concerns/index.html |    2 +-
 .../Contracts/SerializableContract.php.html   |    2 +-
 .../src/Support/Contracts/dashboard.html      |    2 +-
 .../src/Support/Contracts/index.html          |    2 +-
 .../src/Support/DataCollections.php.html      |    2 +-
 .../src/Support/Facades/Render.php.html       |    2 +-
 .../src/Support/Facades/dashboard.html        |    2 +-
 .../framework/src/Support/Facades/index.html  |    2 +-
 .../src/Support/Filesystem/MediaFile.php.html |    2 +-
 .../Support/Filesystem/ProjectFile.php.html   |    2 +-
 .../Support/Filesystem/SourceFile.php.html    |    2 +-
 .../src/Support/Filesystem/dashboard.html     |    2 +-
 .../src/Support/Filesystem/index.html         |    2 +-
 .../framework/src/Support/Includes.php.html   |    2 +-
 .../src/Support/Models/DateString.php.html    |    2 +-
 .../src/Support/Models/Redirect.php.html      |    2 +-
 .../src/Support/Models/RenderData.php.html    |    2 +-
 .../src/Support/Models/Route.php.html         |    2 +-
 .../src/Support/Models/RouteKey.php.html      |    2 +-
 .../src/Support/Models/RouteList.php.html     |    2 +-
 .../src/Support/Models/RouteListItem.php.html |    2 +-
 .../Support/Models/ValidationResult.php.html  |    2 +-
 .../src/Support/Models/dashboard.html         |    2 +-
 .../framework/src/Support/Models/index.html   |    2 +-
 .../framework/src/Support/Paginator.php.html  |    2 +-
 .../src/Support/ReadingTime.php.html          |    2 +-
 .../framework/src/Support/dashboard.html      |    2 +-
 .../coverage/framework/src/Support/index.html |    2 +-
 master/coverage/framework/src/dashboard.html  |    2 +-
 .../coverage/framework/src/helpers.php.html   |    2 +-
 master/coverage/framework/src/index.html      |    2 +-
 master/coverage/index.html                    |    2 +-
 master/coverage/junit.xml                     | 6086 ++++++++---------
 master/coverage/publications/dashboard.html   |    2 +-
 master/coverage/publications/index.html       |    2 +-
 .../src/Actions/CreateAction.php.html         |    2 +-
 .../CreatesNewPublicationPage.php.html        |    2 +-
 .../CreatesNewPublicationType.php.html        |    2 +-
 .../GeneratesPublicationTagPages.php.html     |    2 +-
 .../PublicationFieldValidator.php.html        |    2 +-
 .../Actions/PublicationPageCompiler.php.html  |    2 +-
 .../Actions/PublicationPageValidator.php.html |    2 +-
 .../PublicationSchemaValidator.php.html       |    2 +-
 .../Actions/SeedsPublicationFiles.php.html    |    4 +-
 .../publications/src/Actions/dashboard.html   |    2 +-
 .../publications/src/Actions/index.html       |    2 +-
 .../Helpers/InputStreamHandler.php.html       |    2 +-
 .../src/Commands/Helpers/dashboard.html       |    2 +-
 .../src/Commands/Helpers/index.html           |    2 +-
 .../Commands/MakePublicationCommand.php.html  |    2 +-
 .../MakePublicationTypeCommand.php.html       |    2 +-
 .../Commands/SeedPublicationCommand.php.html  |    2 +-
 .../ValidatePublicationTypesCommand.php.html  |    2 +-
 .../ValidatePublicationsCommand.php.html      |    2 +-
 .../src/Commands/ValidatingCommand.php.html   |    2 +-
 .../publications/src/Commands/dashboard.html  |    2 +-
 .../publications/src/Commands/index.html      |    2 +-
 .../ParsesPublicationFieldInputs.php.html     |    2 +-
 .../Concerns/PublicationFieldTypes.php.html   |    2 +-
 .../publications/src/Concerns/dashboard.html  |    2 +-
 .../publications/src/Concerns/index.html      |    2 +-
 .../PublicationFieldDefinition.php.html       |    2 +-
 .../src/Models/PublicationFieldValue.php.html |    2 +-
 .../src/Models/PublicationType.php.html       |    2 +-
 .../publications/src/Models/dashboard.html    |    2 +-
 .../publications/src/Models/index.html        |    2 +-
 .../src/Pages/PublicationListPage.php.html    |    2 +-
 .../src/Pages/PublicationPage.php.html        |    2 +-
 .../publications/src/Pages/dashboard.html     |    2 +-
 .../publications/src/Pages/index.html         |    2 +-
 .../TranslationServiceProvider.php.html       |    2 +-
 .../publications/src/Providers/dashboard.html |    2 +-
 .../publications/src/Providers/index.html     |    2 +-
 .../publications/src/Publications.php.html    |    2 +-
 .../src/PublicationsExtension.php.html        |    2 +-
 .../src/PublicationsServiceProvider.php.html  |    2 +-
 .../RelatedPublicationsComponent.php.html     |    2 +-
 .../src/Views/Components/dashboard.html       |    2 +-
 .../src/Views/Components/index.html           |    2 +-
 .../publications/src/Views/dashboard.html     |    2 +-
 .../publications/src/Views/index.html         |    2 +-
 .../coverage/publications/src/dashboard.html  |    2 +-
 master/coverage/publications/src/index.html   |    2 +-
 master/dev-docs/README.html                   |    5 +-
 master/dev-docs/advanced-customization.html   |    5 +-
 master/dev-docs/advanced-features.html        |    5 +-
 master/dev-docs/advanced-markdown.html        |    5 +-
 master/dev-docs/architecture-concepts.html    |    5 +-
 master/dev-docs/autodiscovery.html            |    5 +-
 master/dev-docs/automatic-routing.html        |    5 +-
 master/dev-docs/blog-posts.html               |    5 +-
 master/dev-docs/build-tasks.html              |    5 +-
 master/dev-docs/collections.html              |    5 +-
 master/dev-docs/compile-and-deploy.html       |    5 +-
 master/dev-docs/configuration.html            |    5 +-
 master/dev-docs/console-commands.html         |    5 +-
 master/dev-docs/core-concepts.html            |    5 +-
 master/dev-docs/customization.html            |    5 +-
 master/dev-docs/directory-structure.html      |    5 +-
 master/dev-docs/documentation-pages.html      |    5 +-
 master/dev-docs/dynamic-data-discovery.html   |    5 +-
 master/dev-docs/extensions-api.html           |    5 +-
 master/dev-docs/extensions.html               |    5 +-
 master/dev-docs/front-matter.html             |    5 +-
 master/dev-docs/getting-started.html          |    5 +-
 master/dev-docs/helpers.html                  |    5 +-
 master/dev-docs/hyde-pages.html               |    5 +-
 master/dev-docs/in-memory-pages.html          |    5 +-
 master/dev-docs/index.html                    |    5 +-
 master/dev-docs/installation.html             |    5 +-
 master/dev-docs/managing-assets.html          |    5 +-
 master/dev-docs/navigation.html               |    5 +-
 master/dev-docs/page-models.html              |    5 +-
 master/dev-docs/quickstart.html               |    5 +-
 master/dev-docs/realtime-compiler.html        |    5 +-
 master/dev-docs/search.html                   |   11 +-
 master/dev-docs/static-pages.html             |    5 +-
 master/dev-docs/the-hydekernel.html           |    5 +-
 master/dev-docs/third-party-integrations.html |    5 +-
 master/dev-docs/troubleshooting.html          |    5 +-
 master/dev-docs/ui-kit.html                   |    5 +-
 master/dev-docs/updating-hyde.html            |    5 +-
 master/index.html                             |   18 +-
 master/preview/404.html                       |   43 +-
 master/preview/blade.html                     |   26 +-
 master/preview/build-information.html         |   34 +-
 master/preview/docs/headings.html             |    5 +-
 master/preview/docs/index.html                |    5 +-
 master/preview/docs/page-1.html               |    5 +-
 master/preview/docs/page-2.html               |    5 +-
 master/preview/docs/page-3.html               |    5 +-
 master/preview/docs/readme.html               |    5 +-
 master/preview/docs/search.html               |   11 +-
 master/preview/feed.xml                       |    2 +-
 master/preview/index.html                     |   35 +-
 master/preview/markdown-page.html             |   24 +-
 master/preview/posts/what-is-this-site.html   |   30 +-
 .../docs/a-caucusrace-and-a-long-tale.html    |    5 +-
 .../docs/docs/a-mad-teaparty.html             |    5 +-
 .../docs/docs/advice-from-a-caterpillar.html  |    5 +-
 .../docs/docs/alices-evidence.html            |    5 +-
 master/test-fixtures/docs/docs/cover.html     |    5 +-
 .../docs/docs/down-the-rabbithole.html        |    5 +-
 .../docs/docs/extra-information.html          |    5 +-
 master/test-fixtures/docs/docs/index.html     |    5 +-
 .../docs/docs/pig-and-pepper.html             |    5 +-
 master/test-fixtures/docs/docs/search.html    |   11 +-
 .../docs/docs/the-lobster-quadrille.html      |    5 +-
 .../docs/docs/the-mock-turtles-story.html     |    5 +-
 .../docs/docs/the-pool-of-tears.html          |    5 +-
 .../docs/docs/the-queens-croquetground.html   |    5 +-
 .../the-rabbit-sends-in-a-little-bill.html    |    5 +-
 .../docs/docs/who-stole-the-tarts.html        |    5 +-
 393 files changed, 3608 insertions(+), 3670 deletions(-)

diff --git a/index.html b/index.html
index 31c807cc432..78b28fe5cdc 100644
--- a/index.html
+++ b/index.html
@@ -7,11 +7,11 @@ <h1>Index of hydephp/develop
     <thead><tr><th valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAKEAAP///8z//wAAAAAAACH+TlRoaXMgYXJ0IGlzIGluIHRoZSBwdWJsaWMgZG9tYWluLiBLZXZpbiBIdWdoZXMsIGtldmluaEBlaXQuY29tLCBTZXB0ZW1iZXIgMTk5NQAh+QQBAAABACwAAAAAFAAWAAACE4yPqcvtD6OctNqLs968+w+GSQEAOw==" alt="[ICO]"><th>Name</th><th>Last modified</th><th>Size</th><th>Description</th></tr><tr><th colspan="5"><hr></th></tr></thead>
     <tbody>
         <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAPYAABkLC7y8vHFxccwAAJkAAEVBQfVBQWYAAKejo97e3pkzM4yMjDUfH9MzM6hzc2EoKGZmZkIDA7YAANbW1uVRUebm5tcbG5ZQULUfH+94eMzMzE9PT5mZmfYoKP9aWrW1tTswMDgWFndra40AALoPD+F3dykcHI59fe/v73g4ON8LC+kjI8hJSZWPj4IAACMPD/g4OGNBQeNKSug8PGBTU00kJPBtbcXFxaeMjK2trXwBAZlmZrNERK4AADMAAIN8fP9UVMEJCU47O14AAJ50dMcYGI1hYfIpKfIaGv5LS+AREU4/P/8zM1dXV3IAAPRMTOUwMLR0dFEBAYg2NnRTU/9mZnt7e/QkJKQAAP1CQjsrK/V1dVEsLFUxMYeHh6kFBWYzM7IqKsQQEIyGhmFNTVJMTCgPD8AAANsXF0I1NXxtbekLC/89PekODvE6OllQUK6KisMICNQMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAHMALAAAAAAUABYAAAf/gHOCg4SFhoYcHDcVjCiHhhMFMWUtEwmMj4MoGlRhD0s5lo6Zmx9CKxhdlZeZc4xjKVckL6ujh4ycDUhfDAiWpAkaHBdHKgdlixWFlyi4H0YwShIhvgmanAuXljkOBtJSEIuCFTc7U1Y36dwlT2hnOmkfE67PFApNImpqURlV7RIutMgjB2cLEAM8WMg46MHDDDE9DoAIhYCIDX9Z2GjcCKXIFwIRwuXKmLGDSVQQsYxwQivAhBZgmJxUIadmD5UrAYgM9oOLhTUDJAjFOcSHCQEIXOLqGUcHgBdQn4KAkEhpM54AwC3wsjVpDqWsXE244cVMk68fXKYTZUusMEUaC+Jqw2ToKlu6hgIBADs=" alt="[PARENTDIR]"></td><td><a href="../">Parent Directory</a></td><td>&nbsp;</td><td align="right"> - </td><td>&nbsp;</td></tr>
-        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAMQAAFxcXNbW1q2trZmZmf///8TExO/v73Nzc+bm5rW1tXl5eaWlpb29vWZmZszMzPf3993d3YWFhWZmZoyMjP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUABQALAAAAAAUABYAAAXFYMIwSSmcy7AkAUK9L0PMNPEYgSo4LizXMwMip1rwYAlgcDgoFI+UJGFArUIcAwdjsRAEXgIlQYitqgqu8NQ8GBYSp8GBkRbfho63YF5fs6sBb3wUanY3VwkHaIQzf2ZDDIoGjGI1Q4kFk2qOVZeSlJUzCA6YmkCOo6WglQ+je5mrfmYQBa+TCzYPN0IIvQiICw2wC7pCEAEBDsp5cAPCkwMGx3kkJSYpEQAO0BMREQoH4eIHDeUADRAvVwXs7e7tDhCTFCEAOw==" alt="[TXT]"></td><td><a href="README.md">README.md</a></td><td align="right"><time datetime="2024-04-14T10:39:05+00:00">2024-04-14 10:39</time></td><td align="right">237 B</td><td>&nbsp;</td></tr>
-        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAMQAAFxcXNbW1q2trZmZmf///8TExO/v73Nzc+bm5rW1tXl5eaWlpb29vWZmZszMzPf3993d3YWFhWZmZoyMjP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUABQALAAAAAAUABYAAAXFYMIwSSmcy7AkAUK9L0PMNPEYgSo4LizXMwMip1rwYAlgcDgoFI+UJGFArUIcAwdjsRAEXgIlQYitqgqu8NQ8GBYSp8GBkRbfho63YF5fs6sBb3wUanY3VwkHaIQzf2ZDDIoGjGI1Q4kFk2qOVZeSlJUzCA6YmkCOo6WglQ+je5mrfmYQBa+TCzYPN0IIvQiICw2wC7pCEAEBDsp5cAPCkwMGx3kkJSYpEQAO0BMREQoH4eIHDeUADRAvVwXs7e7tDhCTFCEAOw==" alt="[TXT]"></td><td><a href="index.html">index.html</a></td><td align="right"><time datetime="2024-04-14T10:39:05+00:00">2024-04-14 10:39</time></td><td align="right">4.47 kB</td><td>&nbsp;</td></tr>
-        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAPYAAFw+H/HDlMOkhbaSbZh6W8LCwqKioubm5n9lS5mZmf/evf/Tpt+zhr29vbGLZL2betfX17e3t3JMJ6CAYO/Kpue6jfnWssWyoKV5TNesgZdrP7+UaWdEIs6lfO/v797e3uG1iXxTKr+Zc4R6b6N2SszMzLKLZPXFla2DWo1xVf/Wre3Ak//bttW0lKurq//hw/jLn/3RpVtDLMOZbrWPaal+UdG1mYRYLOXCnfXIm8mrjKuHY7SUc9uwheW4jK+Macaed6h8UWNCIf/ZtLyWcWtIJOy9jsSddqWEY//jx5p7XLqPY5VvSMWljIBmTPHPrPLHnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAFEALAAAAAAUABYAAAf/gFGCg4SFhoeIiB6Li4mDix+REJORBx6HBzZENA4oNZ9EJZSWl4I2Ok9DqioLFSQ7DQWio1EDFKwxuTkrM0ybJp5BF5EiOFAryCA9HTw6LQqqUBsaog9ND9icNCICz6sBPTcRJQ9J5tDo6bk+HSEuBUQv8uqrC7sZR+7w9Li4RvgDJCRoQANdP3v2wDH7IZAgi4f9YEg8UQHgjoYo6u2imIzBQiRFBmZM2HEZPiADkCjhIHJdxZMdgKBMqSSFkIEkjimLKWLTL5UpEAAwUADDkpMpf+xYCjSoDBnvLmi4EaKqhKtFsmoFIGPEuA8lIrgwkKCs2bMG3ok6AFZWrLdwBN+uDQQAOw==" alt="[DIR]"></td><td><a href="master/">master/</a></td><td align="right"><time datetime="2024-04-14T10:39:05+00:00">2024-04-14 10:39</time></td><td align="right"> - </td><td>&nbsp;</td></tr>
+        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAMQAAFxcXNbW1q2trZmZmf///8TExO/v73Nzc+bm5rW1tXl5eaWlpb29vWZmZszMzPf3993d3YWFhWZmZoyMjP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUABQALAAAAAAUABYAAAXFYMIwSSmcy7AkAUK9L0PMNPEYgSo4LizXMwMip1rwYAlgcDgoFI+UJGFArUIcAwdjsRAEXgIlQYitqgqu8NQ8GBYSp8GBkRbfho63YF5fs6sBb3wUanY3VwkHaIQzf2ZDDIoGjGI1Q4kFk2qOVZeSlJUzCA6YmkCOo6WglQ+je5mrfmYQBa+TCzYPN0IIvQiICw2wC7pCEAEBDsp5cAPCkwMGx3kkJSYpEQAO0BMREQoH4eIHDeUADRAvVwXs7e7tDhCTFCEAOw==" alt="[TXT]"></td><td><a href="README.md">README.md</a></td><td align="right"><time datetime="2024-04-14T11:52:06+00:00">2024-04-14 11:52</time></td><td align="right">237 B</td><td>&nbsp;</td></tr>
+        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAMQAAFxcXNbW1q2trZmZmf///8TExO/v73Nzc+bm5rW1tXl5eaWlpb29vWZmZszMzPf3993d3YWFhWZmZoyMjP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUABQALAAAAAAUABYAAAXFYMIwSSmcy7AkAUK9L0PMNPEYgSo4LizXMwMip1rwYAlgcDgoFI+UJGFArUIcAwdjsRAEXgIlQYitqgqu8NQ8GBYSp8GBkRbfho63YF5fs6sBb3wUanY3VwkHaIQzf2ZDDIoGjGI1Q4kFk2qOVZeSlJUzCA6YmkCOo6WglQ+je5mrfmYQBa+TCzYPN0IIvQiICw2wC7pCEAEBDsp5cAPCkwMGx3kkJSYpEQAO0BMREQoH4eIHDeUADRAvVwXs7e7tDhCTFCEAOw==" alt="[TXT]"></td><td><a href="index.html">index.html</a></td><td align="right"><time datetime="2024-04-14T11:52:06+00:00">2024-04-14 11:52</time></td><td align="right">4.47 kB</td><td>&nbsp;</td></tr>
+        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAPYAAFw+H/HDlMOkhbaSbZh6W8LCwqKioubm5n9lS5mZmf/evf/Tpt+zhr29vbGLZL2betfX17e3t3JMJ6CAYO/Kpue6jfnWssWyoKV5TNesgZdrP7+UaWdEIs6lfO/v797e3uG1iXxTKr+Zc4R6b6N2SszMzLKLZPXFla2DWo1xVf/Wre3Ak//bttW0lKurq//hw/jLn/3RpVtDLMOZbrWPaal+UdG1mYRYLOXCnfXIm8mrjKuHY7SUc9uwheW4jK+Macaed6h8UWNCIf/ZtLyWcWtIJOy9jsSddqWEY//jx5p7XLqPY5VvSMWljIBmTPHPrPLHnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAFEALAAAAAAUABYAAAf/gFGCg4SFhoeIiB6Li4mDix+REJORBx6HBzZENA4oNZ9EJZSWl4I2Ok9DqioLFSQ7DQWio1EDFKwxuTkrM0ybJp5BF5EiOFAryCA9HTw6LQqqUBsaog9ND9icNCICz6sBPTcRJQ9J5tDo6bk+HSEuBUQv8uqrC7sZR+7w9Li4RvgDJCRoQANdP3v2wDH7IZAgi4f9YEg8UQHgjoYo6u2imIzBQiRFBmZM2HEZPiADkCjhIHJdxZMdgKBMqSSFkIEkjimLKWLTL5UpEAAwUADDkpMpf+xYCjSoDBnvLmi4EaKqhKtFsmoFIGPEuA8lIrgwkKCs2bMG3ok6AFZWrLdwBN+uDQQAOw==" alt="[DIR]"></td><td><a href="master/">master/</a></td><td align="right"><time datetime="2024-04-14T11:52:06+00:00">2024-04-14 11:52</time></td><td align="right"> - </td><td>&nbsp;</td></tr>
     </tbody>
     <tfoot><tr><th colspan="5"><hr></th></tr></tfoot>
 </table>
-<address>directory-listing.php/v1.0.0-rc.4 <small>(Linux) PHP/8.1.2-1ubuntu2.14 compiled at <time datetime="2024-04-14T10:41:01+00:00">2024-04-14 10:41:01 UTC</time> in 36.58ms</small></address>
+<address>directory-listing.php/v1.0.0-rc.4 <small>(Linux) PHP/8.1.2-1ubuntu2.14 compiled at <time datetime="2024-04-14T11:52:23+00:00">2024-04-14 11:52:23 UTC</time> in 34.42ms</small></address>
 </body></html>
diff --git a/master/README.md b/master/README.md
index 842b1261729..fe54fb7b543 100644
--- a/master/README.md
+++ b/master/README.md
@@ -1 +1 @@
-# CI/CD generated reports for [11d8848a9a106ca79e6fda071d3ce6caa18139f7](https://github.com/hydephp/develop/commit/11d8848a9a106ca79e6fda071d3ce6caa18139f7)
+# CI/CD generated reports for [bf136ff1ebf322a4bdca54649934f873481ec490](https://github.com/hydephp/develop/commit/bf136ff1ebf322a4bdca54649934f873481ec490)
diff --git a/master/coverage/dashboard.html b/master/coverage/dashboard.html
index 4bd6951f8ab..1b4a736be2a 100644
--- a/master/coverage/dashboard.html
+++ b/master/coverage/dashboard.html
@@ -147,7 +147,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/dashboard.html b/master/coverage/framework/dashboard.html
index 5d556aa9d18..f877dd11841 100644
--- a/master/coverage/framework/dashboard.html
+++ b/master/coverage/framework/dashboard.html
@@ -148,7 +148,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/index.html b/master/coverage/framework/index.html
index ca8fce60e3b..ed49394958a 100644
--- a/master/coverage/framework/index.html
+++ b/master/coverage/framework/index.html
@@ -111,7 +111,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Console/Commands/BuildRssFeedCommand.php.html b/master/coverage/framework/src/Console/Commands/BuildRssFeedCommand.php.html
index ed5dfe95f70..8981e37be78 100644
--- a/master/coverage/framework/src/Console/Commands/BuildRssFeedCommand.php.html
+++ b/master/coverage/framework/src/Console/Commands/BuildRssFeedCommand.php.html
@@ -166,7 +166,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/Commands/BuildSearchCommand.php.html b/master/coverage/framework/src/Console/Commands/BuildSearchCommand.php.html
index bd6a64238b8..4ba3ccf02be 100644
--- a/master/coverage/framework/src/Console/Commands/BuildSearchCommand.php.html
+++ b/master/coverage/framework/src/Console/Commands/BuildSearchCommand.php.html
@@ -166,7 +166,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/Commands/BuildSiteCommand.php.html b/master/coverage/framework/src/Console/Commands/BuildSiteCommand.php.html
index cd1dc8ddc42..870d2129b79 100644
--- a/master/coverage/framework/src/Console/Commands/BuildSiteCommand.php.html
+++ b/master/coverage/framework/src/Console/Commands/BuildSiteCommand.php.html
@@ -462,7 +462,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/Commands/BuildSitemapCommand.php.html b/master/coverage/framework/src/Console/Commands/BuildSitemapCommand.php.html
index 342c5d505e7..0fdc9be282c 100644
--- a/master/coverage/framework/src/Console/Commands/BuildSitemapCommand.php.html
+++ b/master/coverage/framework/src/Console/Commands/BuildSitemapCommand.php.html
@@ -166,7 +166,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/Commands/ChangeSourceDirectoryCommand.php.html b/master/coverage/framework/src/Console/Commands/ChangeSourceDirectoryCommand.php.html
index 65a8f4bd89a..216b2261fb0 100644
--- a/master/coverage/framework/src/Console/Commands/ChangeSourceDirectoryCommand.php.html
+++ b/master/coverage/framework/src/Console/Commands/ChangeSourceDirectoryCommand.php.html
@@ -454,7 +454,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/Commands/DebugCommand.php.html b/master/coverage/framework/src/Console/Commands/DebugCommand.php.html
index 43957b261da..6996f124591 100644
--- a/master/coverage/framework/src/Console/Commands/DebugCommand.php.html
+++ b/master/coverage/framework/src/Console/Commands/DebugCommand.php.html
@@ -287,7 +287,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/Commands/MakePageCommand.php.html b/master/coverage/framework/src/Console/Commands/MakePageCommand.php.html
index c6cd4b138f8..dbc0dd5d41c 100644
--- a/master/coverage/framework/src/Console/Commands/MakePageCommand.php.html
+++ b/master/coverage/framework/src/Console/Commands/MakePageCommand.php.html
@@ -392,7 +392,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/Commands/MakePostCommand.php.html b/master/coverage/framework/src/Console/Commands/MakePostCommand.php.html
index b5cceb10ec4..905ecea682d 100644
--- a/master/coverage/framework/src/Console/Commands/MakePostCommand.php.html
+++ b/master/coverage/framework/src/Console/Commands/MakePostCommand.php.html
@@ -330,7 +330,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/Commands/PackageDiscoverCommand.php.html b/master/coverage/framework/src/Console/Commands/PackageDiscoverCommand.php.html
index c34b95ddb11..f4779ed2a1a 100644
--- a/master/coverage/framework/src/Console/Commands/PackageDiscoverCommand.php.html
+++ b/master/coverage/framework/src/Console/Commands/PackageDiscoverCommand.php.html
@@ -165,7 +165,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/Commands/PublishConfigsCommand.php.html b/master/coverage/framework/src/Console/Commands/PublishConfigsCommand.php.html
index e6ef20e023a..d9c0c56775b 100644
--- a/master/coverage/framework/src/Console/Commands/PublishConfigsCommand.php.html
+++ b/master/coverage/framework/src/Console/Commands/PublishConfigsCommand.php.html
@@ -215,7 +215,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/Commands/PublishHomepageCommand.php.html b/master/coverage/framework/src/Console/Commands/PublishHomepageCommand.php.html
index beb101dd1da..73c2e66ac1b 100644
--- a/master/coverage/framework/src/Console/Commands/PublishHomepageCommand.php.html
+++ b/master/coverage/framework/src/Console/Commands/PublishHomepageCommand.php.html
@@ -423,7 +423,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/Commands/PublishViewsCommand.php.html b/master/coverage/framework/src/Console/Commands/PublishViewsCommand.php.html
index 822795303f9..b5f73a5200b 100644
--- a/master/coverage/framework/src/Console/Commands/PublishViewsCommand.php.html
+++ b/master/coverage/framework/src/Console/Commands/PublishViewsCommand.php.html
@@ -326,7 +326,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/Commands/RebuildPageCommand.php.html b/master/coverage/framework/src/Console/Commands/RebuildPageCommand.php.html
index 1908b9e60f7..ffabc7821b2 100644
--- a/master/coverage/framework/src/Console/Commands/RebuildPageCommand.php.html
+++ b/master/coverage/framework/src/Console/Commands/RebuildPageCommand.php.html
@@ -290,7 +290,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/Commands/RouteListCommand.php.html b/master/coverage/framework/src/Console/Commands/RouteListCommand.php.html
index 70e03b12479..d21f1eb7c36 100644
--- a/master/coverage/framework/src/Console/Commands/RouteListCommand.php.html
+++ b/master/coverage/framework/src/Console/Commands/RouteListCommand.php.html
@@ -243,7 +243,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/Commands/ServeCommand.php.html b/master/coverage/framework/src/Console/Commands/ServeCommand.php.html
index b211b754221..dc146c50fd3 100644
--- a/master/coverage/framework/src/Console/Commands/ServeCommand.php.html
+++ b/master/coverage/framework/src/Console/Commands/ServeCommand.php.html
@@ -568,7 +568,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/Commands/ValidateCommand.php.html b/master/coverage/framework/src/Console/Commands/ValidateCommand.php.html
index 8d565fd465d..4dd3244d003 100644
--- a/master/coverage/framework/src/Console/Commands/ValidateCommand.php.html
+++ b/master/coverage/framework/src/Console/Commands/ValidateCommand.php.html
@@ -308,7 +308,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/Commands/VendorPublishCommand.php.html b/master/coverage/framework/src/Console/Commands/VendorPublishCommand.php.html
index 1fdac427fac..e16ca77c75a 100644
--- a/master/coverage/framework/src/Console/Commands/VendorPublishCommand.php.html
+++ b/master/coverage/framework/src/Console/Commands/VendorPublishCommand.php.html
@@ -292,7 +292,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/Commands/dashboard.html b/master/coverage/framework/src/Console/Commands/dashboard.html
index 8957bf5556a..746bdcbdf49 100644
--- a/master/coverage/framework/src/Console/Commands/dashboard.html
+++ b/master/coverage/framework/src/Console/Commands/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Console/Commands/index.html b/master/coverage/framework/src/Console/Commands/index.html
index 2dfa75fd2ad..c72cf4fe5aa 100644
--- a/master/coverage/framework/src/Console/Commands/index.html
+++ b/master/coverage/framework/src/Console/Commands/index.html
@@ -562,7 +562,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Console/Concerns/AsksToRebuildSite.php.html b/master/coverage/framework/src/Console/Concerns/AsksToRebuildSite.php.html
index 887adc2b989..ac68a7753d4 100644
--- a/master/coverage/framework/src/Console/Concerns/AsksToRebuildSite.php.html
+++ b/master/coverage/framework/src/Console/Concerns/AsksToRebuildSite.php.html
@@ -166,7 +166,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/Concerns/Command.php.html b/master/coverage/framework/src/Console/Concerns/Command.php.html
index 0bddba300e3..c53205d22db 100644
--- a/master/coverage/framework/src/Console/Concerns/Command.php.html
+++ b/master/coverage/framework/src/Console/Concerns/Command.php.html
@@ -479,7 +479,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/Concerns/dashboard.html b/master/coverage/framework/src/Console/Concerns/dashboard.html
index 6b9d0c36267..0ace400ba98 100644
--- a/master/coverage/framework/src/Console/Concerns/dashboard.html
+++ b/master/coverage/framework/src/Console/Concerns/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Console/Concerns/index.html b/master/coverage/framework/src/Console/Concerns/index.html
index aec512990dc..3de2df631a2 100644
--- a/master/coverage/framework/src/Console/Concerns/index.html
+++ b/master/coverage/framework/src/Console/Concerns/index.html
@@ -142,7 +142,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Console/ConsoleServiceProvider.php.html b/master/coverage/framework/src/Console/ConsoleServiceProvider.php.html
index 4c6afdee313..e464597c8df 100644
--- a/master/coverage/framework/src/Console/ConsoleServiceProvider.php.html
+++ b/master/coverage/framework/src/Console/ConsoleServiceProvider.php.html
@@ -255,7 +255,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Console/dashboard.html b/master/coverage/framework/src/Console/dashboard.html
index 082ec4f6fbc..f24553bb3a6 100644
--- a/master/coverage/framework/src/Console/dashboard.html
+++ b/master/coverage/framework/src/Console/dashboard.html
@@ -138,7 +138,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Console/index.html b/master/coverage/framework/src/Console/index.html
index 9b588130792..62b683e52f9 100644
--- a/master/coverage/framework/src/Console/index.html
+++ b/master/coverage/framework/src/Console/index.html
@@ -169,7 +169,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Enums/Feature.php.html b/master/coverage/framework/src/Enums/Feature.php.html
index 29e281c0450..59179713d04 100644
--- a/master/coverage/framework/src/Enums/Feature.php.html
+++ b/master/coverage/framework/src/Enums/Feature.php.html
@@ -101,7 +101,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Enums/dashboard.html b/master/coverage/framework/src/Enums/dashboard.html
index cb81d4f007d..5cc448e8e7b 100644
--- a/master/coverage/framework/src/Enums/dashboard.html
+++ b/master/coverage/framework/src/Enums/dashboard.html
@@ -138,7 +138,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Enums/index.html b/master/coverage/framework/src/Enums/index.html
index 31ca6548f70..17926754bfb 100644
--- a/master/coverage/framework/src/Enums/index.html
+++ b/master/coverage/framework/src/Enums/index.html
@@ -83,7 +83,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Facades/Asset.php.html b/master/coverage/framework/src/Facades/Asset.php.html
index 39733f60055..77d3c530693 100644
--- a/master/coverage/framework/src/Facades/Asset.php.html
+++ b/master/coverage/framework/src/Facades/Asset.php.html
@@ -168,7 +168,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Facades/Author.php.html b/master/coverage/framework/src/Facades/Author.php.html
index 75c16d47478..f6ab846f1d8 100644
--- a/master/coverage/framework/src/Facades/Author.php.html
+++ b/master/coverage/framework/src/Facades/Author.php.html
@@ -234,7 +234,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Facades/Config.php.html b/master/coverage/framework/src/Facades/Config.php.html
index f87081fe8d5..118b173eaeb 100644
--- a/master/coverage/framework/src/Facades/Config.php.html
+++ b/master/coverage/framework/src/Facades/Config.php.html
@@ -340,7 +340,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Facades/Features.php.html b/master/coverage/framework/src/Facades/Features.php.html
index 0f0456f46ad..12266b6645d 100644
--- a/master/coverage/framework/src/Facades/Features.php.html
+++ b/master/coverage/framework/src/Facades/Features.php.html
@@ -800,7 +800,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Facades/Filesystem.php.html b/master/coverage/framework/src/Facades/Filesystem.php.html
index 21559a1e49c..cfbb3bd6916 100644
--- a/master/coverage/framework/src/Facades/Filesystem.php.html
+++ b/master/coverage/framework/src/Facades/Filesystem.php.html
@@ -501,7 +501,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Facades/Meta.php.html b/master/coverage/framework/src/Facades/Meta.php.html
index 79e431cfe3a..45a05450c1d 100644
--- a/master/coverage/framework/src/Facades/Meta.php.html
+++ b/master/coverage/framework/src/Facades/Meta.php.html
@@ -300,7 +300,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Facades/Site.php.html b/master/coverage/framework/src/Facades/Site.php.html
index 1a0081621f4..42c6ee7060b 100644
--- a/master/coverage/framework/src/Facades/Site.php.html
+++ b/master/coverage/framework/src/Facades/Site.php.html
@@ -239,7 +239,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Facades/dashboard.html b/master/coverage/framework/src/Facades/dashboard.html
index b00218afdb9..cd3f10a88ae 100644
--- a/master/coverage/framework/src/Facades/dashboard.html
+++ b/master/coverage/framework/src/Facades/dashboard.html
@@ -148,7 +148,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Facades/index.html b/master/coverage/framework/src/Facades/index.html
index fdceeaad672..b0490046a87 100644
--- a/master/coverage/framework/src/Facades/index.html
+++ b/master/coverage/framework/src/Facades/index.html
@@ -281,7 +281,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Foundation/Application.php.html b/master/coverage/framework/src/Foundation/Application.php.html
index 123961c85ff..afc598a6810 100644
--- a/master/coverage/framework/src/Foundation/Application.php.html
+++ b/master/coverage/framework/src/Foundation/Application.php.html
@@ -194,7 +194,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Concerns/BaseFoundationCollection.php.html b/master/coverage/framework/src/Foundation/Concerns/BaseFoundationCollection.php.html
index 6be7551fdad..c1e60373068 100644
--- a/master/coverage/framework/src/Foundation/Concerns/BaseFoundationCollection.php.html
+++ b/master/coverage/framework/src/Foundation/Concerns/BaseFoundationCollection.php.html
@@ -303,7 +303,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Concerns/BootsHydeKernel.php.html b/master/coverage/framework/src/Foundation/Concerns/BootsHydeKernel.php.html
index 0362342dc16..1f4bf6a75e4 100644
--- a/master/coverage/framework/src/Foundation/Concerns/BootsHydeKernel.php.html
+++ b/master/coverage/framework/src/Foundation/Concerns/BootsHydeKernel.php.html
@@ -299,7 +299,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Concerns/ForwardsFilesystem.php.html b/master/coverage/framework/src/Foundation/Concerns/ForwardsFilesystem.php.html
index 158e1d59d20..e4d9df79d08 100644
--- a/master/coverage/framework/src/Foundation/Concerns/ForwardsFilesystem.php.html
+++ b/master/coverage/framework/src/Foundation/Concerns/ForwardsFilesystem.php.html
@@ -350,7 +350,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Concerns/ForwardsHyperlinks.php.html b/master/coverage/framework/src/Foundation/Concerns/ForwardsHyperlinks.php.html
index e26e0fe3648..9676cf65fc1 100644
--- a/master/coverage/framework/src/Foundation/Concerns/ForwardsHyperlinks.php.html
+++ b/master/coverage/framework/src/Foundation/Concerns/ForwardsHyperlinks.php.html
@@ -323,7 +323,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Concerns/HandlesFoundationCollections.php.html b/master/coverage/framework/src/Foundation/Concerns/HandlesFoundationCollections.php.html
index 8afa7be65c2..57fc44c3f29 100644
--- a/master/coverage/framework/src/Foundation/Concerns/HandlesFoundationCollections.php.html
+++ b/master/coverage/framework/src/Foundation/Concerns/HandlesFoundationCollections.php.html
@@ -255,7 +255,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Concerns/HydeExtension.php.html b/master/coverage/framework/src/Foundation/Concerns/HydeExtension.php.html
index 5648acc018b..e273f3bd521 100644
--- a/master/coverage/framework/src/Foundation/Concerns/HydeExtension.php.html
+++ b/master/coverage/framework/src/Foundation/Concerns/HydeExtension.php.html
@@ -287,7 +287,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Concerns/ImplementsStringHelpers.php.html b/master/coverage/framework/src/Foundation/Concerns/ImplementsStringHelpers.php.html
index 0ddcc2cf35e..f6051c895ff 100644
--- a/master/coverage/framework/src/Foundation/Concerns/ImplementsStringHelpers.php.html
+++ b/master/coverage/framework/src/Foundation/Concerns/ImplementsStringHelpers.php.html
@@ -293,7 +293,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Concerns/ManagesExtensions.php.html b/master/coverage/framework/src/Foundation/Concerns/ManagesExtensions.php.html
index ebe63ef04bc..96613384454 100644
--- a/master/coverage/framework/src/Foundation/Concerns/ManagesExtensions.php.html
+++ b/master/coverage/framework/src/Foundation/Concerns/ManagesExtensions.php.html
@@ -358,7 +358,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Concerns/ManagesHydeKernel.php.html b/master/coverage/framework/src/Foundation/Concerns/ManagesHydeKernel.php.html
index 4ef504390d4..a9f21092fb6 100644
--- a/master/coverage/framework/src/Foundation/Concerns/ManagesHydeKernel.php.html
+++ b/master/coverage/framework/src/Foundation/Concerns/ManagesHydeKernel.php.html
@@ -461,7 +461,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Concerns/ManagesViewData.php.html b/master/coverage/framework/src/Foundation/Concerns/ManagesViewData.php.html
index a1ff8d1003c..e6547b1316f 100644
--- a/master/coverage/framework/src/Foundation/Concerns/ManagesViewData.php.html
+++ b/master/coverage/framework/src/Foundation/Concerns/ManagesViewData.php.html
@@ -256,7 +256,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Concerns/dashboard.html b/master/coverage/framework/src/Foundation/Concerns/dashboard.html
index 95967d3e7a3..c9feace4398 100644
--- a/master/coverage/framework/src/Foundation/Concerns/dashboard.html
+++ b/master/coverage/framework/src/Foundation/Concerns/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Foundation/Concerns/index.html b/master/coverage/framework/src/Foundation/Concerns/index.html
index c601f1f2e28..d652607a900 100644
--- a/master/coverage/framework/src/Foundation/Concerns/index.html
+++ b/master/coverage/framework/src/Foundation/Concerns/index.html
@@ -366,7 +366,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Foundation/ConsoleKernel.php.html b/master/coverage/framework/src/Foundation/ConsoleKernel.php.html
index 59fd1d240a3..ea50fe47b40 100644
--- a/master/coverage/framework/src/Foundation/ConsoleKernel.php.html
+++ b/master/coverage/framework/src/Foundation/ConsoleKernel.php.html
@@ -175,7 +175,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Facades/Files.php.html b/master/coverage/framework/src/Foundation/Facades/Files.php.html
index ed9557c64d5..c9f72a9e1ef 100644
--- a/master/coverage/framework/src/Foundation/Facades/Files.php.html
+++ b/master/coverage/framework/src/Foundation/Facades/Files.php.html
@@ -162,7 +162,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Facades/Pages.php.html b/master/coverage/framework/src/Foundation/Facades/Pages.php.html
index 6d67fb80c56..d9472fe79d2 100644
--- a/master/coverage/framework/src/Foundation/Facades/Pages.php.html
+++ b/master/coverage/framework/src/Foundation/Facades/Pages.php.html
@@ -162,7 +162,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Facades/Routes.php.html b/master/coverage/framework/src/Foundation/Facades/Routes.php.html
index ddd5a75564d..2ce3909ba1c 100644
--- a/master/coverage/framework/src/Foundation/Facades/Routes.php.html
+++ b/master/coverage/framework/src/Foundation/Facades/Routes.php.html
@@ -306,7 +306,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Facades/dashboard.html b/master/coverage/framework/src/Foundation/Facades/dashboard.html
index 6ce07159f6b..6f618308374 100644
--- a/master/coverage/framework/src/Foundation/Facades/dashboard.html
+++ b/master/coverage/framework/src/Foundation/Facades/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Foundation/Facades/index.html b/master/coverage/framework/src/Foundation/Facades/index.html
index e9095f4ce78..4e819ff5233 100644
--- a/master/coverage/framework/src/Foundation/Facades/index.html
+++ b/master/coverage/framework/src/Foundation/Facades/index.html
@@ -170,7 +170,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Foundation/HydeCoreExtension.php.html b/master/coverage/framework/src/Foundation/HydeCoreExtension.php.html
index c90e0e4235d..33260a26902 100644
--- a/master/coverage/framework/src/Foundation/HydeCoreExtension.php.html
+++ b/master/coverage/framework/src/Foundation/HydeCoreExtension.php.html
@@ -171,7 +171,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/HydeKernel.php.html b/master/coverage/framework/src/Foundation/HydeKernel.php.html
index 8c5f3865323..30a4207b5f9 100644
--- a/master/coverage/framework/src/Foundation/HydeKernel.php.html
+++ b/master/coverage/framework/src/Foundation/HydeKernel.php.html
@@ -379,7 +379,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Internal/LoadConfiguration.php.html b/master/coverage/framework/src/Foundation/Internal/LoadConfiguration.php.html
index 93d834b0d00..311152556ad 100644
--- a/master/coverage/framework/src/Foundation/Internal/LoadConfiguration.php.html
+++ b/master/coverage/framework/src/Foundation/Internal/LoadConfiguration.php.html
@@ -414,7 +414,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Internal/LoadYamlConfiguration.php.html b/master/coverage/framework/src/Foundation/Internal/LoadYamlConfiguration.php.html
index dc8c94bca39..00bf35465c7 100644
--- a/master/coverage/framework/src/Foundation/Internal/LoadYamlConfiguration.php.html
+++ b/master/coverage/framework/src/Foundation/Internal/LoadYamlConfiguration.php.html
@@ -366,7 +366,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Internal/dashboard.html b/master/coverage/framework/src/Foundation/Internal/dashboard.html
index 9419e6f60fe..18e4f28bad9 100644
--- a/master/coverage/framework/src/Foundation/Internal/dashboard.html
+++ b/master/coverage/framework/src/Foundation/Internal/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Foundation/Internal/index.html b/master/coverage/framework/src/Foundation/Internal/index.html
index 6a1761b47c9..6f4558a91ab 100644
--- a/master/coverage/framework/src/Foundation/Internal/index.html
+++ b/master/coverage/framework/src/Foundation/Internal/index.html
@@ -142,7 +142,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Foundation/Kernel/FileCollection.php.html b/master/coverage/framework/src/Foundation/Kernel/FileCollection.php.html
index 4e1dd882e7f..d49819facce 100644
--- a/master/coverage/framework/src/Foundation/Kernel/FileCollection.php.html
+++ b/master/coverage/framework/src/Foundation/Kernel/FileCollection.php.html
@@ -335,7 +335,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Kernel/Filesystem.php.html b/master/coverage/framework/src/Foundation/Kernel/Filesystem.php.html
index b6fe7bc882b..7f9dd526578 100644
--- a/master/coverage/framework/src/Foundation/Kernel/Filesystem.php.html
+++ b/master/coverage/framework/src/Foundation/Kernel/Filesystem.php.html
@@ -610,7 +610,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Kernel/Hyperlinks.php.html b/master/coverage/framework/src/Foundation/Kernel/Hyperlinks.php.html
index 122f84967a2..82a5d43dd75 100644
--- a/master/coverage/framework/src/Foundation/Kernel/Hyperlinks.php.html
+++ b/master/coverage/framework/src/Foundation/Kernel/Hyperlinks.php.html
@@ -455,7 +455,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Kernel/PageCollection.php.html b/master/coverage/framework/src/Foundation/Kernel/PageCollection.php.html
index f7689e16bd7..750bd54c1fc 100644
--- a/master/coverage/framework/src/Foundation/Kernel/PageCollection.php.html
+++ b/master/coverage/framework/src/Foundation/Kernel/PageCollection.php.html
@@ -323,7 +323,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Kernel/RouteCollection.php.html b/master/coverage/framework/src/Foundation/Kernel/RouteCollection.php.html
index 38f4d7194df..b7d1fc0c243 100644
--- a/master/coverage/framework/src/Foundation/Kernel/RouteCollection.php.html
+++ b/master/coverage/framework/src/Foundation/Kernel/RouteCollection.php.html
@@ -295,7 +295,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Kernel/dashboard.html b/master/coverage/framework/src/Foundation/Kernel/dashboard.html
index f8cc047a11f..e74b8c2cf1c 100644
--- a/master/coverage/framework/src/Foundation/Kernel/dashboard.html
+++ b/master/coverage/framework/src/Foundation/Kernel/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Foundation/Kernel/index.html b/master/coverage/framework/src/Foundation/Kernel/index.html
index a7962a17e76..4ab37f5ddf9 100644
--- a/master/coverage/framework/src/Foundation/Kernel/index.html
+++ b/master/coverage/framework/src/Foundation/Kernel/index.html
@@ -226,7 +226,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Foundation/PharSupport.php.html b/master/coverage/framework/src/Foundation/PharSupport.php.html
index 8742c7809a0..80533fe40f7 100644
--- a/master/coverage/framework/src/Foundation/PharSupport.php.html
+++ b/master/coverage/framework/src/Foundation/PharSupport.php.html
@@ -279,7 +279,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Providers/ConfigurationServiceProvider.php.html b/master/coverage/framework/src/Foundation/Providers/ConfigurationServiceProvider.php.html
index 88a7ec02633..86caa79e9bf 100644
--- a/master/coverage/framework/src/Foundation/Providers/ConfigurationServiceProvider.php.html
+++ b/master/coverage/framework/src/Foundation/Providers/ConfigurationServiceProvider.php.html
@@ -202,7 +202,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Providers/ViewServiceProvider.php.html b/master/coverage/framework/src/Foundation/Providers/ViewServiceProvider.php.html
index 34611beeeca..567dd716e19 100644
--- a/master/coverage/framework/src/Foundation/Providers/ViewServiceProvider.php.html
+++ b/master/coverage/framework/src/Foundation/Providers/ViewServiceProvider.php.html
@@ -219,7 +219,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Foundation/Providers/dashboard.html b/master/coverage/framework/src/Foundation/Providers/dashboard.html
index 913a023a6bf..c968869b7e0 100644
--- a/master/coverage/framework/src/Foundation/Providers/dashboard.html
+++ b/master/coverage/framework/src/Foundation/Providers/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Foundation/Providers/index.html b/master/coverage/framework/src/Foundation/Providers/index.html
index 200a65707eb..112b2592c16 100644
--- a/master/coverage/framework/src/Foundation/Providers/index.html
+++ b/master/coverage/framework/src/Foundation/Providers/index.html
@@ -142,7 +142,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Foundation/dashboard.html b/master/coverage/framework/src/Foundation/dashboard.html
index 24287b94505..615f7973af0 100644
--- a/master/coverage/framework/src/Foundation/dashboard.html
+++ b/master/coverage/framework/src/Foundation/dashboard.html
@@ -138,7 +138,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Foundation/index.html b/master/coverage/framework/src/Foundation/index.html
index aee22fe015d..00b2c83254a 100644
--- a/master/coverage/framework/src/Foundation/index.html
+++ b/master/coverage/framework/src/Foundation/index.html
@@ -365,7 +365,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Actions/AnonymousViewCompiler.php.html b/master/coverage/framework/src/Framework/Actions/AnonymousViewCompiler.php.html
index 8fad5522550..15b0e9a6199 100644
--- a/master/coverage/framework/src/Framework/Actions/AnonymousViewCompiler.php.html
+++ b/master/coverage/framework/src/Framework/Actions/AnonymousViewCompiler.php.html
@@ -227,7 +227,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Actions/BladeMatterParser.php.html b/master/coverage/framework/src/Framework/Actions/BladeMatterParser.php.html
index 978837d1562..7c59f81e731 100644
--- a/master/coverage/framework/src/Framework/Actions/BladeMatterParser.php.html
+++ b/master/coverage/framework/src/Framework/Actions/BladeMatterParser.php.html
@@ -545,7 +545,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Actions/ConvertsArrayToFrontMatter.php.html b/master/coverage/framework/src/Framework/Actions/ConvertsArrayToFrontMatter.php.html
index 083e7f5e09b..731e027ef5d 100644
--- a/master/coverage/framework/src/Framework/Actions/ConvertsArrayToFrontMatter.php.html
+++ b/master/coverage/framework/src/Framework/Actions/ConvertsArrayToFrontMatter.php.html
@@ -168,7 +168,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Actions/ConvertsMarkdownToPlainText.php.html b/master/coverage/framework/src/Framework/Actions/ConvertsMarkdownToPlainText.php.html
index 042bcf22959..fa71262e152 100644
--- a/master/coverage/framework/src/Framework/Actions/ConvertsMarkdownToPlainText.php.html
+++ b/master/coverage/framework/src/Framework/Actions/ConvertsMarkdownToPlainText.php.html
@@ -416,7 +416,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Actions/CreatesNewMarkdownPostFile.php.html b/master/coverage/framework/src/Framework/Actions/CreatesNewMarkdownPostFile.php.html
index 922f0a0ceb6..c7ad8901547 100644
--- a/master/coverage/framework/src/Framework/Actions/CreatesNewMarkdownPostFile.php.html
+++ b/master/coverage/framework/src/Framework/Actions/CreatesNewMarkdownPostFile.php.html
@@ -302,7 +302,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Actions/CreatesNewPageSourceFile.php.html b/master/coverage/framework/src/Framework/Actions/CreatesNewPageSourceFile.php.html
index 4b95e3d9ef6..7cca426428c 100644
--- a/master/coverage/framework/src/Framework/Actions/CreatesNewPageSourceFile.php.html
+++ b/master/coverage/framework/src/Framework/Actions/CreatesNewPageSourceFile.php.html
@@ -586,7 +586,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Actions/GeneratesDocumentationSearchIndex.php.html b/master/coverage/framework/src/Framework/Actions/GeneratesDocumentationSearchIndex.php.html
index 9265abb0160..8b3362a4ef4 100644
--- a/master/coverage/framework/src/Framework/Actions/GeneratesDocumentationSearchIndex.php.html
+++ b/master/coverage/framework/src/Framework/Actions/GeneratesDocumentationSearchIndex.php.html
@@ -390,7 +390,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Actions/GeneratesTableOfContents.php.html b/master/coverage/framework/src/Framework/Actions/GeneratesTableOfContents.php.html
index 4bb06d8bab9..23529d3c12c 100644
--- a/master/coverage/framework/src/Framework/Actions/GeneratesTableOfContents.php.html
+++ b/master/coverage/framework/src/Framework/Actions/GeneratesTableOfContents.php.html
@@ -254,7 +254,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Actions/MarkdownFileParser.php.html b/master/coverage/framework/src/Framework/Actions/MarkdownFileParser.php.html
index 26775c075fd..9c27a73a96e 100644
--- a/master/coverage/framework/src/Framework/Actions/MarkdownFileParser.php.html
+++ b/master/coverage/framework/src/Framework/Actions/MarkdownFileParser.php.html
@@ -247,7 +247,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Actions/PostBuildTasks/GenerateBuildManifest.php.html b/master/coverage/framework/src/Framework/Actions/PostBuildTasks/GenerateBuildManifest.php.html
index 3eaf3fe8cfb..ab1691b02a7 100644
--- a/master/coverage/framework/src/Framework/Actions/PostBuildTasks/GenerateBuildManifest.php.html
+++ b/master/coverage/framework/src/Framework/Actions/PostBuildTasks/GenerateBuildManifest.php.html
@@ -336,7 +336,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Actions/PostBuildTasks/GenerateRssFeed.php.html b/master/coverage/framework/src/Framework/Actions/PostBuildTasks/GenerateRssFeed.php.html
index 4a9213457a5..313fd28a7e3 100644
--- a/master/coverage/framework/src/Framework/Actions/PostBuildTasks/GenerateRssFeed.php.html
+++ b/master/coverage/framework/src/Framework/Actions/PostBuildTasks/GenerateRssFeed.php.html
@@ -199,7 +199,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Actions/PostBuildTasks/GenerateSearch.php.html b/master/coverage/framework/src/Framework/Actions/PostBuildTasks/GenerateSearch.php.html
index badf8715a0e..296ffa43ffa 100644
--- a/master/coverage/framework/src/Framework/Actions/PostBuildTasks/GenerateSearch.php.html
+++ b/master/coverage/framework/src/Framework/Actions/PostBuildTasks/GenerateSearch.php.html
@@ -197,7 +197,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Actions/PostBuildTasks/GenerateSitemap.php.html b/master/coverage/framework/src/Framework/Actions/PostBuildTasks/GenerateSitemap.php.html
index f71b8782a99..c753263b6ae 100644
--- a/master/coverage/framework/src/Framework/Actions/PostBuildTasks/GenerateSitemap.php.html
+++ b/master/coverage/framework/src/Framework/Actions/PostBuildTasks/GenerateSitemap.php.html
@@ -203,7 +203,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Actions/PostBuildTasks/dashboard.html b/master/coverage/framework/src/Framework/Actions/PostBuildTasks/dashboard.html
index 06fdf7ff6ed..1c46b9d6856 100644
--- a/master/coverage/framework/src/Framework/Actions/PostBuildTasks/dashboard.html
+++ b/master/coverage/framework/src/Framework/Actions/PostBuildTasks/dashboard.html
@@ -140,7 +140,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Actions/PostBuildTasks/index.html b/master/coverage/framework/src/Framework/Actions/PostBuildTasks/index.html
index bec871d2ba5..81e290970de 100644
--- a/master/coverage/framework/src/Framework/Actions/PostBuildTasks/index.html
+++ b/master/coverage/framework/src/Framework/Actions/PostBuildTasks/index.html
@@ -199,7 +199,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Actions/PreBuildTasks/CleanSiteDirectory.php.html b/master/coverage/framework/src/Framework/Actions/PreBuildTasks/CleanSiteDirectory.php.html
index cda29839848..1c364e75f92 100644
--- a/master/coverage/framework/src/Framework/Actions/PreBuildTasks/CleanSiteDirectory.php.html
+++ b/master/coverage/framework/src/Framework/Actions/PreBuildTasks/CleanSiteDirectory.php.html
@@ -320,7 +320,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Actions/PreBuildTasks/dashboard.html b/master/coverage/framework/src/Framework/Actions/PreBuildTasks/dashboard.html
index c111a802fce..307d7ee19d7 100644
--- a/master/coverage/framework/src/Framework/Actions/PreBuildTasks/dashboard.html
+++ b/master/coverage/framework/src/Framework/Actions/PreBuildTasks/dashboard.html
@@ -140,7 +140,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Actions/PreBuildTasks/index.html b/master/coverage/framework/src/Framework/Actions/PreBuildTasks/index.html
index 2af570de6ed..3be1831ac61 100644
--- a/master/coverage/framework/src/Framework/Actions/PreBuildTasks/index.html
+++ b/master/coverage/framework/src/Framework/Actions/PreBuildTasks/index.html
@@ -115,7 +115,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Actions/SourceFileParser.php.html b/master/coverage/framework/src/Framework/Actions/SourceFileParser.php.html
index 78c97fac6c3..5ee7051c147 100644
--- a/master/coverage/framework/src/Framework/Actions/SourceFileParser.php.html
+++ b/master/coverage/framework/src/Framework/Actions/SourceFileParser.php.html
@@ -308,7 +308,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Actions/StaticPageBuilder.php.html b/master/coverage/framework/src/Framework/Actions/StaticPageBuilder.php.html
index 1eea16c39f4..a0a9e738dab 100644
--- a/master/coverage/framework/src/Framework/Actions/StaticPageBuilder.php.html
+++ b/master/coverage/framework/src/Framework/Actions/StaticPageBuilder.php.html
@@ -175,7 +175,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Actions/dashboard.html b/master/coverage/framework/src/Framework/Actions/dashboard.html
index dc64e4c725a..8a6e162ed75 100644
--- a/master/coverage/framework/src/Framework/Actions/dashboard.html
+++ b/master/coverage/framework/src/Framework/Actions/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Actions/index.html b/master/coverage/framework/src/Framework/Actions/index.html
index c28e4a465a6..ccb8e54a374 100644
--- a/master/coverage/framework/src/Framework/Actions/index.html
+++ b/master/coverage/framework/src/Framework/Actions/index.html
@@ -450,7 +450,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Concerns/InteractsWithDirectories.php.html b/master/coverage/framework/src/Framework/Concerns/InteractsWithDirectories.php.html
index d0f9b935e73..f3061bb805f 100644
--- a/master/coverage/framework/src/Framework/Concerns/InteractsWithDirectories.php.html
+++ b/master/coverage/framework/src/Framework/Concerns/InteractsWithDirectories.php.html
@@ -229,7 +229,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Concerns/InteractsWithFrontMatter.php.html b/master/coverage/framework/src/Framework/Concerns/InteractsWithFrontMatter.php.html
index 97a07bb768d..c6ff978c59d 100644
--- a/master/coverage/framework/src/Framework/Concerns/InteractsWithFrontMatter.php.html
+++ b/master/coverage/framework/src/Framework/Concerns/InteractsWithFrontMatter.php.html
@@ -237,7 +237,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Concerns/Internal/ForwardsIlluminateFilesystem.php.html b/master/coverage/framework/src/Framework/Concerns/Internal/ForwardsIlluminateFilesystem.php.html
index f3acb9de1a8..0d2f8a8a518 100644
--- a/master/coverage/framework/src/Framework/Concerns/Internal/ForwardsIlluminateFilesystem.php.html
+++ b/master/coverage/framework/src/Framework/Concerns/Internal/ForwardsIlluminateFilesystem.php.html
@@ -324,7 +324,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Concerns/Internal/MockableFeatures.php.html b/master/coverage/framework/src/Framework/Concerns/Internal/MockableFeatures.php.html
index 7cf999e13d1..1cb460bb15d 100644
--- a/master/coverage/framework/src/Framework/Concerns/Internal/MockableFeatures.php.html
+++ b/master/coverage/framework/src/Framework/Concerns/Internal/MockableFeatures.php.html
@@ -220,7 +220,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Concerns/Internal/SetsUpMarkdownConverter.php.html b/master/coverage/framework/src/Framework/Concerns/Internal/SetsUpMarkdownConverter.php.html
index cee2d7c64ac..892faf0bf53 100644
--- a/master/coverage/framework/src/Framework/Concerns/Internal/SetsUpMarkdownConverter.php.html
+++ b/master/coverage/framework/src/Framework/Concerns/Internal/SetsUpMarkdownConverter.php.html
@@ -387,7 +387,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Concerns/Internal/dashboard.html b/master/coverage/framework/src/Framework/Concerns/Internal/dashboard.html
index 026ae73fcbe..1f247703bb0 100644
--- a/master/coverage/framework/src/Framework/Concerns/Internal/dashboard.html
+++ b/master/coverage/framework/src/Framework/Concerns/Internal/dashboard.html
@@ -140,7 +140,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Concerns/Internal/index.html b/master/coverage/framework/src/Framework/Concerns/Internal/index.html
index c2aa15cd3c5..375ec1323d1 100644
--- a/master/coverage/framework/src/Framework/Concerns/Internal/index.html
+++ b/master/coverage/framework/src/Framework/Concerns/Internal/index.html
@@ -171,7 +171,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Concerns/RegistersFileLocations.php.html b/master/coverage/framework/src/Framework/Concerns/RegistersFileLocations.php.html
index 157267e70d7..105192e0879 100644
--- a/master/coverage/framework/src/Framework/Concerns/RegistersFileLocations.php.html
+++ b/master/coverage/framework/src/Framework/Concerns/RegistersFileLocations.php.html
@@ -406,7 +406,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Concerns/TracksExecutionTime.php.html b/master/coverage/framework/src/Framework/Concerns/TracksExecutionTime.php.html
index 6c0dd86d0b6..f5cc37c4005 100644
--- a/master/coverage/framework/src/Framework/Concerns/TracksExecutionTime.php.html
+++ b/master/coverage/framework/src/Framework/Concerns/TracksExecutionTime.php.html
@@ -240,7 +240,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Concerns/ValidatesExistence.php.html b/master/coverage/framework/src/Framework/Concerns/ValidatesExistence.php.html
index a9a9abb9f32..28699f51ac4 100644
--- a/master/coverage/framework/src/Framework/Concerns/ValidatesExistence.php.html
+++ b/master/coverage/framework/src/Framework/Concerns/ValidatesExistence.php.html
@@ -171,7 +171,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Concerns/dashboard.html b/master/coverage/framework/src/Framework/Concerns/dashboard.html
index c4961a6a7a7..0135fe4a9c8 100644
--- a/master/coverage/framework/src/Framework/Concerns/dashboard.html
+++ b/master/coverage/framework/src/Framework/Concerns/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Concerns/index.html b/master/coverage/framework/src/Framework/Concerns/index.html
index dc3dce1943f..ddec16ade3d 100644
--- a/master/coverage/framework/src/Framework/Concerns/index.html
+++ b/master/coverage/framework/src/Framework/Concerns/index.html
@@ -254,7 +254,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Exceptions/BaseUrlNotSetException.php.html b/master/coverage/framework/src/Framework/Exceptions/BaseUrlNotSetException.php.html
index e5377983899..29c49d44323 100644
--- a/master/coverage/framework/src/Framework/Exceptions/BaseUrlNotSetException.php.html
+++ b/master/coverage/framework/src/Framework/Exceptions/BaseUrlNotSetException.php.html
@@ -105,7 +105,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Exceptions/BuildWarning.php.html b/master/coverage/framework/src/Framework/Exceptions/BuildWarning.php.html
index 6f0e85e5d4f..487cbbffb7b 100644
--- a/master/coverage/framework/src/Framework/Exceptions/BuildWarning.php.html
+++ b/master/coverage/framework/src/Framework/Exceptions/BuildWarning.php.html
@@ -105,7 +105,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Exceptions/FileConflictException.php.html b/master/coverage/framework/src/Framework/Exceptions/FileConflictException.php.html
index dd37d6a47f8..9dfbe427fd9 100644
--- a/master/coverage/framework/src/Framework/Exceptions/FileConflictException.php.html
+++ b/master/coverage/framework/src/Framework/Exceptions/FileConflictException.php.html
@@ -165,7 +165,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Exceptions/FileNotFoundException.php.html b/master/coverage/framework/src/Framework/Exceptions/FileNotFoundException.php.html
index e16e48b56e5..3711112ab21 100644
--- a/master/coverage/framework/src/Framework/Exceptions/FileNotFoundException.php.html
+++ b/master/coverage/framework/src/Framework/Exceptions/FileNotFoundException.php.html
@@ -165,7 +165,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Exceptions/RouteNotFoundException.php.html b/master/coverage/framework/src/Framework/Exceptions/RouteNotFoundException.php.html
index 8be09942912..36caecc6412 100644
--- a/master/coverage/framework/src/Framework/Exceptions/RouteNotFoundException.php.html
+++ b/master/coverage/framework/src/Framework/Exceptions/RouteNotFoundException.php.html
@@ -164,7 +164,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Exceptions/UnsupportedPageTypeException.php.html b/master/coverage/framework/src/Framework/Exceptions/UnsupportedPageTypeException.php.html
index 26a5980cd33..0056c949b24 100644
--- a/master/coverage/framework/src/Framework/Exceptions/UnsupportedPageTypeException.php.html
+++ b/master/coverage/framework/src/Framework/Exceptions/UnsupportedPageTypeException.php.html
@@ -164,7 +164,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Exceptions/dashboard.html b/master/coverage/framework/src/Framework/Exceptions/dashboard.html
index 3f90a4dd72a..9dba8416724 100644
--- a/master/coverage/framework/src/Framework/Exceptions/dashboard.html
+++ b/master/coverage/framework/src/Framework/Exceptions/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Exceptions/index.html b/master/coverage/framework/src/Framework/Exceptions/index.html
index cd41946bcd6..68d0f6b3e09 100644
--- a/master/coverage/framework/src/Framework/Exceptions/index.html
+++ b/master/coverage/framework/src/Framework/Exceptions/index.html
@@ -224,7 +224,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Factories/BlogPostDataFactory.php.html b/master/coverage/framework/src/Framework/Factories/BlogPostDataFactory.php.html
index 849fe53f7ca..8f03332132b 100644
--- a/master/coverage/framework/src/Framework/Factories/BlogPostDataFactory.php.html
+++ b/master/coverage/framework/src/Framework/Factories/BlogPostDataFactory.php.html
@@ -440,7 +440,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Factories/Concerns/CoreDataObject.php.html b/master/coverage/framework/src/Framework/Factories/Concerns/CoreDataObject.php.html
index 96801d84d85..db1e3ba59a5 100644
--- a/master/coverage/framework/src/Framework/Factories/Concerns/CoreDataObject.php.html
+++ b/master/coverage/framework/src/Framework/Factories/Concerns/CoreDataObject.php.html
@@ -216,7 +216,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Factories/Concerns/HasFactory.php.html b/master/coverage/framework/src/Framework/Factories/Concerns/HasFactory.php.html
index 05825131a6c..c2a1d0156fe 100644
--- a/master/coverage/framework/src/Framework/Factories/Concerns/HasFactory.php.html
+++ b/master/coverage/framework/src/Framework/Factories/Concerns/HasFactory.php.html
@@ -227,7 +227,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Factories/Concerns/PageDataFactory.php.html b/master/coverage/framework/src/Framework/Factories/Concerns/PageDataFactory.php.html
index 7631997e24c..5a4a224d910 100644
--- a/master/coverage/framework/src/Framework/Factories/Concerns/PageDataFactory.php.html
+++ b/master/coverage/framework/src/Framework/Factories/Concerns/PageDataFactory.php.html
@@ -179,7 +179,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Factories/Concerns/dashboard.html b/master/coverage/framework/src/Framework/Factories/Concerns/dashboard.html
index 0e3f3b8be99..91aeefc06d6 100644
--- a/master/coverage/framework/src/Framework/Factories/Concerns/dashboard.html
+++ b/master/coverage/framework/src/Framework/Factories/Concerns/dashboard.html
@@ -142,7 +142,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Factories/Concerns/index.html b/master/coverage/framework/src/Framework/Factories/Concerns/index.html
index 1032812a2d7..137bf955fb8 100644
--- a/master/coverage/framework/src/Framework/Factories/Concerns/index.html
+++ b/master/coverage/framework/src/Framework/Factories/Concerns/index.html
@@ -171,7 +171,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Factories/FeaturedImageFactory.php.html b/master/coverage/framework/src/Framework/Factories/FeaturedImageFactory.php.html
index c4784d7f4f4..143d2f863a1 100644
--- a/master/coverage/framework/src/Framework/Factories/FeaturedImageFactory.php.html
+++ b/master/coverage/framework/src/Framework/Factories/FeaturedImageFactory.php.html
@@ -347,7 +347,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Factories/HydePageDataFactory.php.html b/master/coverage/framework/src/Framework/Factories/HydePageDataFactory.php.html
index bc9b70d2e89..d06170ea87f 100644
--- a/master/coverage/framework/src/Framework/Factories/HydePageDataFactory.php.html
+++ b/master/coverage/framework/src/Framework/Factories/HydePageDataFactory.php.html
@@ -401,7 +401,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Factories/NavigationDataFactory.php.html b/master/coverage/framework/src/Framework/Factories/NavigationDataFactory.php.html
index 31f071053a7..94f370cc4bc 100644
--- a/master/coverage/framework/src/Framework/Factories/NavigationDataFactory.php.html
+++ b/master/coverage/framework/src/Framework/Factories/NavigationDataFactory.php.html
@@ -942,7 +942,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Factories/dashboard.html b/master/coverage/framework/src/Framework/Factories/dashboard.html
index 3fb999d747d..584bf0aabe5 100644
--- a/master/coverage/framework/src/Framework/Factories/dashboard.html
+++ b/master/coverage/framework/src/Framework/Factories/dashboard.html
@@ -141,7 +141,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Factories/index.html b/master/coverage/framework/src/Framework/Factories/index.html
index e1a99778889..97d4b319baf 100644
--- a/master/coverage/framework/src/Framework/Factories/index.html
+++ b/master/coverage/framework/src/Framework/Factories/index.html
@@ -226,7 +226,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Features/Blogging/Models/FeaturedImage.php.html b/master/coverage/framework/src/Framework/Features/Blogging/Models/FeaturedImage.php.html
index 0b67bcec710..fb1456b1c3a 100644
--- a/master/coverage/framework/src/Framework/Features/Blogging/Models/FeaturedImage.php.html
+++ b/master/coverage/framework/src/Framework/Features/Blogging/Models/FeaturedImage.php.html
@@ -919,7 +919,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/Blogging/Models/PostAuthor.php.html b/master/coverage/framework/src/Framework/Features/Blogging/Models/PostAuthor.php.html
index 59009035c1c..8ba76026b61 100644
--- a/master/coverage/framework/src/Framework/Features/Blogging/Models/PostAuthor.php.html
+++ b/master/coverage/framework/src/Framework/Features/Blogging/Models/PostAuthor.php.html
@@ -373,7 +373,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/Blogging/Models/dashboard.html b/master/coverage/framework/src/Framework/Features/Blogging/Models/dashboard.html
index 3cd8f8339a2..5c0ff74a095 100644
--- a/master/coverage/framework/src/Framework/Features/Blogging/Models/dashboard.html
+++ b/master/coverage/framework/src/Framework/Features/Blogging/Models/dashboard.html
@@ -141,7 +141,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Features/Blogging/Models/index.html b/master/coverage/framework/src/Framework/Features/Blogging/Models/index.html
index a04c61e1d34..06686bc944a 100644
--- a/master/coverage/framework/src/Framework/Features/Blogging/Models/index.html
+++ b/master/coverage/framework/src/Framework/Features/Blogging/Models/index.html
@@ -144,7 +144,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Features/Blogging/dashboard.html b/master/coverage/framework/src/Framework/Features/Blogging/dashboard.html
index 6a5022f9e43..019e643e625 100644
--- a/master/coverage/framework/src/Framework/Features/Blogging/dashboard.html
+++ b/master/coverage/framework/src/Framework/Features/Blogging/dashboard.html
@@ -140,7 +140,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Features/Blogging/index.html b/master/coverage/framework/src/Framework/Features/Blogging/index.html
index 4b7f677d90d..541427dcbf3 100644
--- a/master/coverage/framework/src/Framework/Features/Blogging/index.html
+++ b/master/coverage/framework/src/Framework/Features/Blogging/index.html
@@ -115,7 +115,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Features/BuildTasks/BuildTask.php.html b/master/coverage/framework/src/Framework/Features/BuildTasks/BuildTask.php.html
index be6ac73b2ff..4483cbc60a7 100644
--- a/master/coverage/framework/src/Framework/Features/BuildTasks/BuildTask.php.html
+++ b/master/coverage/framework/src/Framework/Features/BuildTasks/BuildTask.php.html
@@ -451,7 +451,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/BuildTasks/BuildTaskSkippedException.php.html b/master/coverage/framework/src/Framework/Features/BuildTasks/BuildTaskSkippedException.php.html
index 7dcde1c14d8..cccc8886e2a 100644
--- a/master/coverage/framework/src/Framework/Features/BuildTasks/BuildTaskSkippedException.php.html
+++ b/master/coverage/framework/src/Framework/Features/BuildTasks/BuildTaskSkippedException.php.html
@@ -157,7 +157,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/BuildTasks/PostBuildTask.php.html b/master/coverage/framework/src/Framework/Features/BuildTasks/PostBuildTask.php.html
index b0da1a8e2ac..9ef97cf66f7 100644
--- a/master/coverage/framework/src/Framework/Features/BuildTasks/PostBuildTask.php.html
+++ b/master/coverage/framework/src/Framework/Features/BuildTasks/PostBuildTask.php.html
@@ -100,7 +100,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/BuildTasks/PreBuildTask.php.html b/master/coverage/framework/src/Framework/Features/BuildTasks/PreBuildTask.php.html
index 916698b7dce..40fb0c67fe7 100644
--- a/master/coverage/framework/src/Framework/Features/BuildTasks/PreBuildTask.php.html
+++ b/master/coverage/framework/src/Framework/Features/BuildTasks/PreBuildTask.php.html
@@ -100,7 +100,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/BuildTasks/dashboard.html b/master/coverage/framework/src/Framework/Features/BuildTasks/dashboard.html
index 1bd2e1fdbd1..494466817e5 100644
--- a/master/coverage/framework/src/Framework/Features/BuildTasks/dashboard.html
+++ b/master/coverage/framework/src/Framework/Features/BuildTasks/dashboard.html
@@ -140,7 +140,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Features/BuildTasks/index.html b/master/coverage/framework/src/Framework/Features/BuildTasks/index.html
index 6aff3c19d17..24c24a960f6 100644
--- a/master/coverage/framework/src/Framework/Features/BuildTasks/index.html
+++ b/master/coverage/framework/src/Framework/Features/BuildTasks/index.html
@@ -169,7 +169,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Features/Documentation/DocumentationSearchPage.php.html b/master/coverage/framework/src/Framework/Features/Documentation/DocumentationSearchPage.php.html
index 7a7ad2b701c..7942f6018b1 100644
--- a/master/coverage/framework/src/Framework/Features/Documentation/DocumentationSearchPage.php.html
+++ b/master/coverage/framework/src/Framework/Features/Documentation/DocumentationSearchPage.php.html
@@ -286,7 +286,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/Documentation/SemanticDocumentationArticle.php.html b/master/coverage/framework/src/Framework/Features/Documentation/SemanticDocumentationArticle.php.html
index 97815c8d93c..0b7f75bec34 100644
--- a/master/coverage/framework/src/Framework/Features/Documentation/SemanticDocumentationArticle.php.html
+++ b/master/coverage/framework/src/Framework/Features/Documentation/SemanticDocumentationArticle.php.html
@@ -589,7 +589,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/Documentation/dashboard.html b/master/coverage/framework/src/Framework/Features/Documentation/dashboard.html
index 79fd59f0e6c..183a2ea010b 100644
--- a/master/coverage/framework/src/Framework/Features/Documentation/dashboard.html
+++ b/master/coverage/framework/src/Framework/Features/Documentation/dashboard.html
@@ -140,7 +140,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Features/Documentation/index.html b/master/coverage/framework/src/Framework/Features/Documentation/index.html
index f96c0c08980..46f37b64ac0 100644
--- a/master/coverage/framework/src/Framework/Features/Documentation/index.html
+++ b/master/coverage/framework/src/Framework/Features/Documentation/index.html
@@ -143,7 +143,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Features/Metadata/Elements/LinkElement.php.html b/master/coverage/framework/src/Framework/Features/Metadata/Elements/LinkElement.php.html
index 5940cf02743..282b2397cbb 100644
--- a/master/coverage/framework/src/Framework/Features/Metadata/Elements/LinkElement.php.html
+++ b/master/coverage/framework/src/Framework/Features/Metadata/Elements/LinkElement.php.html
@@ -255,7 +255,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/Metadata/Elements/MetadataElement.php.html b/master/coverage/framework/src/Framework/Features/Metadata/Elements/MetadataElement.php.html
index 29dd167a9fe..b87cb37886c 100644
--- a/master/coverage/framework/src/Framework/Features/Metadata/Elements/MetadataElement.php.html
+++ b/master/coverage/framework/src/Framework/Features/Metadata/Elements/MetadataElement.php.html
@@ -219,7 +219,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/Metadata/Elements/OpenGraphElement.php.html b/master/coverage/framework/src/Framework/Features/Metadata/Elements/OpenGraphElement.php.html
index 5dbcff71c0e..cc681ffa23d 100644
--- a/master/coverage/framework/src/Framework/Features/Metadata/Elements/OpenGraphElement.php.html
+++ b/master/coverage/framework/src/Framework/Features/Metadata/Elements/OpenGraphElement.php.html
@@ -248,7 +248,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/Metadata/Elements/dashboard.html b/master/coverage/framework/src/Framework/Features/Metadata/Elements/dashboard.html
index a5dfa2775c4..9046cecacc6 100644
--- a/master/coverage/framework/src/Framework/Features/Metadata/Elements/dashboard.html
+++ b/master/coverage/framework/src/Framework/Features/Metadata/Elements/dashboard.html
@@ -141,7 +141,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Features/Metadata/Elements/index.html b/master/coverage/framework/src/Framework/Features/Metadata/Elements/index.html
index d6db51e899c..92b77e67f54 100644
--- a/master/coverage/framework/src/Framework/Features/Metadata/Elements/index.html
+++ b/master/coverage/framework/src/Framework/Features/Metadata/Elements/index.html
@@ -172,7 +172,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Features/Metadata/GlobalMetadataBag.php.html b/master/coverage/framework/src/Framework/Features/Metadata/GlobalMetadataBag.php.html
index ec940656221..206a2483969 100644
--- a/master/coverage/framework/src/Framework/Features/Metadata/GlobalMetadataBag.php.html
+++ b/master/coverage/framework/src/Framework/Features/Metadata/GlobalMetadataBag.php.html
@@ -224,7 +224,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/Metadata/MetadataBag.php.html b/master/coverage/framework/src/Framework/Features/Metadata/MetadataBag.php.html
index b51baed212b..39e25e457d5 100644
--- a/master/coverage/framework/src/Framework/Features/Metadata/MetadataBag.php.html
+++ b/master/coverage/framework/src/Framework/Features/Metadata/MetadataBag.php.html
@@ -367,7 +367,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/Metadata/MetadataElementContract.php.html b/master/coverage/framework/src/Framework/Features/Metadata/MetadataElementContract.php.html
index 5aa4e6e78f5..b63b34bf0bb 100644
--- a/master/coverage/framework/src/Framework/Features/Metadata/MetadataElementContract.php.html
+++ b/master/coverage/framework/src/Framework/Features/Metadata/MetadataElementContract.php.html
@@ -103,7 +103,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/Metadata/PageMetadataBag.php.html b/master/coverage/framework/src/Framework/Features/Metadata/PageMetadataBag.php.html
index b2b0d72ffbb..0eca174f170 100644
--- a/master/coverage/framework/src/Framework/Features/Metadata/PageMetadataBag.php.html
+++ b/master/coverage/framework/src/Framework/Features/Metadata/PageMetadataBag.php.html
@@ -335,7 +335,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/Metadata/dashboard.html b/master/coverage/framework/src/Framework/Features/Metadata/dashboard.html
index 92a6b67cccf..458c7beda5e 100644
--- a/master/coverage/framework/src/Framework/Features/Metadata/dashboard.html
+++ b/master/coverage/framework/src/Framework/Features/Metadata/dashboard.html
@@ -140,7 +140,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Features/Metadata/index.html b/master/coverage/framework/src/Framework/Features/Metadata/index.html
index 63391bbe5da..1d0dede49cd 100644
--- a/master/coverage/framework/src/Framework/Features/Metadata/index.html
+++ b/master/coverage/framework/src/Framework/Features/Metadata/index.html
@@ -212,7 +212,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Features/Navigation/BaseNavigationMenu.php.html b/master/coverage/framework/src/Framework/Features/Navigation/BaseNavigationMenu.php.html
index 29bda924aa9..8dd9ff2e2ae 100644
--- a/master/coverage/framework/src/Framework/Features/Navigation/BaseNavigationMenu.php.html
+++ b/master/coverage/framework/src/Framework/Features/Navigation/BaseNavigationMenu.php.html
@@ -346,7 +346,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/Navigation/DocumentationSidebar.php.html b/master/coverage/framework/src/Framework/Features/Navigation/DocumentationSidebar.php.html
index 9aa595228e2..03fff2f4798 100644
--- a/master/coverage/framework/src/Framework/Features/Navigation/DocumentationSidebar.php.html
+++ b/master/coverage/framework/src/Framework/Features/Navigation/DocumentationSidebar.php.html
@@ -398,7 +398,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/Navigation/DropdownNavItem.php.html b/master/coverage/framework/src/Framework/Features/Navigation/DropdownNavItem.php.html
index 01aaeaf2485..662ed8e7c4f 100644
--- a/master/coverage/framework/src/Framework/Features/Navigation/DropdownNavItem.php.html
+++ b/master/coverage/framework/src/Framework/Features/Navigation/DropdownNavItem.php.html
@@ -260,7 +260,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/Navigation/NavItem.php.html b/master/coverage/framework/src/Framework/Features/Navigation/NavItem.php.html
index a615655db5f..2da3d505615 100644
--- a/master/coverage/framework/src/Framework/Features/Navigation/NavItem.php.html
+++ b/master/coverage/framework/src/Framework/Features/Navigation/NavItem.php.html
@@ -522,7 +522,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/Navigation/NavigationData.php.html b/master/coverage/framework/src/Framework/Features/Navigation/NavigationData.php.html
index 43ef384db49..e838dc8d3fc 100644
--- a/master/coverage/framework/src/Framework/Features/Navigation/NavigationData.php.html
+++ b/master/coverage/framework/src/Framework/Features/Navigation/NavigationData.php.html
@@ -237,7 +237,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/Navigation/NavigationMenu.php.html b/master/coverage/framework/src/Framework/Features/Navigation/NavigationMenu.php.html
index 3c3b998e210..7ae2b562947 100644
--- a/master/coverage/framework/src/Framework/Features/Navigation/NavigationMenu.php.html
+++ b/master/coverage/framework/src/Framework/Features/Navigation/NavigationMenu.php.html
@@ -348,7 +348,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/Navigation/dashboard.html b/master/coverage/framework/src/Framework/Features/Navigation/dashboard.html
index e4063d0f25b..c7e2220db87 100644
--- a/master/coverage/framework/src/Framework/Features/Navigation/dashboard.html
+++ b/master/coverage/framework/src/Framework/Features/Navigation/dashboard.html
@@ -140,7 +140,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Features/Navigation/index.html b/master/coverage/framework/src/Framework/Features/Navigation/index.html
index c33e78de44b..f1ae955a559 100644
--- a/master/coverage/framework/src/Framework/Features/Navigation/index.html
+++ b/master/coverage/framework/src/Framework/Features/Navigation/index.html
@@ -255,7 +255,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Features/XmlGenerators/BaseXmlGenerator.php.html b/master/coverage/framework/src/Framework/Features/XmlGenerators/BaseXmlGenerator.php.html
index 675ea584201..d26d17fa6ee 100644
--- a/master/coverage/framework/src/Framework/Features/XmlGenerators/BaseXmlGenerator.php.html
+++ b/master/coverage/framework/src/Framework/Features/XmlGenerators/BaseXmlGenerator.php.html
@@ -356,7 +356,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/XmlGenerators/RssFeedGenerator.php.html b/master/coverage/framework/src/Framework/Features/XmlGenerators/RssFeedGenerator.php.html
index e0f3913c11a..8a42d1f0906 100644
--- a/master/coverage/framework/src/Framework/Features/XmlGenerators/RssFeedGenerator.php.html
+++ b/master/coverage/framework/src/Framework/Features/XmlGenerators/RssFeedGenerator.php.html
@@ -487,7 +487,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/XmlGenerators/SitemapGenerator.php.html b/master/coverage/framework/src/Framework/Features/XmlGenerators/SitemapGenerator.php.html
index ad6e1975061..652f749a02f 100644
--- a/master/coverage/framework/src/Framework/Features/XmlGenerators/SitemapGenerator.php.html
+++ b/master/coverage/framework/src/Framework/Features/XmlGenerators/SitemapGenerator.php.html
@@ -418,7 +418,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Features/XmlGenerators/dashboard.html b/master/coverage/framework/src/Framework/Features/XmlGenerators/dashboard.html
index 66828cd05ad..8e43920d69b 100644
--- a/master/coverage/framework/src/Framework/Features/XmlGenerators/dashboard.html
+++ b/master/coverage/framework/src/Framework/Features/XmlGenerators/dashboard.html
@@ -140,7 +140,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Features/XmlGenerators/index.html b/master/coverage/framework/src/Framework/Features/XmlGenerators/index.html
index 495719124f8..990a1a83ebc 100644
--- a/master/coverage/framework/src/Framework/Features/XmlGenerators/index.html
+++ b/master/coverage/framework/src/Framework/Features/XmlGenerators/index.html
@@ -171,7 +171,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Features/dashboard.html b/master/coverage/framework/src/Framework/Features/dashboard.html
index 8cf842f5d1f..4e5ad4338e1 100644
--- a/master/coverage/framework/src/Framework/Features/dashboard.html
+++ b/master/coverage/framework/src/Framework/Features/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Features/index.html b/master/coverage/framework/src/Framework/Features/index.html
index 0116b9e11a2..d6efb266608 100644
--- a/master/coverage/framework/src/Framework/Features/index.html
+++ b/master/coverage/framework/src/Framework/Features/index.html
@@ -254,7 +254,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/HydeServiceProvider.php.html b/master/coverage/framework/src/Framework/HydeServiceProvider.php.html
index 09d3fb15ea9..c81b491b54b 100644
--- a/master/coverage/framework/src/Framework/HydeServiceProvider.php.html
+++ b/master/coverage/framework/src/Framework/HydeServiceProvider.php.html
@@ -226,7 +226,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Services/AssetService.php.html b/master/coverage/framework/src/Framework/Services/AssetService.php.html
index 0d3d315d29c..57174c4d110 100644
--- a/master/coverage/framework/src/Framework/Services/AssetService.php.html
+++ b/master/coverage/framework/src/Framework/Services/AssetService.php.html
@@ -395,7 +395,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Services/BuildService.php.html b/master/coverage/framework/src/Framework/Services/BuildService.php.html
index 8d26339ed91..ac4a61081b6 100644
--- a/master/coverage/framework/src/Framework/Services/BuildService.php.html
+++ b/master/coverage/framework/src/Framework/Services/BuildService.php.html
@@ -345,7 +345,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Services/BuildTaskService.php.html b/master/coverage/framework/src/Framework/Services/BuildTaskService.php.html
index 3cb61c1f966..fb701372ad2 100644
--- a/master/coverage/framework/src/Framework/Services/BuildTaskService.php.html
+++ b/master/coverage/framework/src/Framework/Services/BuildTaskService.php.html
@@ -703,7 +703,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Services/MarkdownService.php.html b/master/coverage/framework/src/Framework/Services/MarkdownService.php.html
index b66df4fb791..8c860b00a62 100644
--- a/master/coverage/framework/src/Framework/Services/MarkdownService.php.html
+++ b/master/coverage/framework/src/Framework/Services/MarkdownService.php.html
@@ -875,7 +875,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Services/ValidationService.php.html b/master/coverage/framework/src/Framework/Services/ValidationService.php.html
index adafe978539..b0d7df7f055 100644
--- a/master/coverage/framework/src/Framework/Services/ValidationService.php.html
+++ b/master/coverage/framework/src/Framework/Services/ValidationService.php.html
@@ -491,7 +491,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Services/ViewDiffService.php.html b/master/coverage/framework/src/Framework/Services/ViewDiffService.php.html
index af7c8a673fc..eaa075380c0 100644
--- a/master/coverage/framework/src/Framework/Services/ViewDiffService.php.html
+++ b/master/coverage/framework/src/Framework/Services/ViewDiffService.php.html
@@ -239,7 +239,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Services/dashboard.html b/master/coverage/framework/src/Framework/Services/dashboard.html
index 776f560c359..00dc72064fc 100644
--- a/master/coverage/framework/src/Framework/Services/dashboard.html
+++ b/master/coverage/framework/src/Framework/Services/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Services/index.html b/master/coverage/framework/src/Framework/Services/index.html
index 11e1c9bb803..27d54118e59 100644
--- a/master/coverage/framework/src/Framework/Services/index.html
+++ b/master/coverage/framework/src/Framework/Services/index.html
@@ -254,7 +254,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Views/Components/BreadcrumbsComponent.php.html b/master/coverage/framework/src/Framework/Views/Components/BreadcrumbsComponent.php.html
index 3b58c328ef3..674309813ed 100644
--- a/master/coverage/framework/src/Framework/Views/Components/BreadcrumbsComponent.php.html
+++ b/master/coverage/framework/src/Framework/Views/Components/BreadcrumbsComponent.php.html
@@ -243,7 +243,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Views/Components/LinkComponent.php.html b/master/coverage/framework/src/Framework/Views/Components/LinkComponent.php.html
index 199405f3d7d..4c83a05b089 100644
--- a/master/coverage/framework/src/Framework/Views/Components/LinkComponent.php.html
+++ b/master/coverage/framework/src/Framework/Views/Components/LinkComponent.php.html
@@ -190,7 +190,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Framework/Views/Components/dashboard.html b/master/coverage/framework/src/Framework/Views/Components/dashboard.html
index f647348f5af..948620e3c00 100644
--- a/master/coverage/framework/src/Framework/Views/Components/dashboard.html
+++ b/master/coverage/framework/src/Framework/Views/Components/dashboard.html
@@ -140,7 +140,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Views/Components/index.html b/master/coverage/framework/src/Framework/Views/Components/index.html
index 62f7d0ec8c9..021ce24349f 100644
--- a/master/coverage/framework/src/Framework/Views/Components/index.html
+++ b/master/coverage/framework/src/Framework/Views/Components/index.html
@@ -143,7 +143,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Views/dashboard.html b/master/coverage/framework/src/Framework/Views/dashboard.html
index c24faba3bc6..9150a293752 100644
--- a/master/coverage/framework/src/Framework/Views/dashboard.html
+++ b/master/coverage/framework/src/Framework/Views/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/Views/index.html b/master/coverage/framework/src/Framework/Views/index.html
index 8c564006e0c..54055abbc1b 100644
--- a/master/coverage/framework/src/Framework/Views/index.html
+++ b/master/coverage/framework/src/Framework/Views/index.html
@@ -114,7 +114,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/dashboard.html b/master/coverage/framework/src/Framework/dashboard.html
index 9d8a0a021b8..a755d96ce05 100644
--- a/master/coverage/framework/src/Framework/dashboard.html
+++ b/master/coverage/framework/src/Framework/dashboard.html
@@ -140,7 +140,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Framework/index.html b/master/coverage/framework/src/Framework/index.html
index de71d2e2955..b5573b198f5 100644
--- a/master/coverage/framework/src/Framework/index.html
+++ b/master/coverage/framework/src/Framework/index.html
@@ -309,7 +309,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Hyde.php.html b/master/coverage/framework/src/Hyde.php.html
index f6bae2a9c1b..54f5a06601d 100644
--- a/master/coverage/framework/src/Hyde.php.html
+++ b/master/coverage/framework/src/Hyde.php.html
@@ -277,7 +277,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/BlogPostSchema.php.html b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/BlogPostSchema.php.html
index 43846ff3ed2..9adf486185d 100644
--- a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/BlogPostSchema.php.html
+++ b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/BlogPostSchema.php.html
@@ -99,7 +99,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/FrontMatterSchema.php.html b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/FrontMatterSchema.php.html
index b04bb17052b..b3fe6e54b08 100644
--- a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/FrontMatterSchema.php.html
+++ b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/FrontMatterSchema.php.html
@@ -104,7 +104,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/PageSchema.php.html b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/PageSchema.php.html
index a3f1e1ebc84..48ab973b34c 100644
--- a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/PageSchema.php.html
+++ b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/PageSchema.php.html
@@ -95,7 +95,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/AuthorSchema.php.html b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/AuthorSchema.php.html
index b186cf29eba..24afe03b972 100644
--- a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/AuthorSchema.php.html
+++ b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/AuthorSchema.php.html
@@ -96,7 +96,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/FeaturedImageSchema.php.html b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/FeaturedImageSchema.php.html
index 44bcd7dbece..180869bb745 100644
--- a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/FeaturedImageSchema.php.html
+++ b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/FeaturedImageSchema.php.html
@@ -102,7 +102,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/NavigationSchema.php.html b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/NavigationSchema.php.html
index 65dc5d0bc76..c5002516b37 100644
--- a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/NavigationSchema.php.html
+++ b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/NavigationSchema.php.html
@@ -98,7 +98,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/dashboard.html b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/dashboard.html
index d90eaa1acae..18943e3806c 100644
--- a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/dashboard.html
+++ b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/dashboard.html
@@ -141,7 +141,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/index.html b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/index.html
index def657ff3a8..6acfd06fa27 100644
--- a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/index.html
+++ b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/SubSchemas/index.html
@@ -112,7 +112,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/dashboard.html b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/dashboard.html
index d29deeb40b9..1112a497f14 100644
--- a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/dashboard.html
+++ b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/dashboard.html
@@ -140,7 +140,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/index.html b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/index.html
index 302adf100e9..00e781c2513 100644
--- a/master/coverage/framework/src/Markdown/Contracts/FrontMatter/index.html
+++ b/master/coverage/framework/src/Markdown/Contracts/FrontMatter/index.html
@@ -124,7 +124,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Markdown/Contracts/MarkdownDocumentContract.php.html b/master/coverage/framework/src/Markdown/Contracts/MarkdownDocumentContract.php.html
index d01b0a1f206..09eb01938a4 100644
--- a/master/coverage/framework/src/Markdown/Contracts/MarkdownDocumentContract.php.html
+++ b/master/coverage/framework/src/Markdown/Contracts/MarkdownDocumentContract.php.html
@@ -97,7 +97,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Markdown/Contracts/MarkdownPostProcessorContract.php.html b/master/coverage/framework/src/Markdown/Contracts/MarkdownPostProcessorContract.php.html
index 58fab6dfbc4..04011e8d867 100644
--- a/master/coverage/framework/src/Markdown/Contracts/MarkdownPostProcessorContract.php.html
+++ b/master/coverage/framework/src/Markdown/Contracts/MarkdownPostProcessorContract.php.html
@@ -94,7 +94,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Markdown/Contracts/MarkdownPreProcessorContract.php.html b/master/coverage/framework/src/Markdown/Contracts/MarkdownPreProcessorContract.php.html
index 731c753849e..aca4e1a29d4 100644
--- a/master/coverage/framework/src/Markdown/Contracts/MarkdownPreProcessorContract.php.html
+++ b/master/coverage/framework/src/Markdown/Contracts/MarkdownPreProcessorContract.php.html
@@ -94,7 +94,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Markdown/Contracts/MarkdownShortcodeContract.php.html b/master/coverage/framework/src/Markdown/Contracts/MarkdownShortcodeContract.php.html
index f527404d93c..33428eef744 100644
--- a/master/coverage/framework/src/Markdown/Contracts/MarkdownShortcodeContract.php.html
+++ b/master/coverage/framework/src/Markdown/Contracts/MarkdownShortcodeContract.php.html
@@ -90,7 +90,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Markdown/Contracts/dashboard.html b/master/coverage/framework/src/Markdown/Contracts/dashboard.html
index 4fcffb87c0f..62187fffe35 100644
--- a/master/coverage/framework/src/Markdown/Contracts/dashboard.html
+++ b/master/coverage/framework/src/Markdown/Contracts/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Markdown/Contracts/index.html b/master/coverage/framework/src/Markdown/Contracts/index.html
index fae6454f74d..5728d458470 100644
--- a/master/coverage/framework/src/Markdown/Contracts/index.html
+++ b/master/coverage/framework/src/Markdown/Contracts/index.html
@@ -136,7 +136,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Markdown/MarkdownConverter.php.html b/master/coverage/framework/src/Markdown/MarkdownConverter.php.html
index c770ccd7356..02c5d96dd34 100644
--- a/master/coverage/framework/src/Markdown/MarkdownConverter.php.html
+++ b/master/coverage/framework/src/Markdown/MarkdownConverter.php.html
@@ -169,7 +169,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Markdown/Models/FrontMatter.php.html b/master/coverage/framework/src/Markdown/Models/FrontMatter.php.html
index 82eb989b5ba..52527661b0f 100644
--- a/master/coverage/framework/src/Markdown/Models/FrontMatter.php.html
+++ b/master/coverage/framework/src/Markdown/Models/FrontMatter.php.html
@@ -376,7 +376,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Markdown/Models/Markdown.php.html b/master/coverage/framework/src/Markdown/Models/Markdown.php.html
index d258c5929e2..c1ec9e8be1b 100644
--- a/master/coverage/framework/src/Markdown/Models/Markdown.php.html
+++ b/master/coverage/framework/src/Markdown/Models/Markdown.php.html
@@ -393,7 +393,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Markdown/Models/MarkdownDocument.php.html b/master/coverage/framework/src/Markdown/Models/MarkdownDocument.php.html
index 385d18f4a83..f446cbb9c01 100644
--- a/master/coverage/framework/src/Markdown/Models/MarkdownDocument.php.html
+++ b/master/coverage/framework/src/Markdown/Models/MarkdownDocument.php.html
@@ -251,7 +251,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Markdown/Models/dashboard.html b/master/coverage/framework/src/Markdown/Models/dashboard.html
index 6757200203c..3ec20d21046 100644
--- a/master/coverage/framework/src/Markdown/Models/dashboard.html
+++ b/master/coverage/framework/src/Markdown/Models/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Markdown/Models/index.html b/master/coverage/framework/src/Markdown/Models/index.html
index f220cf4a921..3b72c3b5832 100644
--- a/master/coverage/framework/src/Markdown/Models/index.html
+++ b/master/coverage/framework/src/Markdown/Models/index.html
@@ -170,7 +170,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Markdown/Processing/BladeDownProcessor.php.html b/master/coverage/framework/src/Markdown/Processing/BladeDownProcessor.php.html
index ef2427b71b2..3969f0f34c4 100644
--- a/master/coverage/framework/src/Markdown/Processing/BladeDownProcessor.php.html
+++ b/master/coverage/framework/src/Markdown/Processing/BladeDownProcessor.php.html
@@ -388,7 +388,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Markdown/Processing/CodeblockFilepathProcessor.php.html b/master/coverage/framework/src/Markdown/Processing/CodeblockFilepathProcessor.php.html
index a22bc72192d..59bfcee9edd 100644
--- a/master/coverage/framework/src/Markdown/Processing/CodeblockFilepathProcessor.php.html
+++ b/master/coverage/framework/src/Markdown/Processing/CodeblockFilepathProcessor.php.html
@@ -409,7 +409,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Markdown/Processing/ColoredBlockquotes.php.html b/master/coverage/framework/src/Markdown/Processing/ColoredBlockquotes.php.html
index b34e1e27be1..474288316fa 100644
--- a/master/coverage/framework/src/Markdown/Processing/ColoredBlockquotes.php.html
+++ b/master/coverage/framework/src/Markdown/Processing/ColoredBlockquotes.php.html
@@ -299,7 +299,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Markdown/Processing/ShortcodeProcessor.php.html b/master/coverage/framework/src/Markdown/Processing/ShortcodeProcessor.php.html
index 6c14e9aac71..fea8de38b80 100644
--- a/master/coverage/framework/src/Markdown/Processing/ShortcodeProcessor.php.html
+++ b/master/coverage/framework/src/Markdown/Processing/ShortcodeProcessor.php.html
@@ -497,7 +497,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Markdown/Processing/dashboard.html b/master/coverage/framework/src/Markdown/Processing/dashboard.html
index 5a634fc51fc..7874a25cdb9 100644
--- a/master/coverage/framework/src/Markdown/Processing/dashboard.html
+++ b/master/coverage/framework/src/Markdown/Processing/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Markdown/Processing/index.html b/master/coverage/framework/src/Markdown/Processing/index.html
index 31d3d918411..c0d6c19df0a 100644
--- a/master/coverage/framework/src/Markdown/Processing/index.html
+++ b/master/coverage/framework/src/Markdown/Processing/index.html
@@ -198,7 +198,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Markdown/dashboard.html b/master/coverage/framework/src/Markdown/dashboard.html
index 7363aaee292..5ae8b8b33c5 100644
--- a/master/coverage/framework/src/Markdown/dashboard.html
+++ b/master/coverage/framework/src/Markdown/dashboard.html
@@ -138,7 +138,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Markdown/index.html b/master/coverage/framework/src/Markdown/index.html
index 3848fc680bc..52d1187c73a 100644
--- a/master/coverage/framework/src/Markdown/index.html
+++ b/master/coverage/framework/src/Markdown/index.html
@@ -182,7 +182,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Pages/BladePage.php.html b/master/coverage/framework/src/Pages/BladePage.php.html
index f77df56e249..f7d429102cd 100644
--- a/master/coverage/framework/src/Pages/BladePage.php.html
+++ b/master/coverage/framework/src/Pages/BladePage.php.html
@@ -227,7 +227,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Pages/Concerns/BaseMarkdownPage.php.html b/master/coverage/framework/src/Pages/Concerns/BaseMarkdownPage.php.html
index af522aa488d..aabd3a251b0 100644
--- a/master/coverage/framework/src/Pages/Concerns/BaseMarkdownPage.php.html
+++ b/master/coverage/framework/src/Pages/Concerns/BaseMarkdownPage.php.html
@@ -303,7 +303,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Pages/Concerns/HydePage.php.html b/master/coverage/framework/src/Pages/Concerns/HydePage.php.html
index 7d3e04264f7..0491ef97dbb 100644
--- a/master/coverage/framework/src/Pages/Concerns/HydePage.php.html
+++ b/master/coverage/framework/src/Pages/Concerns/HydePage.php.html
@@ -1296,7 +1296,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Pages/Concerns/dashboard.html b/master/coverage/framework/src/Pages/Concerns/dashboard.html
index 9ce57436acb..bc0ab9fbeef 100644
--- a/master/coverage/framework/src/Pages/Concerns/dashboard.html
+++ b/master/coverage/framework/src/Pages/Concerns/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Pages/Concerns/index.html b/master/coverage/framework/src/Pages/Concerns/index.html
index b6126e68758..e569153ffbd 100644
--- a/master/coverage/framework/src/Pages/Concerns/index.html
+++ b/master/coverage/framework/src/Pages/Concerns/index.html
@@ -142,7 +142,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Pages/DocumentationPage.php.html b/master/coverage/framework/src/Pages/DocumentationPage.php.html
index 9dceffc5732..da50ace6598 100644
--- a/master/coverage/framework/src/Pages/DocumentationPage.php.html
+++ b/master/coverage/framework/src/Pages/DocumentationPage.php.html
@@ -360,7 +360,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Pages/HtmlPage.php.html b/master/coverage/framework/src/Pages/HtmlPage.php.html
index a53f8d61c6e..d253c91228a 100644
--- a/master/coverage/framework/src/Pages/HtmlPage.php.html
+++ b/master/coverage/framework/src/Pages/HtmlPage.php.html
@@ -221,7 +221,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Pages/InMemoryPage.php.html b/master/coverage/framework/src/Pages/InMemoryPage.php.html
index 3db6d2f408c..caa7fbd11a3 100644
--- a/master/coverage/framework/src/Pages/InMemoryPage.php.html
+++ b/master/coverage/framework/src/Pages/InMemoryPage.php.html
@@ -469,7 +469,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Pages/MarkdownPage.php.html b/master/coverage/framework/src/Pages/MarkdownPage.php.html
index 7deeaae835c..96acf5d04f4 100644
--- a/master/coverage/framework/src/Pages/MarkdownPage.php.html
+++ b/master/coverage/framework/src/Pages/MarkdownPage.php.html
@@ -110,7 +110,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Pages/MarkdownPost.php.html b/master/coverage/framework/src/Pages/MarkdownPost.php.html
index ddfc9812845..69c01d21d8e 100644
--- a/master/coverage/framework/src/Pages/MarkdownPost.php.html
+++ b/master/coverage/framework/src/Pages/MarkdownPost.php.html
@@ -216,7 +216,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Pages/dashboard.html b/master/coverage/framework/src/Pages/dashboard.html
index 795f194bcd8..7d2ca3cd331 100644
--- a/master/coverage/framework/src/Pages/dashboard.html
+++ b/master/coverage/framework/src/Pages/dashboard.html
@@ -138,7 +138,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Pages/index.html b/master/coverage/framework/src/Pages/index.html
index 6d754cbc7a3..fa5743586a9 100644
--- a/master/coverage/framework/src/Pages/index.html
+++ b/master/coverage/framework/src/Pages/index.html
@@ -266,7 +266,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Support/BuildWarnings.php.html b/master/coverage/framework/src/Support/BuildWarnings.php.html
index 2f1ef4d2159..86747ed48c5 100644
--- a/master/coverage/framework/src/Support/BuildWarnings.php.html
+++ b/master/coverage/framework/src/Support/BuildWarnings.php.html
@@ -408,7 +408,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Support/Concerns/Serializable.php.html b/master/coverage/framework/src/Support/Concerns/Serializable.php.html
index 9605a869c3a..963332141ef 100644
--- a/master/coverage/framework/src/Support/Concerns/Serializable.php.html
+++ b/master/coverage/framework/src/Support/Concerns/Serializable.php.html
@@ -234,7 +234,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Support/Concerns/dashboard.html b/master/coverage/framework/src/Support/Concerns/dashboard.html
index 4a625ceb2b0..4c0864adf0b 100644
--- a/master/coverage/framework/src/Support/Concerns/dashboard.html
+++ b/master/coverage/framework/src/Support/Concerns/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Support/Concerns/index.html b/master/coverage/framework/src/Support/Concerns/index.html
index 09de29156c1..1a925b6980a 100644
--- a/master/coverage/framework/src/Support/Concerns/index.html
+++ b/master/coverage/framework/src/Support/Concerns/index.html
@@ -114,7 +114,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Support/Contracts/SerializableContract.php.html b/master/coverage/framework/src/Support/Contracts/SerializableContract.php.html
index 20256cb8458..e27b4882705 100644
--- a/master/coverage/framework/src/Support/Contracts/SerializableContract.php.html
+++ b/master/coverage/framework/src/Support/Contracts/SerializableContract.php.html
@@ -114,7 +114,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Support/Contracts/dashboard.html b/master/coverage/framework/src/Support/Contracts/dashboard.html
index f9a902e33f0..90c8a152fdc 100644
--- a/master/coverage/framework/src/Support/Contracts/dashboard.html
+++ b/master/coverage/framework/src/Support/Contracts/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Support/Contracts/index.html b/master/coverage/framework/src/Support/Contracts/index.html
index 25b6abb6cb6..1067463d6e5 100644
--- a/master/coverage/framework/src/Support/Contracts/index.html
+++ b/master/coverage/framework/src/Support/Contracts/index.html
@@ -84,7 +84,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Support/DataCollections.php.html b/master/coverage/framework/src/Support/DataCollections.php.html
index 81ab6cf6569..eac647c500a 100644
--- a/master/coverage/framework/src/Support/DataCollections.php.html
+++ b/master/coverage/framework/src/Support/DataCollections.php.html
@@ -330,7 +330,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Support/Facades/Render.php.html b/master/coverage/framework/src/Support/Facades/Render.php.html
index eaef8c35707..a8cf077ceda 100644
--- a/master/coverage/framework/src/Support/Facades/Render.php.html
+++ b/master/coverage/framework/src/Support/Facades/Render.php.html
@@ -173,7 +173,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Support/Facades/dashboard.html b/master/coverage/framework/src/Support/Facades/dashboard.html
index baf8aca230b..c67e48cd94c 100644
--- a/master/coverage/framework/src/Support/Facades/dashboard.html
+++ b/master/coverage/framework/src/Support/Facades/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Support/Facades/index.html b/master/coverage/framework/src/Support/Facades/index.html
index 6e22cd302e2..a79ea6f5c23 100644
--- a/master/coverage/framework/src/Support/Facades/index.html
+++ b/master/coverage/framework/src/Support/Facades/index.html
@@ -114,7 +114,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Support/Filesystem/MediaFile.php.html b/master/coverage/framework/src/Support/Filesystem/MediaFile.php.html
index f0993812420..3082e89c20e 100644
--- a/master/coverage/framework/src/Support/Filesystem/MediaFile.php.html
+++ b/master/coverage/framework/src/Support/Filesystem/MediaFile.php.html
@@ -435,7 +435,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Support/Filesystem/ProjectFile.php.html b/master/coverage/framework/src/Support/Filesystem/ProjectFile.php.html
index 3c963b95028..488fe23ba12 100644
--- a/master/coverage/framework/src/Support/Filesystem/ProjectFile.php.html
+++ b/master/coverage/framework/src/Support/Filesystem/ProjectFile.php.html
@@ -371,7 +371,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Support/Filesystem/SourceFile.php.html b/master/coverage/framework/src/Support/Filesystem/SourceFile.php.html
index 87308ed4f29..66908404f69 100644
--- a/master/coverage/framework/src/Support/Filesystem/SourceFile.php.html
+++ b/master/coverage/framework/src/Support/Filesystem/SourceFile.php.html
@@ -229,7 +229,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Support/Filesystem/dashboard.html b/master/coverage/framework/src/Support/Filesystem/dashboard.html
index 023f61924f9..f51774b95a8 100644
--- a/master/coverage/framework/src/Support/Filesystem/dashboard.html
+++ b/master/coverage/framework/src/Support/Filesystem/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Support/Filesystem/index.html b/master/coverage/framework/src/Support/Filesystem/index.html
index fd73042e298..a9c960cac27 100644
--- a/master/coverage/framework/src/Support/Filesystem/index.html
+++ b/master/coverage/framework/src/Support/Filesystem/index.html
@@ -170,7 +170,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Support/Includes.php.html b/master/coverage/framework/src/Support/Includes.php.html
index fb72a3bd208..5872c31508f 100644
--- a/master/coverage/framework/src/Support/Includes.php.html
+++ b/master/coverage/framework/src/Support/Includes.php.html
@@ -344,7 +344,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Support/Models/DateString.php.html b/master/coverage/framework/src/Support/Models/DateString.php.html
index c397253afb9..469b6410cb7 100644
--- a/master/coverage/framework/src/Support/Models/DateString.php.html
+++ b/master/coverage/framework/src/Support/Models/DateString.php.html
@@ -212,7 +212,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Support/Models/Redirect.php.html b/master/coverage/framework/src/Support/Models/Redirect.php.html
index e787d84344a..86221d79778 100644
--- a/master/coverage/framework/src/Support/Models/Redirect.php.html
+++ b/master/coverage/framework/src/Support/Models/Redirect.php.html
@@ -312,7 +312,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Support/Models/RenderData.php.html b/master/coverage/framework/src/Support/Models/RenderData.php.html
index 86a25c1820f..cffbd1a0778 100644
--- a/master/coverage/framework/src/Support/Models/RenderData.php.html
+++ b/master/coverage/framework/src/Support/Models/RenderData.php.html
@@ -379,7 +379,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Support/Models/Route.php.html b/master/coverage/framework/src/Support/Models/Route.php.html
index 2e6c0b01f47..2151f76f45b 100644
--- a/master/coverage/framework/src/Support/Models/Route.php.html
+++ b/master/coverage/framework/src/Support/Models/Route.php.html
@@ -467,7 +467,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Support/Models/RouteKey.php.html b/master/coverage/framework/src/Support/Models/RouteKey.php.html
index e7b7899a3a7..bde3d17ad79 100644
--- a/master/coverage/framework/src/Support/Models/RouteKey.php.html
+++ b/master/coverage/framework/src/Support/Models/RouteKey.php.html
@@ -281,7 +281,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Support/Models/RouteList.php.html b/master/coverage/framework/src/Support/Models/RouteList.php.html
index 87e09c0f375..a02e0f88167 100644
--- a/master/coverage/framework/src/Support/Models/RouteList.php.html
+++ b/master/coverage/framework/src/Support/Models/RouteList.php.html
@@ -283,7 +283,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Support/Models/RouteListItem.php.html b/master/coverage/framework/src/Support/Models/RouteListItem.php.html
index fe626573940..0bac9b04ba8 100644
--- a/master/coverage/framework/src/Support/Models/RouteListItem.php.html
+++ b/master/coverage/framework/src/Support/Models/RouteListItem.php.html
@@ -335,7 +335,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Support/Models/ValidationResult.php.html b/master/coverage/framework/src/Support/Models/ValidationResult.php.html
index ef5008cc4cd..68fecdcc5a2 100644
--- a/master/coverage/framework/src/Support/Models/ValidationResult.php.html
+++ b/master/coverage/framework/src/Support/Models/ValidationResult.php.html
@@ -678,7 +678,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Support/Models/dashboard.html b/master/coverage/framework/src/Support/Models/dashboard.html
index a60a7eef8fb..fb8a423cf2d 100644
--- a/master/coverage/framework/src/Support/Models/dashboard.html
+++ b/master/coverage/framework/src/Support/Models/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Support/Models/index.html b/master/coverage/framework/src/Support/Models/index.html
index 1ff9ac6155d..de7486470c1 100644
--- a/master/coverage/framework/src/Support/Models/index.html
+++ b/master/coverage/framework/src/Support/Models/index.html
@@ -310,7 +310,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Support/Paginator.php.html b/master/coverage/framework/src/Support/Paginator.php.html
index 7ffbeaceb6e..ca2645b397b 100644
--- a/master/coverage/framework/src/Support/Paginator.php.html
+++ b/master/coverage/framework/src/Support/Paginator.php.html
@@ -833,7 +833,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Support/ReadingTime.php.html b/master/coverage/framework/src/Support/ReadingTime.php.html
index ea6094751c2..c07b4730003 100644
--- a/master/coverage/framework/src/Support/ReadingTime.php.html
+++ b/master/coverage/framework/src/Support/ReadingTime.php.html
@@ -483,7 +483,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/Support/dashboard.html b/master/coverage/framework/src/Support/dashboard.html
index 865f7b6aaf0..bdf9e3f4dc5 100644
--- a/master/coverage/framework/src/Support/dashboard.html
+++ b/master/coverage/framework/src/Support/dashboard.html
@@ -138,7 +138,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/Support/index.html b/master/coverage/framework/src/Support/index.html
index f2e349477bc..d4542abb4e0 100644
--- a/master/coverage/framework/src/Support/index.html
+++ b/master/coverage/framework/src/Support/index.html
@@ -350,7 +350,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/dashboard.html b/master/coverage/framework/src/dashboard.html
index bf67f88dd6d..d6c14968e44 100644
--- a/master/coverage/framework/src/dashboard.html
+++ b/master/coverage/framework/src/dashboard.html
@@ -149,7 +149,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/framework/src/helpers.php.html b/master/coverage/framework/src/helpers.php.html
index 7ac3f386cbf..e4a88ec6529 100644
--- a/master/coverage/framework/src/helpers.php.html
+++ b/master/coverage/framework/src/helpers.php.html
@@ -659,7 +659,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/framework/src/index.html b/master/coverage/framework/src/index.html
index 21a9e6eba16..4d090bc8f74 100644
--- a/master/coverage/framework/src/index.html
+++ b/master/coverage/framework/src/index.html
@@ -344,7 +344,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/index.html b/master/coverage/index.html
index fb2bd3b5604..66aab4dd2ff 100644
--- a/master/coverage/index.html
+++ b/master/coverage/index.html
@@ -138,7 +138,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/junit.xml b/master/coverage/junit.xml
index b231b015720..0955fbc050f 100644
--- a/master/coverage/junit.xml
+++ b/master/coverage/junit.xml
@@ -1,483 +1,483 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <testsuites>
-  <testsuite name="/home/runner/work/develop/develop/phpunit.xml.dist" tests="2617" assertions="5108" errors="0" failures="0" skipped="6" time="53.082592">
-    <testsuite name="FeatureHyde" tests="6" assertions="17" errors="0" failures="0" skipped="0" time="1.605621">
-      <testsuite name="Hyde\Testing\Hyde\DefaultContentTest" file="Default Content (Hyde\Testing\Hyde\DefaultContent)" tests="3" assertions="12" errors="0" failures="0" skipped="0" time="0.554288">
-        <testcase name="Default pages are present" file="Default Content (Hyde\Testing\Hyde\DefaultContent)::Default pages are present" class="Hyde\Testing\Hyde\DefaultContentTest" classname="Hyde.Testing.Hyde.DefaultContentTest" assertions="4" time="0.550035"/>
-        <testcase name="Default compiled stylesheet is present" file="Default Content (Hyde\Testing\Hyde\DefaultContent)::Default compiled stylesheet is present" class="Hyde\Testing\Hyde\DefaultContentTest" classname="Hyde.Testing.Hyde.DefaultContentTest" assertions="2" time="0.002037"/>
-        <testcase name="Laravel mix resources are present" file="Default Content (Hyde\Testing\Hyde\DefaultContent)::Laravel mix resources are present" class="Hyde\Testing\Hyde\DefaultContentTest" classname="Hyde.Testing.Hyde.DefaultContentTest" assertions="6" time="0.002216"/>
+  <testsuite name="/home/runner/work/develop/develop/phpunit.xml.dist" tests="2617" assertions="5108" errors="0" failures="0" skipped="6" time="50.914076">
+    <testsuite name="FeatureHyde" tests="6" assertions="17" errors="0" failures="0" skipped="0" time="1.555670">
+      <testsuite name="Hyde\Testing\Hyde\DefaultContentTest" file="Default Content (Hyde\Testing\Hyde\DefaultContent)" tests="3" assertions="12" errors="0" failures="0" skipped="0" time="0.534299">
+        <testcase name="Default pages are present" file="Default Content (Hyde\Testing\Hyde\DefaultContent)::Default pages are present" class="Hyde\Testing\Hyde\DefaultContentTest" classname="Hyde.Testing.Hyde.DefaultContentTest" assertions="4" time="0.529995"/>
+        <testcase name="Default compiled stylesheet is present" file="Default Content (Hyde\Testing\Hyde\DefaultContent)::Default compiled stylesheet is present" class="Hyde\Testing\Hyde\DefaultContentTest" classname="Hyde.Testing.Hyde.DefaultContentTest" assertions="2" time="0.002094"/>
+        <testcase name="Laravel mix resources are present" file="Default Content (Hyde\Testing\Hyde\DefaultContent)::Laravel mix resources are present" class="Hyde\Testing\Hyde\DefaultContentTest" classname="Hyde.Testing.Hyde.DefaultContentTest" assertions="6" time="0.002210"/>
       </testsuite>
-      <testsuite name="Hyde\Testing\Hyde\ExampleTest" file="Example (Hyde\Testing\Hyde\Example)" tests="1" assertions="1" errors="0" failures="0" skipped="0" time="0.021804">
-        <testcase name="Example" file="Example (Hyde\Testing\Hyde\Example)::Example" class="Hyde\Testing\Hyde\ExampleTest" classname="Hyde.Testing.Hyde.ExampleTest" assertions="1" time="0.021804"/>
+      <testsuite name="Hyde\Testing\Hyde\ExampleTest" file="Example (Hyde\Testing\Hyde\Example)" tests="1" assertions="1" errors="0" failures="0" skipped="0" time="0.021086">
+        <testcase name="Example" file="Example (Hyde\Testing\Hyde\Example)::Example" class="Hyde\Testing\Hyde\ExampleTest" classname="Hyde.Testing.Hyde.ExampleTest" assertions="1" time="0.021086"/>
       </testsuite>
-      <testsuite name="Hyde\Testing\Hyde\HydeCLITest" file="Hyde CLI (Hyde\Testing\Hyde\HydeCLI)" tests="1" assertions="2" errors="0" failures="0" skipped="0" time="0.730196">
-        <testcase name="Can show hyde console" file="Hyde CLI (Hyde\Testing\Hyde\HydeCLI)::Can show hyde console" class="Hyde\Testing\Hyde\HydeCLITest" classname="Hyde.Testing.Hyde.HydeCLITest" assertions="2" time="0.730196"/>
+      <testsuite name="Hyde\Testing\Hyde\HydeCLITest" file="Hyde CLI (Hyde\Testing\Hyde\HydeCLI)" tests="1" assertions="2" errors="0" failures="0" skipped="0" time="0.707631">
+        <testcase name="Can show hyde console" file="Hyde CLI (Hyde\Testing\Hyde\HydeCLI)::Can show hyde console" class="Hyde\Testing\Hyde\HydeCLITest" classname="Hyde.Testing.Hyde.HydeCLITest" assertions="2" time="0.707631"/>
       </testsuite>
-      <testsuite name="Hyde\Testing\Hyde\StaticSiteBuilderTest" file="Static Site Builder (Hyde\Testing\Hyde\StaticSiteBuilder)" tests="1" assertions="2" errors="0" failures="0" skipped="0" time="0.299334">
-        <testcase name="Can build static site" file="Static Site Builder (Hyde\Testing\Hyde\StaticSiteBuilder)::Can build static site" class="Hyde\Testing\Hyde\StaticSiteBuilderTest" classname="Hyde.Testing.Hyde.StaticSiteBuilderTest" assertions="2" time="0.299334"/>
+      <testsuite name="Hyde\Testing\Hyde\StaticSiteBuilderTest" file="Static Site Builder (Hyde\Testing\Hyde\StaticSiteBuilder)" tests="1" assertions="2" errors="0" failures="0" skipped="0" time="0.292653">
+        <testcase name="Can build static site" file="Static Site Builder (Hyde\Testing\Hyde\StaticSiteBuilder)::Can build static site" class="Hyde\Testing\Hyde\StaticSiteBuilderTest" classname="Hyde.Testing.Hyde.StaticSiteBuilderTest" assertions="2" time="0.292653"/>
       </testsuite>
     </testsuite>
-    <testsuite name="UnitFramework" tests="963" assertions="1460" errors="0" failures="0" skipped="3" time="9.554195">
-      <testsuite name="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)" tests="15" assertions="21" errors="0" failures="0" skipped="0" time="0.036615">
-        <testcase name="Version string constant" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Version string constant" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.004951"/>
-        <testcase name="Service has version string" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Service has version string" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.002341"/>
-        <testcase name="Version string defaults to constant" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Version string defaults to constant" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.002087"/>
-        <testcase name="Version can be set in config" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Version can be set in config" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.002076"/>
-        <testcase name="Cdn pattern constant" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Cdn pattern constant" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.001888"/>
-        <testcase name="Can set custom cdn url in config" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Can set custom cdn url in config" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.002062"/>
-        <testcase name="Can use custom cdn url with version" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Can use custom cdn url with version" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.002202"/>
-        <testcase name="Can use custom cdn url with file" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Can use custom cdn url with file" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.002096"/>
-        <testcase name="Can use custom cdn url with version and file" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Can use custom cdn url with version and file" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.002080"/>
-        <testcase name="Can use custom cdn url with custom version" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Can use custom cdn url with custom version" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.002070"/>
-        <testcase name="Cdn link helper" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Cdn link helper" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.001994"/>
-        <testcase name="Has media file helper" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Has media file helper" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.002434"/>
-        <testcase name="Has media file helper returns true for existing file" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Has media file helper returns true for existing file" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.002278"/>
-        <testcase name="Inject tailwind config returns extracted tailwind config" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Inject tailwind config returns extracted tailwind config" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="6" time="0.003455"/>
-        <testcase name="Inject tailwind config handles missing config file gracefully" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Inject tailwind config handles missing config file gracefully" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="2" time="0.002602"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\BaseFoundationCollectionTest" file="Base Foundation Collection (Hyde\Framework\Testing\Unit\BaseFoundationCollection)" tests="4" assertions="8" errors="0" failures="0" skipped="0" time="0.022277">
-        <testcase name="Init" file="Base Foundation Collection (Hyde\Framework\Testing\Unit\BaseFoundationCollection)::Init" class="Hyde\Framework\Testing\Unit\BaseFoundationCollectionTest" classname="Hyde.Framework.Testing.Unit.BaseFoundationCollectionTest" assertions="4" time="0.016373"/>
-        <testcase name="Exceptions are caught and rethrown as runtime exceptions" file="Base Foundation Collection (Hyde\Framework\Testing\Unit\BaseFoundationCollection)::Exceptions are caught and rethrown as runtime exceptions" class="Hyde\Framework\Testing\Unit\BaseFoundationCollectionTest" classname="Hyde.Framework.Testing.Unit.BaseFoundationCollectionTest" assertions="1" time="0.002187"/>
-        <testcase name="Exceptions are caught and rethrown with helpful information" file="Base Foundation Collection (Hyde\Framework\Testing\Unit\BaseFoundationCollection)::Exceptions are caught and rethrown with helpful information" class="Hyde\Framework\Testing\Unit\BaseFoundationCollectionTest" classname="Hyde.Framework.Testing.Unit.BaseFoundationCollectionTest" assertions="1" time="0.001813"/>
-        <testcase name="Can get previous exception" file="Base Foundation Collection (Hyde\Framework\Testing\Unit\BaseFoundationCollection)::Can get previous exception" class="Hyde\Framework\Testing\Unit\BaseFoundationCollectionTest" classname="Hyde.Framework.Testing.Unit.BaseFoundationCollectionTest" assertions="2" time="0.001904"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\BlogPostFrontMatterIsOptionalTest" file="Blog Post Front Matter Is Optional (Hyde\Framework\Testing\Unit\BlogPostFrontMatterIsOptional)" tests="2" assertions="2" errors="0" failures="0" skipped="0" time="0.289658">
-        <testcase name="Blog post can be created without front matter" file="Blog Post Front Matter Is Optional (Hyde\Framework\Testing\Unit\BlogPostFrontMatterIsOptional)::Blog post can be created without front matter" class="Hyde\Framework\Testing\Unit\BlogPostFrontMatterIsOptionalTest" classname="Hyde.Framework.Testing.Unit.BlogPostFrontMatterIsOptionalTest" assertions="1" time="0.257735"/>
-        <testcase name="Blog post feed can be rendered when post has no front matter" file="Blog Post Front Matter Is Optional (Hyde\Framework\Testing\Unit\BlogPostFrontMatterIsOptional)::Blog post feed can be rendered when post has no front matter" class="Hyde\Framework\Testing\Unit\BlogPostFrontMatterIsOptionalTest" classname="Hyde.Framework.Testing.Unit.BlogPostFrontMatterIsOptionalTest" assertions="1" time="0.031923"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)" tests="13" assertions="13" errors="0" failures="0" skipped="0" time="0.078308">
-        <testcase name="Can construct" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can construct" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.017185"/>
-        <testcase name="Can render" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can render" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.014151"/>
-        <testcase name="Can generate breadcrumbs" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can generate breadcrumbs" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004038"/>
-        <testcase name="Can generate breadcrumbs for index page" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can generate breadcrumbs for index page" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004058"/>
-        <testcase name="Can generate breadcrumbs for root page" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can generate breadcrumbs for root page" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004202"/>
-        <testcase name="Can generate breadcrumbs for nested page" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can generate breadcrumbs for nested page" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004388"/>
-        <testcase name="Can generate breadcrumbs for very nested page" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can generate breadcrumbs for very nested page" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004599"/>
-        <testcase name="Can generate breadcrumbs for nested page with index" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can generate breadcrumbs for nested page with index" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004334"/>
-        <testcase name="Can generate breadcrumbs for index page with pretty urls" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can generate breadcrumbs for index page with pretty urls" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004170"/>
-        <testcase name="Can generate breadcrumbs for nested page with pretty urls" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can generate breadcrumbs for nested page with pretty urls" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004433"/>
-        <testcase name="Can generate breadcrumbs for nested page with index with pretty urls" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can generate breadcrumbs for nested page with index with pretty urls" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004384"/>
-        <testcase name="Title generation with kebab case url" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Title generation with kebab case url" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004156"/>
-        <testcase name="Title generation with snake case url" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Title generation with snake case url" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004208"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChangedTest" file="Build Output Directory Can Be Changed (Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChanged)" tests="5" assertions="20" errors="0" failures="0" skipped="0" time="0.199341">
-        <testcase name="Site output directory can be changed for site builds" file="Build Output Directory Can Be Changed (Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChanged)::Site output directory can be changed for site builds" class="Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChangedTest" classname="Hyde.Framework.Testing.Unit.BuildOutputDirectoryCanBeChangedTest" assertions="14" time="0.068304"/>
-        <testcase name="Site output directory can be changed in static page builder" file="Build Output Directory Can Be Changed (Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChanged)::Site output directory can be changed in static page builder" class="Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChangedTest" classname="Hyde.Framework.Testing.Unit.BuildOutputDirectoryCanBeChangedTest" assertions="1" time="0.036915"/>
-        <testcase name="Output directory is created if it does not exist in static page builder" file="Build Output Directory Can Be Changed (Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChanged)::Output directory is created if it does not exist in static page builder" class="Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChangedTest" classname="Hyde.Framework.Testing.Unit.BuildOutputDirectoryCanBeChangedTest" assertions="1" time="0.035430"/>
-        <testcase name="Site output directory can be changed in configuration" file="Build Output Directory Can Be Changed (Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChanged)::Site output directory can be changed in configuration" class="Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChangedTest" classname="Hyde.Framework.Testing.Unit.BuildOutputDirectoryCanBeChangedTest" assertions="3" time="0.038284"/>
-        <testcase name="Site output directory path is normalized to trim trailing slashes" file="Build Output Directory Can Be Changed (Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChanged)::Site output directory path is normalized to trim trailing slashes" class="Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChangedTest" classname="Hyde.Framework.Testing.Unit.BuildOutputDirectoryCanBeChangedTest" assertions="1" time="0.020407"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)" tests="36" assertions="36" errors="0" failures="0" skipped="0" time="0.157975">
-        <testcase name="Construct" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Construct" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.014015"/>
-        <testcase name="Get tasks" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Get tasks" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003170"/>
-        <testcase name="Get tasks with task registered in config" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Get tasks with task registered in config" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003713"/>
-        <testcase name="Register task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003244"/>
-        <testcase name="Register pre build task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register pre build task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003221"/>
-        <testcase name="Register post build task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register post build task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003199"/>
-        <testcase name="Register instantiated task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register instantiated task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003190"/>
-        <testcase name="Register instantiated pre build task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register instantiated pre build task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003232"/>
-        <testcase name="Register instantiated post build task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register instantiated post build task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003190"/>
-        <testcase name="Register task with invalid class type throws exception" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register task with invalid class type throws exception" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003198"/>
-        <testcase name="Register task without child extension throws exception" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register task without child extension throws exception" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003169"/>
-        <testcase name="Register task with base class throws exception" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register task with base class throws exception" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003142"/>
-        <testcase name="Register task with already registered task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register task with already registered task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003209"/>
-        <testcase name="Register task with task already registered in config" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register task with task already registered in config" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003697"/>
-        <testcase name="Can register framework tasks" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Can register framework tasks" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003184"/>
-        <testcase name="Can overload framework tasks" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Can overload framework tasks" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003187"/>
-        <testcase name="Set output with null" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Set output with null" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003104"/>
-        <testcase name="Set output with output style" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Set output with output style" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.007223"/>
-        <testcase name="Generate build manifest extends post build task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Generate build manifest extends post build task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003127"/>
-        <testcase name="Generate rss feed extends post build task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Generate rss feed extends post build task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003142"/>
-        <testcase name="Generate search extends post build task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Generate search extends post build task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.007408"/>
-        <testcase name="Generate sitemap extends post build task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Generate sitemap extends post build task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003130"/>
+    <testsuite name="UnitFramework" tests="963" assertions="1460" errors="0" failures="0" skipped="3" time="9.341562">
+      <testsuite name="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)" tests="15" assertions="21" errors="0" failures="0" skipped="0" time="0.035638">
+        <testcase name="Version string constant" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Version string constant" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.004746"/>
+        <testcase name="Service has version string" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Service has version string" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.002252"/>
+        <testcase name="Version string defaults to constant" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Version string defaults to constant" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.001987"/>
+        <testcase name="Version can be set in config" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Version can be set in config" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.002081"/>
+        <testcase name="Cdn pattern constant" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Cdn pattern constant" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.001829"/>
+        <testcase name="Can set custom cdn url in config" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Can set custom cdn url in config" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.002091"/>
+        <testcase name="Can use custom cdn url with version" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Can use custom cdn url with version" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.002079"/>
+        <testcase name="Can use custom cdn url with file" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Can use custom cdn url with file" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.002050"/>
+        <testcase name="Can use custom cdn url with version and file" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Can use custom cdn url with version and file" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.002107"/>
+        <testcase name="Can use custom cdn url with custom version" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Can use custom cdn url with custom version" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.002028"/>
+        <testcase name="Cdn link helper" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Cdn link helper" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.001970"/>
+        <testcase name="Has media file helper" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Has media file helper" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.002343"/>
+        <testcase name="Has media file helper returns true for existing file" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Has media file helper returns true for existing file" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="1" time="0.002195"/>
+        <testcase name="Inject tailwind config returns extracted tailwind config" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Inject tailwind config returns extracted tailwind config" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="6" time="0.003351"/>
+        <testcase name="Inject tailwind config handles missing config file gracefully" file="Asset Service Unit (Hyde\Framework\Testing\Unit\AssetServiceUnit)::Inject tailwind config handles missing config file gracefully" class="Hyde\Framework\Testing\Unit\AssetServiceUnitTest" classname="Hyde.Framework.Testing.Unit.AssetServiceUnitTest" assertions="2" time="0.002530"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\BaseFoundationCollectionTest" file="Base Foundation Collection (Hyde\Framework\Testing\Unit\BaseFoundationCollection)" tests="4" assertions="8" errors="0" failures="0" skipped="0" time="0.021831">
+        <testcase name="Init" file="Base Foundation Collection (Hyde\Framework\Testing\Unit\BaseFoundationCollection)::Init" class="Hyde\Framework\Testing\Unit\BaseFoundationCollectionTest" classname="Hyde.Framework.Testing.Unit.BaseFoundationCollectionTest" assertions="4" time="0.016022"/>
+        <testcase name="Exceptions are caught and rethrown as runtime exceptions" file="Base Foundation Collection (Hyde\Framework\Testing\Unit\BaseFoundationCollection)::Exceptions are caught and rethrown as runtime exceptions" class="Hyde\Framework\Testing\Unit\BaseFoundationCollectionTest" classname="Hyde.Framework.Testing.Unit.BaseFoundationCollectionTest" assertions="1" time="0.002147"/>
+        <testcase name="Exceptions are caught and rethrown with helpful information" file="Base Foundation Collection (Hyde\Framework\Testing\Unit\BaseFoundationCollection)::Exceptions are caught and rethrown with helpful information" class="Hyde\Framework\Testing\Unit\BaseFoundationCollectionTest" classname="Hyde.Framework.Testing.Unit.BaseFoundationCollectionTest" assertions="1" time="0.001824"/>
+        <testcase name="Can get previous exception" file="Base Foundation Collection (Hyde\Framework\Testing\Unit\BaseFoundationCollection)::Can get previous exception" class="Hyde\Framework\Testing\Unit\BaseFoundationCollectionTest" classname="Hyde.Framework.Testing.Unit.BaseFoundationCollectionTest" assertions="2" time="0.001838"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\BlogPostFrontMatterIsOptionalTest" file="Blog Post Front Matter Is Optional (Hyde\Framework\Testing\Unit\BlogPostFrontMatterIsOptional)" tests="2" assertions="2" errors="0" failures="0" skipped="0" time="0.285631">
+        <testcase name="Blog post can be created without front matter" file="Blog Post Front Matter Is Optional (Hyde\Framework\Testing\Unit\BlogPostFrontMatterIsOptional)::Blog post can be created without front matter" class="Hyde\Framework\Testing\Unit\BlogPostFrontMatterIsOptionalTest" classname="Hyde.Framework.Testing.Unit.BlogPostFrontMatterIsOptionalTest" assertions="1" time="0.253730"/>
+        <testcase name="Blog post feed can be rendered when post has no front matter" file="Blog Post Front Matter Is Optional (Hyde\Framework\Testing\Unit\BlogPostFrontMatterIsOptional)::Blog post feed can be rendered when post has no front matter" class="Hyde\Framework\Testing\Unit\BlogPostFrontMatterIsOptionalTest" classname="Hyde.Framework.Testing.Unit.BlogPostFrontMatterIsOptionalTest" assertions="1" time="0.031901"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)" tests="13" assertions="13" errors="0" failures="0" skipped="0" time="0.076650">
+        <testcase name="Can construct" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can construct" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.016512"/>
+        <testcase name="Can render" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can render" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.013395"/>
+        <testcase name="Can generate breadcrumbs" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can generate breadcrumbs" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.003972"/>
+        <testcase name="Can generate breadcrumbs for index page" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can generate breadcrumbs for index page" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004038"/>
+        <testcase name="Can generate breadcrumbs for root page" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can generate breadcrumbs for root page" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004145"/>
+        <testcase name="Can generate breadcrumbs for nested page" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can generate breadcrumbs for nested page" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004297"/>
+        <testcase name="Can generate breadcrumbs for very nested page" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can generate breadcrumbs for very nested page" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004636"/>
+        <testcase name="Can generate breadcrumbs for nested page with index" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can generate breadcrumbs for nested page with index" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004288"/>
+        <testcase name="Can generate breadcrumbs for index page with pretty urls" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can generate breadcrumbs for index page with pretty urls" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004152"/>
+        <testcase name="Can generate breadcrumbs for nested page with pretty urls" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can generate breadcrumbs for nested page with pretty urls" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004427"/>
+        <testcase name="Can generate breadcrumbs for nested page with index with pretty urls" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Can generate breadcrumbs for nested page with index with pretty urls" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004393"/>
+        <testcase name="Title generation with kebab case url" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Title generation with kebab case url" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004226"/>
+        <testcase name="Title generation with snake case url" file="Breadcrumbs Component (Hyde\Framework\Testing\Unit\BreadcrumbsComponent)::Title generation with snake case url" class="Hyde\Framework\Testing\Unit\BreadcrumbsComponentTest" classname="Hyde.Framework.Testing.Unit.BreadcrumbsComponentTest" assertions="1" time="0.004169"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChangedTest" file="Build Output Directory Can Be Changed (Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChanged)" tests="5" assertions="20" errors="0" failures="0" skipped="0" time="0.191720">
+        <testcase name="Site output directory can be changed for site builds" file="Build Output Directory Can Be Changed (Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChanged)::Site output directory can be changed for site builds" class="Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChangedTest" classname="Hyde.Framework.Testing.Unit.BuildOutputDirectoryCanBeChangedTest" assertions="14" time="0.067911"/>
+        <testcase name="Site output directory can be changed in static page builder" file="Build Output Directory Can Be Changed (Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChanged)::Site output directory can be changed in static page builder" class="Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChangedTest" classname="Hyde.Framework.Testing.Unit.BuildOutputDirectoryCanBeChangedTest" assertions="1" time="0.034618"/>
+        <testcase name="Output directory is created if it does not exist in static page builder" file="Build Output Directory Can Be Changed (Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChanged)::Output directory is created if it does not exist in static page builder" class="Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChangedTest" classname="Hyde.Framework.Testing.Unit.BuildOutputDirectoryCanBeChangedTest" assertions="1" time="0.034397"/>
+        <testcase name="Site output directory can be changed in configuration" file="Build Output Directory Can Be Changed (Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChanged)::Site output directory can be changed in configuration" class="Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChangedTest" classname="Hyde.Framework.Testing.Unit.BuildOutputDirectoryCanBeChangedTest" assertions="3" time="0.035273"/>
+        <testcase name="Site output directory path is normalized to trim trailing slashes" file="Build Output Directory Can Be Changed (Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChanged)::Site output directory path is normalized to trim trailing slashes" class="Hyde\Framework\Testing\Unit\BuildOutputDirectoryCanBeChangedTest" classname="Hyde.Framework.Testing.Unit.BuildOutputDirectoryCanBeChangedTest" assertions="1" time="0.019520"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)" tests="36" assertions="36" errors="0" failures="0" skipped="0" time="0.160392">
+        <testcase name="Construct" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Construct" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.014472"/>
+        <testcase name="Get tasks" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Get tasks" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003166"/>
+        <testcase name="Get tasks with task registered in config" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Get tasks with task registered in config" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003732"/>
+        <testcase name="Register task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003191"/>
+        <testcase name="Register pre build task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register pre build task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003203"/>
+        <testcase name="Register post build task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register post build task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003206"/>
+        <testcase name="Register instantiated task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register instantiated task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003419"/>
+        <testcase name="Register instantiated pre build task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register instantiated pre build task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003294"/>
+        <testcase name="Register instantiated post build task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register instantiated post build task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003245"/>
+        <testcase name="Register task with invalid class type throws exception" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register task with invalid class type throws exception" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003191"/>
+        <testcase name="Register task without child extension throws exception" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register task without child extension throws exception" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003220"/>
+        <testcase name="Register task with base class throws exception" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register task with base class throws exception" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003199"/>
+        <testcase name="Register task with already registered task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register task with already registered task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003251"/>
+        <testcase name="Register task with task already registered in config" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Register task with task already registered in config" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003735"/>
+        <testcase name="Can register framework tasks" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Can register framework tasks" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003306"/>
+        <testcase name="Can overload framework tasks" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Can overload framework tasks" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003569"/>
+        <testcase name="Set output with null" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Set output with null" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003124"/>
+        <testcase name="Set output with output style" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Set output with output style" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.007134"/>
+        <testcase name="Generate build manifest extends post build task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Generate build manifest extends post build task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003181"/>
+        <testcase name="Generate rss feed extends post build task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Generate rss feed extends post build task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003146"/>
+        <testcase name="Generate search extends post build task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Generate search extends post build task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.007467"/>
+        <testcase name="Generate sitemap extends post build task" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Generate sitemap extends post build task" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003227"/>
         <testcase name="Run pre build tasks" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run pre build tasks" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003130"/>
-        <testcase name="Run post build tasks" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run post build tasks" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003106"/>
-        <testcase name="Run pre build tasks with tasks" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run pre build tasks with tasks" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003222"/>
-        <testcase name="Run post build tasks with tasks" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run post build tasks with tasks" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003215"/>
-        <testcase name="Run pre build tasks calls handle methods" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run pre build tasks calls handle methods" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.007208"/>
-        <testcase name="Run post build tasks calls handle methods" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run post build tasks calls handle methods" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.007013"/>
-        <testcase name="Run pre build tasks calls run methods" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run pre build tasks calls run methods" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.011437"/>
-        <testcase name="Run post build tasks calls run methods" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run post build tasks calls run methods" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003563"/>
-        <testcase name="Run pre build tasks calls run methods with null when service has no output" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run pre build tasks calls run methods with null when service has no output" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003407"/>
-        <testcase name="Run post build tasks calls run methods with null when service has no output" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run post build tasks calls run methods with null when service has no output" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003394"/>
-        <testcase name="Run pre build tasks calls run methods with output when service has output" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run pre build tasks calls run methods with output when service has output" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003402"/>
-        <testcase name="Run post build tasks calls run methods with output when service has output" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run post build tasks calls run methods with output when service has output" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003434"/>
-        <testcase name="Service searches for tasks in app directory" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Service searches for tasks in app directory" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.005617"/>
-        <testcase name="Service finds tasks in app directory" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Service finds tasks in app directory" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.006735"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\BuildTaskSkippedExceptionTest" file="Build Task Skipped Exception (Hyde\Framework\Testing\Unit\BuildTaskSkippedException)" tests="5" assertions="7" errors="0" failures="0" skipped="0" time="0.042930">
-        <testcase name="It can be instantiated" file="Build Task Skipped Exception (Hyde\Framework\Testing\Unit\BuildTaskSkippedException)::It can be instantiated" class="Hyde\Framework\Testing\Unit\BuildTaskSkippedExceptionTest" classname="Hyde.Framework.Testing.Unit.BuildTaskSkippedExceptionTest" assertions="1" time="0.035592"/>
-        <testcase name="It throws an exception with default message" file="Build Task Skipped Exception (Hyde\Framework\Testing\Unit\BuildTaskSkippedException)::It throws an exception with default message" class="Hyde\Framework\Testing\Unit\BuildTaskSkippedExceptionTest" classname="Hyde.Framework.Testing.Unit.BuildTaskSkippedExceptionTest" assertions="2" time="0.002079"/>
-        <testcase name="It throws an exception with custom message" file="Build Task Skipped Exception (Hyde\Framework\Testing\Unit\BuildTaskSkippedException)::It throws an exception with custom message" class="Hyde\Framework\Testing\Unit\BuildTaskSkippedExceptionTest" classname="Hyde.Framework.Testing.Unit.BuildTaskSkippedExceptionTest" assertions="2" time="0.001877"/>
-        <testcase name="Default exception code" file="Build Task Skipped Exception (Hyde\Framework\Testing\Unit\BuildTaskSkippedException)::Default exception code" class="Hyde\Framework\Testing\Unit\BuildTaskSkippedExceptionTest" classname="Hyde.Framework.Testing.Unit.BuildTaskSkippedExceptionTest" assertions="1" time="0.001688"/>
-        <testcase name="Custom exception code" file="Build Task Skipped Exception (Hyde\Framework\Testing\Unit\BuildTaskSkippedException)::Custom exception code" class="Hyde\Framework\Testing\Unit\BuildTaskSkippedExceptionTest" classname="Hyde.Framework.Testing.Unit.BuildTaskSkippedExceptionTest" assertions="1" time="0.001693"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)" tests="21" assertions="33" errors="0" failures="0" skipped="0" time="0.046190">
-        <testcase name="Can create build task" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Can create build task" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.007062"/>
-        <testcase name="It tracks execution time" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::It tracks execution time" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="2" time="0.002169"/>
-        <testcase name="It can run without output" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::It can run without output" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.001866"/>
-        <testcase name="It can run with output" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::It can run with output" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.002272"/>
-        <testcase name="It prints start message" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::It prints start message" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.001928"/>
-        <testcase name="It prints finish message" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::It prints finish message" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="2" time="0.001986"/>
-        <testcase name="Run method handles task" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Run method handles task" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="2" time="0.001973"/>
-        <testcase name="Run method returns exit code" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Run method returns exit code" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="2" time="0.002014"/>
-        <testcase name="Can get message" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Can get message" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.001766"/>
-        <testcase name="Can get custom message" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Can get custom message" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.001795"/>
-        <testcase name="Can print start message" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Can print start message" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.001806"/>
-        <testcase name="Can print custom start message" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Can print custom start message" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.001809"/>
-        <testcase name="Can print finish message" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Can print finish message" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="2" time="0.001946"/>
-        <testcase name="Finish message printing formats execution time" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Finish message printing formats execution time" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.001880"/>
-        <testcase name="Can write to output" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Can write to output" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.001794"/>
-        <testcase name="Created site file" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Created site file" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.001988"/>
-        <testcase name="Created site file with absolute path" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Created site file with absolute path" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.002019"/>
-        <testcase name="With execution time" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::With execution time" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="2" time="0.001927"/>
-        <testcase name="Task skipping" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Task skipping" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="3" time="0.002050"/>
-        <testcase name="Task skipping with custom message" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Task skipping with custom message" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="3" time="0.002095"/>
-        <testcase name="Exception handling" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Exception handling" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="3" time="0.002047"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\BuildWarningsTest" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)" tests="18" assertions="21" errors="0" failures="0" skipped="0" time="0.065794">
-        <testcase name="Get instance" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Get instance" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.023833"/>
-        <testcase name="Get instance returns singleton" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Get instance returns singleton" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002122"/>
-        <testcase name="Has warnings" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Has warnings" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.001973"/>
-        <testcase name="Has warning with warnings" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Has warning with warnings" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002026"/>
-        <testcase name="Get warnings" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Get warnings" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002034"/>
-        <testcase name="Get warnings with warnings" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Get warnings with warnings" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002233"/>
-        <testcase name="Report" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Report" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="2" time="0.002280"/>
-        <testcase name="Report with build warning object" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Report with build warning object" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="2" time="0.002181"/>
-        <testcase name="Reports warnings defaults to true" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Reports warnings defaults to true" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002157"/>
-        <testcase name="Reports warnings returns true when true" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Reports warnings returns true when true" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002096"/>
-        <testcase name="Reports warnings returns false when false" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Reports warnings returns false when false" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002158"/>
-        <testcase name="Reports warnings as exceptions defaults to false" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Reports warnings as exceptions defaults to false" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002156"/>
-        <testcase name="Reports warnings as exceptions returns true when true" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Reports warnings as exceptions returns true when true" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002109"/>
-        <testcase name="Reports warnings as exceptions returns false when false" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Reports warnings as exceptions returns false when false" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002154"/>
-        <testcase name="Write warnings to output" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Write warnings to output" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.005580"/>
-        <testcase name="Write warnings to output with verbose output" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Write warnings to output with verbose output" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="2" time="0.002578"/>
-        <testcase name="Write warnings to output with converting build warnings to exceptions" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Write warnings to output with converting build warnings to exceptions" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.004203"/>
-        <testcase name="Can construct build warning" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Can construct build warning" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.001921"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\ConfigFileTest" file="Config File (Hyde\Framework\Testing\Unit\ConfigFile)" tests="8" assertions="8" errors="0" failures="0" skipped="0" time="0.038273">
-        <testcase name="Default output directory value matches declared value" file="Config File (Hyde\Framework\Testing\Unit\ConfigFile)::Default output directory value matches declared value" class="Hyde\Framework\Testing\Unit\ConfigFileTest" classname="Hyde.Framework.Testing.Unit.ConfigFileTest" assertions="1" time="0.020242"/>
-        <testcase name="Default media directory value matches declared value" file="Config File (Hyde\Framework\Testing\Unit\ConfigFile)::Default media directory value matches declared value" class="Hyde\Framework\Testing\Unit\ConfigFileTest" classname="Hyde.Framework.Testing.Unit.ConfigFileTest" assertions="1" time="0.002377"/>
-        <testcase name="Default source root value matches declared value" file="Config File (Hyde\Framework\Testing\Unit\ConfigFile)::Default source root value matches declared value" class="Hyde\Framework\Testing\Unit\ConfigFileTest" classname="Hyde.Framework.Testing.Unit.ConfigFileTest" assertions="1" time="0.002354"/>
-        <testcase name="Default source directories values match declared values" file="Config File (Hyde\Framework\Testing\Unit\ConfigFile)::Default source directories values match declared values" class="Hyde\Framework\Testing\Unit\ConfigFileTest" classname="Hyde.Framework.Testing.Unit.ConfigFileTest" assertions="1" time="0.002461"/>
-        <testcase name="Default source directories values cover all core extension classes" file="Config File (Hyde\Framework\Testing\Unit\ConfigFile)::Default source directories values cover all core extension classes" class="Hyde\Framework\Testing\Unit\ConfigFileTest" classname="Hyde.Framework.Testing.Unit.ConfigFileTest" assertions="1" time="0.002958"/>
-        <testcase name="Default output directories values match declared values" file="Config File (Hyde\Framework\Testing\Unit\ConfigFile)::Default output directories values match declared values" class="Hyde\Framework\Testing\Unit\ConfigFileTest" classname="Hyde.Framework.Testing.Unit.ConfigFileTest" assertions="1" time="0.002426"/>
-        <testcase name="Default output directories values cover all core extension classes" file="Config File (Hyde\Framework\Testing\Unit\ConfigFile)::Default output directories values cover all core extension classes" class="Hyde\Framework\Testing\Unit\ConfigFileTest" classname="Hyde.Framework.Testing.Unit.ConfigFileTest" assertions="1" time="0.002964"/>
-        <testcase name="Default features array matches default features" file="Config File (Hyde\Framework\Testing\Unit\ConfigFile)::Default features array matches default features" class="Hyde\Framework\Testing\Unit\ConfigFileTest" classname="Hyde.Framework.Testing.Unit.ConfigFileTest" assertions="1" time="0.002490"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\ConsoleServiceProviderUnitTest" file="Console Service Provider Unit (Hyde\Framework\Testing\Unit\ConsoleServiceProviderUnit)" tests="2" assertions="2" errors="0" failures="0" skipped="0" time="0.010996">
-        <testcase name="Provider registers logo" file="Console Service Provider Unit (Hyde\Framework\Testing\Unit\ConsoleServiceProviderUnit)::Provider registers logo" class="Hyde\Framework\Testing\Unit\ConsoleServiceProviderUnitTest" classname="Hyde.Framework.Testing.Unit.ConsoleServiceProviderUnitTest" assertions="1" time="0.009261"/>
-        <testcase name="Provider registers no ansi logo" file="Console Service Provider Unit (Hyde\Framework\Testing\Unit\ConsoleServiceProviderUnit)::Provider registers no ansi logo" class="Hyde\Framework\Testing\Unit\ConsoleServiceProviderUnitTest" classname="Hyde.Framework.Testing.Unit.ConsoleServiceProviderUnitTest" assertions="1" time="0.001735"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\CoreDataObjectTest" file="Core Data Object (Hyde\Framework\Testing\Unit\CoreDataObject)" tests="3" assertions="3" errors="0" failures="0" skipped="0" time="0.026844">
-        <testcase name="Core data object with hyde page" file="Core Data Object (Hyde\Framework\Testing\Unit\CoreDataObject)::Core data object with hyde page" class="Hyde\Framework\Testing\Unit\CoreDataObjectTest" classname="Hyde.Framework.Testing.Unit.CoreDataObjectTest" assertions="1" time="0.005764"/>
-        <testcase name="Core data object with dynamic page" file="Core Data Object (Hyde\Framework\Testing\Unit\CoreDataObject)::Core data object with dynamic page" class="Hyde\Framework\Testing\Unit\CoreDataObjectTest" classname="Hyde.Framework.Testing.Unit.CoreDataObjectTest" assertions="1" time="0.018061"/>
-        <testcase name="To array" file="Core Data Object (Hyde\Framework\Testing\Unit\CoreDataObject)::To array" class="Hyde\Framework\Testing\Unit\CoreDataObjectTest" classname="Hyde.Framework.Testing.Unit.CoreDataObjectTest" assertions="1" time="0.003020"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFileTest" file="Creates New Markdown Post File (Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFile)" tests="5" assertions="9" errors="0" failures="0" skipped="0" time="0.144484">
-        <testcase name="With default data" file="Creates New Markdown Post File (Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFile)::With default data" class="Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFileTest" classname="Hyde.Framework.Testing.Unit.CreatesNewMarkdownPostFileTest" assertions="5" time="0.037517"/>
-        <testcase name="With custom data" file="Creates New Markdown Post File (Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFile)::With custom data" class="Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFileTest" classname="Hyde.Framework.Testing.Unit.CreatesNewMarkdownPostFileTest" assertions="1" time="0.020881"/>
-        <testcase name="Save" file="Creates New Markdown Post File (Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFile)::Save" class="Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFileTest" classname="Hyde.Framework.Testing.Unit.CreatesNewMarkdownPostFileTest" assertions="1" time="0.034185"/>
-        <testcase name="Save with custom content" file="Creates New Markdown Post File (Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFile)::Save with custom content" class="Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFileTest" classname="Hyde.Framework.Testing.Unit.CreatesNewMarkdownPostFileTest" assertions="1" time="0.031801"/>
-        <testcase name="Custom date normalisation" file="Creates New Markdown Post File (Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFile)::Custom date normalisation" class="Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFileTest" classname="Hyde.Framework.Testing.Unit.CreatesNewMarkdownPostFileTest" assertions="1" time="0.020100"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\CustomExceptionsTest" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)" tests="17" assertions="17" errors="0" failures="0" skipped="0" time="0.051779">
-        <testcase name="File conflict exception with default message" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::File conflict exception with default message" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.020430"/>
-        <testcase name="File conflict exception with path" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::File conflict exception with path" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.002244"/>
-        <testcase name="File conflict exception with absolute path" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::File conflict exception with absolute path" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.002126"/>
-        <testcase name="File not found exception with default message" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::File not found exception with default message" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001972"/>
-        <testcase name="File not found exception with path" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::File not found exception with path" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.002105"/>
-        <testcase name="File not found exception with absolute path" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::File not found exception with absolute path" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.002108"/>
-        <testcase name="File not found exception with custom path" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::File not found exception with custom path" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001941"/>
-        <testcase name="Route not found exception with default message" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::Route not found exception with default message" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001940"/>
-        <testcase name="Route not found exception with route key" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::Route not found exception with route key" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001894"/>
-        <testcase name="Unsupported page type exception with default message" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::Unsupported page type exception with default message" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001955"/>
-        <testcase name="Unsupported page type exception with page" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::Unsupported page type exception with page" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001892"/>
-        <testcase name="Base url not set exception" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::Base url not set exception" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001839"/>
-        <testcase name="File conflict exception code" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::File conflict exception code" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001885"/>
-        <testcase name="File not found exception code" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::File not found exception code" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001862"/>
-        <testcase name="Route not found exception code" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::Route not found exception code" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001878"/>
-        <testcase name="Unsupported page type exception code" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::Unsupported page type exception code" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001871"/>
-        <testcase name="Base url not set exception code" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::Base url not set exception code" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001839"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)" tests="9" assertions="9" errors="0" failures="0" skipped="0" time="0.051905">
-        <testcase name="Class has static source directory property" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)::Class has static source directory property" class="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" classname="Hyde.Framework.Testing.Unit.DataCollectionUnitTest" assertions="1" time="0.028526"/>
-        <testcase name="Constructor creates new data collection instance" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)::Constructor creates new data collection instance" class="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" classname="Hyde.Framework.Testing.Unit.DataCollectionUnitTest" assertions="1" time="0.001834"/>
-        <testcase name="Class extends collection class" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)::Class extends collection class" class="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" classname="Hyde.Framework.Testing.Unit.DataCollectionUnitTest" assertions="1" time="0.001792"/>
-        <testcase name="Can convert collection to array" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)::Can convert collection to array" class="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" classname="Hyde.Framework.Testing.Unit.DataCollectionUnitTest" assertions="1" time="0.001815"/>
-        <testcase name="Can convert collection to json" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)::Can convert collection to json" class="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" classname="Hyde.Framework.Testing.Unit.DataCollectionUnitTest" assertions="1" time="0.001818"/>
-        <testcase name="Find markdown files calls proper glob pattern" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)::Find markdown files calls proper glob pattern" class="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" classname="Hyde.Framework.Testing.Unit.DataCollectionUnitTest" assertions="1" time="0.007352"/>
-        <testcase name="Find markdown files with no files" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)::Find markdown files with no files" class="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" classname="Hyde.Framework.Testing.Unit.DataCollectionUnitTest" assertions="1" time="0.002810"/>
-        <testcase name="Find markdown files with files" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)::Find markdown files with files" class="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" classname="Hyde.Framework.Testing.Unit.DataCollectionUnitTest" assertions="1" time="0.003159"/>
-        <testcase name="Static markdown helper returns new data collection instance" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)::Static markdown helper returns new data collection instance" class="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" classname="Hyde.Framework.Testing.Unit.DataCollectionUnitTest" assertions="1" time="0.002798"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\DateStringTest" file="Date String (Hyde\Framework\Testing\Unit\DateString)" tests="6" assertions="6" errors="0" failures="0" skipped="0" time="0.027914">
-        <testcase name="It can parse date string" file="Date String (Hyde\Framework\Testing\Unit\DateString)::It can parse date string" class="Hyde\Framework\Testing\Unit\DateStringTest" classname="Hyde.Framework.Testing.Unit.DateStringTest" assertions="1" time="0.014598"/>
-        <testcase name="It can parse date string into datetime object" file="Date String (Hyde\Framework\Testing\Unit\DateString)::It can parse date string into datetime object" class="Hyde\Framework\Testing\Unit\DateStringTest" classname="Hyde.Framework.Testing.Unit.DateStringTest" assertions="1" time="0.002639"/>
-        <testcase name="It can format date string into machine readable string" file="Date String (Hyde\Framework\Testing\Unit\DateString)::It can format date string into machine readable string" class="Hyde\Framework\Testing\Unit\DateStringTest" classname="Hyde.Framework.Testing.Unit.DateStringTest" assertions="1" time="0.002652"/>
-        <testcase name="It can format date string into human readable string" file="Date String (Hyde\Framework\Testing\Unit\DateString)::It can format date string into human readable string" class="Hyde\Framework\Testing\Unit\DateStringTest" classname="Hyde.Framework.Testing.Unit.DateStringTest" assertions="1" time="0.002644"/>
-        <testcase name="It can format date string into short human readable string" file="Date String (Hyde\Framework\Testing\Unit\DateString)::It can format date string into short human readable string" class="Hyde\Framework\Testing\Unit\DateStringTest" classname="Hyde.Framework.Testing.Unit.DateStringTest" assertions="1" time="0.002670"/>
-        <testcase name="It can format date string into short human readable string using magic method" file="Date String (Hyde\Framework\Testing\Unit\DateString)::It can format date string into short human readable string using magic method" class="Hyde\Framework\Testing\Unit\DateStringTest" classname="Hyde.Framework.Testing.Unit.DateStringTest" assertions="1" time="0.002711"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\DocumentationPageTest" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)" tests="28" assertions="42" errors="0" failures="0" skipped="0" time="0.701904">
-        <testcase name="Can generate table of contents" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can generate table of contents" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.062985"/>
-        <testcase name="Can get current page path" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get current page path" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.033503"/>
-        <testcase name="Can get current custom page path" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get current custom page path" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.028756"/>
-        <testcase name="Can get current page path when using flattened output paths" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get current page path when using flattened output paths" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="2" time="0.023642"/>
-        <testcase name="Can get current page path when not using flattened output paths" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get current page path when not using flattened output paths" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="2" time="0.023926"/>
-        <testcase name="Can get online source path" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get online source path" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.024134"/>
-        <testcase name="Can get online source path with source file location base" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get online source path with source file location base" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.022435"/>
-        <testcase name="Can get online source path with trailing slash" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get online source path with trailing slash" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="2" time="0.021828"/>
-        <testcase name="Can get documentation output path" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get documentation output path" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.019997"/>
-        <testcase name="Can get documentation output path with custom output directory" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get documentation output path with custom output directory" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.020554"/>
-        <testcase name="Can get documentation output path with trailing slashes" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get documentation output path with trailing slashes" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="5" time="0.033187"/>
-        <testcase name="Get source path returns qualified basename" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Get source path returns qualified basename" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.021983"/>
-        <testcase name="Get source path returns qualified basename for nested page" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Get source path returns qualified basename for nested page" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.021480"/>
-        <testcase name="Home method returns null when there is no index page" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Home method returns null when there is no index page" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.023934"/>
-        <testcase name="Home method returns docs index route when it exists" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Home method returns docs index route when it exists" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="2" time="0.025008"/>
-        <testcase name="Home method finds docs index for custom output directory" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Home method finds docs index for custom output directory" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="2" time="0.026515"/>
-        <testcase name="Home method finds docs index for custom nested output directory" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Home method finds docs index for custom nested output directory" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="2" time="0.026235"/>
-        <testcase name="Home route name method returns output directory slash index" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Home route name method returns output directory slash index" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.019675"/>
-        <testcase name="Home route name method returns customized output directory slash index" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Home route name method returns customized output directory slash index" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.020370"/>
-        <testcase name="Has table of contents" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Has table of contents" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="3" time="0.020149"/>
-        <testcase name="Compiled pages originating in subdirectories get output to root docs path" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Compiled pages originating in subdirectories get output to root docs path" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.021570"/>
-        <testcase name="Compiled pages originating in subdirectories get output to root docs path when using flattened output paths" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Compiled pages originating in subdirectories get output to root docs path when using flattened output paths" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.022769"/>
-        <testcase name="Compiled pages originating in subdirectories retain subdirectory structure when not using flattened output paths" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Compiled pages originating in subdirectories retain subdirectory structure when not using flattened output paths" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.022404"/>
-        <testcase name="Page has front matter" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Page has front matter" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="3" time="0.024845"/>
-        <testcase name="Page can be hidden from sidebar using front matter" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Page can be hidden from sidebar using front matter" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.022828"/>
-        <testcase name="Page is visible in sidebar without using front matter" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Page is visible in sidebar without using front matter" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.022585"/>
-        <testcase name="Page can set sidebar priority using front matter" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Page can set sidebar priority using front matter" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.022260"/>
-        <testcase name="Page can set sidebar label using front matter" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Page can set sidebar label using front matter" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.022345"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\DropdownNavItemTest" file="Dropdown Nav Item (Hyde\Framework\Testing\Unit\DropdownNavItem)" tests="7" assertions="12" errors="0" failures="0" skipped="0" time="0.063053">
-        <testcase name="Construct" file="Dropdown Nav Item (Hyde\Framework\Testing\Unit\DropdownNavItem)::Construct" class="Hyde\Framework\Testing\Unit\DropdownNavItemTest" classname="Hyde.Framework.Testing.Unit.DropdownNavItemTest" assertions="3" time="0.048522"/>
-        <testcase name="Construct with custom priority" file="Dropdown Nav Item (Hyde\Framework\Testing\Unit\DropdownNavItem)::Construct with custom priority" class="Hyde\Framework\Testing\Unit\DropdownNavItemTest" classname="Hyde.Framework.Testing.Unit.DropdownNavItemTest" assertions="1" time="0.002011"/>
-        <testcase name="Construct with null priority" file="Dropdown Nav Item (Hyde\Framework\Testing\Unit\DropdownNavItem)::Construct with null priority" class="Hyde\Framework\Testing\Unit\DropdownNavItemTest" classname="Hyde.Framework.Testing.Unit.DropdownNavItemTest" assertions="1" time="0.001942"/>
-        <testcase name="From array" file="Dropdown Nav Item (Hyde\Framework\Testing\Unit\DropdownNavItem)::From array" class="Hyde\Framework\Testing\Unit\DropdownNavItemTest" classname="Hyde.Framework.Testing.Unit.DropdownNavItemTest" assertions="2" time="0.001970"/>
-        <testcase name="With children" file="Dropdown Nav Item (Hyde\Framework\Testing\Unit\DropdownNavItem)::With children" class="Hyde\Framework\Testing\Unit\DropdownNavItemTest" classname="Hyde.Framework.Testing.Unit.DropdownNavItemTest" assertions="2" time="0.003271"/>
-        <testcase name="Get items" file="Dropdown Nav Item (Hyde\Framework\Testing\Unit\DropdownNavItem)::Get items" class="Hyde\Framework\Testing\Unit\DropdownNavItemTest" classname="Hyde.Framework.Testing.Unit.DropdownNavItemTest" assertions="2" time="0.003320"/>
-        <testcase name="Can set priority in config" file="Dropdown Nav Item (Hyde\Framework\Testing\Unit\DropdownNavItem)::Can set priority in config" class="Hyde\Framework\Testing\Unit\DropdownNavItemTest" classname="Hyde.Framework.Testing.Unit.DropdownNavItemTest" assertions="1" time="0.002017"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\EnsureCodeFollowsNamingConventionTest" file="Ensure Code Follows Naming Convention (Hyde\Framework\Testing\Unit\EnsureCodeFollowsNamingConvention)" tests="2" assertions="42" errors="0" failures="0" skipped="0" time="0.063499">
-        <testcase name="Commands classes follow naming conventions" file="Ensure Code Follows Naming Convention (Hyde\Framework\Testing\Unit\EnsureCodeFollowsNamingConvention)::Commands classes follow naming conventions" class="Hyde\Framework\Testing\Unit\EnsureCodeFollowsNamingConventionTest" classname="Hyde.Framework.Testing.Unit.EnsureCodeFollowsNamingConventionTest" assertions="35" time="0.012012"/>
-        <testcase name="Action entry points follow naming conventions" file="Ensure Code Follows Naming Convention (Hyde\Framework\Testing\Unit\EnsureCodeFollowsNamingConvention)::Action entry points follow naming conventions" class="Hyde\Framework\Testing\Unit\EnsureCodeFollowsNamingConventionTest" classname="Hyde.Framework.Testing.Unit.EnsureCodeFollowsNamingConventionTest" assertions="7" time="0.051486"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\ExampleUnitTest" file="Example Unit (Hyde\Framework\Testing\Unit\ExampleUnit)" tests="1" assertions="1" errors="0" failures="0" skipped="0" time="0.005098">
-        <testcase name="Example" file="Example Unit (Hyde\Framework\Testing\Unit\ExampleUnit)::Example" class="Hyde\Framework\Testing\Unit\ExampleUnitTest" classname="Hyde.Framework.Testing.Unit.ExampleUnitTest" assertions="1" time="0.005098"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)" tests="21" assertions="35" errors="0" failures="0" skipped="0" time="0.073928">
-        <testcase name="Base class get page classes" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Base class get page classes" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.003995"/>
-        <testcase name="Base class discovery handlers" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Base class discovery handlers" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.006316"/>
-        <testcase name="Can register new extension" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Can register new extension" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.002539"/>
-        <testcase name="Register extension after kernel is booted" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Register extension after kernel is booted" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="2" time="0.006180"/>
-        <testcase name="Register extension with invalid extension class" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Register extension with invalid extension class" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="2" time="0.002636"/>
-        <testcase name="Register extension with non class string" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Register extension with non class string" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="2" time="0.002710"/>
-        <testcase name="Register extension with already registered extension" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Register extension with already registered extension" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="2" time="0.002614"/>
-        <testcase name="Register extension method does not register already registered classes" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Register extension method does not register already registered classes" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.002604"/>
-        <testcase name="Get extension with valid extension" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Get extension with valid extension" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.002468"/>
-        <testcase name="Get extension with custom extension" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Get extension with custom extension" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.002480"/>
-        <testcase name="Get extension with invalid extension" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Get extension with invalid extension" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="2" time="0.002572"/>
-        <testcase name="Get extension generics" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Get extension generics" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="3" time="0.002639"/>
-        <testcase name="Has extension with valid extension" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Has extension with valid extension" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.002432"/>
-        <testcase name="Has extension with custom extension" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Has extension with custom extension" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.002465"/>
-        <testcase name="Has extension with invalid extension" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Has extension with invalid extension" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.002517"/>
-        <testcase name="File handler dependency injection" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::File handler dependency injection" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.003513"/>
-        <testcase name="Page handler dependency injection" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Page handler dependency injection" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="4" time="0.007700"/>
-        <testcase name="Route handler dependency injection" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Route handler dependency injection" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="4" time="0.006190"/>
-        <testcase name="Get registered page classes returns core extension classes" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Get registered page classes returns core extension classes" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.003100"/>
-        <testcase name="Get registered page classes merges all extension classes" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Get registered page classes merges all extension classes" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.003056"/>
-        <testcase name="Merged registered page classes array contents" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Merged registered page classes array contents" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="2" time="0.003205"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Facades\AssetFacadeTest" file="Asset Facade (Hyde\Framework\Testing\Unit\Facades\AssetFacade)" tests="3" assertions="3" errors="0" failures="0" skipped="0" time="0.079798">
-        <testcase name="Asset facade returns the asset service" file="Asset Facade (Hyde\Framework\Testing\Unit\Facades\AssetFacade)::Asset facade returns the asset service" class="Hyde\Framework\Testing\Unit\Facades\AssetFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.AssetFacadeTest" assertions="1" time="0.040528"/>
-        <testcase name="Facade returns same instance as bound by the container" file="Asset Facade (Hyde\Framework\Testing\Unit\Facades\AssetFacade)::Facade returns same instance as bound by the container" class="Hyde\Framework\Testing\Unit\Facades\AssetFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.AssetFacadeTest" assertions="1" time="0.019655"/>
-        <testcase name="Asset facade can call methods on the asset service" file="Asset Facade (Hyde\Framework\Testing\Unit\Facades\AssetFacade)::Asset facade can call methods on the asset service" class="Hyde\Framework\Testing\Unit\Facades\AssetFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.AssetFacadeTest" assertions="1" time="0.019615"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Facades\AuthorTest" file="Author (Hyde\Framework\Testing\Unit\Facades\Author)" tests="3" assertions="10" errors="0" failures="0" skipped="0" time="0.068674">
-        <testcase name="Create" file="Author (Hyde\Framework\Testing\Unit\Facades\Author)::Create" class="Hyde\Framework\Testing\Unit\Facades\AuthorTest" classname="Hyde.Framework.Testing.Unit.Facades.AuthorTest" assertions="4" time="0.026347"/>
-        <testcase name="Get" file="Author (Hyde\Framework\Testing\Unit\Facades\Author)::Get" class="Hyde\Framework\Testing\Unit\Facades\AuthorTest" classname="Hyde.Framework.Testing.Unit.Facades.AuthorTest" assertions="4" time="0.021389"/>
-        <testcase name="All" file="Author (Hyde\Framework\Testing\Unit\Facades\Author)::All" class="Hyde\Framework\Testing\Unit\Facades\AuthorTest" classname="Hyde.Framework.Testing.Unit.Facades.AuthorTest" assertions="2" time="0.020938"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Facades\HydeFacadesAreAliasedInAppConfigTest" file="Hyde Facades Are Aliased In App Config (Hyde\Framework\Testing\Unit\Facades\HydeFacadesAreAliasedInAppConfig)" tests="1" assertions="8" errors="0" failures="0" skipped="0" time="0.026167">
-        <testcase name="All facades are aliased in app config" file="Hyde Facades Are Aliased In App Config (Hyde\Framework\Testing\Unit\Facades\HydeFacadesAreAliasedInAppConfig)::All facades are aliased in app config" class="Hyde\Framework\Testing\Unit\Facades\HydeFacadesAreAliasedInAppConfigTest" classname="Hyde.Framework.Testing.Unit.Facades.HydeFacadesAreAliasedInAppConfigTest" assertions="8" time="0.026167"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)" tests="10" assertions="10" errors="0" failures="0" skipped="0" time="0.030820">
-        <testcase name="Route facade all method returns all routes" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Route facade all method returns all routes" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.007629"/>
-        <testcase name="Get or fail throws exception if route is not found" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Get or fail throws exception if route is not found" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.002049"/>
-        <testcase name="Get returns route from router index" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Get returns route from router index" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.001928"/>
-        <testcase name="Get returns route from router index for the right page" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Get returns route from router index for the right page" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.004240"/>
-        <testcase name="Get from returns null if route is not found" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Get from returns null if route is not found" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.002002"/>
-        <testcase name="Get supports dot notation" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Get supports dot notation" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.003407"/>
-        <testcase name="Current returns current route" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Current returns current route" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.003442"/>
-        <testcase name="Current returns null if route is not found" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Current returns null if route is not found" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.002223"/>
-        <testcase name="Exists for existing route" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Exists for existing route" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.001962"/>
-        <testcase name="Exists for non existing route" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Exists for non existing route" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.001937"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)" tests="20" assertions="39" errors="0" failures="0" skipped="0" time="0.048760">
-        <testcase name="Can construct" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Can construct" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="1" time="0.011271"/>
-        <testcase name="Get alt text" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Get alt text" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.002011"/>
-        <testcase name="Get title text" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Get title text" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.002005"/>
-        <testcase name="Get author name" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Get author name" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001954"/>
-        <testcase name="Get author url" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Get author url" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001952"/>
-        <testcase name="Get copyright text" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Get copyright text" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001993"/>
-        <testcase name="Get license name" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Get license name" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001949"/>
-        <testcase name="Get license url" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Get license url" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001941"/>
-        <testcase name="Has alt text" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Has alt text" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001961"/>
-        <testcase name="Has title text" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Has title text" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001953"/>
-        <testcase name="Has author name" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Has author name" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001941"/>
-        <testcase name="Has author url" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Has author url" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001946"/>
-        <testcase name="Has copyright text" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Has copyright text" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001941"/>
-        <testcase name="Has license name" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Has license name" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001953"/>
-        <testcase name="Has license url" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Has license url" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001962"/>
-        <testcase name="Get type" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Get type" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001927"/>
-        <testcase name="Get content length" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Get content length" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001994"/>
-        <testcase name="Featured image get content length with no source" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Featured image get content length with no source" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.002267"/>
-        <testcase name="Can construct featured image with remote source" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Can construct featured image with remote source" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001920"/>
-        <testcase name="Can construct featured image with https" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Can construct featured image with https" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001920"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\FileConflictExceptionTest" file="File Conflict Exception (Hyde\Framework\Testing\Unit\FileConflictException)" tests="6" assertions="6" errors="0" failures="0" skipped="0" time="0.028866">
-        <testcase name="It can be instantiated" file="File Conflict Exception (Hyde\Framework\Testing\Unit\FileConflictException)::It can be instantiated" class="Hyde\Framework\Testing\Unit\FileConflictExceptionTest" classname="Hyde.Framework.Testing.Unit.FileConflictExceptionTest" assertions="1" time="0.019394"/>
-        <testcase name="It can be thrown" file="File Conflict Exception (Hyde\Framework\Testing\Unit\FileConflictException)::It can be thrown" class="Hyde\Framework\Testing\Unit\FileConflictExceptionTest" classname="Hyde.Framework.Testing.Unit.FileConflictExceptionTest" assertions="1" time="0.001795"/>
-        <testcase name="Exception code" file="File Conflict Exception (Hyde\Framework\Testing\Unit\FileConflictException)::Exception code" class="Hyde\Framework\Testing\Unit\FileConflictExceptionTest" classname="Hyde.Framework.Testing.Unit.FileConflictExceptionTest" assertions="1" time="0.001734"/>
-        <testcase name="Exception message" file="File Conflict Exception (Hyde\Framework\Testing\Unit\FileConflictException)::Exception message" class="Hyde\Framework\Testing\Unit\FileConflictExceptionTest" classname="Hyde.Framework.Testing.Unit.FileConflictExceptionTest" assertions="1" time="0.001782"/>
-        <testcase name="Exception message with path" file="File Conflict Exception (Hyde\Framework\Testing\Unit\FileConflictException)::Exception message with path" class="Hyde\Framework\Testing\Unit\FileConflictExceptionTest" classname="Hyde.Framework.Testing.Unit.FileConflictExceptionTest" assertions="1" time="0.002117"/>
-        <testcase name="Exception message with absolute path" file="File Conflict Exception (Hyde\Framework\Testing\Unit\FileConflictException)::Exception message with absolute path" class="Hyde\Framework\Testing\Unit\FileConflictExceptionTest" classname="Hyde.Framework.Testing.Unit.FileConflictExceptionTest" assertions="1" time="0.002044"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)" tests="16" assertions="29" errors="0" failures="0" skipped="0" time="0.068852">
-        <testcase name="Helper returns string as is if current is not set" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper returns string as is if current is not set" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.008584"/>
-        <testcase name="Helper injects proper number of doubles slash" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper injects proper number of doubles slash" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.003784"/>
-        <testcase name="Helper injects proper number of doubles slash for deeply nested paths" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper injects proper number of doubles slash for deeply nested paths" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.003606"/>
-        <testcase name="Helper handles destination without file extension" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper handles destination without file extension" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.003584"/>
-        <testcase name="Helper handles current without file extension" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper handles current without file extension" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.003580"/>
-        <testcase name="Helper handles case without any file extensions" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper handles case without any file extensions" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.003591"/>
-        <testcase name="Helper handles case with mixed file extensions" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper handles case with mixed file extensions" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="2" time="0.004185"/>
-        <testcase name="Helper handles different file extensions" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper handles different file extensions" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="3" time="0.003821"/>
-        <testcase name="Helper returns pretty url if enabled and destination is a html file" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper returns pretty url if enabled and destination is a html file" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.003723"/>
-        <testcase name="Helper method does not require current path to be html to use pretty urls" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper method does not require current path to be html to use pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.003741"/>
-        <testcase name="Helper returns does not return pretty url if when enabled but and destination is not a html file" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper returns does not return pretty url if when enabled but and destination is not a html file" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.003753"/>
-        <testcase name="Helper rewrites index when using pretty urls" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper rewrites index when using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="3" time="0.004867"/>
-        <testcase name="Helper does not rewrite index when not using pretty urls" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper does not rewrite index when not using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="3" time="0.004871"/>
-        <testcase name="Helper rewrites documentation page index when using pretty urls" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper rewrites documentation page index when using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="4" time="0.005471"/>
-        <testcase name="Helper does not rewrite documentation page index when not using pretty urls" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper does not rewrite documentation page index when not using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="4" time="0.005447"/>
-        <testcase name="Helper does not rewrite already processed links" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper does not rewrite already processed links" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.002244"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)" tests="14" assertions="14" errors="0" failures="0" skipped="0" time="0.044082">
-        <testcase name="Helper returns string as is if pretty urls is not true" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper returns string as is if pretty urls is not true" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.017196"/>
-        <testcase name="Helper returns pretty url if pretty urls is true" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper returns pretty url if pretty urls is true" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002072"/>
-        <testcase name="Helper respects absolute urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper respects absolute urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002063"/>
-        <testcase name="Helper respects pretty absolute urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper respects pretty absolute urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002050"/>
-        <testcase name="Helper respects relative urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper respects relative urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002064"/>
-        <testcase name="Helper respects pretty relative urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper respects pretty relative urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002063"/>
-        <testcase name="Non html links are not modified" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Non html links are not modified" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002056"/>
-        <testcase name="Helper respects absolute urls with pretty urls enabled" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper respects absolute urls with pretty urls enabled" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002053"/>
-        <testcase name="Helper rewrites index when using pretty urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper rewrites index when using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002073"/>
-        <testcase name="Helper does not rewrite index when not using pretty urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper does not rewrite index when not using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002068"/>
-        <testcase name="Helper rewrites documentation page index when using pretty urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper rewrites documentation page index when using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002054"/>
-        <testcase name="Helper does not rewrite documentation page index when not using pretty urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper does not rewrite documentation page index when not using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002112"/>
-        <testcase name="Helpers rewrites arbitrary nested index pages when using pretty urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helpers rewrites arbitrary nested index pages when using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002093"/>
-        <testcase name="Helpers does not rewrite arbitrary nested index pages when not using pretty urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helpers does not rewrite arbitrary nested index pages when not using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002066"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)" tests="11" assertions="16" errors="0" failures="0" skipped="0" time="0.246208">
-        <testcase name="Has site url returns false when no site url is set" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Has site url returns false when no site url is set" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="1" time="0.033526"/>
-        <testcase name="Has site url returns true when site url is set" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Has site url returns true when site url is set" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="1" time="0.019709"/>
-        <testcase name="Qualified url returns site url when no path is given" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Qualified url returns site url when no path is given" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="1" time="0.029628"/>
-        <testcase name="Qualified url returns site url plus given path" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Qualified url returns site url plus given path" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="1" time="0.020280"/>
-        <testcase name="Qualified url returns site url plus given path with extension" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Qualified url returns site url plus given path with extension" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="1" time="0.019613"/>
-        <testcase name="Qualified url returns site url plus given path with extension and query string" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Qualified url returns site url plus given path with extension and query string" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="1" time="0.019899"/>
-        <testcase name="Qualified url trims trailing slashes" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Qualified url trims trailing slashes" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="3" time="0.021058"/>
-        <testcase name="Qualified url accepts multiple schemes" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Qualified url accepts multiple schemes" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="1" time="0.020434"/>
-        <testcase name="Qualified url throws exception when no site url is set" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Qualified url throws exception when no site url is set" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="2" time="0.021017"/>
-        <testcase name="Helper returns expected string when site url is set" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Helper returns expected string when site url is set" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="1" time="0.020258"/>
-        <testcase name="Helper returns expected string when pretty urls are enabled" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Helper returns expected string when pretty urls are enabled" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="3" time="0.020785"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\FoundationFacadesTest" file="Foundation Facades (Hyde\Framework\Testing\Unit\FoundationFacades)" tests="6" assertions="6" errors="0" failures="0" skipped="0" time="0.031796">
-        <testcase name="Files facade" file="Foundation Facades (Hyde\Framework\Testing\Unit\FoundationFacades)::Files facade" class="Hyde\Framework\Testing\Unit\FoundationFacadesTest" classname="Hyde.Framework.Testing.Unit.FoundationFacadesTest" assertions="1" time="0.021981"/>
-        <testcase name="Pages facade" file="Foundation Facades (Hyde\Framework\Testing\Unit\FoundationFacades)::Pages facade" class="Hyde\Framework\Testing\Unit\FoundationFacadesTest" classname="Hyde.Framework.Testing.Unit.FoundationFacadesTest" assertions="1" time="0.001989"/>
-        <testcase name="Routes facade" file="Foundation Facades (Hyde\Framework\Testing\Unit\FoundationFacades)::Routes facade" class="Hyde\Framework\Testing\Unit\FoundationFacadesTest" classname="Hyde.Framework.Testing.Unit.FoundationFacadesTest" assertions="1" time="0.001916"/>
-        <testcase name="Files facade uses kernel instance" file="Foundation Facades (Hyde\Framework\Testing\Unit\FoundationFacades)::Files facade uses kernel instance" class="Hyde\Framework\Testing\Unit\FoundationFacadesTest" classname="Hyde.Framework.Testing.Unit.FoundationFacadesTest" assertions="1" time="0.002015"/>
-        <testcase name="Pages facade uses kernel instance" file="Foundation Facades (Hyde\Framework\Testing\Unit\FoundationFacades)::Pages facade uses kernel instance" class="Hyde\Framework\Testing\Unit\FoundationFacadesTest" classname="Hyde.Framework.Testing.Unit.FoundationFacadesTest" assertions="1" time="0.001968"/>
-        <testcase name="Routes facade uses kernel instance" file="Foundation Facades (Hyde\Framework\Testing\Unit\FoundationFacades)::Routes facade uses kernel instance" class="Hyde\Framework\Testing\Unit\FoundationFacadesTest" classname="Hyde.Framework.Testing.Unit.FoundationFacadesTest" assertions="1" time="0.001928"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\FrontMatterModelTest" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)" tests="17" assertions="18" errors="0" failures="0" skipped="0" time="0.038744">
-        <testcase name="Constructor creates new front matter model" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Constructor creates new front matter model" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.008250"/>
-        <testcase name="Constructor arguments are optional" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Constructor arguments are optional" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001854"/>
-        <testcase name="Constructor arguments are assigned" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Constructor arguments are assigned" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001964"/>
-        <testcase name="Static from array method creates new front matter model" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Static from array method creates new front matter model" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="2" time="0.001998"/>
-        <testcase name="To string magic method converts model array into yaml front matter" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::To string magic method converts model array into yaml front matter" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001906"/>
-        <testcase name="Magic get method returns front matter property" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Magic get method returns front matter property" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001846"/>
-        <testcase name="Magic get method returns null if property does not exist" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Magic get method returns null if property does not exist" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001882"/>
-        <testcase name="Get method returns data when no argument is specified" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Get method returns data when no argument is specified" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001846"/>
-        <testcase name="Get method returns data when no argument is specified with data" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Get method returns data when no argument is specified with data" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.002026"/>
-        <testcase name="Get method returns null if specified front matter key does not exist" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Get method returns null if specified front matter key does not exist" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.002027"/>
-        <testcase name="Get method returns specified default value if property does not exist" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Get method returns specified default value if property does not exist" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.002064"/>
-        <testcase name="Get method returns specified front matter value if key is specified" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Get method returns specified front matter value if key is specified" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001860"/>
-        <testcase name="Set method sets front matter property" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Set method sets front matter property" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001785"/>
-        <testcase name="Set method returns self" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Set method returns self" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.002006"/>
-        <testcase name="Has method returns true if property exists" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Has method returns true if property exists" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001809"/>
-        <testcase name="Has method returns false if property does not exist" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Has method returns false if property does not exist" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001783"/>
-        <testcase name="To array returns front matter array" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::To array returns front matter array" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001837"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\GenerateBuildManifestTest" file="Generate Build Manifest (Hyde\Framework\Testing\Unit\GenerateBuildManifest)" tests="1" assertions="15" errors="0" failures="0" skipped="0" time="0.022448">
-        <testcase name="Action generates build manifest" file="Generate Build Manifest (Hyde\Framework\Testing\Unit\GenerateBuildManifest)::Action generates build manifest" class="Hyde\Framework\Testing\Unit\GenerateBuildManifestTest" classname="Hyde.Framework.Testing.Unit.GenerateBuildManifestTest" assertions="15" time="0.022448"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\GetLatestMarkdownPostsTest" file="Get Latest Markdown Posts (Hyde\Framework\Testing\Unit\GetLatestMarkdownPosts)" tests="1" assertions="5" errors="0" failures="0" skipped="0" time="0.031540">
-        <testcase name="Markdown page get latest helper returns sorted markdown page collection" file="Get Latest Markdown Posts (Hyde\Framework\Testing\Unit\GetLatestMarkdownPosts)::Markdown page get latest helper returns sorted markdown page collection" class="Hyde\Framework\Testing\Unit\GetLatestMarkdownPostsTest" classname="Hyde.Framework.Testing.Unit.GetLatestMarkdownPostsTest" assertions="5" time="0.031540"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\HasTableOfContentsTest" file="Has Table Of Contents (Hyde\Framework\Testing\Unit\HasTableOfContents)" tests="1" assertions="1" errors="0" failures="0" skipped="0" time="0.025113">
-        <testcase name="Constructor creates table of contents string" file="Has Table Of Contents (Hyde\Framework\Testing\Unit\HasTableOfContents)::Constructor creates table of contents string" class="Hyde\Framework\Testing\Unit\HasTableOfContentsTest" classname="Hyde.Framework.Testing.Unit.HasTableOfContentsTest" assertions="1" time="0.025113"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)" tests="48" assertions="110" errors="0" failures="0" skipped="0" time="0.038314">
-        <testcase name="Html helper" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Html helper" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.004496"/>
-        <testcase name="Assert see" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Assert see" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.001387"/>
-        <testcase name="Assert see escaped" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Assert see escaped" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="4" time="0.000614"/>
-        <testcase name="Tap element" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Tap element" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.001249"/>
-        <testcase name="Tap element using id" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Tap element using id" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.000485"/>
-        <testcase name="Get element using query" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Get element using query" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.001194"/>
-        <testcase name="Get root element" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Get root element" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.000455"/>
-        <testcase name="Get element by id" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Get element by id" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="3" time="0.000526"/>
-        <testcase name="Element using id" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element using id" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="3" time="0.000613"/>
-        <testcase name="Element using selector" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element using selector" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="3" time="0.000628"/>
-        <testcase name="Element using unknown syntax" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element using unknown syntax" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.000499"/>
-        <testcase name="Get elements by class" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Get elements by class" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.000499"/>
-        <testcase name="Get elements by class types" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Get elements by class types" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="3" time="0.000594"/>
-        <testcase name="Get elements by class with child nodes" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Get elements by class with child nodes" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="3" time="0.000689"/>
-        <testcase name="Fluent class assertions" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Fluent class assertions" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="7" time="0.000773"/>
-        <testcase name="Query" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Query" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="3" time="0.001975"/>
-        <testcase name="Query with edge cases" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Query with edge cases" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="8" time="0.001100"/>
-        <testcase name="Dump helper" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Dump helper" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="5" time="0.002621"/>
-        <testcase name="Get structure" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Get structure" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000541"/>
-        <testcase name="Get text representation" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Get text representation" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000572"/>
-        <testcase name="Get text representation with multiple lines" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Get text representation with multiple lines" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000660"/>
-        <testcase name="Complex text representation parsing" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Complex text representation parsing" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.001386"/>
-        <testcase name="Assert structure looks like" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Assert structure looks like" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000551"/>
-        <testcase name="Assert looks like" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Assert looks like" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000527"/>
-        <testcase name="Element instance" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element instance" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000445"/>
-        <testcase name="Element tag" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element tag" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000420"/>
-        <testcase name="Element text" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element text" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000410"/>
-        <testcase name="Element html" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element html" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000404"/>
-        <testcase name="Element id" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element id" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.000468"/>
-        <testcase name="Element classes" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element classes" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.000548"/>
-        <testcase name="Element attributes" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element attributes" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.000559"/>
-        <testcase name="Element nodes" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element nodes" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000442"/>
-        <testcase name="Element nodes with child" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element nodes with child" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="3" time="0.000517"/>
-        <testcase name="Element nodes with children" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element nodes with children" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="7" time="0.000680"/>
-        <testcase name="Element to array" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element to array" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000507"/>
-        <testcase name="To array with children" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::To array with children" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.001380"/>
-        <testcase name="To array with attributes" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::To array with attributes" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000597"/>
-        <testcase name="Element assert has id" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element assert has id" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000436"/>
-        <testcase name="Element assert does not have id" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element assert does not have id" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000457"/>
-        <testcase name="Element assert has class" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element assert has class" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000641"/>
-        <testcase name="Element assert does not have class" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element assert does not have class" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000508"/>
-        <testcase name="Element assert has attribute" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element assert has attribute" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000459"/>
+        <testcase name="Run post build tasks" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run post build tasks" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003139"/>
+        <testcase name="Run pre build tasks with tasks" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run pre build tasks with tasks" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003277"/>
+        <testcase name="Run post build tasks with tasks" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run post build tasks with tasks" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003287"/>
+        <testcase name="Run pre build tasks calls handle methods" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run pre build tasks calls handle methods" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.007351"/>
+        <testcase name="Run post build tasks calls handle methods" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run post build tasks calls handle methods" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.007065"/>
+        <testcase name="Run pre build tasks calls run methods" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run pre build tasks calls run methods" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.011892"/>
+        <testcase name="Run post build tasks calls run methods" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run post build tasks calls run methods" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003566"/>
+        <testcase name="Run pre build tasks calls run methods with null when service has no output" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run pre build tasks calls run methods with null when service has no output" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003416"/>
+        <testcase name="Run post build tasks calls run methods with null when service has no output" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run post build tasks calls run methods with null when service has no output" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003366"/>
+        <testcase name="Run pre build tasks calls run methods with output when service has output" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run pre build tasks calls run methods with output when service has output" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003464"/>
+        <testcase name="Run post build tasks calls run methods with output when service has output" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Run post build tasks calls run methods with output when service has output" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.003416"/>
+        <testcase name="Service searches for tasks in app directory" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Service searches for tasks in app directory" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.005582"/>
+        <testcase name="Service finds tasks in app directory" file="Build Task Service Unit (Hyde\Framework\Testing\Unit\BuildTaskServiceUnit)::Service finds tasks in app directory" class="Hyde\Framework\Testing\Unit\BuildTaskServiceUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskServiceUnitTest" assertions="1" time="0.006761"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\BuildTaskSkippedExceptionTest" file="Build Task Skipped Exception (Hyde\Framework\Testing\Unit\BuildTaskSkippedException)" tests="5" assertions="7" errors="0" failures="0" skipped="0" time="0.045483">
+        <testcase name="It can be instantiated" file="Build Task Skipped Exception (Hyde\Framework\Testing\Unit\BuildTaskSkippedException)::It can be instantiated" class="Hyde\Framework\Testing\Unit\BuildTaskSkippedExceptionTest" classname="Hyde.Framework.Testing.Unit.BuildTaskSkippedExceptionTest" assertions="1" time="0.038070"/>
+        <testcase name="It throws an exception with default message" file="Build Task Skipped Exception (Hyde\Framework\Testing\Unit\BuildTaskSkippedException)::It throws an exception with default message" class="Hyde\Framework\Testing\Unit\BuildTaskSkippedExceptionTest" classname="Hyde.Framework.Testing.Unit.BuildTaskSkippedExceptionTest" assertions="2" time="0.002049"/>
+        <testcase name="It throws an exception with custom message" file="Build Task Skipped Exception (Hyde\Framework\Testing\Unit\BuildTaskSkippedException)::It throws an exception with custom message" class="Hyde\Framework\Testing\Unit\BuildTaskSkippedExceptionTest" classname="Hyde.Framework.Testing.Unit.BuildTaskSkippedExceptionTest" assertions="2" time="0.001915"/>
+        <testcase name="Default exception code" file="Build Task Skipped Exception (Hyde\Framework\Testing\Unit\BuildTaskSkippedException)::Default exception code" class="Hyde\Framework\Testing\Unit\BuildTaskSkippedExceptionTest" classname="Hyde.Framework.Testing.Unit.BuildTaskSkippedExceptionTest" assertions="1" time="0.001726"/>
+        <testcase name="Custom exception code" file="Build Task Skipped Exception (Hyde\Framework\Testing\Unit\BuildTaskSkippedException)::Custom exception code" class="Hyde\Framework\Testing\Unit\BuildTaskSkippedExceptionTest" classname="Hyde.Framework.Testing.Unit.BuildTaskSkippedExceptionTest" assertions="1" time="0.001724"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)" tests="21" assertions="33" errors="0" failures="0" skipped="0" time="0.047080">
+        <testcase name="Can create build task" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Can create build task" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.007418"/>
+        <testcase name="It tracks execution time" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::It tracks execution time" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="2" time="0.002226"/>
+        <testcase name="It can run without output" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::It can run without output" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.001860"/>
+        <testcase name="It can run with output" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::It can run with output" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.002239"/>
+        <testcase name="It prints start message" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::It prints start message" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.001931"/>
+        <testcase name="It prints finish message" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::It prints finish message" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="2" time="0.002014"/>
+        <testcase name="Run method handles task" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Run method handles task" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="2" time="0.001957"/>
+        <testcase name="Run method returns exit code" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Run method returns exit code" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="2" time="0.002072"/>
+        <testcase name="Can get message" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Can get message" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.001777"/>
+        <testcase name="Can get custom message" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Can get custom message" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.001833"/>
+        <testcase name="Can print start message" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Can print start message" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.001818"/>
+        <testcase name="Can print custom start message" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Can print custom start message" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.001803"/>
+        <testcase name="Can print finish message" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Can print finish message" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="2" time="0.001960"/>
+        <testcase name="Finish message printing formats execution time" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Finish message printing formats execution time" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.001935"/>
+        <testcase name="Can write to output" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Can write to output" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.001806"/>
+        <testcase name="Created site file" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Created site file" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.002000"/>
+        <testcase name="Created site file with absolute path" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Created site file with absolute path" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="1" time="0.001993"/>
+        <testcase name="With execution time" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::With execution time" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="2" time="0.001945"/>
+        <testcase name="Task skipping" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Task skipping" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="3" time="0.002049"/>
+        <testcase name="Task skipping with custom message" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Task skipping with custom message" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="3" time="0.002394"/>
+        <testcase name="Exception handling" file="Build Task Unit (Hyde\Framework\Testing\Unit\BuildTaskUnit)::Exception handling" class="Hyde\Framework\Testing\Unit\BuildTaskUnitTest" classname="Hyde.Framework.Testing.Unit.BuildTaskUnitTest" assertions="3" time="0.002049"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\BuildWarningsTest" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)" tests="18" assertions="21" errors="0" failures="0" skipped="0" time="0.065993">
+        <testcase name="Get instance" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Get instance" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.024040"/>
+        <testcase name="Get instance returns singleton" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Get instance returns singleton" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002111"/>
+        <testcase name="Has warnings" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Has warnings" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002004"/>
+        <testcase name="Has warning with warnings" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Has warning with warnings" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002028"/>
+        <testcase name="Get warnings" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Get warnings" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002047"/>
+        <testcase name="Get warnings with warnings" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Get warnings with warnings" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002288"/>
+        <testcase name="Report" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Report" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="2" time="0.002287"/>
+        <testcase name="Report with build warning object" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Report with build warning object" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="2" time="0.002200"/>
+        <testcase name="Reports warnings defaults to true" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Reports warnings defaults to true" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002206"/>
+        <testcase name="Reports warnings returns true when true" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Reports warnings returns true when true" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002094"/>
+        <testcase name="Reports warnings returns false when false" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Reports warnings returns false when false" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002136"/>
+        <testcase name="Reports warnings as exceptions defaults to false" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Reports warnings as exceptions defaults to false" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002158"/>
+        <testcase name="Reports warnings as exceptions returns true when true" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Reports warnings as exceptions returns true when true" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002126"/>
+        <testcase name="Reports warnings as exceptions returns false when false" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Reports warnings as exceptions returns false when false" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.002131"/>
+        <testcase name="Write warnings to output" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Write warnings to output" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.005517"/>
+        <testcase name="Write warnings to output with verbose output" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Write warnings to output with verbose output" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="2" time="0.002579"/>
+        <testcase name="Write warnings to output with converting build warnings to exceptions" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Write warnings to output with converting build warnings to exceptions" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.004113"/>
+        <testcase name="Can construct build warning" file="Build Warnings (Hyde\Framework\Testing\Unit\BuildWarnings)::Can construct build warning" class="Hyde\Framework\Testing\Unit\BuildWarningsTest" classname="Hyde.Framework.Testing.Unit.BuildWarningsTest" assertions="1" time="0.001929"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\ConfigFileTest" file="Config File (Hyde\Framework\Testing\Unit\ConfigFile)" tests="8" assertions="8" errors="0" failures="0" skipped="0" time="0.038104">
+        <testcase name="Default output directory value matches declared value" file="Config File (Hyde\Framework\Testing\Unit\ConfigFile)::Default output directory value matches declared value" class="Hyde\Framework\Testing\Unit\ConfigFileTest" classname="Hyde.Framework.Testing.Unit.ConfigFileTest" assertions="1" time="0.019920"/>
+        <testcase name="Default media directory value matches declared value" file="Config File (Hyde\Framework\Testing\Unit\ConfigFile)::Default media directory value matches declared value" class="Hyde\Framework\Testing\Unit\ConfigFileTest" classname="Hyde.Framework.Testing.Unit.ConfigFileTest" assertions="1" time="0.002405"/>
+        <testcase name="Default source root value matches declared value" file="Config File (Hyde\Framework\Testing\Unit\ConfigFile)::Default source root value matches declared value" class="Hyde\Framework\Testing\Unit\ConfigFileTest" classname="Hyde.Framework.Testing.Unit.ConfigFileTest" assertions="1" time="0.002407"/>
+        <testcase name="Default source directories values match declared values" file="Config File (Hyde\Framework\Testing\Unit\ConfigFile)::Default source directories values match declared values" class="Hyde\Framework\Testing\Unit\ConfigFileTest" classname="Hyde.Framework.Testing.Unit.ConfigFileTest" assertions="1" time="0.002513"/>
+        <testcase name="Default source directories values cover all core extension classes" file="Config File (Hyde\Framework\Testing\Unit\ConfigFile)::Default source directories values cover all core extension classes" class="Hyde\Framework\Testing\Unit\ConfigFileTest" classname="Hyde.Framework.Testing.Unit.ConfigFileTest" assertions="1" time="0.002985"/>
+        <testcase name="Default output directories values match declared values" file="Config File (Hyde\Framework\Testing\Unit\ConfigFile)::Default output directories values match declared values" class="Hyde\Framework\Testing\Unit\ConfigFileTest" classname="Hyde.Framework.Testing.Unit.ConfigFileTest" assertions="1" time="0.002493"/>
+        <testcase name="Default output directories values cover all core extension classes" file="Config File (Hyde\Framework\Testing\Unit\ConfigFile)::Default output directories values cover all core extension classes" class="Hyde\Framework\Testing\Unit\ConfigFileTest" classname="Hyde.Framework.Testing.Unit.ConfigFileTest" assertions="1" time="0.002943"/>
+        <testcase name="Default features array matches default features" file="Config File (Hyde\Framework\Testing\Unit\ConfigFile)::Default features array matches default features" class="Hyde\Framework\Testing\Unit\ConfigFileTest" classname="Hyde.Framework.Testing.Unit.ConfigFileTest" assertions="1" time="0.002437"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\ConsoleServiceProviderUnitTest" file="Console Service Provider Unit (Hyde\Framework\Testing\Unit\ConsoleServiceProviderUnit)" tests="2" assertions="2" errors="0" failures="0" skipped="0" time="0.011020">
+        <testcase name="Provider registers logo" file="Console Service Provider Unit (Hyde\Framework\Testing\Unit\ConsoleServiceProviderUnit)::Provider registers logo" class="Hyde\Framework\Testing\Unit\ConsoleServiceProviderUnitTest" classname="Hyde.Framework.Testing.Unit.ConsoleServiceProviderUnitTest" assertions="1" time="0.009267"/>
+        <testcase name="Provider registers no ansi logo" file="Console Service Provider Unit (Hyde\Framework\Testing\Unit\ConsoleServiceProviderUnit)::Provider registers no ansi logo" class="Hyde\Framework\Testing\Unit\ConsoleServiceProviderUnitTest" classname="Hyde.Framework.Testing.Unit.ConsoleServiceProviderUnitTest" assertions="1" time="0.001753"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\CoreDataObjectTest" file="Core Data Object (Hyde\Framework\Testing\Unit\CoreDataObject)" tests="3" assertions="3" errors="0" failures="0" skipped="0" time="0.026788">
+        <testcase name="Core data object with hyde page" file="Core Data Object (Hyde\Framework\Testing\Unit\CoreDataObject)::Core data object with hyde page" class="Hyde\Framework\Testing\Unit\CoreDataObjectTest" classname="Hyde.Framework.Testing.Unit.CoreDataObjectTest" assertions="1" time="0.005805"/>
+        <testcase name="Core data object with dynamic page" file="Core Data Object (Hyde\Framework\Testing\Unit\CoreDataObject)::Core data object with dynamic page" class="Hyde\Framework\Testing\Unit\CoreDataObjectTest" classname="Hyde.Framework.Testing.Unit.CoreDataObjectTest" assertions="1" time="0.017934"/>
+        <testcase name="To array" file="Core Data Object (Hyde\Framework\Testing\Unit\CoreDataObject)::To array" class="Hyde\Framework\Testing\Unit\CoreDataObjectTest" classname="Hyde.Framework.Testing.Unit.CoreDataObjectTest" assertions="1" time="0.003049"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFileTest" file="Creates New Markdown Post File (Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFile)" tests="5" assertions="9" errors="0" failures="0" skipped="0" time="0.144018">
+        <testcase name="With default data" file="Creates New Markdown Post File (Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFile)::With default data" class="Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFileTest" classname="Hyde.Framework.Testing.Unit.CreatesNewMarkdownPostFileTest" assertions="5" time="0.037515"/>
+        <testcase name="With custom data" file="Creates New Markdown Post File (Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFile)::With custom data" class="Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFileTest" classname="Hyde.Framework.Testing.Unit.CreatesNewMarkdownPostFileTest" assertions="1" time="0.019951"/>
+        <testcase name="Save" file="Creates New Markdown Post File (Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFile)::Save" class="Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFileTest" classname="Hyde.Framework.Testing.Unit.CreatesNewMarkdownPostFileTest" assertions="1" time="0.033662"/>
+        <testcase name="Save with custom content" file="Creates New Markdown Post File (Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFile)::Save with custom content" class="Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFileTest" classname="Hyde.Framework.Testing.Unit.CreatesNewMarkdownPostFileTest" assertions="1" time="0.032356"/>
+        <testcase name="Custom date normalisation" file="Creates New Markdown Post File (Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFile)::Custom date normalisation" class="Hyde\Framework\Testing\Unit\CreatesNewMarkdownPostFileTest" classname="Hyde.Framework.Testing.Unit.CreatesNewMarkdownPostFileTest" assertions="1" time="0.020534"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\CustomExceptionsTest" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)" tests="17" assertions="17" errors="0" failures="0" skipped="0" time="0.052279">
+        <testcase name="File conflict exception with default message" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::File conflict exception with default message" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.020464"/>
+        <testcase name="File conflict exception with path" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::File conflict exception with path" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.002185"/>
+        <testcase name="File conflict exception with absolute path" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::File conflict exception with absolute path" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.002165"/>
+        <testcase name="File not found exception with default message" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::File not found exception with default message" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001975"/>
+        <testcase name="File not found exception with path" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::File not found exception with path" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.002096"/>
+        <testcase name="File not found exception with absolute path" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::File not found exception with absolute path" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.002137"/>
+        <testcase name="File not found exception with custom path" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::File not found exception with custom path" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001980"/>
+        <testcase name="Route not found exception with default message" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::Route not found exception with default message" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001991"/>
+        <testcase name="Route not found exception with route key" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::Route not found exception with route key" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001958"/>
+        <testcase name="Unsupported page type exception with default message" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::Unsupported page type exception with default message" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.002001"/>
+        <testcase name="Unsupported page type exception with page" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::Unsupported page type exception with page" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001953"/>
+        <testcase name="Base url not set exception" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::Base url not set exception" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001870"/>
+        <testcase name="File conflict exception code" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::File conflict exception code" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001947"/>
+        <testcase name="File not found exception code" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::File not found exception code" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001897"/>
+        <testcase name="Route not found exception code" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::Route not found exception code" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001902"/>
+        <testcase name="Unsupported page type exception code" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::Unsupported page type exception code" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001906"/>
+        <testcase name="Base url not set exception code" file="Custom Exceptions (Hyde\Framework\Testing\Unit\CustomExceptions)::Base url not set exception code" class="Hyde\Framework\Testing\Unit\CustomExceptionsTest" classname="Hyde.Framework.Testing.Unit.CustomExceptionsTest" assertions="1" time="0.001849"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)" tests="9" assertions="9" errors="0" failures="0" skipped="0" time="0.051980">
+        <testcase name="Class has static source directory property" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)::Class has static source directory property" class="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" classname="Hyde.Framework.Testing.Unit.DataCollectionUnitTest" assertions="1" time="0.028597"/>
+        <testcase name="Constructor creates new data collection instance" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)::Constructor creates new data collection instance" class="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" classname="Hyde.Framework.Testing.Unit.DataCollectionUnitTest" assertions="1" time="0.001858"/>
+        <testcase name="Class extends collection class" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)::Class extends collection class" class="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" classname="Hyde.Framework.Testing.Unit.DataCollectionUnitTest" assertions="1" time="0.001784"/>
+        <testcase name="Can convert collection to array" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)::Can convert collection to array" class="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" classname="Hyde.Framework.Testing.Unit.DataCollectionUnitTest" assertions="1" time="0.001854"/>
+        <testcase name="Can convert collection to json" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)::Can convert collection to json" class="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" classname="Hyde.Framework.Testing.Unit.DataCollectionUnitTest" assertions="1" time="0.001783"/>
+        <testcase name="Find markdown files calls proper glob pattern" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)::Find markdown files calls proper glob pattern" class="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" classname="Hyde.Framework.Testing.Unit.DataCollectionUnitTest" assertions="1" time="0.007309"/>
+        <testcase name="Find markdown files with no files" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)::Find markdown files with no files" class="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" classname="Hyde.Framework.Testing.Unit.DataCollectionUnitTest" assertions="1" time="0.002788"/>
+        <testcase name="Find markdown files with files" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)::Find markdown files with files" class="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" classname="Hyde.Framework.Testing.Unit.DataCollectionUnitTest" assertions="1" time="0.003199"/>
+        <testcase name="Static markdown helper returns new data collection instance" file="Data Collection Unit (Hyde\Framework\Testing\Unit\DataCollectionUnit)::Static markdown helper returns new data collection instance" class="Hyde\Framework\Testing\Unit\DataCollectionUnitTest" classname="Hyde.Framework.Testing.Unit.DataCollectionUnitTest" assertions="1" time="0.002808"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\DateStringTest" file="Date String (Hyde\Framework\Testing\Unit\DateString)" tests="6" assertions="6" errors="0" failures="0" skipped="0" time="0.019428">
+        <testcase name="It can parse date string" file="Date String (Hyde\Framework\Testing\Unit\DateString)::It can parse date string" class="Hyde\Framework\Testing\Unit\DateStringTest" classname="Hyde.Framework.Testing.Unit.DateStringTest" assertions="1" time="0.010531"/>
+        <testcase name="It can parse date string into datetime object" file="Date String (Hyde\Framework\Testing\Unit\DateString)::It can parse date string into datetime object" class="Hyde\Framework\Testing\Unit\DateStringTest" classname="Hyde.Framework.Testing.Unit.DateStringTest" assertions="1" time="0.001774"/>
+        <testcase name="It can format date string into machine readable string" file="Date String (Hyde\Framework\Testing\Unit\DateString)::It can format date string into machine readable string" class="Hyde\Framework\Testing\Unit\DateStringTest" classname="Hyde.Framework.Testing.Unit.DateStringTest" assertions="1" time="0.001779"/>
+        <testcase name="It can format date string into human readable string" file="Date String (Hyde\Framework\Testing\Unit\DateString)::It can format date string into human readable string" class="Hyde\Framework\Testing\Unit\DateStringTest" classname="Hyde.Framework.Testing.Unit.DateStringTest" assertions="1" time="0.001783"/>
+        <testcase name="It can format date string into short human readable string" file="Date String (Hyde\Framework\Testing\Unit\DateString)::It can format date string into short human readable string" class="Hyde\Framework\Testing\Unit\DateStringTest" classname="Hyde.Framework.Testing.Unit.DateStringTest" assertions="1" time="0.001747"/>
+        <testcase name="It can format date string into short human readable string using magic method" file="Date String (Hyde\Framework\Testing\Unit\DateString)::It can format date string into short human readable string using magic method" class="Hyde\Framework\Testing\Unit\DateStringTest" classname="Hyde.Framework.Testing.Unit.DateStringTest" assertions="1" time="0.001815"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\DocumentationPageTest" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)" tests="28" assertions="42" errors="0" failures="0" skipped="0" time="0.651458">
+        <testcase name="Can generate table of contents" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can generate table of contents" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.042322"/>
+        <testcase name="Can get current page path" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get current page path" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.021014"/>
+        <testcase name="Can get current custom page path" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get current custom page path" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.021163"/>
+        <testcase name="Can get current page path when using flattened output paths" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get current page path when using flattened output paths" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="2" time="0.022075"/>
+        <testcase name="Can get current page path when not using flattened output paths" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get current page path when not using flattened output paths" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="2" time="0.022596"/>
+        <testcase name="Can get online source path" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get online source path" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.021356"/>
+        <testcase name="Can get online source path with source file location base" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get online source path with source file location base" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.021052"/>
+        <testcase name="Can get online source path with trailing slash" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get online source path with trailing slash" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="2" time="0.021155"/>
+        <testcase name="Can get documentation output path" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get documentation output path" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.019614"/>
+        <testcase name="Can get documentation output path with custom output directory" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get documentation output path with custom output directory" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.020496"/>
+        <testcase name="Can get documentation output path with trailing slashes" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Can get documentation output path with trailing slashes" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="5" time="0.033776"/>
+        <testcase name="Get source path returns qualified basename" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Get source path returns qualified basename" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.022068"/>
+        <testcase name="Get source path returns qualified basename for nested page" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Get source path returns qualified basename for nested page" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.021354"/>
+        <testcase name="Home method returns null when there is no index page" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Home method returns null when there is no index page" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.024815"/>
+        <testcase name="Home method returns docs index route when it exists" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Home method returns docs index route when it exists" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="2" time="0.025982"/>
+        <testcase name="Home method finds docs index for custom output directory" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Home method finds docs index for custom output directory" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="2" time="0.026375"/>
+        <testcase name="Home method finds docs index for custom nested output directory" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Home method finds docs index for custom nested output directory" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="2" time="0.026843"/>
+        <testcase name="Home route name method returns output directory slash index" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Home route name method returns output directory slash index" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.020233"/>
+        <testcase name="Home route name method returns customized output directory slash index" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Home route name method returns customized output directory slash index" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.020932"/>
+        <testcase name="Has table of contents" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Has table of contents" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="3" time="0.020212"/>
+        <testcase name="Compiled pages originating in subdirectories get output to root docs path" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Compiled pages originating in subdirectories get output to root docs path" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.021728"/>
+        <testcase name="Compiled pages originating in subdirectories get output to root docs path when using flattened output paths" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Compiled pages originating in subdirectories get output to root docs path when using flattened output paths" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.021408"/>
+        <testcase name="Compiled pages originating in subdirectories retain subdirectory structure when not using flattened output paths" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Compiled pages originating in subdirectories retain subdirectory structure when not using flattened output paths" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.021368"/>
+        <testcase name="Page has front matter" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Page has front matter" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="3" time="0.023245"/>
+        <testcase name="Page can be hidden from sidebar using front matter" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Page can be hidden from sidebar using front matter" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.022240"/>
+        <testcase name="Page is visible in sidebar without using front matter" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Page is visible in sidebar without using front matter" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.021918"/>
+        <testcase name="Page can set sidebar priority using front matter" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Page can set sidebar priority using front matter" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.022190"/>
+        <testcase name="Page can set sidebar label using front matter" file="Documentation Page (Hyde\Framework\Testing\Unit\DocumentationPage)::Page can set sidebar label using front matter" class="Hyde\Framework\Testing\Unit\DocumentationPageTest" classname="Hyde.Framework.Testing.Unit.DocumentationPageTest" assertions="1" time="0.021928"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\DropdownNavItemTest" file="Dropdown Nav Item (Hyde\Framework\Testing\Unit\DropdownNavItem)" tests="7" assertions="12" errors="0" failures="0" skipped="0" time="0.058828">
+        <testcase name="Construct" file="Dropdown Nav Item (Hyde\Framework\Testing\Unit\DropdownNavItem)::Construct" class="Hyde\Framework\Testing\Unit\DropdownNavItemTest" classname="Hyde.Framework.Testing.Unit.DropdownNavItemTest" assertions="3" time="0.044505"/>
+        <testcase name="Construct with custom priority" file="Dropdown Nav Item (Hyde\Framework\Testing\Unit\DropdownNavItem)::Construct with custom priority" class="Hyde\Framework\Testing\Unit\DropdownNavItemTest" classname="Hyde.Framework.Testing.Unit.DropdownNavItemTest" assertions="1" time="0.001913"/>
+        <testcase name="Construct with null priority" file="Dropdown Nav Item (Hyde\Framework\Testing\Unit\DropdownNavItem)::Construct with null priority" class="Hyde\Framework\Testing\Unit\DropdownNavItemTest" classname="Hyde.Framework.Testing.Unit.DropdownNavItemTest" assertions="1" time="0.001948"/>
+        <testcase name="From array" file="Dropdown Nav Item (Hyde\Framework\Testing\Unit\DropdownNavItem)::From array" class="Hyde\Framework\Testing\Unit\DropdownNavItemTest" classname="Hyde.Framework.Testing.Unit.DropdownNavItemTest" assertions="2" time="0.002005"/>
+        <testcase name="With children" file="Dropdown Nav Item (Hyde\Framework\Testing\Unit\DropdownNavItem)::With children" class="Hyde\Framework\Testing\Unit\DropdownNavItemTest" classname="Hyde.Framework.Testing.Unit.DropdownNavItemTest" assertions="2" time="0.003200"/>
+        <testcase name="Get items" file="Dropdown Nav Item (Hyde\Framework\Testing\Unit\DropdownNavItem)::Get items" class="Hyde\Framework\Testing\Unit\DropdownNavItemTest" classname="Hyde.Framework.Testing.Unit.DropdownNavItemTest" assertions="2" time="0.003277"/>
+        <testcase name="Can set priority in config" file="Dropdown Nav Item (Hyde\Framework\Testing\Unit\DropdownNavItem)::Can set priority in config" class="Hyde\Framework\Testing\Unit\DropdownNavItemTest" classname="Hyde.Framework.Testing.Unit.DropdownNavItemTest" assertions="1" time="0.001981"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\EnsureCodeFollowsNamingConventionTest" file="Ensure Code Follows Naming Convention (Hyde\Framework\Testing\Unit\EnsureCodeFollowsNamingConvention)" tests="2" assertions="42" errors="0" failures="0" skipped="0" time="0.061250">
+        <testcase name="Commands classes follow naming conventions" file="Ensure Code Follows Naming Convention (Hyde\Framework\Testing\Unit\EnsureCodeFollowsNamingConvention)::Commands classes follow naming conventions" class="Hyde\Framework\Testing\Unit\EnsureCodeFollowsNamingConventionTest" classname="Hyde.Framework.Testing.Unit.EnsureCodeFollowsNamingConventionTest" assertions="35" time="0.011815"/>
+        <testcase name="Action entry points follow naming conventions" file="Ensure Code Follows Naming Convention (Hyde\Framework\Testing\Unit\EnsureCodeFollowsNamingConvention)::Action entry points follow naming conventions" class="Hyde\Framework\Testing\Unit\EnsureCodeFollowsNamingConventionTest" classname="Hyde.Framework.Testing.Unit.EnsureCodeFollowsNamingConventionTest" assertions="7" time="0.049435"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\ExampleUnitTest" file="Example Unit (Hyde\Framework\Testing\Unit\ExampleUnit)" tests="1" assertions="1" errors="0" failures="0" skipped="0" time="0.005356">
+        <testcase name="Example" file="Example Unit (Hyde\Framework\Testing\Unit\ExampleUnit)::Example" class="Hyde\Framework\Testing\Unit\ExampleUnitTest" classname="Hyde.Framework.Testing.Unit.ExampleUnitTest" assertions="1" time="0.005356"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)" tests="21" assertions="35" errors="0" failures="0" skipped="0" time="0.075207">
+        <testcase name="Base class get page classes" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Base class get page classes" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.004612"/>
+        <testcase name="Base class discovery handlers" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Base class discovery handlers" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.006311"/>
+        <testcase name="Can register new extension" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Can register new extension" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.002599"/>
+        <testcase name="Register extension after kernel is booted" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Register extension after kernel is booted" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="2" time="0.006261"/>
+        <testcase name="Register extension with invalid extension class" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Register extension with invalid extension class" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="2" time="0.002663"/>
+        <testcase name="Register extension with non class string" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Register extension with non class string" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="2" time="0.002774"/>
+        <testcase name="Register extension with already registered extension" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Register extension with already registered extension" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="2" time="0.002636"/>
+        <testcase name="Register extension method does not register already registered classes" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Register extension method does not register already registered classes" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.002662"/>
+        <testcase name="Get extension with valid extension" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Get extension with valid extension" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.002519"/>
+        <testcase name="Get extension with custom extension" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Get extension with custom extension" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.002497"/>
+        <testcase name="Get extension with invalid extension" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Get extension with invalid extension" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="2" time="0.002593"/>
+        <testcase name="Get extension generics" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Get extension generics" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="3" time="0.002666"/>
+        <testcase name="Has extension with valid extension" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Has extension with valid extension" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.002526"/>
+        <testcase name="Has extension with custom extension" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Has extension with custom extension" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.002486"/>
+        <testcase name="Has extension with invalid extension" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Has extension with invalid extension" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.002504"/>
+        <testcase name="File handler dependency injection" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::File handler dependency injection" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.003542"/>
+        <testcase name="Page handler dependency injection" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Page handler dependency injection" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="4" time="0.007749"/>
+        <testcase name="Route handler dependency injection" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Route handler dependency injection" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="4" time="0.006194"/>
+        <testcase name="Get registered page classes returns core extension classes" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Get registered page classes returns core extension classes" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.003072"/>
+        <testcase name="Get registered page classes merges all extension classes" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Get registered page classes merges all extension classes" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="1" time="0.003083"/>
+        <testcase name="Merged registered page classes array contents" file="Extensions Unit (Hyde\Framework\Testing\Unit\ExtensionsUnit)::Merged registered page classes array contents" class="Hyde\Framework\Testing\Unit\ExtensionsUnitTest" classname="Hyde.Framework.Testing.Unit.ExtensionsUnitTest" assertions="2" time="0.003258"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Facades\AssetFacadeTest" file="Asset Facade (Hyde\Framework\Testing\Unit\Facades\AssetFacade)" tests="3" assertions="3" errors="0" failures="0" skipped="0" time="0.079931">
+        <testcase name="Asset facade returns the asset service" file="Asset Facade (Hyde\Framework\Testing\Unit\Facades\AssetFacade)::Asset facade returns the asset service" class="Hyde\Framework\Testing\Unit\Facades\AssetFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.AssetFacadeTest" assertions="1" time="0.040695"/>
+        <testcase name="Facade returns same instance as bound by the container" file="Asset Facade (Hyde\Framework\Testing\Unit\Facades\AssetFacade)::Facade returns same instance as bound by the container" class="Hyde\Framework\Testing\Unit\Facades\AssetFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.AssetFacadeTest" assertions="1" time="0.019678"/>
+        <testcase name="Asset facade can call methods on the asset service" file="Asset Facade (Hyde\Framework\Testing\Unit\Facades\AssetFacade)::Asset facade can call methods on the asset service" class="Hyde\Framework\Testing\Unit\Facades\AssetFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.AssetFacadeTest" assertions="1" time="0.019558"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Facades\AuthorTest" file="Author (Hyde\Framework\Testing\Unit\Facades\Author)" tests="3" assertions="10" errors="0" failures="0" skipped="0" time="0.064344">
+        <testcase name="Create" file="Author (Hyde\Framework\Testing\Unit\Facades\Author)::Create" class="Hyde\Framework\Testing\Unit\Facades\AuthorTest" classname="Hyde.Framework.Testing.Unit.Facades.AuthorTest" assertions="4" time="0.024246"/>
+        <testcase name="Get" file="Author (Hyde\Framework\Testing\Unit\Facades\Author)::Get" class="Hyde\Framework\Testing\Unit\Facades\AuthorTest" classname="Hyde.Framework.Testing.Unit.Facades.AuthorTest" assertions="4" time="0.019934"/>
+        <testcase name="All" file="Author (Hyde\Framework\Testing\Unit\Facades\Author)::All" class="Hyde\Framework\Testing\Unit\Facades\AuthorTest" classname="Hyde.Framework.Testing.Unit.Facades.AuthorTest" assertions="2" time="0.020163"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Facades\HydeFacadesAreAliasedInAppConfigTest" file="Hyde Facades Are Aliased In App Config (Hyde\Framework\Testing\Unit\Facades\HydeFacadesAreAliasedInAppConfig)" tests="1" assertions="8" errors="0" failures="0" skipped="0" time="0.025805">
+        <testcase name="All facades are aliased in app config" file="Hyde Facades Are Aliased In App Config (Hyde\Framework\Testing\Unit\Facades\HydeFacadesAreAliasedInAppConfig)::All facades are aliased in app config" class="Hyde\Framework\Testing\Unit\Facades\HydeFacadesAreAliasedInAppConfigTest" classname="Hyde.Framework.Testing.Unit.Facades.HydeFacadesAreAliasedInAppConfigTest" assertions="8" time="0.025805"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)" tests="10" assertions="10" errors="0" failures="0" skipped="0" time="0.030825">
+        <testcase name="Route facade all method returns all routes" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Route facade all method returns all routes" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.007608"/>
+        <testcase name="Get or fail throws exception if route is not found" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Get or fail throws exception if route is not found" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.002066"/>
+        <testcase name="Get returns route from router index" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Get returns route from router index" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.001955"/>
+        <testcase name="Get returns route from router index for the right page" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Get returns route from router index for the right page" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.004290"/>
+        <testcase name="Get from returns null if route is not found" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Get from returns null if route is not found" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.001977"/>
+        <testcase name="Get supports dot notation" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Get supports dot notation" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.003398"/>
+        <testcase name="Current returns current route" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Current returns current route" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.003451"/>
+        <testcase name="Current returns null if route is not found" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Current returns null if route is not found" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.002252"/>
+        <testcase name="Exists for existing route" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Exists for existing route" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.001917"/>
+        <testcase name="Exists for non existing route" file="Route Facade (Hyde\Framework\Testing\Unit\Facades\RouteFacade)::Exists for non existing route" class="Hyde\Framework\Testing\Unit\Facades\RouteFacadeTest" classname="Hyde.Framework.Testing.Unit.Facades.RouteFacadeTest" assertions="1" time="0.001912"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)" tests="20" assertions="39" errors="0" failures="0" skipped="0" time="0.049531">
+        <testcase name="Can construct" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Can construct" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="1" time="0.011396"/>
+        <testcase name="Get alt text" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Get alt text" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.002049"/>
+        <testcase name="Get title text" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Get title text" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.002019"/>
+        <testcase name="Get author name" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Get author name" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001998"/>
+        <testcase name="Get author url" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Get author url" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001977"/>
+        <testcase name="Get copyright text" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Get copyright text" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.002019"/>
+        <testcase name="Get license name" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Get license name" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.002151"/>
+        <testcase name="Get license url" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Get license url" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001995"/>
+        <testcase name="Has alt text" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Has alt text" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.002019"/>
+        <testcase name="Has title text" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Has title text" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001963"/>
+        <testcase name="Has author name" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Has author name" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001958"/>
+        <testcase name="Has author url" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Has author url" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001986"/>
+        <testcase name="Has copyright text" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Has copyright text" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001966"/>
+        <testcase name="Has license name" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Has license name" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001961"/>
+        <testcase name="Has license url" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Has license url" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001989"/>
+        <testcase name="Get type" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Get type" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001933"/>
+        <testcase name="Get content length" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Get content length" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.002002"/>
+        <testcase name="Featured image get content length with no source" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Featured image get content length with no source" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.002259"/>
+        <testcase name="Can construct featured image with remote source" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Can construct featured image with remote source" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001957"/>
+        <testcase name="Can construct featured image with https" file="Featured Image Unit (Hyde\Framework\Testing\Unit\FeaturedImageUnit)::Can construct featured image with https" class="Hyde\Framework\Testing\Unit\FeaturedImageUnitTest" classname="Hyde.Framework.Testing.Unit.FeaturedImageUnitTest" assertions="2" time="0.001931"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\FileConflictExceptionTest" file="File Conflict Exception (Hyde\Framework\Testing\Unit\FileConflictException)" tests="6" assertions="6" errors="0" failures="0" skipped="0" time="0.028558">
+        <testcase name="It can be instantiated" file="File Conflict Exception (Hyde\Framework\Testing\Unit\FileConflictException)::It can be instantiated" class="Hyde\Framework\Testing\Unit\FileConflictExceptionTest" classname="Hyde.Framework.Testing.Unit.FileConflictExceptionTest" assertions="1" time="0.019079"/>
+        <testcase name="It can be thrown" file="File Conflict Exception (Hyde\Framework\Testing\Unit\FileConflictException)::It can be thrown" class="Hyde\Framework\Testing\Unit\FileConflictExceptionTest" classname="Hyde.Framework.Testing.Unit.FileConflictExceptionTest" assertions="1" time="0.001802"/>
+        <testcase name="Exception code" file="File Conflict Exception (Hyde\Framework\Testing\Unit\FileConflictException)::Exception code" class="Hyde\Framework\Testing\Unit\FileConflictExceptionTest" classname="Hyde.Framework.Testing.Unit.FileConflictExceptionTest" assertions="1" time="0.001736"/>
+        <testcase name="Exception message" file="File Conflict Exception (Hyde\Framework\Testing\Unit\FileConflictException)::Exception message" class="Hyde\Framework\Testing\Unit\FileConflictExceptionTest" classname="Hyde.Framework.Testing.Unit.FileConflictExceptionTest" assertions="1" time="0.001791"/>
+        <testcase name="Exception message with path" file="File Conflict Exception (Hyde\Framework\Testing\Unit\FileConflictException)::Exception message with path" class="Hyde\Framework\Testing\Unit\FileConflictExceptionTest" classname="Hyde.Framework.Testing.Unit.FileConflictExceptionTest" assertions="1" time="0.002107"/>
+        <testcase name="Exception message with absolute path" file="File Conflict Exception (Hyde\Framework\Testing\Unit\FileConflictException)::Exception message with absolute path" class="Hyde\Framework\Testing\Unit\FileConflictExceptionTest" classname="Hyde.Framework.Testing.Unit.FileConflictExceptionTest" assertions="1" time="0.002043"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)" tests="16" assertions="29" errors="0" failures="0" skipped="0" time="0.069002">
+        <testcase name="Helper returns string as is if current is not set" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper returns string as is if current is not set" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.008594"/>
+        <testcase name="Helper injects proper number of doubles slash" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper injects proper number of doubles slash" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.003780"/>
+        <testcase name="Helper injects proper number of doubles slash for deeply nested paths" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper injects proper number of doubles slash for deeply nested paths" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.003626"/>
+        <testcase name="Helper handles destination without file extension" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper handles destination without file extension" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.003588"/>
+        <testcase name="Helper handles current without file extension" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper handles current without file extension" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.003608"/>
+        <testcase name="Helper handles case without any file extensions" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper handles case without any file extensions" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.003559"/>
+        <testcase name="Helper handles case with mixed file extensions" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper handles case with mixed file extensions" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="2" time="0.004191"/>
+        <testcase name="Helper handles different file extensions" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper handles different file extensions" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="3" time="0.003823"/>
+        <testcase name="Helper returns pretty url if enabled and destination is a html file" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper returns pretty url if enabled and destination is a html file" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.003732"/>
+        <testcase name="Helper method does not require current path to be html to use pretty urls" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper method does not require current path to be html to use pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.003771"/>
+        <testcase name="Helper returns does not return pretty url if when enabled but and destination is not a html file" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper returns does not return pretty url if when enabled but and destination is not a html file" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.003744"/>
+        <testcase name="Helper rewrites index when using pretty urls" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper rewrites index when using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="3" time="0.004864"/>
+        <testcase name="Helper does not rewrite index when not using pretty urls" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper does not rewrite index when not using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="3" time="0.004864"/>
+        <testcase name="Helper rewrites documentation page index when using pretty urls" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper rewrites documentation page index when using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="4" time="0.005476"/>
+        <testcase name="Helper does not rewrite documentation page index when not using pretty urls" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper does not rewrite documentation page index when not using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="4" time="0.005508"/>
+        <testcase name="Helper does not rewrite already processed links" file="Hyperlink File Helper Relative Link (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLink)::Helper does not rewrite already processed links" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFileHelperRelativeLinkTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFileHelperRelativeLinkTest" assertions="1" time="0.002273"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)" tests="14" assertions="14" errors="0" failures="0" skipped="0" time="0.044969">
+        <testcase name="Helper returns string as is if pretty urls is not true" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper returns string as is if pretty urls is not true" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.017878"/>
+        <testcase name="Helper returns pretty url if pretty urls is true" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper returns pretty url if pretty urls is true" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002285"/>
+        <testcase name="Helper respects absolute urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper respects absolute urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002092"/>
+        <testcase name="Helper respects pretty absolute urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper respects pretty absolute urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002088"/>
+        <testcase name="Helper respects relative urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper respects relative urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002049"/>
+        <testcase name="Helper respects pretty relative urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper respects pretty relative urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002021"/>
+        <testcase name="Non html links are not modified" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Non html links are not modified" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002037"/>
+        <testcase name="Helper respects absolute urls with pretty urls enabled" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper respects absolute urls with pretty urls enabled" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002087"/>
+        <testcase name="Helper rewrites index when using pretty urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper rewrites index when using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002034"/>
+        <testcase name="Helper does not rewrite index when not using pretty urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper does not rewrite index when not using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002055"/>
+        <testcase name="Helper rewrites documentation page index when using pretty urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper rewrites documentation page index when using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002084"/>
+        <testcase name="Helper does not rewrite documentation page index when not using pretty urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helper does not rewrite documentation page index when not using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002079"/>
+        <testcase name="Helpers rewrites arbitrary nested index pages when using pretty urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helpers rewrites arbitrary nested index pages when using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002066"/>
+        <testcase name="Helpers does not rewrite arbitrary nested index pages when not using pretty urls" file="Hyperlink Format Html Path (Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPath)::Helpers does not rewrite arbitrary nested index pages when not using pretty urls" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinkFormatHtmlPathTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinkFormatHtmlPathTest" assertions="1" time="0.002113"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)" tests="11" assertions="16" errors="0" failures="0" skipped="0" time="0.242425">
+        <testcase name="Has site url returns false when no site url is set" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Has site url returns false when no site url is set" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="1" time="0.033603"/>
+        <testcase name="Has site url returns true when site url is set" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Has site url returns true when site url is set" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="1" time="0.019337"/>
+        <testcase name="Qualified url returns site url when no path is given" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Qualified url returns site url when no path is given" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="1" time="0.029208"/>
+        <testcase name="Qualified url returns site url plus given path" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Qualified url returns site url plus given path" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="1" time="0.019886"/>
+        <testcase name="Qualified url returns site url plus given path with extension" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Qualified url returns site url plus given path with extension" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="1" time="0.019601"/>
+        <testcase name="Qualified url returns site url plus given path with extension and query string" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Qualified url returns site url plus given path with extension and query string" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="1" time="0.019577"/>
+        <testcase name="Qualified url trims trailing slashes" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Qualified url trims trailing slashes" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="3" time="0.020424"/>
+        <testcase name="Qualified url accepts multiple schemes" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Qualified url accepts multiple schemes" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="1" time="0.020603"/>
+        <testcase name="Qualified url throws exception when no site url is set" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Qualified url throws exception when no site url is set" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="2" time="0.020362"/>
+        <testcase name="Helper returns expected string when site url is set" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Helper returns expected string when site url is set" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="1" time="0.019787"/>
+        <testcase name="Helper returns expected string when pretty urls are enabled" file="Hyperlinks Url Path Helpers (Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpers)::Helper returns expected string when pretty urls are enabled" class="Hyde\Framework\Testing\Unit\Foundation\HyperlinksUrlPathHelpersTest" classname="Hyde.Framework.Testing.Unit.Foundation.HyperlinksUrlPathHelpersTest" assertions="3" time="0.020038"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\FoundationFacadesTest" file="Foundation Facades (Hyde\Framework\Testing\Unit\FoundationFacades)" tests="6" assertions="6" errors="0" failures="0" skipped="0" time="0.031682">
+        <testcase name="Files facade" file="Foundation Facades (Hyde\Framework\Testing\Unit\FoundationFacades)::Files facade" class="Hyde\Framework\Testing\Unit\FoundationFacadesTest" classname="Hyde.Framework.Testing.Unit.FoundationFacadesTest" assertions="1" time="0.021915"/>
+        <testcase name="Pages facade" file="Foundation Facades (Hyde\Framework\Testing\Unit\FoundationFacades)::Pages facade" class="Hyde\Framework\Testing\Unit\FoundationFacadesTest" classname="Hyde.Framework.Testing.Unit.FoundationFacadesTest" assertions="1" time="0.001943"/>
+        <testcase name="Routes facade" file="Foundation Facades (Hyde\Framework\Testing\Unit\FoundationFacades)::Routes facade" class="Hyde\Framework\Testing\Unit\FoundationFacadesTest" classname="Hyde.Framework.Testing.Unit.FoundationFacadesTest" assertions="1" time="0.001942"/>
+        <testcase name="Files facade uses kernel instance" file="Foundation Facades (Hyde\Framework\Testing\Unit\FoundationFacades)::Files facade uses kernel instance" class="Hyde\Framework\Testing\Unit\FoundationFacadesTest" classname="Hyde.Framework.Testing.Unit.FoundationFacadesTest" assertions="1" time="0.001989"/>
+        <testcase name="Pages facade uses kernel instance" file="Foundation Facades (Hyde\Framework\Testing\Unit\FoundationFacades)::Pages facade uses kernel instance" class="Hyde\Framework\Testing\Unit\FoundationFacadesTest" classname="Hyde.Framework.Testing.Unit.FoundationFacadesTest" assertions="1" time="0.001933"/>
+        <testcase name="Routes facade uses kernel instance" file="Foundation Facades (Hyde\Framework\Testing\Unit\FoundationFacades)::Routes facade uses kernel instance" class="Hyde\Framework\Testing\Unit\FoundationFacadesTest" classname="Hyde.Framework.Testing.Unit.FoundationFacadesTest" assertions="1" time="0.001959"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\FrontMatterModelTest" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)" tests="17" assertions="18" errors="0" failures="0" skipped="0" time="0.037364">
+        <testcase name="Constructor creates new front matter model" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Constructor creates new front matter model" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.007692"/>
+        <testcase name="Constructor arguments are optional" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Constructor arguments are optional" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001850"/>
+        <testcase name="Constructor arguments are assigned" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Constructor arguments are assigned" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001864"/>
+        <testcase name="Static from array method creates new front matter model" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Static from array method creates new front matter model" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="2" time="0.002001"/>
+        <testcase name="To string magic method converts model array into yaml front matter" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::To string magic method converts model array into yaml front matter" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001918"/>
+        <testcase name="Magic get method returns front matter property" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Magic get method returns front matter property" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001815"/>
+        <testcase name="Magic get method returns null if property does not exist" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Magic get method returns null if property does not exist" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001868"/>
+        <testcase name="Get method returns data when no argument is specified" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Get method returns data when no argument is specified" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001867"/>
+        <testcase name="Get method returns data when no argument is specified with data" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Get method returns data when no argument is specified with data" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001878"/>
+        <testcase name="Get method returns null if specified front matter key does not exist" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Get method returns null if specified front matter key does not exist" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001852"/>
+        <testcase name="Get method returns specified default value if property does not exist" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Get method returns specified default value if property does not exist" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001856"/>
+        <testcase name="Get method returns specified front matter value if key is specified" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Get method returns specified front matter value if key is specified" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001823"/>
+        <testcase name="Set method sets front matter property" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Set method sets front matter property" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001824"/>
+        <testcase name="Set method returns self" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Set method returns self" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001821"/>
+        <testcase name="Has method returns true if property exists" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Has method returns true if property exists" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001833"/>
+        <testcase name="Has method returns false if property does not exist" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::Has method returns false if property does not exist" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001784"/>
+        <testcase name="To array returns front matter array" file="Front Matter Model (Hyde\Framework\Testing\Unit\FrontMatterModel)::To array returns front matter array" class="Hyde\Framework\Testing\Unit\FrontMatterModelTest" classname="Hyde.Framework.Testing.Unit.FrontMatterModelTest" assertions="1" time="0.001818"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\GenerateBuildManifestTest" file="Generate Build Manifest (Hyde\Framework\Testing\Unit\GenerateBuildManifest)" tests="1" assertions="15" errors="0" failures="0" skipped="0" time="0.020131">
+        <testcase name="Action generates build manifest" file="Generate Build Manifest (Hyde\Framework\Testing\Unit\GenerateBuildManifest)::Action generates build manifest" class="Hyde\Framework\Testing\Unit\GenerateBuildManifestTest" classname="Hyde.Framework.Testing.Unit.GenerateBuildManifestTest" assertions="15" time="0.020131"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\GetLatestMarkdownPostsTest" file="Get Latest Markdown Posts (Hyde\Framework\Testing\Unit\GetLatestMarkdownPosts)" tests="1" assertions="5" errors="0" failures="0" skipped="0" time="0.030636">
+        <testcase name="Markdown page get latest helper returns sorted markdown page collection" file="Get Latest Markdown Posts (Hyde\Framework\Testing\Unit\GetLatestMarkdownPosts)::Markdown page get latest helper returns sorted markdown page collection" class="Hyde\Framework\Testing\Unit\GetLatestMarkdownPostsTest" classname="Hyde.Framework.Testing.Unit.GetLatestMarkdownPostsTest" assertions="5" time="0.030636"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\HasTableOfContentsTest" file="Has Table Of Contents (Hyde\Framework\Testing\Unit\HasTableOfContents)" tests="1" assertions="1" errors="0" failures="0" skipped="0" time="0.024318">
+        <testcase name="Constructor creates table of contents string" file="Has Table Of Contents (Hyde\Framework\Testing\Unit\HasTableOfContents)::Constructor creates table of contents string" class="Hyde\Framework\Testing\Unit\HasTableOfContentsTest" classname="Hyde.Framework.Testing.Unit.HasTableOfContentsTest" assertions="1" time="0.024318"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)" tests="48" assertions="110" errors="0" failures="0" skipped="0" time="0.038034">
+        <testcase name="Html helper" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Html helper" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.004379"/>
+        <testcase name="Assert see" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Assert see" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.001422"/>
+        <testcase name="Assert see escaped" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Assert see escaped" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="4" time="0.000621"/>
+        <testcase name="Tap element" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Tap element" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.001210"/>
+        <testcase name="Tap element using id" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Tap element using id" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.000478"/>
+        <testcase name="Get element using query" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Get element using query" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.001199"/>
+        <testcase name="Get root element" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Get root element" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.000459"/>
+        <testcase name="Get element by id" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Get element by id" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="3" time="0.000552"/>
+        <testcase name="Element using id" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element using id" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="3" time="0.000604"/>
+        <testcase name="Element using selector" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element using selector" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="3" time="0.000619"/>
+        <testcase name="Element using unknown syntax" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element using unknown syntax" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.000492"/>
+        <testcase name="Get elements by class" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Get elements by class" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.000493"/>
+        <testcase name="Get elements by class types" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Get elements by class types" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="3" time="0.000593"/>
+        <testcase name="Get elements by class with child nodes" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Get elements by class with child nodes" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="3" time="0.000680"/>
+        <testcase name="Fluent class assertions" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Fluent class assertions" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="7" time="0.000752"/>
+        <testcase name="Query" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Query" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="3" time="0.001970"/>
+        <testcase name="Query with edge cases" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Query with edge cases" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="8" time="0.001070"/>
+        <testcase name="Dump helper" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Dump helper" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="5" time="0.002623"/>
+        <testcase name="Get structure" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Get structure" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000536"/>
+        <testcase name="Get text representation" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Get text representation" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000536"/>
+        <testcase name="Get text representation with multiple lines" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Get text representation with multiple lines" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000665"/>
+        <testcase name="Complex text representation parsing" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Complex text representation parsing" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.001413"/>
+        <testcase name="Assert structure looks like" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Assert structure looks like" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000563"/>
+        <testcase name="Assert looks like" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Assert looks like" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000529"/>
+        <testcase name="Element instance" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element instance" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000420"/>
+        <testcase name="Element tag" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element tag" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000416"/>
+        <testcase name="Element text" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element text" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000409"/>
+        <testcase name="Element html" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element html" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000405"/>
+        <testcase name="Element id" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element id" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.000467"/>
+        <testcase name="Element classes" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element classes" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.000547"/>
+        <testcase name="Element attributes" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element attributes" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.000558"/>
+        <testcase name="Element nodes" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element nodes" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000406"/>
+        <testcase name="Element nodes with child" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element nodes with child" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="3" time="0.000525"/>
+        <testcase name="Element nodes with children" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element nodes with children" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="7" time="0.000678"/>
+        <testcase name="Element to array" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element to array" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000512"/>
+        <testcase name="To array with children" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::To array with children" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.001398"/>
+        <testcase name="To array with attributes" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::To array with attributes" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000593"/>
+        <testcase name="Element assert has id" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element assert has id" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000435"/>
+        <testcase name="Element assert does not have id" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element assert does not have id" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000456"/>
+        <testcase name="Element assert has class" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element assert has class" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000634"/>
+        <testcase name="Element assert does not have class" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element assert does not have class" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000500"/>
+        <testcase name="Element assert has attribute" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element assert has attribute" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000460"/>
         <testcase name="Element assert does not have attribute" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element assert does not have attribute" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000486"/>
-        <testcase name="Element assert has attribute with value" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element assert has attribute with value" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.000562"/>
-        <testcase name="Element assert has attribute with wrong value" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element assert has attribute with wrong value" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="3" time="0.000857"/>
-        <testcase name="Element assert has attribute forwards id assertions" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element assert has attribute forwards id assertions" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000483"/>
-        <testcase name="Element assert has attribute forwards class assertions" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element assert has attribute forwards class assertions" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000496"/>
-        <testcase name="Assertion calls on document are forwarded to root element" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Assertion calls on document are forwarded to root element" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="9" time="0.000915"/>
+        <testcase name="Element assert has attribute with value" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element assert has attribute with value" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="2" time="0.000520"/>
+        <testcase name="Element assert has attribute with wrong value" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element assert has attribute with wrong value" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="3" time="0.000844"/>
+        <testcase name="Element assert has attribute forwards id assertions" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element assert has attribute forwards id assertions" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000490"/>
+        <testcase name="Element assert has attribute forwards class assertions" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Element assert has attribute forwards class assertions" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="1" time="0.000493"/>
+        <testcase name="Assertion calls on document are forwarded to root element" file="Html Testing Support Meta (Hyde\Framework\Testing\Unit\HtmlTestingSupportMeta)::Assertion calls on document are forwarded to root element" class="Hyde\Framework\Testing\Unit\HtmlTestingSupportMetaTest" classname="Hyde.Framework.Testing.Unit.HtmlTestingSupportMetaTest" assertions="9" time="0.000926"/>
       </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\HydeBasePathCanBeChangedTest" file="Hyde Base Path Can Be Changed (Hyde\Framework\Testing\Unit\HydeBasePathCanBeChanged)" tests="1" assertions="2" errors="0" failures="0" skipped="0" time="0.063421">
-        <testcase name="Hyde base path can be changed" file="Hyde Base Path Can Be Changed (Hyde\Framework\Testing\Unit\HydeBasePathCanBeChanged)::Hyde base path can be changed" class="Hyde\Framework\Testing\Unit\HydeBasePathCanBeChangedTest" classname="Hyde.Framework.Testing.Unit.HydeBasePathCanBeChangedTest" assertions="2" time="0.063421"/>
+      <testsuite name="Hyde\Framework\Testing\Unit\HydeBasePathCanBeChangedTest" file="Hyde Base Path Can Be Changed (Hyde\Framework\Testing\Unit\HydeBasePathCanBeChanged)" tests="1" assertions="2" errors="0" failures="0" skipped="0" time="0.062458">
+        <testcase name="Hyde base path can be changed" file="Hyde Base Path Can Be Changed (Hyde\Framework\Testing\Unit\HydeBasePathCanBeChanged)::Hyde base path can be changed" class="Hyde\Framework\Testing\Unit\HydeBasePathCanBeChangedTest" classname="Hyde.Framework.Testing.Unit.HydeBasePathCanBeChangedTest" assertions="2" time="0.062458"/>
       </testsuite>
       <testsuite name="Hyde\Framework\Testing\Unit\HydeConfigFilesAreMatchingTest" file="Hyde Config Files Are Matching (Hyde\Framework\Testing\Unit\HydeConfigFilesAreMatching)" tests="3" assertions="0" errors="0" failures="0" skipped="3" time="0.000000">
         <testcase name="Hyde config files are matching" file="Hyde Config Files Are Matching (Hyde\Framework\Testing\Unit\HydeConfigFilesAreMatching)::Hyde config files are matching" class="Hyde\Framework\Testing\Unit\HydeConfigFilesAreMatchingTest" classname="Hyde.Framework.Testing.Unit.HydeConfigFilesAreMatchingTest" assertions="0" time="0.000000">
@@ -490,2594 +490,2594 @@
           <skipped/>
         </testcase>
       </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\HydeFileHelpersTest" file="Hyde File Helpers (Hyde\Framework\Testing\Unit\HydeFileHelpers)" tests="4" assertions="4" errors="0" failures="0" skipped="0" time="0.093350">
-        <testcase name="Current page returns current page view property" file="Hyde File Helpers (Hyde\Framework\Testing\Unit\HydeFileHelpers)::Current page returns current page view property" class="Hyde\Framework\Testing\Unit\HydeFileHelpersTest" classname="Hyde.Framework.Testing.Unit.HydeFileHelpersTest" assertions="1" time="0.024472"/>
-        <testcase name="Current page falls back to empty string if current page view property is not set" file="Hyde File Helpers (Hyde\Framework\Testing\Unit\HydeFileHelpers)::Current page falls back to empty string if current page view property is not set" class="Hyde\Framework\Testing\Unit\HydeFileHelpersTest" classname="Hyde.Framework.Testing.Unit.HydeFileHelpersTest" assertions="1" time="0.020580"/>
-        <testcase name="Current route returns current route view property" file="Hyde File Helpers (Hyde\Framework\Testing\Unit\HydeFileHelpers)::Current route returns current route view property" class="Hyde\Framework\Testing\Unit\HydeFileHelpersTest" classname="Hyde.Framework.Testing.Unit.HydeFileHelpersTest" assertions="1" time="0.026910"/>
-        <testcase name="Current route falls back to null if current route view property is not set" file="Hyde File Helpers (Hyde\Framework\Testing\Unit\HydeFileHelpers)::Current route falls back to null if current route view property is not set" class="Hyde\Framework\Testing\Unit\HydeFileHelpersTest" classname="Hyde.Framework.Testing.Unit.HydeFileHelpersTest" assertions="1" time="0.021388"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\HydeGetBasePathHasFallbackTest" file="Hyde Get Base Path Has Fallback (Hyde\Framework\Testing\Unit\HydeGetBasePathHasFallback)" tests="1" assertions="1" errors="0" failures="0" skipped="0" time="0.026594">
-        <testcase name="Hyde get base path falls back to getcwd" file="Hyde Get Base Path Has Fallback (Hyde\Framework\Testing\Unit\HydeGetBasePathHasFallback)::Hyde get base path falls back to getcwd" class="Hyde\Framework\Testing\Unit\HydeGetBasePathHasFallbackTest" classname="Hyde.Framework.Testing.Unit.HydeGetBasePathHasFallbackTest" assertions="1" time="0.026594"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)" tests="9" assertions="13" errors="0" failures="0" skipped="0" time="0.018473">
-        <testcase name="Make title helper parses kebab case into title" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)::Make title helper parses kebab case into title" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeMakeTitleTest" assertions="1" time="0.003735"/>
-        <testcase name="Make title helper parses snake case into title" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)::Make title helper parses snake case into title" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeMakeTitleTest" assertions="1" time="0.001823"/>
-        <testcase name="Make title helper parses camel case into title" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)::Make title helper parses camel case into title" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeMakeTitleTest" assertions="1" time="0.001798"/>
-        <testcase name="Make title helper parses pascal case into title" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)::Make title helper parses pascal case into title" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeMakeTitleTest" assertions="1" time="0.001804"/>
-        <testcase name="Make title helper parses title case into title" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)::Make title helper parses title case into title" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeMakeTitleTest" assertions="1" time="0.001773"/>
-        <testcase name="Make title helper parses title case with spaces into title" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)::Make title helper parses title case with spaces into title" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeMakeTitleTest" assertions="1" time="0.001799"/>
-        <testcase name="Make title helper does not capitalize auxiliary words" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)::Make title helper does not capitalize auxiliary words" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeMakeTitleTest" assertions="1" time="0.001800"/>
-        <testcase name="Make title helper does not modify only uppercase input" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)::Make title helper does not modify only uppercase input" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeMakeTitleTest" assertions="3" time="0.001945"/>
-        <testcase name="Make title helper modifies partially uppercase input" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)::Make title helper modifies partially uppercase input" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeMakeTitleTest" assertions="3" time="0.001996"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\HydeHelperFacadeTest" file="Hyde Helper Facade (Hyde\Framework\Testing\Unit\HydeHelperFacade)" tests="3" assertions="3" errors="0" failures="0" skipped="0" time="0.069529">
-        <testcase name="Features facade returns instance of features class" file="Hyde Helper Facade (Hyde\Framework\Testing\Unit\HydeHelperFacade)::Features facade returns instance of features class" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeTest" assertions="1" time="0.029242"/>
-        <testcase name="Features facade can be used to call static methods on features class" file="Hyde Helper Facade (Hyde\Framework\Testing\Unit\HydeHelperFacade)::Features facade can be used to call static methods on features class" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeTest" assertions="1" time="0.020189"/>
-        <testcase name="Hyde has feature shorthand calls static method on features class" file="Hyde Helper Facade (Hyde\Framework\Testing\Unit\HydeHelperFacade)::Hyde has feature shorthand calls static method on features class" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeTest" assertions="1" time="0.020098"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)" tests="10" assertions="10" errors="0" failures="0" skipped="0" time="0.039288">
-        <testcase name="Can construct" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::Can construct" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.007908"/>
-        <testcase name="To array contains expected keys" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::To array contains expected keys" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.003440"/>
-        <testcase name="Can create title from matter" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::Can create title from matter" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.003429"/>
-        <testcase name="Can create title from markdown" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::Can create title from markdown" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.003443"/>
-        <testcase name="Title prefers matter" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::Title prefers matter" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.003405"/>
-        <testcase name="Title falls back to identifier" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::Title falls back to identifier" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.003521"/>
-        <testcase name="Title falls back to identifier basename" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::Title falls back to identifier basename" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.003585"/>
-        <testcase name="Index page titles can be created from parent identifier basename" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::Index page titles can be created from parent identifier basename" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.003609"/>
-        <testcase name="Index page titles can be created from nested parent identifier basename" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::Index page titles can be created from nested parent identifier basename" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.003602"/>
-        <testcase name="Navigation data is generated by navigation data factory" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::Navigation data is generated by navigation data factory" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.003345"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)" tests="24" assertions="24" errors="0" failures="0" skipped="0" time="0.088122">
-        <testcase name="To array" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::To array" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.012193"/>
-        <testcase name="Json serialize uses array serialize" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Json serialize uses array serialize" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003317"/>
-        <testcase name="To json uses json encoded object" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::To json uses json encoded object" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003258"/>
-        <testcase name="To json uses json encoded array" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::To json uses json encoded array" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003314"/>
-        <testcase name="Hyde page to array keys" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Hyde page to array keys" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003190"/>
-        <testcase name="Html page to array keys" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Html page to array keys" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003196"/>
-        <testcase name="Blade page to array keys" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Blade page to array keys" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003227"/>
-        <testcase name="Markdown page to array keys" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Markdown page to array keys" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003274"/>
-        <testcase name="Markdown post to array keys" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Markdown post to array keys" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003707"/>
-        <testcase name="Documentation page to array keys" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Documentation page to array keys" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003307"/>
-        <testcase name="Hyde page to array contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Hyde page to array contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003085"/>
-        <testcase name="Html page to array contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Html page to array contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003082"/>
-        <testcase name="Blade page to array contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Blade page to array contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003134"/>
-        <testcase name="Markdown page to array contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Markdown page to array contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003165"/>
-        <testcase name="Markdown post to array contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Markdown post to array contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003551"/>
-        <testcase name="Documentation page to array contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Documentation page to array contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003194"/>
-        <testcase name="Json encoded output" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Json encoded output" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003260"/>
-        <testcase name="Json serialized hyde page contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Json serialized hyde page contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003405"/>
-        <testcase name="Json serialized html page contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Json serialized html page contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003277"/>
-        <testcase name="Json serialized blade page contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Json serialized blade page contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003292"/>
-        <testcase name="Json serialized markdown page contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Json serialized markdown page contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003342"/>
-        <testcase name="Json serialized markdown post contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Json serialized markdown post contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003723"/>
-        <testcase name="Json serialized documentation page contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Json serialized documentation page contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003368"/>
-        <testcase name="Json serialized markdown page with front matter" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Json serialized markdown page with front matter" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003259"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\HydeVendorPathHelperTest" file="Hyde Vendor Path Helper (Hyde\Framework\Testing\Unit\HydeVendorPathHelper)" tests="5" assertions="9" errors="0" failures="0" skipped="0" time="0.126351">
-        <testcase name="Method exists" file="Hyde Vendor Path Helper (Hyde\Framework\Testing\Unit\HydeVendorPathHelper)::Method exists" class="Hyde\Framework\Testing\Unit\HydeVendorPathHelperTest" classname="Hyde.Framework.Testing.Unit.HydeVendorPathHelperTest" assertions="1" time="0.044244"/>
-        <testcase name="Method returns string" file="Hyde Vendor Path Helper (Hyde\Framework\Testing\Unit\HydeVendorPathHelper)::Method returns string" class="Hyde\Framework\Testing\Unit\HydeVendorPathHelperTest" classname="Hyde.Framework.Testing.Unit.HydeVendorPathHelperTest" assertions="1" time="0.020396"/>
-        <testcase name="Method returns string containing vendor path" file="Hyde Vendor Path Helper (Hyde\Framework\Testing\Unit\HydeVendorPathHelper)::Method returns string containing vendor path" class="Hyde\Framework\Testing\Unit\HydeVendorPathHelperTest" classname="Hyde.Framework.Testing.Unit.HydeVendorPathHelperTest" assertions="1" time="0.020143"/>
-        <testcase name="Method returns path to the vendor directory" file="Hyde Vendor Path Helper (Hyde\Framework\Testing\Unit\HydeVendorPathHelper)::Method returns path to the vendor directory" class="Hyde\Framework\Testing\Unit\HydeVendorPathHelperTest" classname="Hyde.Framework.Testing.Unit.HydeVendorPathHelperTest" assertions="3" time="0.021029"/>
-        <testcase name="Can specify which hyde package to use" file="Hyde Vendor Path Helper (Hyde\Framework\Testing\Unit\HydeVendorPathHelper)::Can specify which hyde package to use" class="Hyde\Framework\Testing\Unit\HydeVendorPathHelperTest" classname="Hyde.Framework.Testing.Unit.HydeVendorPathHelperTest" assertions="3" time="0.020539"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcernTest" file="Interacts With Directories Concern (Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcern)" tests="7" assertions="9" errors="0" failures="0" skipped="0" time="0.165869">
-        <testcase name="Methods can be called statically" file="Interacts With Directories Concern (Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcern)::Methods can be called statically" class="Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcernTest" classname="Hyde.Framework.Testing.Unit.InteractsWithDirectoriesConcernTest" assertions="2" time="0.028892"/>
-        <testcase name="Needs directory creates the directory" file="Interacts With Directories Concern (Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcern)::Needs directory creates the directory" class="Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcernTest" classname="Hyde.Framework.Testing.Unit.InteractsWithDirectoriesConcernTest" assertions="1" time="0.021533"/>
-        <testcase name="Needs directory creates the directory recursively" file="Interacts With Directories Concern (Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcern)::Needs directory creates the directory recursively" class="Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcernTest" classname="Hyde.Framework.Testing.Unit.InteractsWithDirectoriesConcernTest" assertions="1" time="0.020592"/>
-        <testcase name="Needs directory handles existing directory" file="Interacts With Directories Concern (Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcern)::Needs directory handles existing directory" class="Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcernTest" classname="Hyde.Framework.Testing.Unit.InteractsWithDirectoriesConcernTest" assertions="1" time="0.022811"/>
-        <testcase name="Needs directories creates single directory" file="Interacts With Directories Concern (Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcern)::Needs directories creates single directory" class="Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcernTest" classname="Hyde.Framework.Testing.Unit.InteractsWithDirectoriesConcernTest" assertions="1" time="0.020475"/>
-        <testcase name="Needs directories creates multiple directories" file="Interacts With Directories Concern (Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcern)::Needs directories creates multiple directories" class="Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcernTest" classname="Hyde.Framework.Testing.Unit.InteractsWithDirectoriesConcernTest" assertions="2" time="0.030820"/>
-        <testcase name="Needs parent directory creates directory for the parent file" file="Interacts With Directories Concern (Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcern)::Needs parent directory creates directory for the parent file" class="Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcernTest" classname="Hyde.Framework.Testing.Unit.InteractsWithDirectoriesConcernTest" assertions="1" time="0.020745"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\LoadConfigurationTest" file="Load Configuration (Hyde\Framework\Testing\Unit\LoadConfiguration)" tests="2" assertions="6" errors="0" failures="0" skipped="0" time="0.022030">
-        <testcase name="It loads runtime configuration" file="Load Configuration (Hyde\Framework\Testing\Unit\LoadConfiguration)::It loads runtime configuration" class="Hyde\Framework\Testing\Unit\LoadConfigurationTest" classname="Hyde.Framework.Testing.Unit.LoadConfigurationTest" assertions="4" time="0.015561"/>
-        <testcase name="It loads realtime compiler environment configuration" file="Load Configuration (Hyde\Framework\Testing\Unit\LoadConfiguration)::It loads realtime compiler environment configuration" class="Hyde\Framework\Testing\Unit\LoadConfigurationTest" classname="Hyde.Framework.Testing.Unit.LoadConfigurationTest" assertions="2" time="0.006468"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)" tests="10" assertions="16" errors="0" failures="0" skipped="0" time="0.205994">
-        <testcase name="Constructor creates new markdown document" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::Constructor creates new markdown document" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="1" time="0.023555"/>
-        <testcase name="Constructor arguments are optional" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::Constructor arguments are optional" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="1" time="0.019600"/>
-        <testcase name="Constructor arguments are assigned" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::Constructor arguments are assigned" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="1" time="0.019793"/>
-        <testcase name="Magic to string method returns body" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::Magic to string method returns body" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="1" time="0.019704"/>
-        <testcase name="Compile method returns rendered html" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::Compile method returns rendered html" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="1" time="0.020716"/>
-        <testcase name="To html method returns rendered as html string" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::To html method returns rendered as html string" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="2" time="0.021677"/>
-        <testcase name="Parse method parses a file using the markdown file service" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::Parse method parses a file using the markdown file service" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="3" time="0.020743"/>
-        <testcase name="To array method returns array markdown body lines" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::To array method returns array markdown body lines" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="1" time="0.019959"/>
-        <testcase name="From file method returns new markdown document" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::From file method returns new markdown document" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="2" time="0.020321"/>
-        <testcase name="Carriage returns are normalized" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::Carriage returns are normalized" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="3" time="0.019926"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\MarkdownFacadeTest" file="Markdown Facade (Hyde\Framework\Testing\Unit\MarkdownFacade)" tests="1" assertions="2" errors="0" failures="0" skipped="0" time="0.017631">
-        <testcase name="Render" file="Markdown Facade (Hyde\Framework\Testing\Unit\MarkdownFacade)::Render" class="Hyde\Framework\Testing\Unit\MarkdownFacadeTest" classname="Hyde.Framework.Testing.Unit.MarkdownFacadeTest" assertions="2" time="0.017631"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\MediaDirectoryCanBeChangedTest" file="Media Directory Can Be Changed (Hyde\Framework\Testing\Unit\MediaDirectoryCanBeChanged)" tests="3" assertions="9" errors="0" failures="0" skipped="0" time="0.108078">
-        <testcase name="Media output directory can be changed for site builds" file="Media Directory Can Be Changed (Hyde\Framework\Testing\Unit\MediaDirectoryCanBeChanged)::Media output directory can be changed for site builds" class="Hyde\Framework\Testing\Unit\MediaDirectoryCanBeChangedTest" classname="Hyde.Framework.Testing.Unit.MediaDirectoryCanBeChangedTest" assertions="3" time="0.040423"/>
-        <testcase name="Media output directory can be changed for site rebuilds" file="Media Directory Can Be Changed (Hyde\Framework\Testing\Unit\MediaDirectoryCanBeChanged)::Media output directory can be changed for site rebuilds" class="Hyde\Framework\Testing\Unit\MediaDirectoryCanBeChangedTest" classname="Hyde.Framework.Testing.Unit.MediaDirectoryCanBeChangedTest" assertions="3" time="0.029634"/>
-        <testcase name="Compiled pages have links to the right media file location" file="Media Directory Can Be Changed (Hyde\Framework\Testing\Unit\MediaDirectoryCanBeChanged)::Compiled pages have links to the right media file location" class="Hyde\Framework\Testing\Unit\MediaDirectoryCanBeChangedTest" classname="Hyde.Framework.Testing.Unit.MediaDirectoryCanBeChangedTest" assertions="3" time="0.038021"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)" tests="34" assertions="34" errors="0" failures="0" skipped="0" time="0.142673">
-        <testcase name="Is current" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.009820"/>
-        <testcase name="Is current when current" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004633"/>
-        <testcase name="Is current using current route" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current using current route" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004466"/>
-        <testcase name="Is current using current link" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current using current link" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003998"/>
-        <testcase name="Is current when not current" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when not current" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004501"/>
-        <testcase name="Is current using not current route" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current using not current route" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004146"/>
-        <testcase name="Is current using not current link" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current using not current link" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003888"/>
-        <testcase name="Is current with nested current page" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004376"/>
-        <testcase name="Is current when current with nested current page" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current with nested current page" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004391"/>
-        <testcase name="Is current with nested current page when nested" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when nested" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004332"/>
-        <testcase name="Is current when current with nested current page when nested" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current with nested current page when nested" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004350"/>
-        <testcase name="Is current with nested current page when very nested" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when very nested" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004349"/>
-        <testcase name="Is current when current with nested current page when very nested" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current with nested current page when very nested" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004343"/>
-        <testcase name="Is current with nested current page when very differing nested" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when very differing nested" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004321"/>
-        <testcase name="Is current with nested current page when very differing nested inverse" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when very differing nested inverse" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004298"/>
-        <testcase name="Is current using current link with nested current page" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current using current link with nested current page" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003783"/>
-        <testcase name="Is current using not current link with nested current page" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current using not current link with nested current page" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003781"/>
-        <testcase name="Is current when current with nested current page and subject page" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current with nested current page and subject page" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003840"/>
-        <testcase name="Is current when not current with nested current page and subject page" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when not current with nested current page and subject page" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003789"/>
-        <testcase name="Is current with nested current page when nested using link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when nested using link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003780"/>
-        <testcase name="Is current when current with nested current page when nested using link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current with nested current page when nested using link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003805"/>
-        <testcase name="Is current with nested current page when very nested using link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when very nested using link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003798"/>
-        <testcase name="Is current when current with nested current page when very nested using link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current with nested current page when very nested using link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003810"/>
-        <testcase name="Is current with nested current page when very differing nested using link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when very differing nested using link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003801"/>
-        <testcase name="Is current with nested current page when very differing nested inverse using link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when very differing nested inverse using link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003860"/>
-        <testcase name="Is current with nested current page when nested using pretty link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when nested using pretty link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003795"/>
-        <testcase name="Is current when current with nested current page when nested using pretty link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current with nested current page when nested using pretty link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003827"/>
-        <testcase name="Is current with nested current page when very nested using pretty link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when very nested using pretty link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003808"/>
-        <testcase name="Is current when current with nested current page when very nested using pretty link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current with nested current page when very nested using pretty link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003879"/>
-        <testcase name="Is current with nested current page when very differing nested using pretty link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when very differing nested using pretty link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003816"/>
-        <testcase name="Is current with nested current page when very differing nested inverse using pretty link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when very differing nested inverse using pretty link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003871"/>
-        <testcase name="Is current with absolute link" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with absolute link" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003745"/>
-        <testcase name="Is current with nested current page when nested using absolute link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when nested using absolute link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003839"/>
-        <testcase name="Is current when current with nested current page when nested using absolute link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current with nested current page when nested using absolute link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003833"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\NavItemTest" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)" tests="20" assertions="32" errors="0" failures="0" skipped="0" time="0.100189">
-        <testcase name="Construct" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Construct" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.032993"/>
-        <testcase name="Get destination" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Get destination" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.003393"/>
-        <testcase name="Get label" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Get label" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.003337"/>
-        <testcase name="Get priority" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Get priority" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.003372"/>
-        <testcase name="Get group" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Get group" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.003385"/>
-        <testcase name="From route" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::From route" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.003336"/>
-        <testcase name="To string" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::To string" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.006376"/>
-        <testcase name="For link" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::For link" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="3" time="0.002203"/>
-        <testcase name="For link with custom priority" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::For link with custom priority" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.002064"/>
-        <testcase name="For route" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::For route" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="3" time="0.002850"/>
-        <testcase name="For index route" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::For index route" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="3" time="0.002905"/>
-        <testcase name="For route with route key" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::For route with route key" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.002905"/>
-        <testcase name="For route with missing route key" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::For route with missing route key" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.002262"/>
-        <testcase name="For route with custom priority" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::For route with custom priority" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.002605"/>
-        <testcase name="Route based nav item destinations are resolved relatively" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Route based nav item destinations are resolved relatively" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="6" time="0.008150"/>
-        <testcase name="Is current" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Is current" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="2" time="0.004918"/>
-        <testcase name="Get group with no group" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Get group with no group" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.003214"/>
-        <testcase name="Get group with group" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Get group with group" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.003284"/>
-        <testcase name="Get group from route with group" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Get group from route with group" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.003341"/>
-        <testcase name="Get group for route with group" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Get group for route with group" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.003297"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\NavigationDataFactoryUnitTest" file="Navigation Data Factory Unit (Hyde\Framework\Testing\Unit\NavigationDataFactoryUnit)" tests="7" assertions="21" errors="0" failures="0" skipped="0" time="0.051872">
-        <testcase name="Search for priority in navigation config for markdown page with keyed config" file="Navigation Data Factory Unit (Hyde\Framework\Testing\Unit\NavigationDataFactoryUnit)::Search for priority in navigation config for markdown page with keyed config" class="Hyde\Framework\Testing\Unit\NavigationDataFactoryUnitTest" classname="Hyde.Framework.Testing.Unit.NavigationDataFactoryUnitTest" assertions="2" time="0.032147"/>
-        <testcase name="Search for priority in navigation config for markdown page with list config" file="Navigation Data Factory Unit (Hyde\Framework\Testing\Unit\NavigationDataFactoryUnit)::Search for priority in navigation config for markdown page with list config" class="Hyde\Framework\Testing\Unit\NavigationDataFactoryUnitTest" classname="Hyde.Framework.Testing.Unit.NavigationDataFactoryUnitTest" assertions="2" time="0.002990"/>
-        <testcase name="Search for priority in navigation config for markdown page supports mixing keyed and list config" file="Navigation Data Factory Unit (Hyde\Framework\Testing\Unit\NavigationDataFactoryUnit)::Search for priority in navigation config for markdown page supports mixing keyed and list config" class="Hyde\Framework\Testing\Unit\NavigationDataFactoryUnitTest" classname="Hyde.Framework.Testing.Unit.NavigationDataFactoryUnitTest" assertions="4" time="0.003480"/>
-        <testcase name="Search for priority in navigation config for documentation page with list config" file="Navigation Data Factory Unit (Hyde\Framework\Testing\Unit\NavigationDataFactoryUnit)::Search for priority in navigation config for documentation page with list config" class="Hyde\Framework\Testing\Unit\NavigationDataFactoryUnitTest" classname="Hyde.Framework.Testing.Unit.NavigationDataFactoryUnitTest" assertions="2" time="0.002994"/>
-        <testcase name="Search for priority in navigation config for documentation page with keyed config" file="Navigation Data Factory Unit (Hyde\Framework\Testing\Unit\NavigationDataFactoryUnit)::Search for priority in navigation config for documentation page with keyed config" class="Hyde\Framework\Testing\Unit\NavigationDataFactoryUnitTest" classname="Hyde.Framework.Testing.Unit.NavigationDataFactoryUnitTest" assertions="4" time="0.003513"/>
-        <testcase name="Search for priority in navigation config for documentation page supports mixing keyed and list config" file="Navigation Data Factory Unit (Hyde\Framework\Testing\Unit\NavigationDataFactoryUnit)::Search for priority in navigation config for documentation page supports mixing keyed and list config" class="Hyde\Framework\Testing\Unit\NavigationDataFactoryUnitTest" classname="Hyde.Framework.Testing.Unit.NavigationDataFactoryUnitTest" assertions="4" time="0.003526"/>
-        <testcase name="Route keys can be used for documentation sidebar priorities" file="Navigation Data Factory Unit (Hyde\Framework\Testing\Unit\NavigationDataFactoryUnit)::Route keys can be used for documentation sidebar priorities" class="Hyde\Framework\Testing\Unit\NavigationDataFactoryUnitTest" classname="Hyde.Framework.Testing.Unit.NavigationDataFactoryUnitTest" assertions="3" time="0.003222"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)" tests="32" assertions="32" errors="0" failures="0" skipped="0" time="0.149130">
-        <testcase name="Source directory" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Source directory" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.011005"/>
-        <testcase name="Output directory" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Output directory" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.003134"/>
-        <testcase name="Base route key" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Base route key" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.003115"/>
-        <testcase name="File extension" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::File extension" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.003107"/>
-        <testcase name="Source path" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Source path" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.003171"/>
-        <testcase name="Output path" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Output path" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.003217"/>
-        <testcase name="Path" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Path" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.003296"/>
-        <testcase name="Get source path" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Get source path" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004398"/>
-        <testcase name="Get output path" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Get output path" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004215"/>
+      <testsuite name="Hyde\Framework\Testing\Unit\HydeFileHelpersTest" file="Hyde File Helpers (Hyde\Framework\Testing\Unit\HydeFileHelpers)" tests="4" assertions="4" errors="0" failures="0" skipped="0" time="0.088538">
+        <testcase name="Current page returns current page view property" file="Hyde File Helpers (Hyde\Framework\Testing\Unit\HydeFileHelpers)::Current page returns current page view property" class="Hyde\Framework\Testing\Unit\HydeFileHelpersTest" classname="Hyde.Framework.Testing.Unit.HydeFileHelpersTest" assertions="1" time="0.023998"/>
+        <testcase name="Current page falls back to empty string if current page view property is not set" file="Hyde File Helpers (Hyde\Framework\Testing\Unit\HydeFileHelpers)::Current page falls back to empty string if current page view property is not set" class="Hyde\Framework\Testing\Unit\HydeFileHelpersTest" classname="Hyde.Framework.Testing.Unit.HydeFileHelpersTest" assertions="1" time="0.019630"/>
+        <testcase name="Current route returns current route view property" file="Hyde File Helpers (Hyde\Framework\Testing\Unit\HydeFileHelpers)::Current route returns current route view property" class="Hyde\Framework\Testing\Unit\HydeFileHelpersTest" classname="Hyde.Framework.Testing.Unit.HydeFileHelpersTest" assertions="1" time="0.025145"/>
+        <testcase name="Current route falls back to null if current route view property is not set" file="Hyde File Helpers (Hyde\Framework\Testing\Unit\HydeFileHelpers)::Current route falls back to null if current route view property is not set" class="Hyde\Framework\Testing\Unit\HydeFileHelpersTest" classname="Hyde.Framework.Testing.Unit.HydeFileHelpersTest" assertions="1" time="0.019765"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\HydeGetBasePathHasFallbackTest" file="Hyde Get Base Path Has Fallback (Hyde\Framework\Testing\Unit\HydeGetBasePathHasFallback)" tests="1" assertions="1" errors="0" failures="0" skipped="0" time="0.026031">
+        <testcase name="Hyde get base path falls back to getcwd" file="Hyde Get Base Path Has Fallback (Hyde\Framework\Testing\Unit\HydeGetBasePathHasFallback)::Hyde get base path falls back to getcwd" class="Hyde\Framework\Testing\Unit\HydeGetBasePathHasFallbackTest" classname="Hyde.Framework.Testing.Unit.HydeGetBasePathHasFallbackTest" assertions="1" time="0.026031"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)" tests="9" assertions="13" errors="0" failures="0" skipped="0" time="0.018653">
+        <testcase name="Make title helper parses kebab case into title" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)::Make title helper parses kebab case into title" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeMakeTitleTest" assertions="1" time="0.003703"/>
+        <testcase name="Make title helper parses snake case into title" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)::Make title helper parses snake case into title" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeMakeTitleTest" assertions="1" time="0.001842"/>
+        <testcase name="Make title helper parses camel case into title" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)::Make title helper parses camel case into title" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeMakeTitleTest" assertions="1" time="0.001835"/>
+        <testcase name="Make title helper parses pascal case into title" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)::Make title helper parses pascal case into title" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeMakeTitleTest" assertions="1" time="0.001798"/>
+        <testcase name="Make title helper parses title case into title" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)::Make title helper parses title case into title" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeMakeTitleTest" assertions="1" time="0.001808"/>
+        <testcase name="Make title helper parses title case with spaces into title" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)::Make title helper parses title case with spaces into title" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeMakeTitleTest" assertions="1" time="0.001835"/>
+        <testcase name="Make title helper does not capitalize auxiliary words" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)::Make title helper does not capitalize auxiliary words" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeMakeTitleTest" assertions="1" time="0.001834"/>
+        <testcase name="Make title helper does not modify only uppercase input" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)::Make title helper does not modify only uppercase input" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeMakeTitleTest" assertions="3" time="0.001990"/>
+        <testcase name="Make title helper modifies partially uppercase input" file="Hyde Helper Facade Make Title (Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitle)::Make title helper modifies partially uppercase input" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeMakeTitleTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeMakeTitleTest" assertions="3" time="0.002007"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\HydeHelperFacadeTest" file="Hyde Helper Facade (Hyde\Framework\Testing\Unit\HydeHelperFacade)" tests="3" assertions="3" errors="0" failures="0" skipped="0" time="0.067514">
+        <testcase name="Features facade returns instance of features class" file="Hyde Helper Facade (Hyde\Framework\Testing\Unit\HydeHelperFacade)::Features facade returns instance of features class" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeTest" assertions="1" time="0.028375"/>
+        <testcase name="Features facade can be used to call static methods on features class" file="Hyde Helper Facade (Hyde\Framework\Testing\Unit\HydeHelperFacade)::Features facade can be used to call static methods on features class" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeTest" assertions="1" time="0.019571"/>
+        <testcase name="Hyde has feature shorthand calls static method on features class" file="Hyde Helper Facade (Hyde\Framework\Testing\Unit\HydeHelperFacade)::Hyde has feature shorthand calls static method on features class" class="Hyde\Framework\Testing\Unit\HydeHelperFacadeTest" classname="Hyde.Framework.Testing.Unit.HydeHelperFacadeTest" assertions="1" time="0.019568"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)" tests="10" assertions="10" errors="0" failures="0" skipped="0" time="0.039210">
+        <testcase name="Can construct" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::Can construct" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.007741"/>
+        <testcase name="To array contains expected keys" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::To array contains expected keys" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.003445"/>
+        <testcase name="Can create title from matter" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::Can create title from matter" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.003454"/>
+        <testcase name="Can create title from markdown" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::Can create title from markdown" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.003465"/>
+        <testcase name="Title prefers matter" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::Title prefers matter" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.003418"/>
+        <testcase name="Title falls back to identifier" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::Title falls back to identifier" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.003519"/>
+        <testcase name="Title falls back to identifier basename" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::Title falls back to identifier basename" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.003554"/>
+        <testcase name="Index page titles can be created from parent identifier basename" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::Index page titles can be created from parent identifier basename" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.003608"/>
+        <testcase name="Index page titles can be created from nested parent identifier basename" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::Index page titles can be created from nested parent identifier basename" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.003663"/>
+        <testcase name="Navigation data is generated by navigation data factory" file="Hyde Page Data Factory (Hyde\Framework\Testing\Unit\HydePageDataFactory)::Navigation data is generated by navigation data factory" class="Hyde\Framework\Testing\Unit\HydePageDataFactoryTest" classname="Hyde.Framework.Testing.Unit.HydePageDataFactoryTest" assertions="1" time="0.003343"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)" tests="24" assertions="24" errors="0" failures="0" skipped="0" time="0.088149">
+        <testcase name="To array" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::To array" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.012314"/>
+        <testcase name="Json serialize uses array serialize" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Json serialize uses array serialize" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003296"/>
+        <testcase name="To json uses json encoded object" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::To json uses json encoded object" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003308"/>
+        <testcase name="To json uses json encoded array" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::To json uses json encoded array" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003292"/>
+        <testcase name="Hyde page to array keys" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Hyde page to array keys" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003168"/>
+        <testcase name="Html page to array keys" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Html page to array keys" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003236"/>
+        <testcase name="Blade page to array keys" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Blade page to array keys" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003257"/>
+        <testcase name="Markdown page to array keys" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Markdown page to array keys" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003351"/>
+        <testcase name="Markdown post to array keys" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Markdown post to array keys" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003759"/>
+        <testcase name="Documentation page to array keys" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Documentation page to array keys" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003265"/>
+        <testcase name="Hyde page to array contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Hyde page to array contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003099"/>
+        <testcase name="Html page to array contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Html page to array contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003126"/>
+        <testcase name="Blade page to array contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Blade page to array contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003138"/>
+        <testcase name="Markdown page to array contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Markdown page to array contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003139"/>
+        <testcase name="Markdown post to array contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Markdown post to array contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003592"/>
+        <testcase name="Documentation page to array contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Documentation page to array contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003179"/>
+        <testcase name="Json encoded output" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Json encoded output" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003235"/>
+        <testcase name="Json serialized hyde page contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Json serialized hyde page contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003256"/>
+        <testcase name="Json serialized html page contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Json serialized html page contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003254"/>
+        <testcase name="Json serialized blade page contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Json serialized blade page contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003274"/>
+        <testcase name="Json serialized markdown page contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Json serialized markdown page contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003304"/>
+        <testcase name="Json serialized markdown post contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Json serialized markdown post contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003729"/>
+        <testcase name="Json serialized documentation page contents" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Json serialized documentation page contents" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003330"/>
+        <testcase name="Json serialized markdown page with front matter" file="Hyde Page Serializable Unit (Hyde\Framework\Testing\Unit\HydePageSerializableUnit)::Json serialized markdown page with front matter" class="Hyde\Framework\Testing\Unit\HydePageSerializableUnitTest" classname="Hyde.Framework.Testing.Unit.HydePageSerializableUnitTest" assertions="1" time="0.003249"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\HydeVendorPathHelperTest" file="Hyde Vendor Path Helper (Hyde\Framework\Testing\Unit\HydeVendorPathHelper)" tests="5" assertions="9" errors="0" failures="0" skipped="0" time="0.119765">
+        <testcase name="Method exists" file="Hyde Vendor Path Helper (Hyde\Framework\Testing\Unit\HydeVendorPathHelper)::Method exists" class="Hyde\Framework\Testing\Unit\HydeVendorPathHelperTest" classname="Hyde.Framework.Testing.Unit.HydeVendorPathHelperTest" assertions="1" time="0.041436"/>
+        <testcase name="Method returns string" file="Hyde Vendor Path Helper (Hyde\Framework\Testing\Unit\HydeVendorPathHelper)::Method returns string" class="Hyde\Framework\Testing\Unit\HydeVendorPathHelperTest" classname="Hyde.Framework.Testing.Unit.HydeVendorPathHelperTest" assertions="1" time="0.019426"/>
+        <testcase name="Method returns string containing vendor path" file="Hyde Vendor Path Helper (Hyde\Framework\Testing\Unit\HydeVendorPathHelper)::Method returns string containing vendor path" class="Hyde\Framework\Testing\Unit\HydeVendorPathHelperTest" classname="Hyde.Framework.Testing.Unit.HydeVendorPathHelperTest" assertions="1" time="0.019411"/>
+        <testcase name="Method returns path to the vendor directory" file="Hyde Vendor Path Helper (Hyde\Framework\Testing\Unit\HydeVendorPathHelper)::Method returns path to the vendor directory" class="Hyde\Framework\Testing\Unit\HydeVendorPathHelperTest" classname="Hyde.Framework.Testing.Unit.HydeVendorPathHelperTest" assertions="3" time="0.019746"/>
+        <testcase name="Can specify which hyde package to use" file="Hyde Vendor Path Helper (Hyde\Framework\Testing\Unit\HydeVendorPathHelper)::Can specify which hyde package to use" class="Hyde\Framework\Testing\Unit\HydeVendorPathHelperTest" classname="Hyde.Framework.Testing.Unit.HydeVendorPathHelperTest" assertions="3" time="0.019746"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcernTest" file="Interacts With Directories Concern (Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcern)" tests="7" assertions="9" errors="0" failures="0" skipped="0" time="0.161270">
+        <testcase name="Methods can be called statically" file="Interacts With Directories Concern (Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcern)::Methods can be called statically" class="Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcernTest" classname="Hyde.Framework.Testing.Unit.InteractsWithDirectoriesConcernTest" assertions="2" time="0.028421"/>
+        <testcase name="Needs directory creates the directory" file="Interacts With Directories Concern (Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcern)::Needs directory creates the directory" class="Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcernTest" classname="Hyde.Framework.Testing.Unit.InteractsWithDirectoriesConcernTest" assertions="1" time="0.020100"/>
+        <testcase name="Needs directory creates the directory recursively" file="Interacts With Directories Concern (Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcern)::Needs directory creates the directory recursively" class="Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcernTest" classname="Hyde.Framework.Testing.Unit.InteractsWithDirectoriesConcernTest" assertions="1" time="0.020290"/>
+        <testcase name="Needs directory handles existing directory" file="Interacts With Directories Concern (Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcern)::Needs directory handles existing directory" class="Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcernTest" classname="Hyde.Framework.Testing.Unit.InteractsWithDirectoriesConcernTest" assertions="1" time="0.021121"/>
+        <testcase name="Needs directories creates single directory" file="Interacts With Directories Concern (Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcern)::Needs directories creates single directory" class="Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcernTest" classname="Hyde.Framework.Testing.Unit.InteractsWithDirectoriesConcernTest" assertions="1" time="0.020088"/>
+        <testcase name="Needs directories creates multiple directories" file="Interacts With Directories Concern (Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcern)::Needs directories creates multiple directories" class="Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcernTest" classname="Hyde.Framework.Testing.Unit.InteractsWithDirectoriesConcernTest" assertions="2" time="0.030557"/>
+        <testcase name="Needs parent directory creates directory for the parent file" file="Interacts With Directories Concern (Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcern)::Needs parent directory creates directory for the parent file" class="Hyde\Framework\Testing\Unit\InteractsWithDirectoriesConcernTest" classname="Hyde.Framework.Testing.Unit.InteractsWithDirectoriesConcernTest" assertions="1" time="0.020693"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\LoadConfigurationTest" file="Load Configuration (Hyde\Framework\Testing\Unit\LoadConfiguration)" tests="2" assertions="6" errors="0" failures="0" skipped="0" time="0.020036">
+        <testcase name="It loads runtime configuration" file="Load Configuration (Hyde\Framework\Testing\Unit\LoadConfiguration)::It loads runtime configuration" class="Hyde\Framework\Testing\Unit\LoadConfigurationTest" classname="Hyde.Framework.Testing.Unit.LoadConfigurationTest" assertions="4" time="0.014613"/>
+        <testcase name="It loads realtime compiler environment configuration" file="Load Configuration (Hyde\Framework\Testing\Unit\LoadConfiguration)::It loads realtime compiler environment configuration" class="Hyde\Framework\Testing\Unit\LoadConfigurationTest" classname="Hyde.Framework.Testing.Unit.LoadConfigurationTest" assertions="2" time="0.005423"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)" tests="10" assertions="16" errors="0" failures="0" skipped="0" time="0.206997">
+        <testcase name="Constructor creates new markdown document" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::Constructor creates new markdown document" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="1" time="0.023238"/>
+        <testcase name="Constructor arguments are optional" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::Constructor arguments are optional" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="1" time="0.019455"/>
+        <testcase name="Constructor arguments are assigned" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::Constructor arguments are assigned" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="1" time="0.019738"/>
+        <testcase name="Magic to string method returns body" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::Magic to string method returns body" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="1" time="0.019722"/>
+        <testcase name="Compile method returns rendered html" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::Compile method returns rendered html" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="1" time="0.020749"/>
+        <testcase name="To html method returns rendered as html string" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::To html method returns rendered as html string" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="2" time="0.021452"/>
+        <testcase name="Parse method parses a file using the markdown file service" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::Parse method parses a file using the markdown file service" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="3" time="0.020535"/>
+        <testcase name="To array method returns array markdown body lines" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::To array method returns array markdown body lines" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="1" time="0.021919"/>
+        <testcase name="From file method returns new markdown document" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::From file method returns new markdown document" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="2" time="0.020291"/>
+        <testcase name="Carriage returns are normalized" file="Markdown Document (Hyde\Framework\Testing\Unit\MarkdownDocument)::Carriage returns are normalized" class="Hyde\Framework\Testing\Unit\MarkdownDocumentTest" classname="Hyde.Framework.Testing.Unit.MarkdownDocumentTest" assertions="3" time="0.019898"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\MarkdownFacadeTest" file="Markdown Facade (Hyde\Framework\Testing\Unit\MarkdownFacade)" tests="1" assertions="2" errors="0" failures="0" skipped="0" time="0.016094">
+        <testcase name="Render" file="Markdown Facade (Hyde\Framework\Testing\Unit\MarkdownFacade)::Render" class="Hyde\Framework\Testing\Unit\MarkdownFacadeTest" classname="Hyde.Framework.Testing.Unit.MarkdownFacadeTest" assertions="2" time="0.016094"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\MediaDirectoryCanBeChangedTest" file="Media Directory Can Be Changed (Hyde\Framework\Testing\Unit\MediaDirectoryCanBeChanged)" tests="3" assertions="9" errors="0" failures="0" skipped="0" time="0.108243">
+        <testcase name="Media output directory can be changed for site builds" file="Media Directory Can Be Changed (Hyde\Framework\Testing\Unit\MediaDirectoryCanBeChanged)::Media output directory can be changed for site builds" class="Hyde\Framework\Testing\Unit\MediaDirectoryCanBeChangedTest" classname="Hyde.Framework.Testing.Unit.MediaDirectoryCanBeChangedTest" assertions="3" time="0.039524"/>
+        <testcase name="Media output directory can be changed for site rebuilds" file="Media Directory Can Be Changed (Hyde\Framework\Testing\Unit\MediaDirectoryCanBeChanged)::Media output directory can be changed for site rebuilds" class="Hyde\Framework\Testing\Unit\MediaDirectoryCanBeChangedTest" classname="Hyde.Framework.Testing.Unit.MediaDirectoryCanBeChangedTest" assertions="3" time="0.029751"/>
+        <testcase name="Compiled pages have links to the right media file location" file="Media Directory Can Be Changed (Hyde\Framework\Testing\Unit\MediaDirectoryCanBeChanged)::Compiled pages have links to the right media file location" class="Hyde\Framework\Testing\Unit\MediaDirectoryCanBeChangedTest" classname="Hyde.Framework.Testing.Unit.MediaDirectoryCanBeChangedTest" assertions="3" time="0.038968"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)" tests="34" assertions="34" errors="0" failures="0" skipped="0" time="0.142860">
+        <testcase name="Is current" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.009623"/>
+        <testcase name="Is current when current" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004483"/>
+        <testcase name="Is current using current route" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current using current route" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004198"/>
+        <testcase name="Is current using current link" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current using current link" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003973"/>
+        <testcase name="Is current when not current" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when not current" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004518"/>
+        <testcase name="Is current using not current route" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current using not current route" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004186"/>
+        <testcase name="Is current using not current link" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current using not current link" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003983"/>
+        <testcase name="Is current with nested current page" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004420"/>
+        <testcase name="Is current when current with nested current page" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current with nested current page" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004355"/>
+        <testcase name="Is current with nested current page when nested" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when nested" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004566"/>
+        <testcase name="Is current when current with nested current page when nested" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current with nested current page when nested" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004364"/>
+        <testcase name="Is current with nested current page when very nested" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when very nested" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004373"/>
+        <testcase name="Is current when current with nested current page when very nested" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current with nested current page when very nested" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004399"/>
+        <testcase name="Is current with nested current page when very differing nested" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when very differing nested" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004333"/>
+        <testcase name="Is current with nested current page when very differing nested inverse" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when very differing nested inverse" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.004326"/>
+        <testcase name="Is current using current link with nested current page" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current using current link with nested current page" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003838"/>
+        <testcase name="Is current using not current link with nested current page" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current using not current link with nested current page" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003816"/>
+        <testcase name="Is current when current with nested current page and subject page" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current with nested current page and subject page" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003845"/>
+        <testcase name="Is current when not current with nested current page and subject page" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when not current with nested current page and subject page" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003838"/>
+        <testcase name="Is current with nested current page when nested using link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when nested using link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003815"/>
+        <testcase name="Is current when current with nested current page when nested using link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current with nested current page when nested using link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003810"/>
+        <testcase name="Is current with nested current page when very nested using link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when very nested using link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003777"/>
+        <testcase name="Is current when current with nested current page when very nested using link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current with nested current page when very nested using link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003861"/>
+        <testcase name="Is current with nested current page when very differing nested using link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when very differing nested using link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003789"/>
+        <testcase name="Is current with nested current page when very differing nested inverse using link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when very differing nested inverse using link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003835"/>
+        <testcase name="Is current with nested current page when nested using pretty link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when nested using pretty link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003819"/>
+        <testcase name="Is current when current with nested current page when nested using pretty link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current with nested current page when nested using pretty link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003839"/>
+        <testcase name="Is current with nested current page when very nested using pretty link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when very nested using pretty link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003871"/>
+        <testcase name="Is current when current with nested current page when very nested using pretty link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current with nested current page when very nested using pretty link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003835"/>
+        <testcase name="Is current with nested current page when very differing nested using pretty link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when very differing nested using pretty link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003825"/>
+        <testcase name="Is current with nested current page when very differing nested inverse using pretty link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when very differing nested inverse using pretty link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003867"/>
+        <testcase name="Is current with absolute link" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with absolute link" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003743"/>
+        <testcase name="Is current with nested current page when nested using absolute link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current with nested current page when nested using absolute link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003869"/>
+        <testcase name="Is current when current with nested current page when nested using absolute link item" file="Nav Item Is Current Helper (Hyde\Framework\Testing\Unit\NavItemIsCurrentHelper)::Is current when current with nested current page when nested using absolute link item" class="Hyde\Framework\Testing\Unit\NavItemIsCurrentHelperTest" classname="Hyde.Framework.Testing.Unit.NavItemIsCurrentHelperTest" assertions="1" time="0.003868"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\NavItemTest" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)" tests="20" assertions="32" errors="0" failures="0" skipped="0" time="0.102806">
+        <testcase name="Construct" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Construct" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.035576"/>
+        <testcase name="Get destination" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Get destination" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.003381"/>
+        <testcase name="Get label" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Get label" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.003365"/>
+        <testcase name="Get priority" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Get priority" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.003375"/>
+        <testcase name="Get group" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Get group" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.003557"/>
+        <testcase name="From route" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::From route" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.003389"/>
+        <testcase name="To string" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::To string" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.006292"/>
+        <testcase name="For link" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::For link" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="3" time="0.002255"/>
+        <testcase name="For link with custom priority" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::For link with custom priority" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.002048"/>
+        <testcase name="For route" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::For route" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="3" time="0.002931"/>
+        <testcase name="For index route" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::For index route" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="3" time="0.002847"/>
+        <testcase name="For route with route key" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::For route with route key" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.002890"/>
+        <testcase name="For route with missing route key" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::For route with missing route key" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.002319"/>
+        <testcase name="For route with custom priority" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::For route with custom priority" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.002654"/>
+        <testcase name="Route based nav item destinations are resolved relatively" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Route based nav item destinations are resolved relatively" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="6" time="0.008069"/>
+        <testcase name="Is current" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Is current" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="2" time="0.004876"/>
+        <testcase name="Get group with no group" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Get group with no group" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.003217"/>
+        <testcase name="Get group with group" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Get group with group" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.003195"/>
+        <testcase name="Get group from route with group" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Get group from route with group" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.003268"/>
+        <testcase name="Get group for route with group" file="Nav Item (Hyde\Framework\Testing\Unit\NavItem)::Get group for route with group" class="Hyde\Framework\Testing\Unit\NavItemTest" classname="Hyde.Framework.Testing.Unit.NavItemTest" assertions="1" time="0.003300"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\NavigationDataFactoryUnitTest" file="Navigation Data Factory Unit (Hyde\Framework\Testing\Unit\NavigationDataFactoryUnit)" tests="7" assertions="21" errors="0" failures="0" skipped="0" time="0.052533">
+        <testcase name="Search for priority in navigation config for markdown page with keyed config" file="Navigation Data Factory Unit (Hyde\Framework\Testing\Unit\NavigationDataFactoryUnit)::Search for priority in navigation config for markdown page with keyed config" class="Hyde\Framework\Testing\Unit\NavigationDataFactoryUnitTest" classname="Hyde.Framework.Testing.Unit.NavigationDataFactoryUnitTest" assertions="2" time="0.032608"/>
+        <testcase name="Search for priority in navigation config for markdown page with list config" file="Navigation Data Factory Unit (Hyde\Framework\Testing\Unit\NavigationDataFactoryUnit)::Search for priority in navigation config for markdown page with list config" class="Hyde\Framework\Testing\Unit\NavigationDataFactoryUnitTest" classname="Hyde.Framework.Testing.Unit.NavigationDataFactoryUnitTest" assertions="2" time="0.003041"/>
+        <testcase name="Search for priority in navigation config for markdown page supports mixing keyed and list config" file="Navigation Data Factory Unit (Hyde\Framework\Testing\Unit\NavigationDataFactoryUnit)::Search for priority in navigation config for markdown page supports mixing keyed and list config" class="Hyde\Framework\Testing\Unit\NavigationDataFactoryUnitTest" classname="Hyde.Framework.Testing.Unit.NavigationDataFactoryUnitTest" assertions="4" time="0.003516"/>
+        <testcase name="Search for priority in navigation config for documentation page with list config" file="Navigation Data Factory Unit (Hyde\Framework\Testing\Unit\NavigationDataFactoryUnit)::Search for priority in navigation config for documentation page with list config" class="Hyde\Framework\Testing\Unit\NavigationDataFactoryUnitTest" classname="Hyde.Framework.Testing.Unit.NavigationDataFactoryUnitTest" assertions="2" time="0.003040"/>
+        <testcase name="Search for priority in navigation config for documentation page with keyed config" file="Navigation Data Factory Unit (Hyde\Framework\Testing\Unit\NavigationDataFactoryUnit)::Search for priority in navigation config for documentation page with keyed config" class="Hyde\Framework\Testing\Unit\NavigationDataFactoryUnitTest" classname="Hyde.Framework.Testing.Unit.NavigationDataFactoryUnitTest" assertions="4" time="0.003538"/>
+        <testcase name="Search for priority in navigation config for documentation page supports mixing keyed and list config" file="Navigation Data Factory Unit (Hyde\Framework\Testing\Unit\NavigationDataFactoryUnit)::Search for priority in navigation config for documentation page supports mixing keyed and list config" class="Hyde\Framework\Testing\Unit\NavigationDataFactoryUnitTest" classname="Hyde.Framework.Testing.Unit.NavigationDataFactoryUnitTest" assertions="4" time="0.003551"/>
+        <testcase name="Route keys can be used for documentation sidebar priorities" file="Navigation Data Factory Unit (Hyde\Framework\Testing\Unit\NavigationDataFactoryUnit)::Route keys can be used for documentation sidebar priorities" class="Hyde\Framework\Testing\Unit\NavigationDataFactoryUnitTest" classname="Hyde.Framework.Testing.Unit.NavigationDataFactoryUnitTest" assertions="3" time="0.003238"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)" tests="32" assertions="32" errors="0" failures="0" skipped="0" time="0.148318">
+        <testcase name="Source directory" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Source directory" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.010089"/>
+        <testcase name="Output directory" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Output directory" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.003133"/>
+        <testcase name="Base route key" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Base route key" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.003127"/>
+        <testcase name="File extension" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::File extension" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.003120"/>
+        <testcase name="Source path" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Source path" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.003184"/>
+        <testcase name="Output path" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Output path" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.003202"/>
+        <testcase name="Path" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Path" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.003349"/>
+        <testcase name="Get source path" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Get source path" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004387"/>
+        <testcase name="Get output path" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Get output path" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004210"/>
         <testcase name="Get link" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Get link" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004247"/>
-        <testcase name="Make" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Make" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004664"/>
-        <testcase name="Make with data" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Make with data" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.005141"/>
-        <testcase name="Show in navigation" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Show in navigation" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004030"/>
-        <testcase name="Navigation menu priority" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Navigation menu priority" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004052"/>
-        <testcase name="Navigation menu label" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Navigation menu label" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004255"/>
-        <testcase name="Navigation menu group" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Navigation menu group" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004227"/>
-        <testcase name="Get blade view" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Get blade view" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004216"/>
-        <testcase name="Files" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Files" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.006973"/>
-        <testcase name="Data" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Data" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004231"/>
-        <testcase name="Get" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Get" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.008465"/>
-        <testcase name="Parse" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Parse" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004733"/>
-        <testcase name="Get route key" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Get route key" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004291"/>
-        <testcase name="Title" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Title" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004192"/>
-        <testcase name="All" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::All" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.006680"/>
-        <testcase name="Metadata" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Metadata" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004014"/>
-        <testcase name="Construct" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Construct" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004036"/>
-        <testcase name="Get route" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Get route" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.006867"/>
-        <testcase name="Get identifier" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Get identifier" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004237"/>
-        <testcase name="Has" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Has" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004312"/>
-        <testcase name="To core data object" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::To core data object" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004206"/>
-        <testcase name="Compile" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Compile" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004253"/>
-        <testcase name="Matter" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Matter" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004149"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)" tests="35" assertions="36" errors="0" failures="0" skipped="0" time="0.192780">
-        <testcase name="Source directory" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Source directory" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.033088"/>
-        <testcase name="Output directory" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Output directory" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.003117"/>
-        <testcase name="Base route key" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Base route key" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.003169"/>
-        <testcase name="File extension" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::File extension" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.003142"/>
-        <testcase name="Source path" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Source path" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.003173"/>
-        <testcase name="Output path" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Output path" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.003192"/>
-        <testcase name="Path" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Path" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.003295"/>
-        <testcase name="Get source path" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Get source path" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004553"/>
+        <testcase name="Make" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Make" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004652"/>
+        <testcase name="Make with data" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Make with data" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.005122"/>
+        <testcase name="Show in navigation" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Show in navigation" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004004"/>
+        <testcase name="Navigation menu priority" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Navigation menu priority" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004053"/>
+        <testcase name="Navigation menu label" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Navigation menu label" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004239"/>
+        <testcase name="Navigation menu group" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Navigation menu group" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004284"/>
+        <testcase name="Get blade view" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Get blade view" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004220"/>
+        <testcase name="Files" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Files" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.006966"/>
+        <testcase name="Data" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Data" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004211"/>
+        <testcase name="Get" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Get" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.008390"/>
+        <testcase name="Parse" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Parse" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004745"/>
+        <testcase name="Get route key" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Get route key" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004213"/>
+        <testcase name="Title" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Title" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004194"/>
+        <testcase name="All" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::All" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.006745"/>
+        <testcase name="Metadata" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Metadata" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004054"/>
+        <testcase name="Construct" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Construct" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004037"/>
+        <testcase name="Get route" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Get route" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.006879"/>
+        <testcase name="Get identifier" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Get identifier" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004221"/>
+        <testcase name="Has" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Has" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004251"/>
+        <testcase name="To core data object" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::To core data object" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004305"/>
+        <testcase name="Compile" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Compile" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004283"/>
+        <testcase name="Matter" file="Blade Page Unit (Hyde\Framework\Testing\Unit\Pages\BladePageUnit)::Matter" class="Hyde\Framework\Testing\Unit\Pages\BladePageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.BladePageUnitTest" assertions="1" time="0.004204"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)" tests="35" assertions="36" errors="0" failures="0" skipped="0" time="0.193959">
+        <testcase name="Source directory" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Source directory" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.034476"/>
+        <testcase name="Output directory" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Output directory" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.003128"/>
+        <testcase name="Base route key" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Base route key" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.003118"/>
+        <testcase name="File extension" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::File extension" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.003162"/>
+        <testcase name="Source path" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Source path" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.003235"/>
+        <testcase name="Output path" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Output path" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.003286"/>
+        <testcase name="Path" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Path" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.003283"/>
+        <testcase name="Get source path" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Get source path" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004457"/>
         <testcase name="Get output path" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Get output path" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004277"/>
-        <testcase name="Get link" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Get link" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004317"/>
-        <testcase name="Make" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Make" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004826"/>
-        <testcase name="Make with data" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Make with data" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.005256"/>
-        <testcase name="Show in navigation" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Show in navigation" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004087"/>
-        <testcase name="Navigation menu priority" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Navigation menu priority" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004095"/>
-        <testcase name="Navigation menu label" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Navigation menu label" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004287"/>
-        <testcase name="Navigation menu group" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Navigation menu group" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004265"/>
-        <testcase name="Navigation menu group with data" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Navigation menu group with data" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004159"/>
-        <testcase name="Get blade view" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Get blade view" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004295"/>
+        <testcase name="Get link" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Get link" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004307"/>
+        <testcase name="Make" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Make" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004845"/>
+        <testcase name="Make with data" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Make with data" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.005260"/>
+        <testcase name="Show in navigation" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Show in navigation" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004095"/>
+        <testcase name="Navigation menu priority" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Navigation menu priority" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004155"/>
+        <testcase name="Navigation menu label" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Navigation menu label" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004327"/>
+        <testcase name="Navigation menu group" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Navigation menu group" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004286"/>
+        <testcase name="Navigation menu group with data" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Navigation menu group with data" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004140"/>
+        <testcase name="Get blade view" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Get blade view" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004412"/>
         <testcase name="Files" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Files" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.006920"/>
-        <testcase name="Data" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Data" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004287"/>
-        <testcase name="Get" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Get" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.008830"/>
-        <testcase name="Parse" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Parse" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.005754"/>
-        <testcase name="Get route key" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Get route key" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004448"/>
-        <testcase name="Title" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Title" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004290"/>
-        <testcase name="All" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::All" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.006762"/>
-        <testcase name="Metadata" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Metadata" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004143"/>
-        <testcase name="Construct" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Construct" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004093"/>
-        <testcase name="Get route" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Get route" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.007102"/>
-        <testcase name="Get identifier" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Get identifier" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004336"/>
-        <testcase name="Has" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Has" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004268"/>
-        <testcase name="To core data object" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::To core data object" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004305"/>
-        <testcase name="Compile" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Compile" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.009116"/>
-        <testcase name="Matter" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Matter" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004280"/>
-        <testcase name="Markdown" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Markdown" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004269"/>
-        <testcase name="Save" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Save" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="2" time="0.004985"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Pages\HtmlPageTest" file="Html Page (Hyde\Framework\Testing\Unit\Pages\HtmlPage)" tests="2" assertions="3" errors="0" failures="0" skipped="0" time="0.081462">
-        <testcase name="Html page can be compiled" file="Html Page (Hyde\Framework\Testing\Unit\Pages\HtmlPage)::Html page can be compiled" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageTest" assertions="2" time="0.060217"/>
-        <testcase name="Compile method uses contents" file="Html Page (Hyde\Framework\Testing\Unit\Pages\HtmlPage)::Compile method uses contents" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageTest" assertions="1" time="0.021245"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)" tests="32" assertions="32" errors="0" failures="0" skipped="0" time="0.147018">
-        <testcase name="Source directory" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Source directory" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.006185"/>
-        <testcase name="Output directory" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Output directory" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.003095"/>
-        <testcase name="Base route key" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Base route key" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.003094"/>
-        <testcase name="File extension" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::File extension" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.003106"/>
-        <testcase name="Source path" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Source path" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.003099"/>
-        <testcase name="Output path" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Output path" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.003112"/>
-        <testcase name="Path" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Path" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.003200"/>
-        <testcase name="Get source path" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Get source path" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004105"/>
-        <testcase name="Get output path" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Get output path" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004099"/>
-        <testcase name="Get link" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Get link" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004151"/>
-        <testcase name="Make" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Make" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004588"/>
-        <testcase name="Make with data" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Make with data" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004972"/>
-        <testcase name="Show in navigation" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Show in navigation" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.003969"/>
-        <testcase name="Navigation menu priority" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Navigation menu priority" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.003988"/>
-        <testcase name="Navigation menu label" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Navigation menu label" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004186"/>
-        <testcase name="Navigation menu group" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Navigation menu group" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004167"/>
-        <testcase name="Get blade view" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Get blade view" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004230"/>
-        <testcase name="Files" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Files" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.006878"/>
-        <testcase name="Data" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Data" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004197"/>
-        <testcase name="Get" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Get" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.008323"/>
-        <testcase name="Parse" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Parse" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004890"/>
-        <testcase name="Get route key" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Get route key" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004192"/>
-        <testcase name="Title" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Title" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004160"/>
-        <testcase name="All" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::All" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.006780"/>
-        <testcase name="Metadata" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Metadata" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004062"/>
-        <testcase name="Construct" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Construct" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.003988"/>
-        <testcase name="Get route" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Get route" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.006867"/>
-        <testcase name="Get identifier" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Get identifier" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004182"/>
-        <testcase name="Has" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Has" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004167"/>
-        <testcase name="To core data object" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::To core data object" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004261"/>
-        <testcase name="Compile" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Compile" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.008399"/>
-        <testcase name="Matter" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Matter" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004326"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)" tests="16" assertions="19" errors="0" failures="0" skipped="0" time="0.382058">
-        <testcase name="Construct with contents string" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Construct with contents string" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.055339"/>
-        <testcase name="Make with contents string" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Make with contents string" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="2" time="0.024219"/>
-        <testcase name="Contents method" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Contents method" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.021984"/>
-        <testcase name="View method" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::View method" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.021378"/>
-        <testcase name="Compile method uses contents property" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Compile method uses contents property" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.020625"/>
-        <testcase name="Compile method uses view property" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Compile method uses view property" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.021731"/>
-        <testcase name="Compile method using view compile and front matter" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Compile method using view compile and front matter" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.021965"/>
-        <testcase name="Compile method prefers contents property over view" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Compile method prefers contents property over view" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.021283"/>
-        <testcase name="Compile method can compile anonymous view files" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Compile method can compile anonymous view files" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.022635"/>
-        <testcase name="Compile method can compile anonymous view files with front matter" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Compile method can compile anonymous view files with front matter" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.023314"/>
-        <testcase name="Can create instance macros" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Can create instance macros" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.021018"/>
-        <testcase name="Can create instance macros using callable object" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Can create instance macros using callable object" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.020716"/>
-        <testcase name="Calling macro with arguments" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Calling macro with arguments" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.020822"/>
-        <testcase name="Can use macros to overload class compile method" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Can use macros to overload class compile method" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.021768"/>
-        <testcase name="Calling undefined macro" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Calling undefined macro" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="2" time="0.020950"/>
-        <testcase name="Has macro" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Has macro" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="2" time="0.022311"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)" tests="32" assertions="32" errors="0" failures="0" skipped="0" time="0.170224">
-        <testcase name="Source directory" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Source directory" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.024562"/>
-        <testcase name="Output directory" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Output directory" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.003186"/>
-        <testcase name="Base route key" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Base route key" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.003128"/>
-        <testcase name="File extension" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::File extension" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.003125"/>
-        <testcase name="Source path" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Source path" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.003210"/>
-        <testcase name="Output path" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Output path" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.003192"/>
-        <testcase name="Path" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Path" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.003290"/>
-        <testcase name="Get source path" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Get source path" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004406"/>
-        <testcase name="Get output path" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Get output path" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004275"/>
-        <testcase name="Get link" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Get link" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004301"/>
-        <testcase name="Make" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Make" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.005232"/>
-        <testcase name="Make with data" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Make with data" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.005280"/>
-        <testcase name="Show in navigation" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Show in navigation" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004304"/>
-        <testcase name="Navigation menu priority" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Navigation menu priority" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004300"/>
-        <testcase name="Navigation menu label" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Navigation menu label" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004320"/>
-        <testcase name="Navigation menu group" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Navigation menu group" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004313"/>
-        <testcase name="Get blade view" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Get blade view" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004313"/>
-        <testcase name="Files" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Files" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.007348"/>
-        <testcase name="Data" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Data" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004785"/>
-        <testcase name="Get" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Get" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.007225"/>
-        <testcase name="Parse" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Parse" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.005065"/>
-        <testcase name="Get route key" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Get route key" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004327"/>
-        <testcase name="Title" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Title" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004396"/>
-        <testcase name="All" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::All" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.006711"/>
-        <testcase name="Metadata" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Metadata" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004543"/>
-        <testcase name="Construct" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Construct" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004328"/>
-        <testcase name="Get route" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Get route" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.007169"/>
-        <testcase name="Get identifier" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Get identifier" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004350"/>
-        <testcase name="Has" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Has" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004276"/>
-        <testcase name="To core data object" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::To core data object" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004324"/>
-        <testcase name="Compile" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Compile" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.008373"/>
-        <testcase name="Matter" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Matter" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004268"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Pages\MarkdownPageModelConstructorArgumentsAreOptionalTest" file="Markdown Page Model Constructor Arguments Are Optional (Hyde\Framework\Testing\Unit\Pages\MarkdownPageModelConstructorArgumentsAreOptional)" tests="1" assertions="3" errors="0" failures="0" skipped="0" time="0.071441">
-        <testcase name="Markdown page model constructor arguments are optional" file="Markdown Page Model Constructor Arguments Are Optional (Hyde\Framework\Testing\Unit\Pages\MarkdownPageModelConstructorArgumentsAreOptional)::Markdown page model constructor arguments are optional" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageModelConstructorArgumentsAreOptionalTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageModelConstructorArgumentsAreOptionalTest" assertions="3" time="0.071441"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Pages\MarkdownPageTest" file="Markdown Page (Hyde\Framework\Testing\Unit\Pages\MarkdownPage)" tests="3" assertions="6" errors="0" failures="0" skipped="0" time="0.087520">
-        <testcase name="Can get collection of slugs" file="Markdown Page (Hyde\Framework\Testing\Unit\Pages\MarkdownPage)::Can get collection of slugs" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageTest" assertions="1" time="0.028247"/>
-        <testcase name="Created model contains expected data" file="Markdown Page (Hyde\Framework\Testing\Unit\Pages\MarkdownPage)::Created model contains expected data" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageTest" assertions="3" time="0.022595"/>
-        <testcase name="Can render markdown page" file="Markdown Page (Hyde\Framework\Testing\Unit\Pages\MarkdownPage)::Can render markdown page" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageTest" assertions="2" time="0.036678"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)" tests="34" assertions="35" errors="0" failures="0" skipped="0" time="0.160060">
-        <testcase name="Source directory" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Source directory" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.007756"/>
-        <testcase name="Output directory" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Output directory" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.003134"/>
-        <testcase name="Base route key" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Base route key" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.003146"/>
-        <testcase name="File extension" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::File extension" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.003102"/>
-        <testcase name="Source path" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Source path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.003169"/>
-        <testcase name="Output path" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Output path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.003181"/>
-        <testcase name="Path" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.003270"/>
-        <testcase name="Get source path" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Get source path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004303"/>
-        <testcase name="Get output path" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Get output path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004176"/>
-        <testcase name="Get link" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Get link" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004213"/>
-        <testcase name="Make" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Make" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004747"/>
-        <testcase name="Make with data" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Make with data" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.005118"/>
-        <testcase name="Show in navigation" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Show in navigation" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004096"/>
-        <testcase name="Navigation menu priority" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Navigation menu priority" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004084"/>
-        <testcase name="Navigation menu label" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Navigation menu label" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004240"/>
-        <testcase name="Navigation menu group" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Navigation menu group" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004244"/>
-        <testcase name="Get blade view" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Get blade view" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004195"/>
-        <testcase name="Files" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Files" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.006692"/>
-        <testcase name="Data" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Data" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004230"/>
-        <testcase name="Get" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Get" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.008704"/>
-        <testcase name="Parse" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Parse" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.005138"/>
-        <testcase name="Get route key" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Get route key" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004231"/>
-        <testcase name="Title" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Title" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004210"/>
-        <testcase name="All" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::All" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.006699"/>
-        <testcase name="Metadata" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Metadata" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004047"/>
-        <testcase name="Construct" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Construct" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004030"/>
-        <testcase name="Get route" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Get route" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.006880"/>
-        <testcase name="Get identifier" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Get identifier" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004220"/>
-        <testcase name="Has" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Has" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004255"/>
-        <testcase name="To core data object" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::To core data object" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004227"/>
-        <testcase name="Compile" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Compile" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.008614"/>
-        <testcase name="Matter" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Matter" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004329"/>
-        <testcase name="Markdown" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Markdown" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004269"/>
-        <testcase name="Save" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Save" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="2" time="0.005112"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpersTest" file="Markdown Post Helpers (Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpers)" tests="6" assertions="6" errors="0" failures="0" skipped="0" time="0.170497">
-        <testcase name="Get current page path returns local uri path for post slug" file="Markdown Post Helpers (Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpers)::Get current page path returns local uri path for post slug" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpersTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostHelpersTest" assertions="1" time="0.056012"/>
-        <testcase name="Get canonical link returns canonical uri path for post slug" file="Markdown Post Helpers (Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpers)::Get canonical link returns canonical uri path for post slug" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpersTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostHelpersTest" assertions="1" time="0.022478"/>
-        <testcase name="Get canonical link returns pretty url when enabled" file="Markdown Post Helpers (Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpers)::Get canonical link returns pretty url when enabled" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpersTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostHelpersTest" assertions="1" time="0.023115"/>
-        <testcase name="Get post description returns post description when set in front matter" file="Markdown Post Helpers (Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpers)::Get post description returns post description when set in front matter" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpersTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostHelpersTest" assertions="1" time="0.022839"/>
-        <testcase name="Get post description returns post body when no description set in front matter" file="Markdown Post Helpers (Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpers)::Get post description returns post body when no description set in front matter" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpersTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostHelpersTest" assertions="1" time="0.023087"/>
-        <testcase name="Dynamic description is truncated when longer than 128 characters" file="Markdown Post Helpers (Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpers)::Dynamic description is truncated when longer than 128 characters" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpersTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostHelpersTest" assertions="1" time="0.022965"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Pages\MarkdownPostParserTest" file="Markdown Post Parser (Hyde\Framework\Testing\Unit\Pages\MarkdownPostParser)" tests="2" assertions="11" errors="0" failures="0" skipped="0" time="0.068692">
-        <testcase name="Can parse markdown file" file="Markdown Post Parser (Hyde\Framework\Testing\Unit\Pages\MarkdownPostParser)::Can parse markdown file" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostParserTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostParserTest" assertions="8" time="0.033058"/>
-        <testcase name="Parsed markdown post contains valid front matter" file="Markdown Post Parser (Hyde\Framework\Testing\Unit\Pages\MarkdownPostParser)::Parsed markdown post contains valid front matter" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostParserTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostParserTest" assertions="3" time="0.035634"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)" tests="34" assertions="35" errors="0" failures="0" skipped="0" time="0.170185">
-        <testcase name="Source directory" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Source directory" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.006808"/>
-        <testcase name="Output directory" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Output directory" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.003352"/>
-        <testcase name="Base route key" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Base route key" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.003250"/>
-        <testcase name="File extension" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::File extension" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.003177"/>
-        <testcase name="Source path" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Source path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.003186"/>
-        <testcase name="Output path" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Output path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.003212"/>
-        <testcase name="Path" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.003298"/>
-        <testcase name="Get source path" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Get source path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004600"/>
-        <testcase name="Get output path" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Get output path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004491"/>
-        <testcase name="Get link" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Get link" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004600"/>
-        <testcase name="Make" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Make" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.005482"/>
-        <testcase name="Make with data" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Make with data" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.005865"/>
-        <testcase name="Show in navigation" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Show in navigation" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004451"/>
-        <testcase name="Navigation menu priority" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Navigation menu priority" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004478"/>
-        <testcase name="Navigation menu label" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Navigation menu label" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004553"/>
-        <testcase name="Navigation menu group" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Navigation menu group" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004537"/>
-        <testcase name="Get blade view" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Get blade view" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004535"/>
-        <testcase name="Files" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Files" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.006963"/>
-        <testcase name="Data" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Data" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004552"/>
-        <testcase name="Get" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Get" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.009486"/>
-        <testcase name="Parse" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Parse" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.005475"/>
-        <testcase name="Get route key" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Get route key" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004692"/>
-        <testcase name="Title" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Title" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004556"/>
-        <testcase name="All" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::All" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.006835"/>
-        <testcase name="Metadata" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Metadata" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004485"/>
-        <testcase name="Construct" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Construct" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004558"/>
-        <testcase name="Get route" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Get route" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.007349"/>
-        <testcase name="Get identifier" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Get identifier" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004542"/>
-        <testcase name="Has" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Has" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004514"/>
-        <testcase name="To core data object" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::To core data object" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004585"/>
-        <testcase name="Compile" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Compile" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.009181"/>
-        <testcase name="Matter" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Matter" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004684"/>
-        <testcase name="Markdown" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Markdown" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004537"/>
-        <testcase name="Save" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Save" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="2" time="0.005316"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelperTest" file="Page Model Get All Files Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelper)" tests="4" assertions="12" errors="0" failures="0" skipped="0" time="0.142292">
-        <testcase name="Blade page get helper returns blade page array" file="Page Model Get All Files Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelper)::Blade page get helper returns blade page array" class="Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelGetAllFilesHelperTest" assertions="3" time="0.060424"/>
-        <testcase name="Markdown page get helper returns markdown page array" file="Page Model Get All Files Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelper)::Markdown page get helper returns markdown page array" class="Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelGetAllFilesHelperTest" assertions="3" time="0.026263"/>
-        <testcase name="Markdown post get helper returns markdown post array" file="Page Model Get All Files Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelper)::Markdown post get helper returns markdown post array" class="Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelGetAllFilesHelperTest" assertions="3" time="0.028334"/>
-        <testcase name="Documentation page get helper returns documentation page array" file="Page Model Get All Files Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelper)::Documentation page get helper returns documentation page array" class="Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelGetAllFilesHelperTest" assertions="3" time="0.027270"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Pages\PageModelGetHelperTest" file="Page Model Get Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetHelper)" tests="4" assertions="12" errors="0" failures="0" skipped="0" time="0.107245">
-        <testcase name="Blade page get helper returns blade page collection" file="Page Model Get Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetHelper)::Blade page get helper returns blade page collection" class="Hyde\Framework\Testing\Unit\Pages\PageModelGetHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelGetHelperTest" assertions="3" time="0.031528"/>
-        <testcase name="Markdown page get helper returns markdown page collection" file="Page Model Get Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetHelper)::Markdown page get helper returns markdown page collection" class="Hyde\Framework\Testing\Unit\Pages\PageModelGetHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelGetHelperTest" assertions="3" time="0.025104"/>
-        <testcase name="Markdown post get helper returns markdown post collection" file="Page Model Get Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetHelper)::Markdown post get helper returns markdown post collection" class="Hyde\Framework\Testing\Unit\Pages\PageModelGetHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelGetHelperTest" assertions="3" time="0.025646"/>
-        <testcase name="Documentation page get helper returns documentation page collection" file="Page Model Get Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetHelper)::Documentation page get helper returns documentation page collection" class="Hyde\Framework\Testing\Unit\Pages\PageModelGetHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelGetHelperTest" assertions="3" time="0.024968"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Pages\PageModelParseHelperTest" file="Page Model Parse Helper (Hyde\Framework\Testing\Unit\Pages\PageModelParseHelper)" tests="4" assertions="4" errors="0" failures="0" skipped="0" time="0.092123">
-        <testcase name="Blade page get helper returns blade page object" file="Page Model Parse Helper (Hyde\Framework\Testing\Unit\Pages\PageModelParseHelper)::Blade page get helper returns blade page object" class="Hyde\Framework\Testing\Unit\Pages\PageModelParseHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelParseHelperTest" assertions="1" time="0.027037"/>
-        <testcase name="Markdown page get helper returns markdown page object" file="Page Model Parse Helper (Hyde\Framework\Testing\Unit\Pages\PageModelParseHelper)::Markdown page get helper returns markdown page object" class="Hyde\Framework\Testing\Unit\Pages\PageModelParseHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelParseHelperTest" assertions="1" time="0.021250"/>
-        <testcase name="Markdown post get helper returns markdown post object" file="Page Model Parse Helper (Hyde\Framework\Testing\Unit\Pages\PageModelParseHelper)::Markdown post get helper returns markdown post object" class="Hyde\Framework\Testing\Unit\Pages\PageModelParseHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelParseHelperTest" assertions="1" time="0.022057"/>
-        <testcase name="Documentation page get helper returns documentation page object" file="Page Model Parse Helper (Hyde\Framework\Testing\Unit\Pages\PageModelParseHelper)::Documentation page get helper returns documentation page object" class="Hyde\Framework\Testing\Unit\Pages\PageModelParseHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelParseHelperTest" assertions="1" time="0.021780"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Pages\TestAllPageTypesHaveUnitTestsTest" file="All Page Types Have Unit Tests (Hyde\Framework\Testing\Unit\Pages\AllPageTypesHaveUnitTests)" tests="1" assertions="8" errors="0" failures="0" skipped="0" time="0.026475">
-        <testcase name="All page types have unit tests" file="All Page Types Have Unit Tests (Hyde\Framework\Testing\Unit\Pages\AllPageTypesHaveUnitTests)::All page types have unit tests" class="Hyde\Framework\Testing\Unit\Pages\TestAllPageTypesHaveUnitTestsTest" classname="Hyde.Framework.Testing.Unit.Pages.TestAllPageTypesHaveUnitTestsTest" assertions="8" time="0.026475"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\PostAuthorTest" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)" tests="14" assertions="25" errors="0" failures="0" skipped="0" time="0.031434">
-        <testcase name="Create method creates new author model" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Create method creates new author model" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="1" time="0.003786"/>
-        <testcase name="Create method accepts all parameters" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Create method accepts all parameters" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="3" time="0.002078"/>
-        <testcase name="Get or create method creates new author model from string" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Get or create method creates new author model from string" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="1" time="0.002241"/>
-        <testcase name="Get or create method creates new author model from string can find existing author" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Get or create method creates new author model from string can find existing author" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="1" time="0.002305"/>
-        <testcase name="Get or create method creates new author model from array" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Get or create method creates new author model from array" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="1" time="0.002022"/>
-        <testcase name="Get or create method creates new author model from array only needs username" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Get or create method creates new author model from array only needs username" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="1" time="0.002027"/>
-        <testcase name="All method returns empty collection if no authors are set in config" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::All method returns empty collection if no authors are set in config" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="2" time="0.002129"/>
-        <testcase name="All method returns collection with all authors defined in config" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::All method returns collection with all authors defined in config" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="3" time="0.002354"/>
-        <testcase name="Multiple authors can be defined in config" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Multiple authors can be defined in config" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="4" time="0.002485"/>
-        <testcase name="Get method returns config defined author by username" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Get method returns config defined author by username" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="3" time="0.002301"/>
-        <testcase name="Get method returns new author if username not found in config" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Get method returns new author if username not found in config" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="2" time="0.002175"/>
-        <testcase name="Get name helper returns name if set" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Get name helper returns name if set" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="1" time="0.001864"/>
-        <testcase name="Get name helper returns username if name is not set" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Get name helper returns username if name is not set" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="1" time="0.001843"/>
-        <testcase name="To string helper returns the name" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::To string helper returns the name" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="1" time="0.001822"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\RelativeLinksAcrossPagesRetainsIntegrityTest" file="Relative Links Across Pages Retains Integrity (Hyde\Framework\Testing\Unit\RelativeLinksAcrossPagesRetainsIntegrity)" tests="1" assertions="18" errors="0" failures="0" skipped="0" time="0.184569">
-        <testcase name="Relative links across pages retains integrity" file="Relative Links Across Pages Retains Integrity (Hyde\Framework\Testing\Unit\RelativeLinksAcrossPagesRetainsIntegrity)::Relative links across pages retains integrity" class="Hyde\Framework\Testing\Unit\RelativeLinksAcrossPagesRetainsIntegrityTest" classname="Hyde.Framework.Testing.Unit.RelativeLinksAcrossPagesRetainsIntegrityTest" assertions="18" time="0.184569"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\RouteKeyTest" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)" tests="12" assertions="25" errors="0" failures="0" skipped="0" time="0.027150">
-        <testcase name="Make" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::Make" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="1" time="0.004435"/>
-        <testcase name="Construct" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::Construct" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="1" time="0.001987"/>
-        <testcase name="To string" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::To string" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="1" time="0.001854"/>
-        <testcase name="Get" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::Get" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="1" time="0.001844"/>
-        <testcase name="Cast" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::Cast" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="1" time="0.001802"/>
-        <testcase name="Constructor values are normalized" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::Constructor values are normalized" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="3" time="0.002146"/>
-        <testcase name="Static constructor values are normalized" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::Static constructor values are normalized" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="3" time="0.002164"/>
-        <testcase name="From page" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::From page" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="5" time="0.002453"/>
-        <testcase name="From page with nested identifier" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::From page with nested identifier" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="5" time="0.002458"/>
-        <testcase name="From page with in memory page" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::From page with in memory page" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="2" time="0.002059"/>
-        <testcase name="From page with custom output directory" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::From page with custom output directory" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="1" time="0.001984"/>
-        <testcase name="From page with custom nested output directory" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::From page with custom nested output directory" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="1" time="0.001962"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\RouteNotFoundExceptionTest" file="Route Not Found Exception (Hyde\Framework\Testing\Unit\RouteNotFoundException)" tests="2" assertions="4" errors="0" failures="0" skipped="0" time="0.014669">
-        <testcase name="It can be instantiated" file="Route Not Found Exception (Hyde\Framework\Testing\Unit\RouteNotFoundException)::It can be instantiated" class="Hyde\Framework\Testing\Unit\RouteNotFoundExceptionTest" classname="Hyde.Framework.Testing.Unit.RouteNotFoundExceptionTest" assertions="1" time="0.012349"/>
-        <testcase name="It throws an exception when page type is not supported" file="Route Not Found Exception (Hyde\Framework\Testing\Unit\RouteNotFoundException)::It throws an exception when page type is not supported" class="Hyde\Framework\Testing\Unit\RouteNotFoundExceptionTest" classname="Hyde.Framework.Testing.Unit.RouteNotFoundExceptionTest" assertions="3" time="0.002320"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\RouteTest" file="Route (Hyde\Framework\Testing\Unit\Route)" tests="18" assertions="23" errors="0" failures="0" skipped="0" time="0.070786">
-        <testcase name="Constructor creates route from page model" file="Route (Hyde\Framework\Testing\Unit\Route)::Constructor creates route from page model" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.006177"/>
-        <testcase name="Get page type returns fully qualified class name" file="Route (Hyde\Framework\Testing\Unit\Route)::Get page type returns fully qualified class name" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003382"/>
-        <testcase name="Get source model returns page model" file="Route (Hyde\Framework\Testing\Unit\Route)::Get source model returns page model" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="2" time="0.003388"/>
-        <testcase name="Get route key returns page path" file="Route (Hyde\Framework\Testing\Unit\Route)::Get route key returns page path" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003325"/>
-        <testcase name="Get source file path returns page source path" file="Route (Hyde\Framework\Testing\Unit\Route)::Get source file path returns page source path" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003402"/>
-        <testcase name="Get output file path returns page output path" file="Route (Hyde\Framework\Testing\Unit\Route)::Get output file path returns page output path" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003376"/>
-        <testcase name="Get link returns correct path for root pages" file="Route (Hyde\Framework\Testing\Unit\Route)::Get link returns correct path for root pages" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="2" time="0.003923"/>
-        <testcase name="Get link returns correct path for nested pages" file="Route (Hyde\Framework\Testing\Unit\Route)::Get link returns correct path for nested pages" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="2" time="0.003892"/>
-        <testcase name="Get link returns correct path for nested current page" file="Route (Hyde\Framework\Testing\Unit\Route)::Get link returns correct path for nested current page" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="2" time="0.004228"/>
-        <testcase name="Get link returns pretty url if enabled" file="Route (Hyde\Framework\Testing\Unit\Route)::Get link returns pretty url if enabled" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="2" time="0.003919"/>
-        <testcase name="To string is alias for get link" file="Route (Hyde\Framework\Testing\Unit\Route)::To string is alias for get link" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003718"/>
-        <testcase name="Is with route returns true when true" file="Route (Hyde\Framework\Testing\Unit\Route)::Is with route returns true when true" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003522"/>
-        <testcase name="Is with route returns false when false" file="Route (Hyde\Framework\Testing\Unit\Route)::Is with route returns false when false" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003844"/>
-        <testcase name="Is with route key returns true when true" file="Route (Hyde\Framework\Testing\Unit\Route)::Is with route key returns true when true" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003585"/>
-        <testcase name="Is with route key returns false when false" file="Route (Hyde\Framework\Testing\Unit\Route)::Is with route key returns false when false" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003519"/>
-        <testcase name="Is with route key object returns true when true" file="Route (Hyde\Framework\Testing\Unit\Route)::Is with route key object returns true when true" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003492"/>
-        <testcase name="Is with route key object returns true when false" file="Route (Hyde\Framework\Testing\Unit\Route)::Is with route key object returns true when false" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003518"/>
-        <testcase name="To array method" file="Route (Hyde\Framework\Testing\Unit\Route)::To array method" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.006577"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\SchemaContractsTest" file="Schema Contracts (Hyde\Framework\Testing\Unit\SchemaContracts)" tests="5" assertions="30" errors="0" failures="0" skipped="0" time="0.028276">
-        <testcase name="Schemas are not accidentally changed" file="Schema Contracts (Hyde\Framework\Testing\Unit\SchemaContracts)::Schemas are not accidentally changed" class="Hyde\Framework\Testing\Unit\SchemaContractsTest" classname="Hyde.Framework.Testing.Unit.SchemaContractsTest" assertions="5" time="0.019046"/>
-        <testcase name="All schemas are tested" file="Schema Contracts (Hyde\Framework\Testing\Unit\SchemaContracts)::All schemas are tested" class="Hyde\Framework\Testing\Unit\SchemaContractsTest" classname="Hyde.Framework.Testing.Unit.SchemaContractsTest" assertions="3" time="0.002185"/>
-        <testcase name="All schemas extend front matter schema interface" file="Schema Contracts (Hyde\Framework\Testing\Unit\SchemaContracts)::All schemas extend front matter schema interface" class="Hyde\Framework\Testing\Unit\SchemaContractsTest" classname="Hyde.Framework.Testing.Unit.SchemaContractsTest" assertions="5" time="0.002002"/>
-        <testcase name="All schemas have constant matching their interface name" file="Schema Contracts (Hyde\Framework\Testing\Unit\SchemaContracts)::All schemas have constant matching their interface name" class="Hyde\Framework\Testing\Unit\SchemaContractsTest" classname="Hyde.Framework.Testing.Unit.SchemaContractsTest" assertions="5" time="0.002060"/>
-        <testcase name="Each interface only has one schema" file="Schema Contracts (Hyde\Framework\Testing\Unit\SchemaContracts)::Each interface only has one schema" class="Hyde\Framework\Testing\Unit\SchemaContractsTest" classname="Hyde.Framework.Testing.Unit.SchemaContractsTest" assertions="12" time="0.002983"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\SerializableContractTest" file="Serializable Contract (Hyde\Framework\Testing\Unit\SerializableContract)" tests="4" assertions="4" errors="0" failures="0" skipped="0" time="0.011596">
-        <testcase name="Interface" file="Serializable Contract (Hyde\Framework\Testing\Unit\SerializableContract)::Interface" class="Hyde\Framework\Testing\Unit\SerializableContractTest" classname="Hyde.Framework.Testing.Unit.SerializableContractTest" assertions="1" time="0.006683"/>
-        <testcase name="Interface extends json serializable" file="Serializable Contract (Hyde\Framework\Testing\Unit\SerializableContract)::Interface extends json serializable" class="Hyde\Framework\Testing\Unit\SerializableContractTest" classname="Hyde.Framework.Testing.Unit.SerializableContractTest" assertions="1" time="0.001663"/>
-        <testcase name="Interface extends arrayable" file="Serializable Contract (Hyde\Framework\Testing\Unit\SerializableContract)::Interface extends arrayable" class="Hyde\Framework\Testing\Unit\SerializableContractTest" classname="Hyde.Framework.Testing.Unit.SerializableContractTest" assertions="1" time="0.001643"/>
-        <testcase name="Interface extends jsonable" file="Serializable Contract (Hyde\Framework\Testing\Unit\SerializableContract)::Interface extends jsonable" class="Hyde\Framework\Testing\Unit\SerializableContractTest" classname="Hyde.Framework.Testing.Unit.SerializableContractTest" assertions="1" time="0.001607"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\SerializableTest" file="Serializable (Hyde\Framework\Testing\Unit\Serializable)" tests="8" assertions="8" errors="0" failures="0" skipped="0" time="0.019606">
-        <testcase name="To array" file="Serializable (Hyde\Framework\Testing\Unit\Serializable)::To array" class="Hyde\Framework\Testing\Unit\SerializableTest" classname="Hyde.Framework.Testing.Unit.SerializableTest" assertions="1" time="0.006033"/>
-        <testcase name="Json serialize" file="Serializable (Hyde\Framework\Testing\Unit\Serializable)::Json serialize" class="Hyde\Framework\Testing\Unit\SerializableTest" classname="Hyde.Framework.Testing.Unit.SerializableTest" assertions="1" time="0.001966"/>
-        <testcase name="To json" file="Serializable (Hyde\Framework\Testing\Unit\Serializable)::To json" class="Hyde\Framework\Testing\Unit\SerializableTest" classname="Hyde.Framework.Testing.Unit.SerializableTest" assertions="1" time="0.001866"/>
-        <testcase name="Json encode" file="Serializable (Hyde\Framework\Testing\Unit\Serializable)::Json encode" class="Hyde\Framework\Testing\Unit\SerializableTest" classname="Hyde.Framework.Testing.Unit.SerializableTest" assertions="1" time="0.001882"/>
-        <testcase name="Serialize" file="Serializable (Hyde\Framework\Testing\Unit\Serializable)::Serialize" class="Hyde\Framework\Testing\Unit\SerializableTest" classname="Hyde.Framework.Testing.Unit.SerializableTest" assertions="1" time="0.001915"/>
-        <testcase name="Serialize with arrayable" file="Serializable (Hyde\Framework\Testing\Unit\Serializable)::Serialize with arrayable" class="Hyde\Framework\Testing\Unit\SerializableTest" classname="Hyde.Framework.Testing.Unit.SerializableTest" assertions="1" time="0.001995"/>
-        <testcase name="Json serialize with arrayable" file="Serializable (Hyde\Framework\Testing\Unit\Serializable)::Json serialize with arrayable" class="Hyde\Framework\Testing\Unit\SerializableTest" classname="Hyde.Framework.Testing.Unit.SerializableTest" assertions="1" time="0.002010"/>
-        <testcase name="To json with arrayable" file="Serializable (Hyde\Framework\Testing\Unit\Serializable)::To json with arrayable" class="Hyde\Framework\Testing\Unit\SerializableTest" classname="Hyde.Framework.Testing.Unit.SerializableTest" assertions="1" time="0.001939"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)" tests="22" assertions="41" errors="0" failures="0" skipped="0" time="0.086104">
-        <testcase name="Get host selection" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get host selection" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.010169"/>
-        <testcase name="Get host selection with host option" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get host selection with host option" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002486"/>
-        <testcase name="Get host selection with config option" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get host selection with config option" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002570"/>
-        <testcase name="Get host selection with host option and config option" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get host selection with host option and config option" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002620"/>
-        <testcase name="Get port selection" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get port selection" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002511"/>
-        <testcase name="Get port selection with port option" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get port selection with port option" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002465"/>
-        <testcase name="Get port selection with config option" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get port selection with config option" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002593"/>
-        <testcase name="Get port selection with port option and config option" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get port selection with port option and config option" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002543"/>
-        <testcase name="Get environment variables" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get environment variables" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002585"/>
-        <testcase name="Get environment variables with no ansi option" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get environment variables with no ansi option" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002609"/>
-        <testcase name="Save preview option propagates to environment variables" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Save preview option propagates to environment variables" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="5" time="0.003802"/>
-        <testcase name="Dashboard option propagates to environment variables" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Dashboard option propagates to environment variables" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="5" time="0.003786"/>
-        <testcase name="Pretty urls option propagates to environment variables" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Pretty urls option propagates to environment variables" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="5" time="0.003777"/>
-        <testcase name="Play cdn option propagates to environment variables" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Play cdn option propagates to environment variables" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="5" time="0.003759"/>
-        <testcase name="Parse environment option" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Parse environment option" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="2" time="0.002777"/>
-        <testcase name="Parse environment option with empty string" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Parse environment option with empty string" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002482"/>
-        <testcase name="Parse environment option with null" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Parse environment option with null" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002484"/>
-        <testcase name="Parse environment option with invalid value" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Parse environment option with invalid value" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="2" time="0.003584"/>
-        <testcase name="Check argv for option" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Check argv for option" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="2" time="0.003890"/>
-        <testcase name="With open argument" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::With open argument" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.003012"/>
-        <testcase name="Open in browser" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Open in browser" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.014640"/>
-        <testcase name="Open in browser that fails" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Open in browser that fails" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.004962"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiledTest" file="Source Files In Custom Directories Can Be Compiled (Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiled)" tests="4" assertions="4" errors="0" failures="0" skipped="0" time="0.157478">
-        <testcase name="Markdown posts in changed directory can be compiled" file="Source Files In Custom Directories Can Be Compiled (Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiled)::Markdown posts in changed directory can be compiled" class="Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiledTest" classname="Hyde.Framework.Testing.Unit.SourceFilesInCustomDirectoriesCanBeCompiledTest" assertions="1" time="0.057843"/>
-        <testcase name="Markdown pages in changed directory can be compiled" file="Source Files In Custom Directories Can Be Compiled (Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiled)::Markdown pages in changed directory can be compiled" class="Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiledTest" classname="Hyde.Framework.Testing.Unit.SourceFilesInCustomDirectoriesCanBeCompiledTest" assertions="1" time="0.034757"/>
-        <testcase name="Documentation pages in changed directory can be compiled" file="Source Files In Custom Directories Can Be Compiled (Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiled)::Documentation pages in changed directory can be compiled" class="Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiledTest" classname="Hyde.Framework.Testing.Unit.SourceFilesInCustomDirectoriesCanBeCompiledTest" assertions="1" time="0.039173"/>
-        <testcase name="Blade pages in changed directory can be compiled" file="Source Files In Custom Directories Can Be Compiled (Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiled)::Blade pages in changed directory can be compiled" class="Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiledTest" classname="Hyde.Framework.Testing.Unit.SourceFilesInCustomDirectoriesCanBeCompiledTest" assertions="1" time="0.025706"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\TestBuildStaticSiteCommandFlagToEnablePrettyUrlsTest" file="Build Static Site Command Flag To Enable Pretty Urls (Hyde\Framework\Testing\Unit\BuildStaticSiteCommandFlagToEnablePrettyUrls)" tests="2" assertions="4" errors="0" failures="0" skipped="0" time="0.067218">
-        <testcase name="Pretty urls can be enabled with flag" file="Build Static Site Command Flag To Enable Pretty Urls (Hyde\Framework\Testing\Unit\BuildStaticSiteCommandFlagToEnablePrettyUrls)::Pretty urls can be enabled with flag" class="Hyde\Framework\Testing\Unit\TestBuildStaticSiteCommandFlagToEnablePrettyUrlsTest" classname="Hyde.Framework.Testing.Unit.TestBuildStaticSiteCommandFlagToEnablePrettyUrlsTest" assertions="3" time="0.046073"/>
-        <testcase name="Config change is not persisted" file="Build Static Site Command Flag To Enable Pretty Urls (Hyde\Framework\Testing\Unit\BuildStaticSiteCommandFlagToEnablePrettyUrls)::Config change is not persisted" class="Hyde\Framework\Testing\Unit\TestBuildStaticSiteCommandFlagToEnablePrettyUrlsTest" classname="Hyde.Framework.Testing.Unit.TestBuildStaticSiteCommandFlagToEnablePrettyUrlsTest" assertions="1" time="0.021145"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\TestingSupportHelpersMetaTest" file="ing Support Helpers Meta (Hyde\Framework\Testing\Unit\ingSupportHelpersMeta)" tests="4" assertions="9" errors="0" failures="0" skipped="0" time="0.011872">
-        <testcase name="With pages" file="ing Support Helpers Meta (Hyde\Framework\Testing\Unit\ingSupportHelpersMeta)::With pages" class="Hyde\Framework\Testing\Unit\TestingSupportHelpersMetaTest" classname="Hyde.Framework.Testing.Unit.TestingSupportHelpersMetaTest" assertions="2" time="0.005047"/>
-        <testcase name="With pages replaces existing pages" file="ing Support Helpers Meta (Hyde\Framework\Testing\Unit\ingSupportHelpersMeta)::With pages replaces existing pages" class="Hyde\Framework\Testing\Unit\TestingSupportHelpersMetaTest" classname="Hyde.Framework.Testing.Unit.TestingSupportHelpersMetaTest" assertions="2" time="0.002535"/>
-        <testcase name="With pages replaces existing routes" file="ing Support Helpers Meta (Hyde\Framework\Testing\Unit\ingSupportHelpersMeta)::With pages replaces existing routes" class="Hyde\Framework\Testing\Unit\TestingSupportHelpersMetaTest" classname="Hyde.Framework.Testing.Unit.TestingSupportHelpersMetaTest" assertions="2" time="0.002436"/>
-        <testcase name="With pages when supplying strings" file="ing Support Helpers Meta (Hyde\Framework\Testing\Unit\ingSupportHelpersMeta)::With pages when supplying strings" class="Hyde\Framework\Testing\Unit\TestingSupportHelpersMetaTest" classname="Hyde.Framework.Testing.Unit.TestingSupportHelpersMetaTest" assertions="3" time="0.001854"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\TracksExecutionTimeTest" file="Tracks Execution Time (Hyde\Framework\Testing\Unit\TracksExecutionTime)" tests="4" assertions="10" errors="0" failures="0" skipped="0" time="0.012704">
-        <testcase name="Start clock" file="Tracks Execution Time (Hyde\Framework\Testing\Unit\TracksExecutionTime)::Start clock" class="Hyde\Framework\Testing\Unit\TracksExecutionTimeTest" classname="Hyde.Framework.Testing.Unit.TracksExecutionTimeTest" assertions="4" time="0.006847"/>
-        <testcase name="Stop clock" file="Tracks Execution Time (Hyde\Framework\Testing\Unit\TracksExecutionTime)::Stop clock" class="Hyde\Framework\Testing\Unit\TracksExecutionTimeTest" classname="Hyde.Framework.Testing.Unit.TracksExecutionTimeTest" assertions="2" time="0.001948"/>
-        <testcase name="Get execution time in ms" file="Tracks Execution Time (Hyde\Framework\Testing\Unit\TracksExecutionTime)::Get execution time in ms" class="Hyde\Framework\Testing\Unit\TracksExecutionTimeTest" classname="Hyde.Framework.Testing.Unit.TracksExecutionTimeTest" assertions="2" time="0.001955"/>
-        <testcase name="Get execution time string" file="Tracks Execution Time (Hyde\Framework\Testing\Unit\TracksExecutionTime)::Get execution time string" class="Hyde\Framework\Testing\Unit\TracksExecutionTimeTest" classname="Hyde.Framework.Testing.Unit.TracksExecutionTimeTest" assertions="2" time="0.001955"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\UnixsumTest" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)" tests="10" assertions="13" errors="0" failures="0" skipped="0" time="0.023242">
-        <testcase name="Method returns string" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Method returns string" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="1" time="0.006032"/>
-        <testcase name="Method returns string with length of 32" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Method returns string with length of 32" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="1" time="0.001744"/>
-        <testcase name="Method returns string matching expected format" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Method returns string matching expected format" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="1" time="0.001982"/>
-        <testcase name="Method returns same value for same string using normal method" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Method returns same value for same string using normal method" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="1" time="0.001743"/>
-        <testcase name="Method returns different value for different string" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Method returns different value for different string" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="1" time="0.001846"/>
-        <testcase name="Function is case sensitive" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Function is case sensitive" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="1" time="0.001794"/>
-        <testcase name="Function is space sensitive" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Function is space sensitive" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="1" time="0.001760"/>
-        <testcase name="Method returns same value regardless of end of line sequence" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Method returns same value regardless of end of line sequence" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="4" time="0.002012"/>
-        <testcase name="Method returns same value for string with mixed end of line sequences" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Method returns same value for string with mixed end of line sequences" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="1" time="0.001721"/>
-        <testcase name="Method returns same value when loaded from file using shorthand" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Method returns same value when loaded from file using shorthand" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="1" time="0.002609"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\UnsupportedPageTypeExceptionTest" file="Unsupported Page Type Exception (Hyde\Framework\Testing\Unit\UnsupportedPageTypeException)" tests="2" assertions="3" errors="0" failures="0" skipped="0" time="0.013025">
-        <testcase name="It can be instantiated" file="Unsupported Page Type Exception (Hyde\Framework\Testing\Unit\UnsupportedPageTypeException)::It can be instantiated" class="Hyde\Framework\Testing\Unit\UnsupportedPageTypeExceptionTest" classname="Hyde.Framework.Testing.Unit.UnsupportedPageTypeExceptionTest" assertions="1" time="0.011030"/>
-        <testcase name="It throws an exception when page type is not supported" file="Unsupported Page Type Exception (Hyde\Framework\Testing\Unit\UnsupportedPageTypeException)::It throws an exception when page type is not supported" class="Hyde\Framework\Testing\Unit\UnsupportedPageTypeExceptionTest" classname="Hyde.Framework.Testing.Unit.UnsupportedPageTypeExceptionTest" assertions="2" time="0.001996"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\ValidatesExistenceTest" file="Validates Existence (Hyde\Framework\Testing\Unit\ValidatesExistence)" tests="2" assertions="2" errors="0" failures="0" skipped="0" time="0.043417">
-        <testcase name="Validate existence does nothing if file exists" file="Validates Existence (Hyde\Framework\Testing\Unit\ValidatesExistence)::Validate existence does nothing if file exists" class="Hyde\Framework\Testing\Unit\ValidatesExistenceTest" classname="Hyde.Framework.Testing.Unit.ValidatesExistenceTest" assertions="1" time="0.023444"/>
-        <testcase name="Validate existence throws file not found exception if file does not exist" file="Validates Existence (Hyde\Framework\Testing\Unit\ValidatesExistence)::Validate existence throws file not found exception if file does not exist" class="Hyde\Framework\Testing\Unit\ValidatesExistenceTest" classname="Hyde.Framework.Testing.Unit.ValidatesExistenceTest" assertions="1" time="0.019973"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Views\ArticleExcerptViewTest" file="Article Excerpt View (Hyde\Framework\Testing\Unit\Views\ArticleExcerptView)" tests="5" assertions="10" errors="0" failures="0" skipped="0" time="0.146345">
-        <testcase name="Component can be rendered" file="Article Excerpt View (Hyde\Framework\Testing\Unit\Views\ArticleExcerptView)::Component can be rendered" class="Hyde\Framework\Testing\Unit\Views\ArticleExcerptViewTest" classname="Hyde.Framework.Testing.Unit.Views.ArticleExcerptViewTest" assertions="1" time="0.031354"/>
-        <testcase name="Component renders post data" file="Article Excerpt View (Hyde\Framework\Testing\Unit\Views\ArticleExcerptView)::Component renders post data" class="Hyde\Framework\Testing\Unit\Views\ArticleExcerptViewTest" classname="Hyde.Framework.Testing.Unit.Views.ArticleExcerptViewTest" assertions="5" time="0.029118"/>
-        <testcase name="Component renders post with author object" file="Article Excerpt View (Hyde\Framework\Testing\Unit\Views\ArticleExcerptView)::Component renders post with author object" class="Hyde\Framework\Testing\Unit\Views\ArticleExcerptViewTest" classname="Hyde.Framework.Testing.Unit.Views.ArticleExcerptViewTest" assertions="1" time="0.027786"/>
-        <testcase name="There is no comma after date string when there is no author" file="Article Excerpt View (Hyde\Framework\Testing\Unit\Views\ArticleExcerptView)::There is no comma after date string when there is no author" class="Hyde\Framework\Testing\Unit\Views\ArticleExcerptViewTest" classname="Hyde.Framework.Testing.Unit.Views.ArticleExcerptViewTest" assertions="2" time="0.030051"/>
-        <testcase name="There is a comma after date string when there is a author" file="Article Excerpt View (Hyde\Framework\Testing\Unit\Views\ArticleExcerptView)::There is a comma after date string when there is a author" class="Hyde\Framework\Testing\Unit\Views\ArticleExcerptViewTest" classname="Hyde.Framework.Testing.Unit.Views.ArticleExcerptViewTest" assertions="1" time="0.028036"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentViewTest" file="Breadcrumbs Component View (Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentView)" tests="6" assertions="6" errors="0" failures="0" skipped="0" time="0.174913">
-        <testcase name="Rendered blade view" file="Breadcrumbs Component View (Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentView)::Rendered blade view" class="Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.BreadcrumbsComponentViewTest" assertions="1" time="0.035144"/>
-        <testcase name="Rendered blade view on index page" file="Breadcrumbs Component View (Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentView)::Rendered blade view on index page" class="Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.BreadcrumbsComponentViewTest" assertions="1" time="0.036737"/>
-        <testcase name="Rendered blade view on nested page" file="Breadcrumbs Component View (Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentView)::Rendered blade view on nested page" class="Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.BreadcrumbsComponentViewTest" assertions="1" time="0.026065"/>
-        <testcase name="Rendered blade view on deeply nested page" file="Breadcrumbs Component View (Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentView)::Rendered blade view on deeply nested page" class="Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.BreadcrumbsComponentViewTest" assertions="1" time="0.025809"/>
-        <testcase name="Rendered blade view on nested index page" file="Breadcrumbs Component View (Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentView)::Rendered blade view on nested index page" class="Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.BreadcrumbsComponentViewTest" assertions="1" time="0.025924"/>
-        <testcase name="Rendered blade view with attributes" file="Breadcrumbs Component View (Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentView)::Rendered blade view with attributes" class="Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.BreadcrumbsComponentViewTest" assertions="1" time="0.025234"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)" tests="21" assertions="46" errors="0" failures="0" skipped="0" time="0.533922">
-        <testcase name="The view" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::The view" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="9" time="0.052218"/>
-        <testcase name="Image author attribution string" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Image author attribution string" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="3" time="0.023837"/>
-        <testcase name="Image author attribution string with url" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Image author attribution string with url" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="5" time="0.025397"/>
-        <testcase name="Copyright string" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Copyright string" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="2" time="0.025119"/>
-        <testcase name="Copyright string inverse" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Copyright string inverse" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.023640"/>
-        <testcase name="License string" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::License string" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.022677"/>
-        <testcase name="License string with url" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::License string with url" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.022563"/>
-        <testcase name="License string inverse" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::License string inverse" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="2" time="0.022863"/>
-        <testcase name="License string inverse with url" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::License string inverse with url" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="2" time="0.023970"/>
-        <testcase name="Fluent attribution logic uses rich html tags" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic uses rich html tags" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="7" time="0.023408"/>
-        <testcase name="Fluent attribution logic uses rich html tags" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic uses rich html tags" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="2" time="0.023222"/>
-        <testcase name="Fluent attribution logic uses rich html tags" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic uses rich html tags" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.022659"/>
-        <testcase name="Fluent attribution logic uses rich html tags" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic uses rich html tags" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.022603"/>
-        <testcase name="Fluent attribution logic uses rich html tags" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic uses rich html tags" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="2" time="0.023043"/>
-        <testcase name="Fluent attribution logic creates fluent messages 1" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic creates fluent messages 1" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.022491"/>
-        <testcase name="Fluent attribution logic creates fluent messages 2" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic creates fluent messages 2" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.022698"/>
-        <testcase name="Fluent attribution logic creates fluent messages 3" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic creates fluent messages 3" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.022984"/>
-        <testcase name="Fluent attribution logic creates fluent messages 4" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic creates fluent messages 4" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.022960"/>
-        <testcase name="Fluent attribution logic creates fluent messages 5" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic creates fluent messages 5" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.035096"/>
-        <testcase name="Fluent attribution logic creates fluent messages 6" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic creates fluent messages 6" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.025609"/>
-        <testcase name="Fluent attribution logic creates fluent messages 7" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic creates fluent messages 7" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.024862"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)" tests="9" assertions="9" errors="0" failures="0" skipped="0" time="0.265583">
-        <testcase name="Component can be rendered" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)::Component can be rendered" class="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.HeadComponentViewTest" assertions="1" time="0.055876"/>
-        <testcase name="Title element uses page title" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)::Title element uses page title" class="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.HeadComponentViewTest" assertions="1" time="0.029649"/>
-        <testcase name="Link to favicon is not added when file does not exist" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)::Link to favicon is not added when file does not exist" class="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.HeadComponentViewTest" assertions="1" time="0.028233"/>
-        <testcase name="Link to favicon is added when file exists" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)::Link to favicon is added when file exists" class="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.HeadComponentViewTest" assertions="1" time="0.027304"/>
-        <testcase name="Link to favicon uses relative url" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)::Link to favicon uses relative url" class="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.HeadComponentViewTest" assertions="1" time="0.025660"/>
-        <testcase name="Component includes meta view" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)::Component includes meta view" class="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.HeadComponentViewTest" assertions="1" time="0.028986"/>
-        <testcase name="Component includes styles view" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)::Component includes styles view" class="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.HeadComponentViewTest" assertions="1" time="0.023460"/>
-        <testcase name="Can add head html from config hook" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)::Can add head html from config hook" class="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.HeadComponentViewTest" assertions="1" time="0.023033"/>
-        <testcase name="Can add head html from html include" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)::Can add head html from html include" class="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.HeadComponentViewTest" assertions="1" time="0.023384"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Views\LinkComponentTest" file="Link Component (Hyde\Framework\Testing\Unit\Views\LinkComponent)" tests="3" assertions="3" errors="0" failures="0" skipped="0" time="0.095163">
-        <testcase name="Link component can be rendered" file="Link Component (Hyde\Framework\Testing\Unit\Views\LinkComponent)::Link component can be rendered" class="Hyde\Framework\Testing\Unit\Views\LinkComponentTest" classname="Hyde.Framework.Testing.Unit.Views.LinkComponentTest" assertions="1" time="0.040448"/>
-        <testcase name="Link component can be rendered with route" file="Link Component (Hyde\Framework\Testing\Unit\Views\LinkComponent)::Link component can be rendered with route" class="Hyde\Framework\Testing\Unit\Views\LinkComponentTest" classname="Hyde.Framework.Testing.Unit.Views.LinkComponentTest" assertions="1" time="0.027506"/>
-        <testcase name="Link component can be rendered with route for nested pages" file="Link Component (Hyde\Framework\Testing\Unit\Views\LinkComponent)::Link component can be rendered with route for nested pages" class="Hyde\Framework\Testing\Unit\Views\LinkComponentTest" classname="Hyde.Framework.Testing.Unit.Views.LinkComponentTest" assertions="1" time="0.027210"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Views\NavigationBrandViewTest" file="Navigation Brand View (Hyde\Framework\Testing\Unit\Views\NavigationBrandView)" tests="2" assertions="3" errors="0" failures="0" skipped="0" time="0.059700">
-        <testcase name="Component links to home route" file="Navigation Brand View (Hyde\Framework\Testing\Unit\Views\NavigationBrandView)::Component links to home route" class="Hyde\Framework\Testing\Unit\Views\NavigationBrandViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationBrandViewTest" assertions="1" time="0.031763"/>
-        <testcase name="Component uses site name" file="Navigation Brand View (Hyde\Framework\Testing\Unit\Views\NavigationBrandView)::Component uses site name" class="Hyde\Framework\Testing\Unit\Views\NavigationBrandViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationBrandViewTest" assertions="2" time="0.027937"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Views\NavigationLinkViewTest" file="Navigation Link View (Hyde\Framework\Testing\Unit\Views\NavigationLinkView)" tests="4" assertions="4" errors="0" failures="0" skipped="0" time="0.102009">
-        <testcase name="Component links to route destination" file="Navigation Link View (Hyde\Framework\Testing\Unit\Views\NavigationLinkView)::Component links to route destination" class="Hyde\Framework\Testing\Unit\Views\NavigationLinkViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationLinkViewTest" assertions="1" time="0.026891"/>
-        <testcase name="Component uses title" file="Navigation Link View (Hyde\Framework\Testing\Unit\Views\NavigationLinkView)::Component uses title" class="Hyde\Framework\Testing\Unit\Views\NavigationLinkViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationLinkViewTest" assertions="1" time="0.022271"/>
-        <testcase name="Component is current when current route matches" file="Navigation Link View (Hyde\Framework\Testing\Unit\Views\NavigationLinkView)::Component is current when current route matches" class="Hyde\Framework\Testing\Unit\Views\NavigationLinkViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationLinkViewTest" assertions="1" time="0.026678"/>
-        <testcase name="Component has aria current when current route matches" file="Navigation Link View (Hyde\Framework\Testing\Unit\Views\NavigationLinkView)::Component has aria current when current route matches" class="Hyde\Framework\Testing\Unit\Views\NavigationLinkViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationLinkViewTest" assertions="1" time="0.026170"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)" tests="11" assertions="18" errors="0" failures="0" skipped="0" time="0.376414">
-        <testcase name="Component can be rendered" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Component can be rendered" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="1" time="0.047352"/>
-        <testcase name="Component contains dark mode button" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Component contains dark mode button" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="1" time="0.027935"/>
-        <testcase name="Component contains navigation menu toggle button" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Component contains navigation menu toggle button" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="1" time="0.027461"/>
-        <testcase name="Component contains main navigation links" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Component contains main navigation links" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="1" time="0.027630"/>
-        <testcase name="Component contains index html link" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Component contains index html link" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="1" time="0.027510"/>
-        <testcase name="Component not contains 404 html link" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Component not contains 404 html link" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="1" time="0.028021"/>
-        <testcase name="Navigation menu with root pages" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Navigation menu with root pages" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="2" time="0.035387"/>
-        <testcase name="Navigation menu with dropdown pages" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Navigation menu with dropdown pages" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="4" time="0.039369"/>
-        <testcase name="Navigation menu with dropdown pages with root group page" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Navigation menu with dropdown pages with root group page" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="4" time="0.038157"/>
-        <testcase name="Navigation menu label can be changed in front matter" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Navigation menu label can be changed in front matter" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="1" time="0.039450"/>
-        <testcase name="Navigation menu label can be changed in blade matter" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Navigation menu label can be changed in blade matter" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="1" time="0.038140"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Views\ScriptsComponentViewTest" file="Scripts Component View (Hyde\Framework\Testing\Unit\Views\ScriptsComponentView)" tests="7" assertions="9" errors="0" failures="0" skipped="0" time="0.180957">
-        <testcase name="Component can be rendered" file="Scripts Component View (Hyde\Framework\Testing\Unit\Views\ScriptsComponentView)::Component can be rendered" class="Hyde\Framework\Testing\Unit\Views\ScriptsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.ScriptsComponentViewTest" assertions="1" time="0.039361"/>
-        <testcase name="Component has link to app js file when it exists" file="Scripts Component View (Hyde\Framework\Testing\Unit\Views\ScriptsComponentView)::Component has link to app js file when it exists" class="Hyde\Framework\Testing\Unit\Views\ScriptsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.ScriptsComponentViewTest" assertions="1" time="0.023589"/>
-        <testcase name="Component does not render link to app js when it does not exist" file="Scripts Component View (Hyde\Framework\Testing\Unit\Views\ScriptsComponentView)::Component does not render link to app js when it does not exist" class="Hyde\Framework\Testing\Unit\Views\ScriptsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.ScriptsComponentViewTest" assertions="1" time="0.023478"/>
-        <testcase name="Component uses relative path to app js file for nested pages" file="Scripts Component View (Hyde\Framework\Testing\Unit\Views\ScriptsComponentView)::Component uses relative path to app js file for nested pages" class="Hyde\Framework\Testing\Unit\Views\ScriptsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.ScriptsComponentViewTest" assertions="3" time="0.025676"/>
-        <testcase name="Can add scripts html from config hook" file="Scripts Component View (Hyde\Framework\Testing\Unit\Views\ScriptsComponentView)::Can add scripts html from config hook" class="Hyde\Framework\Testing\Unit\Views\ScriptsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.ScriptsComponentViewTest" assertions="1" time="0.022963"/>
-        <testcase name="Can add scripts html from html include" file="Scripts Component View (Hyde\Framework\Testing\Unit\Views\ScriptsComponentView)::Can add scripts html from html include" class="Hyde\Framework\Testing\Unit\Views\ScriptsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.ScriptsComponentViewTest" assertions="1" time="0.023416"/>
-        <testcase name="Scripts can be pushed to the component scripts stack" file="Scripts Component View (Hyde\Framework\Testing\Unit\Views\ScriptsComponentView)::Scripts can be pushed to the component scripts stack" class="Hyde\Framework\Testing\Unit\Views\ScriptsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.ScriptsComponentViewTest" assertions="1" time="0.022475"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)" tests="9" assertions="11" errors="0" failures="0" skipped="0" time="0.228431">
-        <testcase name="Component can be rendered" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)::Component can be rendered" class="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.StylesComponentViewTest" assertions="1" time="0.032923"/>
-        <testcase name="Component has link to app css file" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)::Component has link to app css file" class="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.StylesComponentViewTest" assertions="1" time="0.023764"/>
-        <testcase name="Component uses relative path to app css file for nested pages" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)::Component uses relative path to app css file for nested pages" class="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.StylesComponentViewTest" assertions="3" time="0.039077"/>
-        <testcase name="Component does not render link to app css when it does not exist" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)::Component does not render link to app css when it does not exist" class="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.StylesComponentViewTest" assertions="1" time="0.023310"/>
-        <testcase name="Styles can be pushed to the component styles stack" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)::Styles can be pushed to the component styles stack" class="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.StylesComponentViewTest" assertions="1" time="0.022042"/>
-        <testcase name="Component renders tailwind play cdn link when enabled in config" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)::Component renders tailwind play cdn link when enabled in config" class="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.StylesComponentViewTest" assertions="1" time="0.022036"/>
-        <testcase name="Component renders app cdn link when enabled in config" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)::Component renders app cdn link when enabled in config" class="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.StylesComponentViewTest" assertions="1" time="0.021397"/>
-        <testcase name="Component does not render link to local app css when cdn link is enabled in config" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)::Component does not render link to local app css when cdn link is enabled in config" class="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.StylesComponentViewTest" assertions="1" time="0.021816"/>
-        <testcase name="Component does not render cdn link when a local file exists" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)::Component does not render cdn link when a local file exists" class="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.StylesComponentViewTest" assertions="1" time="0.022066"/>
+        <testcase name="Data" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Data" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004266"/>
+        <testcase name="Get" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Get" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.008810"/>
+        <testcase name="Parse" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Parse" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.005200"/>
+        <testcase name="Get route key" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Get route key" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004293"/>
+        <testcase name="Title" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Title" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004377"/>
+        <testcase name="All" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::All" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.006635"/>
+        <testcase name="Metadata" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Metadata" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004120"/>
+        <testcase name="Construct" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Construct" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004179"/>
+        <testcase name="Get route" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Get route" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.006966"/>
+        <testcase name="Get identifier" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Get identifier" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004330"/>
+        <testcase name="Has" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Has" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004321"/>
+        <testcase name="To core data object" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::To core data object" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004347"/>
+        <testcase name="Compile" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Compile" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.009282"/>
+        <testcase name="Matter" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Matter" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004294"/>
+        <testcase name="Markdown" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Markdown" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="1" time="0.004328"/>
+        <testcase name="Save" file="Documentation Page Unit (Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnit)::Save" class="Hyde\Framework\Testing\Unit\Pages\DocumentationPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.DocumentationPageUnitTest" assertions="2" time="0.005044"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Pages\HtmlPageTest" file="Html Page (Hyde\Framework\Testing\Unit\Pages\HtmlPage)" tests="2" assertions="3" errors="0" failures="0" skipped="0" time="0.082400">
+        <testcase name="Html page can be compiled" file="Html Page (Hyde\Framework\Testing\Unit\Pages\HtmlPage)::Html page can be compiled" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageTest" assertions="2" time="0.060576"/>
+        <testcase name="Compile method uses contents" file="Html Page (Hyde\Framework\Testing\Unit\Pages\HtmlPage)::Compile method uses contents" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageTest" assertions="1" time="0.021825"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)" tests="32" assertions="32" errors="0" failures="0" skipped="0" time="0.147723">
+        <testcase name="Source directory" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Source directory" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.006428"/>
+        <testcase name="Output directory" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Output directory" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.003131"/>
+        <testcase name="Base route key" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Base route key" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.003123"/>
+        <testcase name="File extension" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::File extension" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.003120"/>
+        <testcase name="Source path" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Source path" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.003136"/>
+        <testcase name="Output path" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Output path" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.003170"/>
+        <testcase name="Path" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Path" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.003257"/>
+        <testcase name="Get source path" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Get source path" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004190"/>
+        <testcase name="Get output path" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Get output path" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004140"/>
+        <testcase name="Get link" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Get link" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004217"/>
+        <testcase name="Make" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Make" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004643"/>
+        <testcase name="Make with data" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Make with data" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.005043"/>
+        <testcase name="Show in navigation" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Show in navigation" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004006"/>
+        <testcase name="Navigation menu priority" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Navigation menu priority" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004068"/>
+        <testcase name="Navigation menu label" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Navigation menu label" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004201"/>
+        <testcase name="Navigation menu group" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Navigation menu group" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004329"/>
+        <testcase name="Get blade view" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Get blade view" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004229"/>
+        <testcase name="Files" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Files" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.006884"/>
+        <testcase name="Data" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Data" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004215"/>
+        <testcase name="Get" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Get" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.008286"/>
+        <testcase name="Parse" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Parse" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004867"/>
+        <testcase name="Get route key" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Get route key" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004186"/>
+        <testcase name="Title" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Title" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004170"/>
+        <testcase name="All" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::All" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.006634"/>
+        <testcase name="Metadata" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Metadata" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004024"/>
+        <testcase name="Construct" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Construct" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004044"/>
+        <testcase name="Get route" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Get route" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.006927"/>
+        <testcase name="Get identifier" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Get identifier" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004195"/>
+        <testcase name="Has" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Has" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004223"/>
+        <testcase name="To core data object" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::To core data object" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004235"/>
+        <testcase name="Compile" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Compile" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.008133"/>
+        <testcase name="Matter" file="Html Page Unit (Hyde\Framework\Testing\Unit\Pages\HtmlPageUnit)::Matter" class="Hyde\Framework\Testing\Unit\Pages\HtmlPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.HtmlPageUnitTest" assertions="1" time="0.004271"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)" tests="16" assertions="19" errors="0" failures="0" skipped="0" time="0.375084">
+        <testcase name="Construct with contents string" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Construct with contents string" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.053792"/>
+        <testcase name="Make with contents string" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Make with contents string" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="2" time="0.022098"/>
+        <testcase name="Contents method" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Contents method" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.020439"/>
+        <testcase name="View method" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::View method" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.020456"/>
+        <testcase name="Compile method uses contents property" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Compile method uses contents property" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.020549"/>
+        <testcase name="Compile method uses view property" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Compile method uses view property" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.021841"/>
+        <testcase name="Compile method using view compile and front matter" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Compile method using view compile and front matter" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.022092"/>
+        <testcase name="Compile method prefers contents property over view" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Compile method prefers contents property over view" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.021471"/>
+        <testcase name="Compile method can compile anonymous view files" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Compile method can compile anonymous view files" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.023351"/>
+        <testcase name="Compile method can compile anonymous view files with front matter" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Compile method can compile anonymous view files with front matter" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.023076"/>
+        <testcase name="Can create instance macros" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Can create instance macros" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.020869"/>
+        <testcase name="Can create instance macros using callable object" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Can create instance macros using callable object" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.020862"/>
+        <testcase name="Calling macro with arguments" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Calling macro with arguments" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.021307"/>
+        <testcase name="Can use macros to overload class compile method" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Can use macros to overload class compile method" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="1" time="0.021012"/>
+        <testcase name="Calling undefined macro" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Calling undefined macro" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="2" time="0.020989"/>
+        <testcase name="Has macro" file="In Memory Page (Hyde\Framework\Testing\Unit\Pages\InMemoryPage)::Has macro" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageTest" assertions="2" time="0.020881"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)" tests="32" assertions="32" errors="0" failures="0" skipped="0" time="0.168973">
+        <testcase name="Source directory" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Source directory" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.025537"/>
+        <testcase name="Output directory" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Output directory" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.003163"/>
+        <testcase name="Base route key" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Base route key" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.003132"/>
+        <testcase name="File extension" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::File extension" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.003144"/>
+        <testcase name="Source path" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Source path" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.003197"/>
+        <testcase name="Output path" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Output path" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.003182"/>
+        <testcase name="Path" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Path" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.003282"/>
+        <testcase name="Get source path" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Get source path" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004407"/>
+        <testcase name="Get output path" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Get output path" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004434"/>
+        <testcase name="Get link" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Get link" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004328"/>
+        <testcase name="Make" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Make" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.005182"/>
+        <testcase name="Make with data" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Make with data" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.005306"/>
+        <testcase name="Show in navigation" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Show in navigation" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004281"/>
+        <testcase name="Navigation menu priority" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Navigation menu priority" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004278"/>
+        <testcase name="Navigation menu label" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Navigation menu label" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004271"/>
+        <testcase name="Navigation menu group" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Navigation menu group" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004294"/>
+        <testcase name="Get blade view" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Get blade view" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004263"/>
+        <testcase name="Files" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Files" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.006916"/>
+        <testcase name="Data" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Data" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004276"/>
+        <testcase name="Get" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Get" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.007011"/>
+        <testcase name="Parse" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Parse" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.005002"/>
+        <testcase name="Get route key" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Get route key" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004257"/>
+        <testcase name="Title" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Title" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004271"/>
+        <testcase name="All" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::All" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.006736"/>
+        <testcase name="Metadata" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Metadata" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004276"/>
+        <testcase name="Construct" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Construct" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004251"/>
+        <testcase name="Get route" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Get route" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.007059"/>
+        <testcase name="Get identifier" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Get identifier" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004294"/>
+        <testcase name="Has" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Has" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004265"/>
+        <testcase name="To core data object" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::To core data object" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004305"/>
+        <testcase name="Compile" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Compile" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.008089"/>
+        <testcase name="Matter" file="In Memory Page Unit (Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnit)::Matter" class="Hyde\Framework\Testing\Unit\Pages\InMemoryPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.InMemoryPageUnitTest" assertions="1" time="0.004285"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Pages\MarkdownPageModelConstructorArgumentsAreOptionalTest" file="Markdown Page Model Constructor Arguments Are Optional (Hyde\Framework\Testing\Unit\Pages\MarkdownPageModelConstructorArgumentsAreOptional)" tests="1" assertions="3" errors="0" failures="0" skipped="0" time="0.065349">
+        <testcase name="Markdown page model constructor arguments are optional" file="Markdown Page Model Constructor Arguments Are Optional (Hyde\Framework\Testing\Unit\Pages\MarkdownPageModelConstructorArgumentsAreOptional)::Markdown page model constructor arguments are optional" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageModelConstructorArgumentsAreOptionalTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageModelConstructorArgumentsAreOptionalTest" assertions="3" time="0.065349"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Pages\MarkdownPageTest" file="Markdown Page (Hyde\Framework\Testing\Unit\Pages\MarkdownPage)" tests="3" assertions="6" errors="0" failures="0" skipped="0" time="0.084061">
+        <testcase name="Can get collection of slugs" file="Markdown Page (Hyde\Framework\Testing\Unit\Pages\MarkdownPage)::Can get collection of slugs" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageTest" assertions="1" time="0.026682"/>
+        <testcase name="Created model contains expected data" file="Markdown Page (Hyde\Framework\Testing\Unit\Pages\MarkdownPage)::Created model contains expected data" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageTest" assertions="3" time="0.021797"/>
+        <testcase name="Can render markdown page" file="Markdown Page (Hyde\Framework\Testing\Unit\Pages\MarkdownPage)::Can render markdown page" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageTest" assertions="2" time="0.035582"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)" tests="34" assertions="35" errors="0" failures="0" skipped="0" time="0.162064">
+        <testcase name="Source directory" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Source directory" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.007736"/>
+        <testcase name="Output directory" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Output directory" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.003194"/>
+        <testcase name="Base route key" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Base route key" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.003199"/>
+        <testcase name="File extension" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::File extension" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.003174"/>
+        <testcase name="Source path" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Source path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.003537"/>
+        <testcase name="Output path" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Output path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.003319"/>
+        <testcase name="Path" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.003371"/>
+        <testcase name="Get source path" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Get source path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004298"/>
+        <testcase name="Get output path" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Get output path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004297"/>
+        <testcase name="Get link" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Get link" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004308"/>
+        <testcase name="Make" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Make" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004786"/>
+        <testcase name="Make with data" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Make with data" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.005149"/>
+        <testcase name="Show in navigation" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Show in navigation" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004091"/>
+        <testcase name="Navigation menu priority" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Navigation menu priority" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004102"/>
+        <testcase name="Navigation menu label" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Navigation menu label" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004286"/>
+        <testcase name="Navigation menu group" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Navigation menu group" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004451"/>
+        <testcase name="Get blade view" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Get blade view" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004245"/>
+        <testcase name="Files" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Files" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.006723"/>
+        <testcase name="Data" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Data" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004267"/>
+        <testcase name="Get" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Get" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.008707"/>
+        <testcase name="Parse" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Parse" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.005215"/>
+        <testcase name="Get route key" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Get route key" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004304"/>
+        <testcase name="Title" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Title" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004294"/>
+        <testcase name="All" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::All" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.006728"/>
+        <testcase name="Metadata" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Metadata" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004124"/>
+        <testcase name="Construct" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Construct" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004126"/>
+        <testcase name="Get route" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Get route" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.006956"/>
+        <testcase name="Get identifier" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Get identifier" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004300"/>
+        <testcase name="Has" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Has" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004259"/>
+        <testcase name="To core data object" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::To core data object" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004315"/>
+        <testcase name="Compile" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Compile" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.008653"/>
+        <testcase name="Matter" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Matter" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004321"/>
+        <testcase name="Markdown" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Markdown" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="1" time="0.004258"/>
+        <testcase name="Save" file="Markdown Page Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnit)::Save" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPageUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPageUnitTest" assertions="2" time="0.004971"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpersTest" file="Markdown Post Helpers (Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpers)" tests="6" assertions="6" errors="0" failures="0" skipped="0" time="0.160289">
+        <testcase name="Get current page path returns local uri path for post slug" file="Markdown Post Helpers (Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpers)::Get current page path returns local uri path for post slug" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpersTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostHelpersTest" assertions="1" time="0.054547"/>
+        <testcase name="Get canonical link returns canonical uri path for post slug" file="Markdown Post Helpers (Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpers)::Get canonical link returns canonical uri path for post slug" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpersTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostHelpersTest" assertions="1" time="0.021235"/>
+        <testcase name="Get canonical link returns pretty url when enabled" file="Markdown Post Helpers (Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpers)::Get canonical link returns pretty url when enabled" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpersTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostHelpersTest" assertions="1" time="0.021228"/>
+        <testcase name="Get post description returns post description when set in front matter" file="Markdown Post Helpers (Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpers)::Get post description returns post description when set in front matter" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpersTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostHelpersTest" assertions="1" time="0.021114"/>
+        <testcase name="Get post description returns post body when no description set in front matter" file="Markdown Post Helpers (Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpers)::Get post description returns post body when no description set in front matter" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpersTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostHelpersTest" assertions="1" time="0.021088"/>
+        <testcase name="Dynamic description is truncated when longer than 128 characters" file="Markdown Post Helpers (Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpers)::Dynamic description is truncated when longer than 128 characters" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostHelpersTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostHelpersTest" assertions="1" time="0.021078"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Pages\MarkdownPostParserTest" file="Markdown Post Parser (Hyde\Framework\Testing\Unit\Pages\MarkdownPostParser)" tests="2" assertions="11" errors="0" failures="0" skipped="0" time="0.064317">
+        <testcase name="Can parse markdown file" file="Markdown Post Parser (Hyde\Framework\Testing\Unit\Pages\MarkdownPostParser)::Can parse markdown file" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostParserTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostParserTest" assertions="8" time="0.031216"/>
+        <testcase name="Parsed markdown post contains valid front matter" file="Markdown Post Parser (Hyde\Framework\Testing\Unit\Pages\MarkdownPostParser)::Parsed markdown post contains valid front matter" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostParserTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostParserTest" assertions="3" time="0.033101"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)" tests="34" assertions="35" errors="0" failures="0" skipped="0" time="0.170734">
+        <testcase name="Source directory" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Source directory" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.006505"/>
+        <testcase name="Output directory" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Output directory" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.003273"/>
+        <testcase name="Base route key" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Base route key" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.003265"/>
+        <testcase name="File extension" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::File extension" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.003283"/>
+        <testcase name="Source path" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Source path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.003309"/>
+        <testcase name="Output path" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Output path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.003275"/>
+        <testcase name="Path" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.003438"/>
+        <testcase name="Get source path" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Get source path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004630"/>
+        <testcase name="Get output path" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Get output path" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004633"/>
+        <testcase name="Get link" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Get link" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004560"/>
+        <testcase name="Make" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Make" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.005519"/>
+        <testcase name="Make with data" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Make with data" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.005831"/>
+        <testcase name="Show in navigation" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Show in navigation" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004456"/>
+        <testcase name="Navigation menu priority" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Navigation menu priority" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004492"/>
+        <testcase name="Navigation menu label" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Navigation menu label" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004579"/>
+        <testcase name="Navigation menu group" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Navigation menu group" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004599"/>
+        <testcase name="Get blade view" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Get blade view" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004590"/>
+        <testcase name="Files" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Files" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.007501"/>
+        <testcase name="Data" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Data" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004618"/>
+        <testcase name="Get" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Get" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.009488"/>
+        <testcase name="Parse" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Parse" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.005479"/>
+        <testcase name="Get route key" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Get route key" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004580"/>
+        <testcase name="Title" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Title" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004530"/>
+        <testcase name="All" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::All" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.006772"/>
+        <testcase name="Metadata" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Metadata" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004505"/>
+        <testcase name="Construct" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Construct" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004490"/>
+        <testcase name="Get route" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Get route" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.007347"/>
+        <testcase name="Get identifier" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Get identifier" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004638"/>
+        <testcase name="Has" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Has" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004539"/>
+        <testcase name="To core data object" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::To core data object" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004598"/>
+        <testcase name="Compile" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Compile" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.008976"/>
+        <testcase name="Matter" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Matter" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004601"/>
+        <testcase name="Markdown" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Markdown" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="1" time="0.004568"/>
+        <testcase name="Save" file="Markdown Post Unit (Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnit)::Save" class="Hyde\Framework\Testing\Unit\Pages\MarkdownPostUnitTest" classname="Hyde.Framework.Testing.Unit.Pages.MarkdownPostUnitTest" assertions="2" time="0.005267"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelperTest" file="Page Model Get All Files Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelper)" tests="4" assertions="12" errors="0" failures="0" skipped="0" time="0.141125">
+        <testcase name="Blade page get helper returns blade page array" file="Page Model Get All Files Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelper)::Blade page get helper returns blade page array" class="Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelGetAllFilesHelperTest" assertions="3" time="0.062376"/>
+        <testcase name="Markdown page get helper returns markdown page array" file="Page Model Get All Files Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelper)::Markdown page get helper returns markdown page array" class="Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelGetAllFilesHelperTest" assertions="3" time="0.026236"/>
+        <testcase name="Markdown post get helper returns markdown post array" file="Page Model Get All Files Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelper)::Markdown post get helper returns markdown post array" class="Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelGetAllFilesHelperTest" assertions="3" time="0.026947"/>
+        <testcase name="Documentation page get helper returns documentation page array" file="Page Model Get All Files Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelper)::Documentation page get helper returns documentation page array" class="Hyde\Framework\Testing\Unit\Pages\PageModelGetAllFilesHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelGetAllFilesHelperTest" assertions="3" time="0.025565"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Pages\PageModelGetHelperTest" file="Page Model Get Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetHelper)" tests="4" assertions="12" errors="0" failures="0" skipped="0" time="0.104694">
+        <testcase name="Blade page get helper returns blade page collection" file="Page Model Get Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetHelper)::Blade page get helper returns blade page collection" class="Hyde\Framework\Testing\Unit\Pages\PageModelGetHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelGetHelperTest" assertions="3" time="0.029477"/>
+        <testcase name="Markdown page get helper returns markdown page collection" file="Page Model Get Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetHelper)::Markdown page get helper returns markdown page collection" class="Hyde\Framework\Testing\Unit\Pages\PageModelGetHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelGetHelperTest" assertions="3" time="0.024716"/>
+        <testcase name="Markdown post get helper returns markdown post collection" file="Page Model Get Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetHelper)::Markdown post get helper returns markdown post collection" class="Hyde\Framework\Testing\Unit\Pages\PageModelGetHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelGetHelperTest" assertions="3" time="0.025517"/>
+        <testcase name="Documentation page get helper returns documentation page collection" file="Page Model Get Helper (Hyde\Framework\Testing\Unit\Pages\PageModelGetHelper)::Documentation page get helper returns documentation page collection" class="Hyde\Framework\Testing\Unit\Pages\PageModelGetHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelGetHelperTest" assertions="3" time="0.024984"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Pages\PageModelParseHelperTest" file="Page Model Parse Helper (Hyde\Framework\Testing\Unit\Pages\PageModelParseHelper)" tests="4" assertions="4" errors="0" failures="0" skipped="0" time="0.093157">
+        <testcase name="Blade page get helper returns blade page object" file="Page Model Parse Helper (Hyde\Framework\Testing\Unit\Pages\PageModelParseHelper)::Blade page get helper returns blade page object" class="Hyde\Framework\Testing\Unit\Pages\PageModelParseHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelParseHelperTest" assertions="1" time="0.027251"/>
+        <testcase name="Markdown page get helper returns markdown page object" file="Page Model Parse Helper (Hyde\Framework\Testing\Unit\Pages\PageModelParseHelper)::Markdown page get helper returns markdown page object" class="Hyde\Framework\Testing\Unit\Pages\PageModelParseHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelParseHelperTest" assertions="1" time="0.021411"/>
+        <testcase name="Markdown post get helper returns markdown post object" file="Page Model Parse Helper (Hyde\Framework\Testing\Unit\Pages\PageModelParseHelper)::Markdown post get helper returns markdown post object" class="Hyde\Framework\Testing\Unit\Pages\PageModelParseHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelParseHelperTest" assertions="1" time="0.022340"/>
+        <testcase name="Documentation page get helper returns documentation page object" file="Page Model Parse Helper (Hyde\Framework\Testing\Unit\Pages\PageModelParseHelper)::Documentation page get helper returns documentation page object" class="Hyde\Framework\Testing\Unit\Pages\PageModelParseHelperTest" classname="Hyde.Framework.Testing.Unit.Pages.PageModelParseHelperTest" assertions="1" time="0.022156"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Pages\TestAllPageTypesHaveUnitTestsTest" file="All Page Types Have Unit Tests (Hyde\Framework\Testing\Unit\Pages\AllPageTypesHaveUnitTests)" tests="1" assertions="8" errors="0" failures="0" skipped="0" time="0.027356">
+        <testcase name="All page types have unit tests" file="All Page Types Have Unit Tests (Hyde\Framework\Testing\Unit\Pages\AllPageTypesHaveUnitTests)::All page types have unit tests" class="Hyde\Framework\Testing\Unit\Pages\TestAllPageTypesHaveUnitTestsTest" classname="Hyde.Framework.Testing.Unit.Pages.TestAllPageTypesHaveUnitTestsTest" assertions="8" time="0.027356"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\PostAuthorTest" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)" tests="14" assertions="25" errors="0" failures="0" skipped="0" time="0.031651">
+        <testcase name="Create method creates new author model" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Create method creates new author model" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="1" time="0.003826"/>
+        <testcase name="Create method accepts all parameters" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Create method accepts all parameters" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="3" time="0.002114"/>
+        <testcase name="Get or create method creates new author model from string" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Get or create method creates new author model from string" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="1" time="0.002276"/>
+        <testcase name="Get or create method creates new author model from string can find existing author" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Get or create method creates new author model from string can find existing author" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="1" time="0.002292"/>
+        <testcase name="Get or create method creates new author model from array" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Get or create method creates new author model from array" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="1" time="0.002033"/>
+        <testcase name="Get or create method creates new author model from array only needs username" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Get or create method creates new author model from array only needs username" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="1" time="0.002045"/>
+        <testcase name="All method returns empty collection if no authors are set in config" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::All method returns empty collection if no authors are set in config" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="2" time="0.002124"/>
+        <testcase name="All method returns collection with all authors defined in config" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::All method returns collection with all authors defined in config" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="3" time="0.002324"/>
+        <testcase name="Multiple authors can be defined in config" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Multiple authors can be defined in config" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="4" time="0.002492"/>
+        <testcase name="Get method returns config defined author by username" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Get method returns config defined author by username" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="3" time="0.002312"/>
+        <testcase name="Get method returns new author if username not found in config" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Get method returns new author if username not found in config" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="2" time="0.002186"/>
+        <testcase name="Get name helper returns name if set" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Get name helper returns name if set" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="1" time="0.001917"/>
+        <testcase name="Get name helper returns username if name is not set" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::Get name helper returns username if name is not set" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="1" time="0.001875"/>
+        <testcase name="To string helper returns the name" file="Post Author (Hyde\Framework\Testing\Unit\PostAuthor)::To string helper returns the name" class="Hyde\Framework\Testing\Unit\PostAuthorTest" classname="Hyde.Framework.Testing.Unit.PostAuthorTest" assertions="1" time="0.001833"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\RelativeLinksAcrossPagesRetainsIntegrityTest" file="Relative Links Across Pages Retains Integrity (Hyde\Framework\Testing\Unit\RelativeLinksAcrossPagesRetainsIntegrity)" tests="1" assertions="18" errors="0" failures="0" skipped="0" time="0.185050">
+        <testcase name="Relative links across pages retains integrity" file="Relative Links Across Pages Retains Integrity (Hyde\Framework\Testing\Unit\RelativeLinksAcrossPagesRetainsIntegrity)::Relative links across pages retains integrity" class="Hyde\Framework\Testing\Unit\RelativeLinksAcrossPagesRetainsIntegrityTest" classname="Hyde.Framework.Testing.Unit.RelativeLinksAcrossPagesRetainsIntegrityTest" assertions="18" time="0.185050"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\RouteKeyTest" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)" tests="12" assertions="25" errors="0" failures="0" skipped="0" time="0.026482">
+        <testcase name="Make" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::Make" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="1" time="0.003916"/>
+        <testcase name="Construct" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::Construct" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="1" time="0.001834"/>
+        <testcase name="To string" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::To string" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="1" time="0.001846"/>
+        <testcase name="Get" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::Get" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="1" time="0.001835"/>
+        <testcase name="Cast" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::Cast" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="1" time="0.001787"/>
+        <testcase name="Constructor values are normalized" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::Constructor values are normalized" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="3" time="0.002127"/>
+        <testcase name="Static constructor values are normalized" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::Static constructor values are normalized" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="3" time="0.002167"/>
+        <testcase name="From page" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::From page" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="5" time="0.002495"/>
+        <testcase name="From page with nested identifier" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::From page with nested identifier" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="5" time="0.002449"/>
+        <testcase name="From page with in memory page" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::From page with in memory page" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="2" time="0.002074"/>
+        <testcase name="From page with custom output directory" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::From page with custom output directory" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="1" time="0.001955"/>
+        <testcase name="From page with custom nested output directory" file="Route Key (Hyde\Framework\Testing\Unit\RouteKey)::From page with custom nested output directory" class="Hyde\Framework\Testing\Unit\RouteKeyTest" classname="Hyde.Framework.Testing.Unit.RouteKeyTest" assertions="1" time="0.001996"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\RouteNotFoundExceptionTest" file="Route Not Found Exception (Hyde\Framework\Testing\Unit\RouteNotFoundException)" tests="2" assertions="4" errors="0" failures="0" skipped="0" time="0.014021">
+        <testcase name="It can be instantiated" file="Route Not Found Exception (Hyde\Framework\Testing\Unit\RouteNotFoundException)::It can be instantiated" class="Hyde\Framework\Testing\Unit\RouteNotFoundExceptionTest" classname="Hyde.Framework.Testing.Unit.RouteNotFoundExceptionTest" assertions="1" time="0.011740"/>
+        <testcase name="It throws an exception when page type is not supported" file="Route Not Found Exception (Hyde\Framework\Testing\Unit\RouteNotFoundException)::It throws an exception when page type is not supported" class="Hyde\Framework\Testing\Unit\RouteNotFoundExceptionTest" classname="Hyde.Framework.Testing.Unit.RouteNotFoundExceptionTest" assertions="3" time="0.002281"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\RouteTest" file="Route (Hyde\Framework\Testing\Unit\Route)" tests="18" assertions="23" errors="0" failures="0" skipped="0" time="0.070109">
+        <testcase name="Constructor creates route from page model" file="Route (Hyde\Framework\Testing\Unit\Route)::Constructor creates route from page model" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.005905"/>
+        <testcase name="Get page type returns fully qualified class name" file="Route (Hyde\Framework\Testing\Unit\Route)::Get page type returns fully qualified class name" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003315"/>
+        <testcase name="Get source model returns page model" file="Route (Hyde\Framework\Testing\Unit\Route)::Get source model returns page model" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="2" time="0.003385"/>
+        <testcase name="Get route key returns page path" file="Route (Hyde\Framework\Testing\Unit\Route)::Get route key returns page path" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003290"/>
+        <testcase name="Get source file path returns page source path" file="Route (Hyde\Framework\Testing\Unit\Route)::Get source file path returns page source path" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003343"/>
+        <testcase name="Get output file path returns page output path" file="Route (Hyde\Framework\Testing\Unit\Route)::Get output file path returns page output path" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003363"/>
+        <testcase name="Get link returns correct path for root pages" file="Route (Hyde\Framework\Testing\Unit\Route)::Get link returns correct path for root pages" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="2" time="0.003880"/>
+        <testcase name="Get link returns correct path for nested pages" file="Route (Hyde\Framework\Testing\Unit\Route)::Get link returns correct path for nested pages" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="2" time="0.003877"/>
+        <testcase name="Get link returns correct path for nested current page" file="Route (Hyde\Framework\Testing\Unit\Route)::Get link returns correct path for nested current page" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="2" time="0.004240"/>
+        <testcase name="Get link returns pretty url if enabled" file="Route (Hyde\Framework\Testing\Unit\Route)::Get link returns pretty url if enabled" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="2" time="0.003922"/>
+        <testcase name="To string is alias for get link" file="Route (Hyde\Framework\Testing\Unit\Route)::To string is alias for get link" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003698"/>
+        <testcase name="Is with route returns true when true" file="Route (Hyde\Framework\Testing\Unit\Route)::Is with route returns true when true" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003490"/>
+        <testcase name="Is with route returns false when false" file="Route (Hyde\Framework\Testing\Unit\Route)::Is with route returns false when false" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003848"/>
+        <testcase name="Is with route key returns true when true" file="Route (Hyde\Framework\Testing\Unit\Route)::Is with route key returns true when true" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003497"/>
+        <testcase name="Is with route key returns false when false" file="Route (Hyde\Framework\Testing\Unit\Route)::Is with route key returns false when false" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003514"/>
+        <testcase name="Is with route key object returns true when true" file="Route (Hyde\Framework\Testing\Unit\Route)::Is with route key object returns true when true" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003534"/>
+        <testcase name="Is with route key object returns true when false" file="Route (Hyde\Framework\Testing\Unit\Route)::Is with route key object returns true when false" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.003544"/>
+        <testcase name="To array method" file="Route (Hyde\Framework\Testing\Unit\Route)::To array method" class="Hyde\Framework\Testing\Unit\RouteTest" classname="Hyde.Framework.Testing.Unit.RouteTest" assertions="1" time="0.006462"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\SchemaContractsTest" file="Schema Contracts (Hyde\Framework\Testing\Unit\SchemaContracts)" tests="5" assertions="30" errors="0" failures="0" skipped="0" time="0.027648">
+        <testcase name="Schemas are not accidentally changed" file="Schema Contracts (Hyde\Framework\Testing\Unit\SchemaContracts)::Schemas are not accidentally changed" class="Hyde\Framework\Testing\Unit\SchemaContractsTest" classname="Hyde.Framework.Testing.Unit.SchemaContractsTest" assertions="5" time="0.018424"/>
+        <testcase name="All schemas are tested" file="Schema Contracts (Hyde\Framework\Testing\Unit\SchemaContracts)::All schemas are tested" class="Hyde\Framework\Testing\Unit\SchemaContractsTest" classname="Hyde.Framework.Testing.Unit.SchemaContractsTest" assertions="3" time="0.002226"/>
+        <testcase name="All schemas extend front matter schema interface" file="Schema Contracts (Hyde\Framework\Testing\Unit\SchemaContracts)::All schemas extend front matter schema interface" class="Hyde\Framework\Testing\Unit\SchemaContractsTest" classname="Hyde.Framework.Testing.Unit.SchemaContractsTest" assertions="5" time="0.001969"/>
+        <testcase name="All schemas have constant matching their interface name" file="Schema Contracts (Hyde\Framework\Testing\Unit\SchemaContracts)::All schemas have constant matching their interface name" class="Hyde\Framework\Testing\Unit\SchemaContractsTest" classname="Hyde.Framework.Testing.Unit.SchemaContractsTest" assertions="5" time="0.002050"/>
+        <testcase name="Each interface only has one schema" file="Schema Contracts (Hyde\Framework\Testing\Unit\SchemaContracts)::Each interface only has one schema" class="Hyde\Framework\Testing\Unit\SchemaContractsTest" classname="Hyde.Framework.Testing.Unit.SchemaContractsTest" assertions="12" time="0.002978"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\SerializableContractTest" file="Serializable Contract (Hyde\Framework\Testing\Unit\SerializableContract)" tests="4" assertions="4" errors="0" failures="0" skipped="0" time="0.011548">
+        <testcase name="Interface" file="Serializable Contract (Hyde\Framework\Testing\Unit\SerializableContract)::Interface" class="Hyde\Framework\Testing\Unit\SerializableContractTest" classname="Hyde.Framework.Testing.Unit.SerializableContractTest" assertions="1" time="0.006607"/>
+        <testcase name="Interface extends json serializable" file="Serializable Contract (Hyde\Framework\Testing\Unit\SerializableContract)::Interface extends json serializable" class="Hyde\Framework\Testing\Unit\SerializableContractTest" classname="Hyde.Framework.Testing.Unit.SerializableContractTest" assertions="1" time="0.001656"/>
+        <testcase name="Interface extends arrayable" file="Serializable Contract (Hyde\Framework\Testing\Unit\SerializableContract)::Interface extends arrayable" class="Hyde\Framework\Testing\Unit\SerializableContractTest" classname="Hyde.Framework.Testing.Unit.SerializableContractTest" assertions="1" time="0.001638"/>
+        <testcase name="Interface extends jsonable" file="Serializable Contract (Hyde\Framework\Testing\Unit\SerializableContract)::Interface extends jsonable" class="Hyde\Framework\Testing\Unit\SerializableContractTest" classname="Hyde.Framework.Testing.Unit.SerializableContractTest" assertions="1" time="0.001647"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\SerializableTest" file="Serializable (Hyde\Framework\Testing\Unit\Serializable)" tests="8" assertions="8" errors="0" failures="0" skipped="0" time="0.019624">
+        <testcase name="To array" file="Serializable (Hyde\Framework\Testing\Unit\Serializable)::To array" class="Hyde\Framework\Testing\Unit\SerializableTest" classname="Hyde.Framework.Testing.Unit.SerializableTest" assertions="1" time="0.005936"/>
+        <testcase name="Json serialize" file="Serializable (Hyde\Framework\Testing\Unit\Serializable)::Json serialize" class="Hyde\Framework\Testing\Unit\SerializableTest" classname="Hyde.Framework.Testing.Unit.SerializableTest" assertions="1" time="0.002012"/>
+        <testcase name="To json" file="Serializable (Hyde\Framework\Testing\Unit\Serializable)::To json" class="Hyde\Framework\Testing\Unit\SerializableTest" classname="Hyde.Framework.Testing.Unit.SerializableTest" assertions="1" time="0.001896"/>
+        <testcase name="Json encode" file="Serializable (Hyde\Framework\Testing\Unit\Serializable)::Json encode" class="Hyde\Framework\Testing\Unit\SerializableTest" classname="Hyde.Framework.Testing.Unit.SerializableTest" assertions="1" time="0.001897"/>
+        <testcase name="Serialize" file="Serializable (Hyde\Framework\Testing\Unit\Serializable)::Serialize" class="Hyde\Framework\Testing\Unit\SerializableTest" classname="Hyde.Framework.Testing.Unit.SerializableTest" assertions="1" time="0.001947"/>
+        <testcase name="Serialize with arrayable" file="Serializable (Hyde\Framework\Testing\Unit\Serializable)::Serialize with arrayable" class="Hyde\Framework\Testing\Unit\SerializableTest" classname="Hyde.Framework.Testing.Unit.SerializableTest" assertions="1" time="0.002026"/>
+        <testcase name="Json serialize with arrayable" file="Serializable (Hyde\Framework\Testing\Unit\Serializable)::Json serialize with arrayable" class="Hyde\Framework\Testing\Unit\SerializableTest" classname="Hyde.Framework.Testing.Unit.SerializableTest" assertions="1" time="0.002009"/>
+        <testcase name="To json with arrayable" file="Serializable (Hyde\Framework\Testing\Unit\Serializable)::To json with arrayable" class="Hyde\Framework\Testing\Unit\SerializableTest" classname="Hyde.Framework.Testing.Unit.SerializableTest" assertions="1" time="0.001901"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)" tests="22" assertions="41" errors="0" failures="0" skipped="0" time="0.083875">
+        <testcase name="Get host selection" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get host selection" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.010022"/>
+        <testcase name="Get host selection with host option" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get host selection with host option" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002471"/>
+        <testcase name="Get host selection with config option" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get host selection with config option" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002577"/>
+        <testcase name="Get host selection with host option and config option" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get host selection with host option and config option" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002525"/>
+        <testcase name="Get port selection" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get port selection" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002480"/>
+        <testcase name="Get port selection with port option" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get port selection with port option" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002562"/>
+        <testcase name="Get port selection with config option" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get port selection with config option" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002614"/>
+        <testcase name="Get port selection with port option and config option" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get port selection with port option and config option" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002593"/>
+        <testcase name="Get environment variables" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get environment variables" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002600"/>
+        <testcase name="Get environment variables with no ansi option" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Get environment variables with no ansi option" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002564"/>
+        <testcase name="Save preview option propagates to environment variables" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Save preview option propagates to environment variables" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="5" time="0.003786"/>
+        <testcase name="Dashboard option propagates to environment variables" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Dashboard option propagates to environment variables" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="5" time="0.003827"/>
+        <testcase name="Pretty urls option propagates to environment variables" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Pretty urls option propagates to environment variables" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="5" time="0.003835"/>
+        <testcase name="Play cdn option propagates to environment variables" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Play cdn option propagates to environment variables" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="5" time="0.003867"/>
+        <testcase name="Parse environment option" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Parse environment option" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="2" time="0.002774"/>
+        <testcase name="Parse environment option with empty string" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Parse environment option with empty string" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002472"/>
+        <testcase name="Parse environment option with null" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Parse environment option with null" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002486"/>
+        <testcase name="Parse environment option with invalid value" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Parse environment option with invalid value" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="2" time="0.002638"/>
+        <testcase name="Check argv for option" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Check argv for option" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="2" time="0.002567"/>
+        <testcase name="With open argument" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::With open argument" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.002964"/>
+        <testcase name="Open in browser" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Open in browser" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.014687"/>
+        <testcase name="Open in browser that fails" file="Serve Command Options Unit (Hyde\Framework\Testing\Unit\ServeCommandOptionsUnit)::Open in browser that fails" class="Hyde\Framework\Testing\Unit\ServeCommandOptionsUnitTest" classname="Hyde.Framework.Testing.Unit.ServeCommandOptionsUnitTest" assertions="1" time="0.004965"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiledTest" file="Source Files In Custom Directories Can Be Compiled (Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiled)" tests="4" assertions="4" errors="0" failures="0" skipped="0" time="0.156036">
+        <testcase name="Markdown posts in changed directory can be compiled" file="Source Files In Custom Directories Can Be Compiled (Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiled)::Markdown posts in changed directory can be compiled" class="Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiledTest" classname="Hyde.Framework.Testing.Unit.SourceFilesInCustomDirectoriesCanBeCompiledTest" assertions="1" time="0.057257"/>
+        <testcase name="Markdown pages in changed directory can be compiled" file="Source Files In Custom Directories Can Be Compiled (Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiled)::Markdown pages in changed directory can be compiled" class="Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiledTest" classname="Hyde.Framework.Testing.Unit.SourceFilesInCustomDirectoriesCanBeCompiledTest" assertions="1" time="0.034713"/>
+        <testcase name="Documentation pages in changed directory can be compiled" file="Source Files In Custom Directories Can Be Compiled (Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiled)::Documentation pages in changed directory can be compiled" class="Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiledTest" classname="Hyde.Framework.Testing.Unit.SourceFilesInCustomDirectoriesCanBeCompiledTest" assertions="1" time="0.038954"/>
+        <testcase name="Blade pages in changed directory can be compiled" file="Source Files In Custom Directories Can Be Compiled (Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiled)::Blade pages in changed directory can be compiled" class="Hyde\Framework\Testing\Unit\SourceFilesInCustomDirectoriesCanBeCompiledTest" classname="Hyde.Framework.Testing.Unit.SourceFilesInCustomDirectoriesCanBeCompiledTest" assertions="1" time="0.025112"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\TestBuildStaticSiteCommandFlagToEnablePrettyUrlsTest" file="Build Static Site Command Flag To Enable Pretty Urls (Hyde\Framework\Testing\Unit\BuildStaticSiteCommandFlagToEnablePrettyUrls)" tests="2" assertions="4" errors="0" failures="0" skipped="0" time="0.063136">
+        <testcase name="Pretty urls can be enabled with flag" file="Build Static Site Command Flag To Enable Pretty Urls (Hyde\Framework\Testing\Unit\BuildStaticSiteCommandFlagToEnablePrettyUrls)::Pretty urls can be enabled with flag" class="Hyde\Framework\Testing\Unit\TestBuildStaticSiteCommandFlagToEnablePrettyUrlsTest" classname="Hyde.Framework.Testing.Unit.TestBuildStaticSiteCommandFlagToEnablePrettyUrlsTest" assertions="3" time="0.043712"/>
+        <testcase name="Config change is not persisted" file="Build Static Site Command Flag To Enable Pretty Urls (Hyde\Framework\Testing\Unit\BuildStaticSiteCommandFlagToEnablePrettyUrls)::Config change is not persisted" class="Hyde\Framework\Testing\Unit\TestBuildStaticSiteCommandFlagToEnablePrettyUrlsTest" classname="Hyde.Framework.Testing.Unit.TestBuildStaticSiteCommandFlagToEnablePrettyUrlsTest" assertions="1" time="0.019425"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\TestingSupportHelpersMetaTest" file="ing Support Helpers Meta (Hyde\Framework\Testing\Unit\ingSupportHelpersMeta)" tests="4" assertions="9" errors="0" failures="0" skipped="0" time="0.011686">
+        <testcase name="With pages" file="ing Support Helpers Meta (Hyde\Framework\Testing\Unit\ingSupportHelpersMeta)::With pages" class="Hyde\Framework\Testing\Unit\TestingSupportHelpersMetaTest" classname="Hyde.Framework.Testing.Unit.TestingSupportHelpersMetaTest" assertions="2" time="0.004620"/>
+        <testcase name="With pages replaces existing pages" file="ing Support Helpers Meta (Hyde\Framework\Testing\Unit\ingSupportHelpersMeta)::With pages replaces existing pages" class="Hyde\Framework\Testing\Unit\TestingSupportHelpersMetaTest" classname="Hyde.Framework.Testing.Unit.TestingSupportHelpersMetaTest" assertions="2" time="0.002626"/>
+        <testcase name="With pages replaces existing routes" file="ing Support Helpers Meta (Hyde\Framework\Testing\Unit\ingSupportHelpersMeta)::With pages replaces existing routes" class="Hyde\Framework\Testing\Unit\TestingSupportHelpersMetaTest" classname="Hyde.Framework.Testing.Unit.TestingSupportHelpersMetaTest" assertions="2" time="0.002580"/>
+        <testcase name="With pages when supplying strings" file="ing Support Helpers Meta (Hyde\Framework\Testing\Unit\ingSupportHelpersMeta)::With pages when supplying strings" class="Hyde\Framework\Testing\Unit\TestingSupportHelpersMetaTest" classname="Hyde.Framework.Testing.Unit.TestingSupportHelpersMetaTest" assertions="3" time="0.001858"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\TracksExecutionTimeTest" file="Tracks Execution Time (Hyde\Framework\Testing\Unit\TracksExecutionTime)" tests="4" assertions="10" errors="0" failures="0" skipped="0" time="0.011931">
+        <testcase name="Start clock" file="Tracks Execution Time (Hyde\Framework\Testing\Unit\TracksExecutionTime)::Start clock" class="Hyde\Framework\Testing\Unit\TracksExecutionTimeTest" classname="Hyde.Framework.Testing.Unit.TracksExecutionTimeTest" assertions="4" time="0.006032"/>
+        <testcase name="Stop clock" file="Tracks Execution Time (Hyde\Framework\Testing\Unit\TracksExecutionTime)::Stop clock" class="Hyde\Framework\Testing\Unit\TracksExecutionTimeTest" classname="Hyde.Framework.Testing.Unit.TracksExecutionTimeTest" assertions="2" time="0.001991"/>
+        <testcase name="Get execution time in ms" file="Tracks Execution Time (Hyde\Framework\Testing\Unit\TracksExecutionTime)::Get execution time in ms" class="Hyde\Framework\Testing\Unit\TracksExecutionTimeTest" classname="Hyde.Framework.Testing.Unit.TracksExecutionTimeTest" assertions="2" time="0.001934"/>
+        <testcase name="Get execution time string" file="Tracks Execution Time (Hyde\Framework\Testing\Unit\TracksExecutionTime)::Get execution time string" class="Hyde\Framework\Testing\Unit\TracksExecutionTimeTest" classname="Hyde.Framework.Testing.Unit.TracksExecutionTimeTest" assertions="2" time="0.001975"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\UnixsumTest" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)" tests="10" assertions="13" errors="0" failures="0" skipped="0" time="0.023956">
+        <testcase name="Method returns string" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Method returns string" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="1" time="0.005900"/>
+        <testcase name="Method returns string with length of 32" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Method returns string with length of 32" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="1" time="0.001745"/>
+        <testcase name="Method returns string matching expected format" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Method returns string matching expected format" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="1" time="0.001995"/>
+        <testcase name="Method returns same value for same string using normal method" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Method returns same value for same string using normal method" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="1" time="0.001817"/>
+        <testcase name="Method returns different value for different string" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Method returns different value for different string" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="1" time="0.001890"/>
+        <testcase name="Function is case sensitive" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Function is case sensitive" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="1" time="0.001792"/>
+        <testcase name="Function is space sensitive" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Function is space sensitive" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="1" time="0.001736"/>
+        <testcase name="Method returns same value regardless of end of line sequence" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Method returns same value regardless of end of line sequence" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="4" time="0.002186"/>
+        <testcase name="Method returns same value for string with mixed end of line sequences" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Method returns same value for string with mixed end of line sequences" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="1" time="0.002072"/>
+        <testcase name="Method returns same value when loaded from file using shorthand" file="Unixsum (Hyde\Framework\Testing\Unit\Unixsum)::Method returns same value when loaded from file using shorthand" class="Hyde\Framework\Testing\Unit\UnixsumTest" classname="Hyde.Framework.Testing.Unit.UnixsumTest" assertions="1" time="0.002823"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\UnsupportedPageTypeExceptionTest" file="Unsupported Page Type Exception (Hyde\Framework\Testing\Unit\UnsupportedPageTypeException)" tests="2" assertions="3" errors="0" failures="0" skipped="0" time="0.012626">
+        <testcase name="It can be instantiated" file="Unsupported Page Type Exception (Hyde\Framework\Testing\Unit\UnsupportedPageTypeException)::It can be instantiated" class="Hyde\Framework\Testing\Unit\UnsupportedPageTypeExceptionTest" classname="Hyde.Framework.Testing.Unit.UnsupportedPageTypeExceptionTest" assertions="1" time="0.010668"/>
+        <testcase name="It throws an exception when page type is not supported" file="Unsupported Page Type Exception (Hyde\Framework\Testing\Unit\UnsupportedPageTypeException)::It throws an exception when page type is not supported" class="Hyde\Framework\Testing\Unit\UnsupportedPageTypeExceptionTest" classname="Hyde.Framework.Testing.Unit.UnsupportedPageTypeExceptionTest" assertions="2" time="0.001958"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\ValidatesExistenceTest" file="Validates Existence (Hyde\Framework\Testing\Unit\ValidatesExistence)" tests="2" assertions="2" errors="0" failures="0" skipped="0" time="0.042748">
+        <testcase name="Validate existence does nothing if file exists" file="Validates Existence (Hyde\Framework\Testing\Unit\ValidatesExistence)::Validate existence does nothing if file exists" class="Hyde\Framework\Testing\Unit\ValidatesExistenceTest" classname="Hyde.Framework.Testing.Unit.ValidatesExistenceTest" assertions="1" time="0.022956"/>
+        <testcase name="Validate existence throws file not found exception if file does not exist" file="Validates Existence (Hyde\Framework\Testing\Unit\ValidatesExistence)::Validate existence throws file not found exception if file does not exist" class="Hyde\Framework\Testing\Unit\ValidatesExistenceTest" classname="Hyde.Framework.Testing.Unit.ValidatesExistenceTest" assertions="1" time="0.019792"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Views\ArticleExcerptViewTest" file="Article Excerpt View (Hyde\Framework\Testing\Unit\Views\ArticleExcerptView)" tests="5" assertions="10" errors="0" failures="0" skipped="0" time="0.142409">
+        <testcase name="Component can be rendered" file="Article Excerpt View (Hyde\Framework\Testing\Unit\Views\ArticleExcerptView)::Component can be rendered" class="Hyde\Framework\Testing\Unit\Views\ArticleExcerptViewTest" classname="Hyde.Framework.Testing.Unit.Views.ArticleExcerptViewTest" assertions="1" time="0.030947"/>
+        <testcase name="Component renders post data" file="Article Excerpt View (Hyde\Framework\Testing\Unit\Views\ArticleExcerptView)::Component renders post data" class="Hyde\Framework\Testing\Unit\Views\ArticleExcerptViewTest" classname="Hyde.Framework.Testing.Unit.Views.ArticleExcerptViewTest" assertions="5" time="0.027553"/>
+        <testcase name="Component renders post with author object" file="Article Excerpt View (Hyde\Framework\Testing\Unit\Views\ArticleExcerptView)::Component renders post with author object" class="Hyde\Framework\Testing\Unit\Views\ArticleExcerptViewTest" classname="Hyde.Framework.Testing.Unit.Views.ArticleExcerptViewTest" assertions="1" time="0.029833"/>
+        <testcase name="There is no comma after date string when there is no author" file="Article Excerpt View (Hyde\Framework\Testing\Unit\Views\ArticleExcerptView)::There is no comma after date string when there is no author" class="Hyde\Framework\Testing\Unit\Views\ArticleExcerptViewTest" classname="Hyde.Framework.Testing.Unit.Views.ArticleExcerptViewTest" assertions="2" time="0.027196"/>
+        <testcase name="There is a comma after date string when there is a author" file="Article Excerpt View (Hyde\Framework\Testing\Unit\Views\ArticleExcerptView)::There is a comma after date string when there is a author" class="Hyde\Framework\Testing\Unit\Views\ArticleExcerptViewTest" classname="Hyde.Framework.Testing.Unit.Views.ArticleExcerptViewTest" assertions="1" time="0.026879"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentViewTest" file="Breadcrumbs Component View (Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentView)" tests="6" assertions="6" errors="0" failures="0" skipped="0" time="0.171921">
+        <testcase name="Rendered blade view" file="Breadcrumbs Component View (Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentView)::Rendered blade view" class="Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.BreadcrumbsComponentViewTest" assertions="1" time="0.034281"/>
+        <testcase name="Rendered blade view on index page" file="Breadcrumbs Component View (Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentView)::Rendered blade view on index page" class="Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.BreadcrumbsComponentViewTest" assertions="1" time="0.036042"/>
+        <testcase name="Rendered blade view on nested page" file="Breadcrumbs Component View (Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentView)::Rendered blade view on nested page" class="Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.BreadcrumbsComponentViewTest" assertions="1" time="0.025817"/>
+        <testcase name="Rendered blade view on deeply nested page" file="Breadcrumbs Component View (Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentView)::Rendered blade view on deeply nested page" class="Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.BreadcrumbsComponentViewTest" assertions="1" time="0.025398"/>
+        <testcase name="Rendered blade view on nested index page" file="Breadcrumbs Component View (Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentView)::Rendered blade view on nested index page" class="Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.BreadcrumbsComponentViewTest" assertions="1" time="0.025388"/>
+        <testcase name="Rendered blade view with attributes" file="Breadcrumbs Component View (Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentView)::Rendered blade view with attributes" class="Hyde\Framework\Testing\Unit\Views\BreadcrumbsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.BreadcrumbsComponentViewTest" assertions="1" time="0.024995"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)" tests="21" assertions="46" errors="0" failures="0" skipped="0" time="0.517688">
+        <testcase name="The view" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::The view" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="9" time="0.049888"/>
+        <testcase name="Image author attribution string" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Image author attribution string" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="3" time="0.022552"/>
+        <testcase name="Image author attribution string with url" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Image author attribution string with url" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="5" time="0.023019"/>
+        <testcase name="Copyright string" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Copyright string" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="2" time="0.022638"/>
+        <testcase name="Copyright string inverse" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Copyright string inverse" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.022398"/>
+        <testcase name="License string" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::License string" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.023840"/>
+        <testcase name="License string with url" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::License string with url" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.022937"/>
+        <testcase name="License string inverse" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::License string inverse" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="2" time="0.022771"/>
+        <testcase name="License string inverse with url" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::License string inverse with url" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="2" time="0.022806"/>
+        <testcase name="Fluent attribution logic uses rich html tags" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic uses rich html tags" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="7" time="0.023118"/>
+        <testcase name="Fluent attribution logic uses rich html tags" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic uses rich html tags" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="2" time="0.022586"/>
+        <testcase name="Fluent attribution logic uses rich html tags" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic uses rich html tags" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.023008"/>
+        <testcase name="Fluent attribution logic uses rich html tags" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic uses rich html tags" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.022869"/>
+        <testcase name="Fluent attribution logic uses rich html tags" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic uses rich html tags" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="2" time="0.022996"/>
+        <testcase name="Fluent attribution logic creates fluent messages 1" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic creates fluent messages 1" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.022873"/>
+        <testcase name="Fluent attribution logic creates fluent messages 2" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic creates fluent messages 2" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.022577"/>
+        <testcase name="Fluent attribution logic creates fluent messages 3" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic creates fluent messages 3" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.022544"/>
+        <testcase name="Fluent attribution logic creates fluent messages 4" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic creates fluent messages 4" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.022455"/>
+        <testcase name="Fluent attribution logic creates fluent messages 5" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic creates fluent messages 5" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.034375"/>
+        <testcase name="Fluent attribution logic creates fluent messages 6" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic creates fluent messages 6" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.023001"/>
+        <testcase name="Fluent attribution logic creates fluent messages 7" file="Featured Image View (Hyde\Framework\Testing\Unit\Views\FeaturedImageView)::Fluent attribution logic creates fluent messages 7" class="Hyde\Framework\Testing\Unit\Views\FeaturedImageViewTest" classname="Hyde.Framework.Testing.Unit.Views.FeaturedImageViewTest" assertions="1" time="0.022437"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)" tests="9" assertions="9" errors="0" failures="0" skipped="0" time="0.240569">
+        <testcase name="Component can be rendered" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)::Component can be rendered" class="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.HeadComponentViewTest" assertions="1" time="0.050906"/>
+        <testcase name="Title element uses page title" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)::Title element uses page title" class="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.HeadComponentViewTest" assertions="1" time="0.026582"/>
+        <testcase name="Link to favicon is not added when file does not exist" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)::Link to favicon is not added when file does not exist" class="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.HeadComponentViewTest" assertions="1" time="0.022712"/>
+        <testcase name="Link to favicon is added when file exists" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)::Link to favicon is added when file exists" class="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.HeadComponentViewTest" assertions="1" time="0.024120"/>
+        <testcase name="Link to favicon uses relative url" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)::Link to favicon uses relative url" class="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.HeadComponentViewTest" assertions="1" time="0.023852"/>
+        <testcase name="Component includes meta view" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)::Component includes meta view" class="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.HeadComponentViewTest" assertions="1" time="0.023029"/>
+        <testcase name="Component includes styles view" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)::Component includes styles view" class="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.HeadComponentViewTest" assertions="1" time="0.023090"/>
+        <testcase name="Can add head html from config hook" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)::Can add head html from config hook" class="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.HeadComponentViewTest" assertions="1" time="0.023006"/>
+        <testcase name="Can add head html from html include" file="Head Component View (Hyde\Framework\Testing\Unit\Views\HeadComponentView)::Can add head html from html include" class="Hyde\Framework\Testing\Unit\Views\HeadComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.HeadComponentViewTest" assertions="1" time="0.023271"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Views\LinkComponentTest" file="Link Component (Hyde\Framework\Testing\Unit\Views\LinkComponent)" tests="3" assertions="3" errors="0" failures="0" skipped="0" time="0.093216">
+        <testcase name="Link component can be rendered" file="Link Component (Hyde\Framework\Testing\Unit\Views\LinkComponent)::Link component can be rendered" class="Hyde\Framework\Testing\Unit\Views\LinkComponentTest" classname="Hyde.Framework.Testing.Unit.Views.LinkComponentTest" assertions="1" time="0.039268"/>
+        <testcase name="Link component can be rendered with route" file="Link Component (Hyde\Framework\Testing\Unit\Views\LinkComponent)::Link component can be rendered with route" class="Hyde\Framework\Testing\Unit\Views\LinkComponentTest" classname="Hyde.Framework.Testing.Unit.Views.LinkComponentTest" assertions="1" time="0.027123"/>
+        <testcase name="Link component can be rendered with route for nested pages" file="Link Component (Hyde\Framework\Testing\Unit\Views\LinkComponent)::Link component can be rendered with route for nested pages" class="Hyde\Framework\Testing\Unit\Views\LinkComponentTest" classname="Hyde.Framework.Testing.Unit.Views.LinkComponentTest" assertions="1" time="0.026825"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Views\NavigationBrandViewTest" file="Navigation Brand View (Hyde\Framework\Testing\Unit\Views\NavigationBrandView)" tests="2" assertions="3" errors="0" failures="0" skipped="0" time="0.056596">
+        <testcase name="Component links to home route" file="Navigation Brand View (Hyde\Framework\Testing\Unit\Views\NavigationBrandView)::Component links to home route" class="Hyde\Framework\Testing\Unit\Views\NavigationBrandViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationBrandViewTest" assertions="1" time="0.030326"/>
+        <testcase name="Component uses site name" file="Navigation Brand View (Hyde\Framework\Testing\Unit\Views\NavigationBrandView)::Component uses site name" class="Hyde\Framework\Testing\Unit\Views\NavigationBrandViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationBrandViewTest" assertions="2" time="0.026270"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Views\NavigationLinkViewTest" file="Navigation Link View (Hyde\Framework\Testing\Unit\Views\NavigationLinkView)" tests="4" assertions="4" errors="0" failures="0" skipped="0" time="0.096946">
+        <testcase name="Component links to route destination" file="Navigation Link View (Hyde\Framework\Testing\Unit\Views\NavigationLinkView)::Component links to route destination" class="Hyde\Framework\Testing\Unit\Views\NavigationLinkViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationLinkViewTest" assertions="1" time="0.025019"/>
+        <testcase name="Component uses title" file="Navigation Link View (Hyde\Framework\Testing\Unit\Views\NavigationLinkView)::Component uses title" class="Hyde\Framework\Testing\Unit\Views\NavigationLinkViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationLinkViewTest" assertions="1" time="0.021558"/>
+        <testcase name="Component is current when current route matches" file="Navigation Link View (Hyde\Framework\Testing\Unit\Views\NavigationLinkView)::Component is current when current route matches" class="Hyde\Framework\Testing\Unit\Views\NavigationLinkViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationLinkViewTest" assertions="1" time="0.025272"/>
+        <testcase name="Component has aria current when current route matches" file="Navigation Link View (Hyde\Framework\Testing\Unit\Views\NavigationLinkView)::Component has aria current when current route matches" class="Hyde\Framework\Testing\Unit\Views\NavigationLinkViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationLinkViewTest" assertions="1" time="0.025097"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)" tests="11" assertions="18" errors="0" failures="0" skipped="0" time="0.365487">
+        <testcase name="Component can be rendered" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Component can be rendered" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="1" time="0.043400"/>
+        <testcase name="Component contains dark mode button" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Component contains dark mode button" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="1" time="0.026896"/>
+        <testcase name="Component contains navigation menu toggle button" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Component contains navigation menu toggle button" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="1" time="0.027694"/>
+        <testcase name="Component contains main navigation links" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Component contains main navigation links" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="1" time="0.026859"/>
+        <testcase name="Component contains index html link" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Component contains index html link" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="1" time="0.026580"/>
+        <testcase name="Component not contains 404 html link" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Component not contains 404 html link" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="1" time="0.026738"/>
+        <testcase name="Navigation menu with root pages" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Navigation menu with root pages" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="2" time="0.034722"/>
+        <testcase name="Navigation menu with dropdown pages" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Navigation menu with dropdown pages" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="4" time="0.038254"/>
+        <testcase name="Navigation menu with dropdown pages with root group page" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Navigation menu with dropdown pages with root group page" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="4" time="0.036293"/>
+        <testcase name="Navigation menu label can be changed in front matter" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Navigation menu label can be changed in front matter" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="1" time="0.039969"/>
+        <testcase name="Navigation menu label can be changed in blade matter" file="Navigation Menu View (Hyde\Framework\Testing\Unit\Views\NavigationMenuView)::Navigation menu label can be changed in blade matter" class="Hyde\Framework\Testing\Unit\Views\NavigationMenuViewTest" classname="Hyde.Framework.Testing.Unit.Views.NavigationMenuViewTest" assertions="1" time="0.038080"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Views\ScriptsComponentViewTest" file="Scripts Component View (Hyde\Framework\Testing\Unit\Views\ScriptsComponentView)" tests="7" assertions="9" errors="0" failures="0" skipped="0" time="0.180463">
+        <testcase name="Component can be rendered" file="Scripts Component View (Hyde\Framework\Testing\Unit\Views\ScriptsComponentView)::Component can be rendered" class="Hyde\Framework\Testing\Unit\Views\ScriptsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.ScriptsComponentViewTest" assertions="1" time="0.039829"/>
+        <testcase name="Component has link to app js file when it exists" file="Scripts Component View (Hyde\Framework\Testing\Unit\Views\ScriptsComponentView)::Component has link to app js file when it exists" class="Hyde\Framework\Testing\Unit\Views\ScriptsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.ScriptsComponentViewTest" assertions="1" time="0.023826"/>
+        <testcase name="Component does not render link to app js when it does not exist" file="Scripts Component View (Hyde\Framework\Testing\Unit\Views\ScriptsComponentView)::Component does not render link to app js when it does not exist" class="Hyde\Framework\Testing\Unit\Views\ScriptsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.ScriptsComponentViewTest" assertions="1" time="0.023612"/>
+        <testcase name="Component uses relative path to app js file for nested pages" file="Scripts Component View (Hyde\Framework\Testing\Unit\Views\ScriptsComponentView)::Component uses relative path to app js file for nested pages" class="Hyde\Framework\Testing\Unit\Views\ScriptsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.ScriptsComponentViewTest" assertions="3" time="0.025655"/>
+        <testcase name="Can add scripts html from config hook" file="Scripts Component View (Hyde\Framework\Testing\Unit\Views\ScriptsComponentView)::Can add scripts html from config hook" class="Hyde\Framework\Testing\Unit\Views\ScriptsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.ScriptsComponentViewTest" assertions="1" time="0.022949"/>
+        <testcase name="Can add scripts html from html include" file="Scripts Component View (Hyde\Framework\Testing\Unit\Views\ScriptsComponentView)::Can add scripts html from html include" class="Hyde\Framework\Testing\Unit\Views\ScriptsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.ScriptsComponentViewTest" assertions="1" time="0.022944"/>
+        <testcase name="Scripts can be pushed to the component scripts stack" file="Scripts Component View (Hyde\Framework\Testing\Unit\Views\ScriptsComponentView)::Scripts can be pushed to the component scripts stack" class="Hyde\Framework\Testing\Unit\Views\ScriptsComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.ScriptsComponentViewTest" assertions="1" time="0.021650"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)" tests="9" assertions="11" errors="0" failures="0" skipped="0" time="0.229691">
+        <testcase name="Component can be rendered" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)::Component can be rendered" class="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.StylesComponentViewTest" assertions="1" time="0.033153"/>
+        <testcase name="Component has link to app css file" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)::Component has link to app css file" class="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.StylesComponentViewTest" assertions="1" time="0.022855"/>
+        <testcase name="Component uses relative path to app css file for nested pages" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)::Component uses relative path to app css file for nested pages" class="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.StylesComponentViewTest" assertions="3" time="0.037688"/>
+        <testcase name="Component does not render link to app css when it does not exist" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)::Component does not render link to app css when it does not exist" class="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.StylesComponentViewTest" assertions="1" time="0.023909"/>
+        <testcase name="Styles can be pushed to the component styles stack" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)::Styles can be pushed to the component styles stack" class="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.StylesComponentViewTest" assertions="1" time="0.021787"/>
+        <testcase name="Component renders tailwind play cdn link when enabled in config" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)::Component renders tailwind play cdn link when enabled in config" class="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.StylesComponentViewTest" assertions="1" time="0.022880"/>
+        <testcase name="Component renders app cdn link when enabled in config" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)::Component renders app cdn link when enabled in config" class="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.StylesComponentViewTest" assertions="1" time="0.022269"/>
+        <testcase name="Component does not render link to local app css when cdn link is enabled in config" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)::Component does not render link to local app css when cdn link is enabled in config" class="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.StylesComponentViewTest" assertions="1" time="0.022382"/>
+        <testcase name="Component does not render cdn link when a local file exists" file="Styles Component View (Hyde\Framework\Testing\Unit\Views\StylesComponentView)::Component does not render cdn link when a local file exists" class="Hyde\Framework\Testing\Unit\Views\StylesComponentViewTest" classname="Hyde.Framework.Testing.Unit.Views.StylesComponentViewTest" assertions="1" time="0.022767"/>
       </testsuite>
     </testsuite>
-    <testsuite name="FeatureFramework" tests="1278" assertions="2656" errors="0" failures="0" skipped="3" time="30.927135">
-      <testsuite name="Hyde\Framework\Testing\Feature\Actions\AnonymousViewCompilerTest" file="Anonymous View Compiler (Hyde\Framework\Testing\Feature\Actions\AnonymousViewCompiler)" tests="3" assertions="4" errors="0" failures="0" skipped="0" time="0.077302">
-        <testcase name="Can compile blade file" file="Anonymous View Compiler (Hyde\Framework\Testing\Feature\Actions\AnonymousViewCompiler)::Can compile blade file" class="Hyde\Framework\Testing\Feature\Actions\AnonymousViewCompilerTest" classname="Hyde.Framework.Testing.Feature.Actions.AnonymousViewCompilerTest" assertions="1" time="0.034365"/>
-        <testcase name="Can compile blade file with data" file="Anonymous View Compiler (Hyde\Framework\Testing\Feature\Actions\AnonymousViewCompiler)::Can compile blade file with data" class="Hyde\Framework\Testing\Feature\Actions\AnonymousViewCompilerTest" classname="Hyde.Framework.Testing.Feature.Actions.AnonymousViewCompilerTest" assertions="1" time="0.022121"/>
-        <testcase name="With missing view" file="Anonymous View Compiler (Hyde\Framework\Testing\Feature\Actions\AnonymousViewCompiler)::With missing view" class="Hyde\Framework\Testing\Feature\Actions\AnonymousViewCompilerTest" classname="Hyde.Framework.Testing.Feature.Actions.AnonymousViewCompilerTest" assertions="2" time="0.020816"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)" tests="28" assertions="28" errors="0" failures="0" skipped="0" time="0.619501">
-        <testcase name="It removes headings" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes headings" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.027020"/>
-        <testcase name="It removes headings alternate syntax" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes headings alternate syntax" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020863"/>
-        <testcase name="It removes paragraphs" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes paragraphs" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020573"/>
-        <testcase name="It removes paragraphs multiline" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes paragraphs multiline" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020166"/>
-        <testcase name="It removes linebreaks" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes linebreaks" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020094"/>
-        <testcase name="It removes bold" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes bold" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.021346"/>
-        <testcase name="It removes italic" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes italic" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.032996"/>
-        <testcase name="It removes bold and italic" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes bold and italic" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.022378"/>
-        <testcase name="It removes blockquotes" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes blockquotes" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020086"/>
-        <testcase name="It removes blockquotes with multiple paragraphs" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes blockquotes with multiple paragraphs" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020893"/>
-        <testcase name="It removes ordered lists" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes ordered lists" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020748"/>
-        <testcase name="It removes unordered lists" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes unordered lists" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020530"/>
-        <testcase name="It removes code" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes code" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020469"/>
-        <testcase name="It removes code blocks" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes code blocks" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020618"/>
-        <testcase name="It removes horizontal rules" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes horizontal rules" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.021265"/>
-        <testcase name="It removes links" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes links" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.021451"/>
-        <testcase name="It removes images" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes images" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020559"/>
-        <testcase name="It removes linking images" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes linking images" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020607"/>
-        <testcase name="It removes html" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes html" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020602"/>
-        <testcase name="It removes footnotes" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes footnotes" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.021064"/>
-        <testcase name="It removes footnotes alternate" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes footnotes alternate" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.022151"/>
-        <testcase name="It replaces consecutively occurring newlines" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It replaces consecutively occurring newlines" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020862"/>
-        <testcase name="It removes fenced code blocks" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes fenced code blocks" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020780"/>
-        <testcase name="It removes fenced code blocks alternate" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes fenced code blocks alternate" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.022928"/>
-        <testcase name="It removes tables" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes tables" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.029782"/>
-        <testcase name="It trims indentation" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It trims indentation" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.027588"/>
-        <testcase name="With empty string" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::With empty string" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020736"/>
-        <testcase name="With only empty lines" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::With only empty lines" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020344"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)" tests="15" assertions="28" errors="0" failures="0" skipped="0" time="0.438958">
-        <testcase name="Class can be instantiated" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::Class can be instantiated" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="1" time="0.112587"/>
-        <testcase name="That an exception is thrown for invalid page type" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::That an exception is thrown for invalid page type" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="2" time="0.022701"/>
-        <testcase name="That an exception is thrown if file already exists and overwrite is false" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::That an exception is thrown if file already exists and overwrite is false" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="3" time="0.029302"/>
-        <testcase name="That can save file returns true if file already exists and overwrite is true" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::That can save file returns true if file already exists and overwrite is true" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="1" time="0.023498"/>
-        <testcase name="Exception is thrown for conflicting blade pages" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::Exception is thrown for conflicting blade pages" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="3" time="0.021654"/>
-        <testcase name="Exception is thrown for conflicting documentation pages" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::Exception is thrown for conflicting documentation pages" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="3" time="0.021437"/>
-        <testcase name="That a markdown file can be created and contains expected content" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::That a markdown file can be created and contains expected content" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="2" time="0.022705"/>
-        <testcase name="That a blade file can be created and contains expected content" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::That a blade file can be created and contains expected content" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="2" time="0.020864"/>
-        <testcase name="That a documentation file can be created and contains expected content" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::That a documentation file can be created and contains expected content" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="2" time="0.023077"/>
-        <testcase name="That a markdown file can be created with custom content" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::That a markdown file can be created with custom content" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="2" time="0.022806"/>
-        <testcase name="That a blade file can be created with custom content" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::That a blade file can be created with custom content" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="2" time="0.021137"/>
-        <testcase name="That the file path can be returned" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::That the file path can be returned" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="2" time="0.023869"/>
-        <testcase name="File is created using slug generated from title" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::File is created using slug generated from title" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="1" time="0.024040"/>
-        <testcase name="Action can generate nested pages" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::Action can generate nested pages" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="1" time="0.025152"/>
-        <testcase name="Can create deeply nested pages" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::Can create deeply nested pages" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="1" time="0.024129"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)" tests="9" assertions="13" errors="0" failures="0" skipped="0" time="0.073396">
-        <testcase name="Can generate table of contents" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)::Can generate table of contents" class="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" classname="Hyde.Framework.Testing.Feature.Actions.GeneratesSidebarTableOfContentsTest" assertions="4" time="0.027130"/>
-        <testcase name="Return string contains expected content" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)::Return string contains expected content" class="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" classname="Hyde.Framework.Testing.Feature.Actions.GeneratesSidebarTableOfContentsTest" assertions="1" time="0.004559"/>
-        <testcase name="Can generate table of contents for document using setext headers" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)::Can generate table of contents for document using setext headers" class="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" classname="Hyde.Framework.Testing.Feature.Actions.GeneratesSidebarTableOfContentsTest" assertions="2" time="0.009525"/>
-        <testcase name="Non heading markdown is removed" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)::Non heading markdown is removed" class="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" classname="Hyde.Framework.Testing.Feature.Actions.GeneratesSidebarTableOfContentsTest" assertions="1" time="0.006994"/>
-        <testcase name="With no level one heading" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)::With no level one heading" class="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" classname="Hyde.Framework.Testing.Feature.Actions.GeneratesSidebarTableOfContentsTest" assertions="1" time="0.004197"/>
-        <testcase name="With multiple nested headings" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)::With multiple nested headings" class="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" classname="Hyde.Framework.Testing.Feature.Actions.GeneratesSidebarTableOfContentsTest" assertions="1" time="0.006569"/>
-        <testcase name="With multiple level one headings" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)::With multiple level one headings" class="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" classname="Hyde.Framework.Testing.Feature.Actions.GeneratesSidebarTableOfContentsTest" assertions="1" time="0.007021"/>
-        <testcase name="With no headings" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)::With no headings" class="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" classname="Hyde.Framework.Testing.Feature.Actions.GeneratesSidebarTableOfContentsTest" assertions="1" time="0.004027"/>
-        <testcase name="With no content" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)::With no content" class="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" classname="Hyde.Framework.Testing.Feature.Actions.GeneratesSidebarTableOfContentsTest" assertions="1" time="0.003374"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\AssetServiceTest" file="Asset Service (Hyde\Framework\Testing\Feature\AssetService)" tests="3" assertions="6" errors="0" failures="0" skipped="0" time="0.088635">
-        <testcase name="Media link returns media path with cache key" file="Asset Service (Hyde\Framework\Testing\Feature\AssetService)::Media link returns media path with cache key" class="Hyde\Framework\Testing\Feature\AssetServiceTest" classname="Hyde.Framework.Testing.Feature.AssetServiceTest" assertions="2" time="0.046455"/>
-        <testcase name="Media link returns media path without cache key if cache busting is disabled" file="Asset Service (Hyde\Framework\Testing\Feature\AssetService)::Media link returns media path without cache key if cache busting is disabled" class="Hyde\Framework\Testing\Feature\AssetServiceTest" classname="Hyde.Framework.Testing.Feature.AssetServiceTest" assertions="2" time="0.020688"/>
-        <testcase name="Media link supports custom media directories" file="Asset Service (Hyde\Framework\Testing\Feature\AssetService)::Media link supports custom media directories" class="Hyde\Framework\Testing\Feature\AssetServiceTest" classname="Hyde.Framework.Testing.Feature.AssetServiceTest" assertions="2" time="0.021492"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\BladeMatterParserTest" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)" tests="15" assertions="38" errors="0" failures="0" skipped="0" time="0.315058">
-        <testcase name="Can parse front matter" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Can parse front matter" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.025154"/>
-        <testcase name="Parse string helper method" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Parse string helper method" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.020153"/>
-        <testcase name="Parse file helper method" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Parse file helper method" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.020888"/>
-        <testcase name="Can parse multiple front matter lines" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Can parse multiple front matter lines" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.020453"/>
-        <testcase name="Can parse front matter with various formats" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Can parse front matter with various formats" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="4" time="0.020721"/>
-        <testcase name="Can parse front matter with array" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Can parse front matter with array" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.020328"/>
-        <testcase name="Line matches front matter" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Line matches front matter" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="2" time="0.020452"/>
-        <testcase name="Directive cannot have leading whitespace" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Directive cannot have leading whitespace" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.020286"/>
-        <testcase name="Directive signature cannot contain whitespace" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Directive signature cannot contain whitespace" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="3" time="0.020472"/>
-        <testcase name="Extract key" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Extract key" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.020149"/>
-        <testcase name="Extract value" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Extract value" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.020198"/>
-        <testcase name="Get value with type" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Get value with type" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="11" time="0.021441"/>
-        <testcase name="Parse array string" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Parse array string" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="8" time="0.022275"/>
-        <testcase name="Parse invalid array string" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Parse invalid array string" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.020789"/>
-        <testcase name="Parse multidimensional array string" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Parse multidimensional array string" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.021300"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodesTest" file="Colored Blockquote Shortcodes (Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodes)" tests="5" assertions="5" errors="0" failures="0" skipped="0" time="0.032846">
-        <testcase name="Signature" file="Colored Blockquote Shortcodes (Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodes)::Signature" class="Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodesTest" classname="Hyde.Framework.Testing.Feature.ColoredBlockquoteShortcodesTest" assertions="1" time="0.022256"/>
-        <testcase name="Signatures" file="Colored Blockquote Shortcodes (Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodes)::Signatures" class="Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodesTest" classname="Hyde.Framework.Testing.Feature.ColoredBlockquoteShortcodesTest" assertions="1" time="0.002131"/>
-        <testcase name="Resolve method" file="Colored Blockquote Shortcodes (Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodes)::Resolve method" class="Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodesTest" classname="Hyde.Framework.Testing.Feature.ColoredBlockquoteShortcodesTest" assertions="1" time="0.003025"/>
-        <testcase name="Can use markdown within blockquote" file="Colored Blockquote Shortcodes (Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodes)::Can use markdown within blockquote" class="Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodesTest" classname="Hyde.Framework.Testing.Feature.ColoredBlockquoteShortcodesTest" assertions="1" time="0.003485"/>
-        <testcase name="With unrelated class" file="Colored Blockquote Shortcodes (Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodes)::With unrelated class" class="Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodesTest" classname="Hyde.Framework.Testing.Feature.ColoredBlockquoteShortcodesTest" assertions="1" time="0.001948"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\CommandTest" file="Command (Hyde\Framework\Testing\Feature\Command)" tests="23" assertions="31" errors="0" failures="0" skipped="0" time="0.058102">
-        <testcase name="User exit constant" file="Command (Hyde\Framework\Testing\Feature\Command)::User exit constant" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.007457"/>
-        <testcase name="File link helper creates link for existing file" file="Command (Hyde\Framework\Testing\Feature\Command)::File link helper creates link for existing file" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002337"/>
-        <testcase name="File link helper creates link for non existing file" file="Command (Hyde\Framework\Testing\Feature\Command)::File link helper creates link for non existing file" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002123"/>
-        <testcase name="File link helper with custom label" file="Command (Hyde\Framework\Testing\Feature\Command)::File link helper with custom label" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002075"/>
-        <testcase name="File link helper with absolute path input" file="Command (Hyde\Framework\Testing\Feature\Command)::File link helper with absolute path input" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002156"/>
-        <testcase name="File link helper with absolute path input and custom label" file="Command (Hyde\Framework\Testing\Feature\Command)::File link helper with absolute path input and custom label" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002140"/>
-        <testcase name="File link helper with absolute path and real file" file="Command (Hyde\Framework\Testing\Feature\Command)::File link helper with absolute path and real file" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002220"/>
-        <testcase name="Info comment" file="Command (Hyde\Framework\Testing\Feature\Command)::Info comment" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002404"/>
-        <testcase name="Info comment with extra info" file="Command (Hyde\Framework\Testing\Feature\Command)::Info comment with extra info" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002358"/>
-        <testcase name="Info comment with extra info and comments" file="Command (Hyde\Framework\Testing\Feature\Command)::Info comment with extra info and comments" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002411"/>
-        <testcase name="Href" file="Command (Hyde\Framework\Testing\Feature\Command)::Href" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002136"/>
-        <testcase name="Inline gray" file="Command (Hyde\Framework\Testing\Feature\Command)::Inline gray" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002115"/>
-        <testcase name="Gray" file="Command (Hyde\Framework\Testing\Feature\Command)::Gray" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002369"/>
-        <testcase name="Indented line" file="Command (Hyde\Framework\Testing\Feature\Command)::Indented line" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002340"/>
-        <testcase name="Indented line with multiple indentations" file="Command (Hyde\Framework\Testing\Feature\Command)::Indented line with multiple indentations" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002384"/>
-        <testcase name="Indented line with no indentation" file="Command (Hyde\Framework\Testing\Feature\Command)::Indented line with no indentation" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002331"/>
-        <testcase name="Handle calls base safe handle" file="Command (Hyde\Framework\Testing\Feature\Command)::Handle calls base safe handle" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002023"/>
-        <testcase name="Handle calls child safe handle" file="Command (Hyde\Framework\Testing\Feature\Command)::Handle calls child safe handle" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002027"/>
-        <testcase name="Safe handle exception" file="Command (Hyde\Framework\Testing\Feature\Command)::Safe handle exception" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="2" time="0.002692"/>
-        <testcase name="Can enable throw on exception" file="Command (Hyde\Framework\Testing\Feature\Command)::Can enable throw on exception" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="2" time="0.002514"/>
-        <testcase name="Ask for string" file="Command (Hyde\Framework\Testing\Feature\Command)::Ask for string" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="3" time="0.002433"/>
-        <testcase name="Ask for string with default value" file="Command (Hyde\Framework\Testing\Feature\Command)::Ask for string with default value" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="3" time="0.002564"/>
-        <testcase name="Ask for string with default value supplying null" file="Command (Hyde\Framework\Testing\Feature\Command)::Ask for string with default value supplying null" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="3" time="0.002494"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Commands\BuildRssFeedCommandTest" file="Build Rss Feed Command (Hyde\Framework\Testing\Feature\Commands\BuildRssFeedCommand)" tests="2" assertions="8" errors="0" failures="0" skipped="0" time="0.083586">
-        <testcase name="Rss feed is generated when conditions are met" file="Build Rss Feed Command (Hyde\Framework\Testing\Feature\Commands\BuildRssFeedCommand)::Rss feed is generated when conditions are met" class="Hyde\Framework\Testing\Feature\Commands\BuildRssFeedCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildRssFeedCommandTest" assertions="3" time="0.051937"/>
-        <testcase name="Rss filename can be changed" file="Build Rss Feed Command (Hyde\Framework\Testing\Feature\Commands\BuildRssFeedCommand)::Rss filename can be changed" class="Hyde\Framework\Testing\Feature\Commands\BuildRssFeedCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildRssFeedCommandTest" assertions="5" time="0.031649"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Commands\BuildSearchCommandTest" file="Build Search Command (Hyde\Framework\Testing\Feature\Commands\BuildSearchCommand)" tests="8" assertions="22" errors="0" failures="0" skipped="0" time="0.323944">
-        <testcase name="It creates the search json file" file="Build Search Command (Hyde\Framework\Testing\Feature\Commands\BuildSearchCommand)::It creates the search json file" class="Hyde\Framework\Testing\Feature\Commands\BuildSearchCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildSearchCommandTest" assertions="3" time="0.064298"/>
-        <testcase name="It creates the search page" file="Build Search Command (Hyde\Framework\Testing\Feature\Commands\BuildSearchCommand)::It creates the search page" class="Hyde\Framework\Testing\Feature\Commands\BuildSearchCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildSearchCommandTest" assertions="3" time="0.037137"/>
-        <testcase name="It does not create the search page if disabled" file="Build Search Command (Hyde\Framework\Testing\Feature\Commands\BuildSearchCommand)::It does not create the search page if disabled" class="Hyde\Framework\Testing\Feature\Commands\BuildSearchCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildSearchCommandTest" assertions="2" time="0.028210"/>
-        <testcase name="It does not display the estimation message when it is less than 1 second" file="Build Search Command (Hyde\Framework\Testing\Feature\Commands\BuildSearchCommand)::It does not display the estimation message when it is less than 1 second" class="Hyde\Framework\Testing\Feature\Commands\BuildSearchCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildSearchCommandTest" assertions="2" time="0.037546"/>
-        <testcase name="Search files can be generated for custom docs output directory" file="Build Search Command (Hyde\Framework\Testing\Feature\Commands\BuildSearchCommand)::Search files can be generated for custom docs output directory" class="Hyde\Framework\Testing\Feature\Commands\BuildSearchCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildSearchCommandTest" assertions="3" time="0.038363"/>
-        <testcase name="Search files can be generated for custom site output directory" file="Build Search Command (Hyde\Framework\Testing\Feature\Commands\BuildSearchCommand)::Search files can be generated for custom site output directory" class="Hyde\Framework\Testing\Feature\Commands\BuildSearchCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildSearchCommandTest" assertions="3" time="0.039677"/>
-        <testcase name="Search files can be generated for custom site and docs output directories" file="Build Search Command (Hyde\Framework\Testing\Feature\Commands\BuildSearchCommand)::Search files can be generated for custom site and docs output directories" class="Hyde\Framework\Testing\Feature\Commands\BuildSearchCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildSearchCommandTest" assertions="3" time="0.039709"/>
-        <testcase name="Search files can be generated for custom site and nested docs output directories" file="Build Search Command (Hyde\Framework\Testing\Feature\Commands\BuildSearchCommand)::Search files can be generated for custom site and nested docs output directories" class="Hyde\Framework\Testing\Feature\Commands\BuildSearchCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildSearchCommandTest" assertions="3" time="0.039005"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Commands\BuildSitemapCommandTest" file="Build Sitemap Command (Hyde\Framework\Testing\Feature\Commands\BuildSitemapCommand)" tests="1" assertions="3" errors="0" failures="0" skipped="0" time="0.057854">
-        <testcase name="Sitemap is generated when conditions are met" file="Build Sitemap Command (Hyde\Framework\Testing\Feature\Commands\BuildSitemapCommand)::Sitemap is generated when conditions are met" class="Hyde\Framework\Testing\Feature\Commands\BuildSitemapCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildSitemapCommandTest" assertions="3" time="0.057854"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommandTest" file="Change Source Directory Command (Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommand)" tests="6" assertions="38" errors="0" failures="0" skipped="0" time="0.172159">
-        <testcase name="Command moves source directories to new supplied directory and updates the configuration file" file="Change Source Directory Command (Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommand)::Command moves source directories to new supplied directory and updates the configuration file" class="Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ChangeSourceDirectoryCommandTest" assertions="15" time="0.031381"/>
-        <testcase name="With missing config search string" file="Change Source Directory Command (Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommand)::With missing config search string" class="Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ChangeSourceDirectoryCommandTest" assertions="15" time="0.029152"/>
-        <testcase name="With name matching current value" file="Change Source Directory Command (Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommand)::With name matching current value" class="Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ChangeSourceDirectoryCommandTest" assertions="2" time="0.023074"/>
-        <testcase name="With existing directory" file="Change Source Directory Command (Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommand)::With existing directory" class="Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ChangeSourceDirectoryCommandTest" assertions="2" time="0.026148"/>
-        <testcase name="With target containing subdirectory file" file="Change Source Directory Command (Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommand)::With target containing subdirectory file" class="Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ChangeSourceDirectoryCommandTest" assertions="2" time="0.037845"/>
-        <testcase name="With target being file" file="Change Source Directory Command (Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommand)::With target being file" class="Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ChangeSourceDirectoryCommandTest" assertions="2" time="0.024559"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Commands\DebugCommandTest" file="Debug Command (Hyde\Framework\Testing\Feature\Commands\DebugCommand)" tests="3" assertions="15" errors="0" failures="0" skipped="0" time="0.084712">
-        <testcase name="Debug command can run" file="Debug Command (Hyde\Framework\Testing\Feature\Commands\DebugCommand)::Debug command can run" class="Hyde\Framework\Testing\Feature\Commands\DebugCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.DebugCommandTest" assertions="1" time="0.034268"/>
-        <testcase name="It prints debug information" file="Debug Command (Hyde\Framework\Testing\Feature\Commands\DebugCommand)::It prints debug information" class="Hyde\Framework\Testing\Feature\Commands\DebugCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.DebugCommandTest" assertions="8" time="0.025098"/>
-        <testcase name="It prints verbose debug information" file="Debug Command (Hyde\Framework\Testing\Feature\Commands\DebugCommand)::It prints verbose debug information" class="Hyde\Framework\Testing\Feature\Commands\DebugCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.DebugCommandTest" assertions="6" time="0.025346"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)" tests="14" assertions="34" errors="0" failures="0" skipped="0" time="0.373087">
-        <testcase name="Command can run" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command can run" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="1" time="0.029680"/>
-        <testcase name="Command output" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command output" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="3" time="0.025189"/>
-        <testcase name="Command allows user to specify page type" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command allows user to specify page type" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="2" time="0.030325"/>
-        <testcase name="Type option is case insensitive" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Type option is case insensitive" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="2" time="0.033631"/>
-        <testcase name="Command fails if user specifies invalid page type" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command fails if user specifies invalid page type" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="3" time="0.024315"/>
-        <testcase name="Command creates markdown file" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command creates markdown file" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="2" time="0.025386"/>
-        <testcase name="Command creates blade file" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command creates blade file" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="2" time="0.024232"/>
-        <testcase name="Command creates documentation file" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command creates documentation file" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="2" time="0.026175"/>
-        <testcase name="Command fails if file already exists" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command fails if file already exists" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="3" time="0.024006"/>
-        <testcase name="Command overwrites existing files when force option is used" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command overwrites existing files when force option is used" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="2" time="0.025940"/>
-        <testcase name="Command prompts for title if it was not specified" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command prompts for title if it was not specified" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="3" time="0.026362"/>
-        <testcase name="Command falls back to default title if user enters nothing" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command falls back to default title if user enters nothing" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="3" time="0.025996"/>
-        <testcase name="Page type shorthand can be used to create blade pages" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Page type shorthand can be used to create blade pages" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="3" time="0.024829"/>
-        <testcase name="Page type shorthand can be used to create documentation pages" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Page type shorthand can be used to create documentation pages" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="3" time="0.027020"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Commands\MakePostCommandTest" file="Make Post Command (Hyde\Framework\Testing\Feature\Commands\MakePostCommand)" tests="5" assertions="48" errors="0" failures="0" skipped="0" time="0.173825">
-        <testcase name="Command has expected output and creates valid file" file="Make Post Command (Hyde\Framework\Testing\Feature\Commands\MakePostCommand)::Command has expected output and creates valid file" class="Hyde\Framework\Testing\Feature\Commands\MakePostCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePostCommandTest" assertions="16" time="0.048383"/>
-        <testcase name="That files are not overwritten when force flag is not set" file="Make Post Command (Hyde\Framework\Testing\Feature\Commands\MakePostCommand)::That files are not overwritten when force flag is not set" class="Hyde\Framework\Testing\Feature\Commands\MakePostCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePostCommandTest" assertions="9" time="0.028522"/>
-        <testcase name="That files are overwritten when force flag is set" file="Make Post Command (Hyde\Framework\Testing\Feature\Commands\MakePostCommand)::That files are overwritten when force flag is set" class="Hyde\Framework\Testing\Feature\Commands\MakePostCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePostCommandTest" assertions="9" time="0.041794"/>
-        <testcase name="That title can be specified in command signature" file="Make Post Command (Hyde\Framework\Testing\Feature\Commands\MakePostCommand)::That title can be specified in command signature" class="Hyde\Framework\Testing\Feature\Commands\MakePostCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePostCommandTest" assertions="6" time="0.028927"/>
-        <testcase name="That command can be canceled" file="Make Post Command (Hyde\Framework\Testing\Feature\Commands\MakePostCommand)::That command can be canceled" class="Hyde\Framework\Testing\Feature\Commands\MakePostCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePostCommandTest" assertions="8" time="0.026200"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Commands\PackageDiscoverCommandTest" file="Package Discover Command (Hyde\Framework\Testing\Feature\Commands\PackageDiscoverCommand)" tests="1" assertions="3" errors="0" failures="0" skipped="0" time="0.077906">
-        <testcase name="Package discover command registers manifest path" file="Package Discover Command (Hyde\Framework\Testing\Feature\Commands\PackageDiscoverCommand)::Package discover command registers manifest path" class="Hyde\Framework\Testing\Feature\Commands\PackageDiscoverCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PackageDiscoverCommandTest" assertions="3" time="0.077906"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Commands\PublishConfigsCommandTest" file="Publish Configs Command (Hyde\Framework\Testing\Feature\Commands\PublishConfigsCommand)" tests="3" assertions="16" errors="0" failures="0" skipped="0" time="0.104017">
-        <testcase name="Command has expected output" file="Publish Configs Command (Hyde\Framework\Testing\Feature\Commands\PublishConfigsCommand)::Command has expected output" class="Hyde\Framework\Testing\Feature\Commands\PublishConfigsCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishConfigsCommandTest" assertions="4" time="0.039868"/>
-        <testcase name="Config files are published" file="Publish Configs Command (Hyde\Framework\Testing\Feature\Commands\PublishConfigsCommand)::Config files are published" class="Hyde\Framework\Testing\Feature\Commands\PublishConfigsCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishConfigsCommandTest" assertions="8" time="0.031971"/>
-        <testcase name="Command overwrites existing files" file="Publish Configs Command (Hyde\Framework\Testing\Feature\Commands\PublishConfigsCommand)::Command overwrites existing files" class="Hyde\Framework\Testing\Feature\Commands\PublishConfigsCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishConfigsCommandTest" assertions="4" time="0.032177"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)" tests="9" assertions="28" errors="0" failures="0" skipped="0" time="0.272152">
-        <testcase name="There are no default pages" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)::There are no default pages" class="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishHomepageCommandTest" assertions="1" time="0.027133"/>
-        <testcase name="Command returns expected output" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)::Command returns expected output" class="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishHomepageCommandTest" assertions="3" time="0.028079"/>
-        <testcase name="Command returns expected output with rebuild" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)::Command returns expected output with rebuild" class="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishHomepageCommandTest" assertions="5" time="0.043762"/>
-        <testcase name="Command prompts for output" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)::Command prompts for output" class="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishHomepageCommandTest" assertions="5" time="0.027707"/>
-        <testcase name="Command shows feedback output when supplying a homepage name" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)::Command shows feedback output when supplying a homepage name" class="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishHomepageCommandTest" assertions="4" time="0.027709"/>
-        <testcase name="Command handles error code 404" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)::Command handles error code 404" class="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishHomepageCommandTest" assertions="2" time="0.025277"/>
-        <testcase name="Command does not overwrite modified files without force flag" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)::Command does not overwrite modified files without force flag" class="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishHomepageCommandTest" assertions="3" time="0.034219"/>
-        <testcase name="Command overwrites modified files if force flag is set" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)::Command overwrites modified files if force flag is set" class="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishHomepageCommandTest" assertions="3" time="0.027239"/>
-        <testcase name="Command does not return 409 if the current file is a default file" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)::Command does not return 409 if the current file is a default file" class="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishHomepageCommandTest" assertions="2" time="0.031027"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Commands\PublishViewsCommandTest" file="Publish Views Command (Hyde\Framework\Testing\Feature\Commands\PublishViewsCommand)" tests="3" assertions="9" errors="0" failures="0" skipped="0" time="0.120317">
-        <testcase name="Command publishes views" file="Publish Views Command (Hyde\Framework\Testing\Feature\Commands\PublishViewsCommand)::Command publishes views" class="Hyde\Framework\Testing\Feature\Commands\PublishViewsCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishViewsCommandTest" assertions="4" time="0.056489"/>
-        <testcase name="Can select view" file="Publish Views Command (Hyde\Framework\Testing\Feature\Commands\PublishViewsCommand)::Can select view" class="Hyde\Framework\Testing\Feature\Commands\PublishViewsCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishViewsCommandTest" assertions="3" time="0.038732"/>
-        <testcase name="With invalid supplied tag" file="Publish Views Command (Hyde\Framework\Testing\Feature\Commands\PublishViewsCommand)::With invalid supplied tag" class="Hyde\Framework\Testing\Feature\Commands\PublishViewsCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishViewsCommandTest" assertions="2" time="0.025095"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Commands\RebuildPageCommandTest" file="Rebuild Page Command (Hyde\Framework\Testing\Feature\Commands\RebuildPageCommand)" tests="6" assertions="12" errors="0" failures="0" skipped="0" time="0.212227">
-        <testcase name="Handle is successful with valid path" file="Rebuild Page Command (Hyde\Framework\Testing\Feature\Commands\RebuildPageCommand)::Handle is successful with valid path" class="Hyde\Framework\Testing\Feature\Commands\RebuildPageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RebuildPageCommandTest" assertions="2" time="0.043322"/>
-        <testcase name="Media files can be transferred" file="Rebuild Page Command (Hyde\Framework\Testing\Feature\Commands\RebuildPageCommand)::Media files can be transferred" class="Hyde\Framework\Testing\Feature\Commands\RebuildPageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RebuildPageCommandTest" assertions="2" time="0.029974"/>
-        <testcase name="Validate catches bad source directory" file="Rebuild Page Command (Hyde\Framework\Testing\Feature\Commands\RebuildPageCommand)::Validate catches bad source directory" class="Hyde\Framework\Testing\Feature\Commands\RebuildPageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RebuildPageCommandTest" assertions="2" time="0.023168"/>
-        <testcase name="Validate catches missing file" file="Rebuild Page Command (Hyde\Framework\Testing\Feature\Commands\RebuildPageCommand)::Validate catches missing file" class="Hyde\Framework\Testing\Feature\Commands\RebuildPageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RebuildPageCommandTest" assertions="2" time="0.024221"/>
-        <testcase name="Rebuild documentation page" file="Rebuild Page Command (Hyde\Framework\Testing\Feature\Commands\RebuildPageCommand)::Rebuild documentation page" class="Hyde\Framework\Testing\Feature\Commands\RebuildPageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RebuildPageCommandTest" assertions="2" time="0.047167"/>
-        <testcase name="Rebuild blog post" file="Rebuild Page Command (Hyde\Framework\Testing\Feature\Commands\RebuildPageCommand)::Rebuild blog post" class="Hyde\Framework\Testing\Feature\Commands\RebuildPageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RebuildPageCommandTest" assertions="2" time="0.044375"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Commands\RouteListCommandTest" file="Route List Command (Hyde\Framework\Testing\Feature\Commands\RouteListCommand)" tests="5" assertions="31" errors="0" failures="0" skipped="0" time="0.189444">
-        <testcase name="Route list command" file="Route List Command (Hyde\Framework\Testing\Feature\Commands\RouteListCommand)::Route list command" class="Hyde\Framework\Testing\Feature\Commands\RouteListCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RouteListCommandTest" assertions="7" time="0.058073"/>
-        <testcase name="Console route list" file="Route List Command (Hyde\Framework\Testing\Feature\Commands\RouteListCommand)::Console route list" class="Hyde\Framework\Testing\Feature\Commands\RouteListCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RouteListCommandTest" assertions="6" time="0.030790"/>
-        <testcase name="Console route list with clickable output paths" file="Route List Command (Hyde\Framework\Testing\Feature\Commands\RouteListCommand)::Console route list with clickable output paths" class="Hyde\Framework\Testing\Feature\Commands\RouteListCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RouteListCommandTest" assertions="6" time="0.031320"/>
-        <testcase name="Console route list with dynamic pages" file="Route List Command (Hyde\Framework\Testing\Feature\Commands\RouteListCommand)::Console route list with dynamic pages" class="Hyde\Framework\Testing\Feature\Commands\RouteListCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RouteListCommandTest" assertions="6" time="0.031712"/>
-        <testcase name="Console route list with type label" file="Route List Command (Hyde\Framework\Testing\Feature\Commands\RouteListCommand)::Console route list with type label" class="Hyde\Framework\Testing\Feature\Commands\RouteListCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RouteListCommandTest" assertions="6" time="0.037549"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)" tests="13" assertions="41" errors="0" failures="0" skipped="0" time="0.341614">
-        <testcase name="Hyde serve command" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.050602"/>
-        <testcase name="Hyde serve command with port option" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with port option" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.024919"/>
-        <testcase name="Hyde serve command with host option" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with host option" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.023660"/>
-        <testcase name="Hyde serve command with port and host option" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with port and host option" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.023243"/>
-        <testcase name="Hyde serve command with port defined in config" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with port defined in config" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.023385"/>
-        <testcase name="Hyde serve command with port defined in config and port option" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with port defined in config and port option" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.023561"/>
-        <testcase name="Hyde serve command with port missing in config and port option" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with port missing in config and port option" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.024471"/>
-        <testcase name="Hyde serve command with host defined in config" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with host defined in config" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.024477"/>
-        <testcase name="Hyde serve command with host defined in config and host option" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with host defined in config and host option" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.023594"/>
-        <testcase name="Hyde serve command with host missing in config and host option" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with host missing in config and host option" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.022952"/>
-        <testcase name="Hyde serve command with invalid config value" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with invalid config value" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="2" time="0.023927"/>
-        <testcase name="Hyde serve command passes through process output" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command passes through process output" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="6" time="0.024675"/>
-        <testcase name="With fancy output" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::With fancy output" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.028148"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Commands\ValidateCommandTest" file="Validate Command (Hyde\Framework\Testing\Feature\Commands\ValidateCommand)" tests="2" assertions="8" errors="0" failures="0" skipped="0" time="0.095767">
-        <testcase name="Validate command can run" file="Validate Command (Hyde\Framework\Testing\Feature\Commands\ValidateCommand)::Validate command can run" class="Hyde\Framework\Testing\Feature\Commands\ValidateCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ValidateCommandTest" assertions="5" time="0.066379"/>
-        <testcase name="Validate command can run with skips" file="Validate Command (Hyde\Framework\Testing\Feature\Commands\ValidateCommand)::Validate command can run with skips" class="Hyde\Framework\Testing\Feature\Commands\ValidateCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ValidateCommandTest" assertions="3" time="0.029388"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Commands\VendorPublishCommandTest" file="Vendor Publish Command (Hyde\Framework\Testing\Feature\Commands\VendorPublishCommand)" tests="5" assertions="13" errors="0" failures="0" skipped="0" time="0.140632">
-        <testcase name="Command prompts for provider or tag" file="Vendor Publish Command (Hyde\Framework\Testing\Feature\Commands\VendorPublishCommand)::Command prompts for provider or tag" class="Hyde\Framework\Testing\Feature\Commands\VendorPublishCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.VendorPublishCommandTest" assertions="3" time="0.028936"/>
-        <testcase name="Unhelpful publishers are removed" file="Vendor Publish Command (Hyde\Framework\Testing\Feature\Commands\VendorPublishCommand)::Unhelpful publishers are removed" class="Hyde\Framework\Testing\Feature\Commands\VendorPublishCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.VendorPublishCommandTest" assertions="3" time="0.023714"/>
-        <testcase name="Config group is renamed to be more helpful" file="Vendor Publish Command (Hyde\Framework\Testing\Feature\Commands\VendorPublishCommand)::Config group is renamed to be more helpful" class="Hyde\Framework\Testing\Feature\Commands\VendorPublishCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.VendorPublishCommandTest" assertions="3" time="0.037362"/>
-        <testcase name="Can select default" file="Vendor Publish Command (Hyde\Framework\Testing\Feature\Commands\VendorPublishCommand)::Can select default" class="Hyde\Framework\Testing\Feature\Commands\VendorPublishCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.VendorPublishCommandTest" assertions="3" time="0.024475"/>
-        <testcase name="Status method" file="Vendor Publish Command (Hyde\Framework\Testing\Feature\Commands\VendorPublishCommand)::Status method" class="Hyde\Framework\Testing\Feature\Commands\VendorPublishCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.VendorPublishCommandTest" assertions="1" time="0.026145"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)" tests="10" assertions="60" errors="0" failures="0" skipped="0" time="0.227222">
-        <testcase name="Has feature returns false when feature is not enabled" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::Has feature returns false when feature is not enabled" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="8" time="0.029099"/>
-        <testcase name="Has feature returns true when feature is enabled" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::Has feature returns true when feature is enabled" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="6" time="0.020742"/>
-        <testcase name="Can generate sitemap helper returns true if hyde has base url" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::Can generate sitemap helper returns true if hyde has base url" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="1" time="0.020572"/>
-        <testcase name="Can generate sitemap helper returns false if hyde does not have base url" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::Can generate sitemap helper returns false if hyde does not have base url" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="1" time="0.020455"/>
-        <testcase name="Can generate sitemap helper returns false if sitemaps are disabled in config" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::Can generate sitemap helper returns false if sitemaps are disabled in config" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="1" time="0.020295"/>
-        <testcase name="To array method returns method array" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::To array method returns method array" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="26" time="0.027327"/>
-        <testcase name="To array method contains all settings" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::To array method contains all settings" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="9" time="0.026640"/>
-        <testcase name="Features can be mocked" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::Features can be mocked" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="2" time="0.020834"/>
-        <testcase name="Dynamic features can be mocked" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::Dynamic features can be mocked" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="2" time="0.020528"/>
-        <testcase name="Multiple features can be mocked" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::Multiple features can be mocked" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="4" time="0.020729"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeatureTest" file="Configurable Source Roots Feature (Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeature)" tests="4" assertions="5" errors="0" failures="0" skipped="0" time="0.129801">
-        <testcase name="Default config value is empty string" file="Configurable Source Roots Feature (Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeature)::Default config value is empty string" class="Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeatureTest" classname="Hyde.Framework.Testing.Feature.ConfigurableSourceRootsFeatureTest" assertions="1" time="0.036544"/>
-        <testcase name="Files in custom source root can be discovered" file="Configurable Source Roots Feature (Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeature)::Files in custom source root can be discovered" class="Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeatureTest" classname="Hyde.Framework.Testing.Feature.ConfigurableSourceRootsFeatureTest" assertions="2" time="0.025862"/>
-        <testcase name="Files in custom source root can be compiled" file="Configurable Source Roots Feature (Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeature)::Files in custom source root can be compiled" class="Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeatureTest" classname="Hyde.Framework.Testing.Feature.ConfigurableSourceRootsFeatureTest" assertions="1" time="0.045316"/>
-        <testcase name="Hyde page path method supports custom source roots" file="Configurable Source Roots Feature (Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeature)::Hyde page path method supports custom source roots" class="Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeatureTest" classname="Hyde.Framework.Testing.Feature.ConfigurableSourceRootsFeatureTest" assertions="1" time="0.022078"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\ConsoleKernelTest" file="Console Kernel (Hyde\Framework\Testing\Feature\ConsoleKernel)" tests="3" assertions="5" errors="0" failures="0" skipped="0" time="0.071984">
-        <testcase name="Is instantiable" file="Console Kernel (Hyde\Framework\Testing\Feature\ConsoleKernel)::Is instantiable" class="Hyde\Framework\Testing\Feature\ConsoleKernelTest" classname="Hyde.Framework.Testing.Feature.ConsoleKernelTest" assertions="1" time="0.028401"/>
-        <testcase name="Class implements kernel interface" file="Console Kernel (Hyde\Framework\Testing\Feature\ConsoleKernel)::Class implements kernel interface" class="Hyde\Framework\Testing\Feature\ConsoleKernelTest" classname="Hyde.Framework.Testing.Feature.ConsoleKernelTest" assertions="1" time="0.021462"/>
-        <testcase name="Bootstrappers" file="Console Kernel (Hyde\Framework\Testing\Feature\ConsoleKernel)::Bootstrappers" class="Hyde\Framework\Testing\Feature\ConsoleKernelTest" classname="Hyde.Framework.Testing.Feature.ConsoleKernelTest" assertions="3" time="0.022121"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\ConvertsArrayToFrontMatterTest" file="Converts Array To Front Matter (Hyde\Framework\Testing\Feature\ConvertsArrayToFrontMatter)" tests="2" assertions="2" errors="0" failures="0" skipped="0" time="0.047423">
-        <testcase name="Action converts an array to front matter" file="Converts Array To Front Matter (Hyde\Framework\Testing\Feature\ConvertsArrayToFrontMatter)::Action converts an array to front matter" class="Hyde\Framework\Testing\Feature\ConvertsArrayToFrontMatterTest" classname="Hyde.Framework.Testing.Feature.ConvertsArrayToFrontMatterTest" assertions="1" time="0.026986"/>
-        <testcase name="Action returns empty string if array is empty" file="Converts Array To Front Matter (Hyde\Framework\Testing\Feature\ConvertsArrayToFrontMatter)::Action returns empty string if array is empty" class="Hyde\Framework\Testing\Feature\ConvertsArrayToFrontMatterTest" classname="Hyde.Framework.Testing.Feature.ConvertsArrayToFrontMatterTest" assertions="1" time="0.020437"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\DarkmodeFeatureTest" file="Darkmode Feature (Hyde\Framework\Testing\Feature\DarkmodeFeature)" tests="5" assertions="10" errors="0" failures="0" skipped="0" time="0.168933">
-        <testcase name="Has darkmode" file="Darkmode Feature (Hyde\Framework\Testing\Feature\DarkmodeFeature)::Has darkmode" class="Hyde\Framework\Testing\Feature\DarkmodeFeatureTest" classname="Hyde.Framework.Testing.Feature.DarkmodeFeatureTest" assertions="2" time="0.026515"/>
-        <testcase name="Layout has toggle button and script when enabled" file="Darkmode Feature (Hyde\Framework\Testing\Feature\DarkmodeFeature)::Layout has toggle button and script when enabled" class="Hyde\Framework\Testing\Feature\DarkmodeFeatureTest" classname="Hyde.Framework.Testing.Feature.DarkmodeFeatureTest" assertions="2" time="0.045730"/>
-        <testcase name="Documentation page has toggle button and script when enabled" file="Darkmode Feature (Hyde\Framework\Testing\Feature\DarkmodeFeature)::Documentation page has toggle button and script when enabled" class="Hyde\Framework\Testing\Feature\DarkmodeFeatureTest" classname="Hyde.Framework.Testing.Feature.DarkmodeFeatureTest" assertions="2" time="0.032622"/>
-        <testcase name="Dark mode theme button is hidden in layouts when disabled" file="Darkmode Feature (Hyde\Framework\Testing\Feature\DarkmodeFeature)::Dark mode theme button is hidden in layouts when disabled" class="Hyde\Framework\Testing\Feature\DarkmodeFeatureTest" classname="Hyde.Framework.Testing.Feature.DarkmodeFeatureTest" assertions="2" time="0.032814"/>
-        <testcase name="Dark mode theme button is hidden in documentation pages when disabled" file="Darkmode Feature (Hyde\Framework\Testing\Feature\DarkmodeFeature)::Dark mode theme button is hidden in documentation pages when disabled" class="Hyde\Framework\Testing\Feature\DarkmodeFeatureTest" classname="Hyde.Framework.Testing.Feature.DarkmodeFeatureTest" assertions="2" time="0.031252"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\DataCollectionTest" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)" tests="15" assertions="19" errors="0" failures="0" skipped="0" time="0.356643">
-        <testcase name="Markdown collections" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Markdown collections" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.030394"/>
-        <testcase name="Yaml collections" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Yaml collections" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.022884"/>
-        <testcase name="Json collections" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Json collections" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.022366"/>
-        <testcase name="Json collections as arrays" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Json collections as arrays" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.022301"/>
-        <testcase name="Find markdown files method returns empty array if the specified directory does not exist" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Find markdown files method returns empty array if the specified directory does not exist" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="2" time="0.021283"/>
-        <testcase name="Find markdown files method returns empty array if no files are found in specified directory" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Find markdown files method returns empty array if no files are found in specified directory" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="2" time="0.022208"/>
-        <testcase name="Find markdown files method returns an array of markdown files in the specified directory" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Find markdown files method returns an array of markdown files in the specified directory" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.022614"/>
-        <testcase name="Find markdown files method does not include files in subdirectories" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Find markdown files method does not include files in subdirectories" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.023398"/>
-        <testcase name="Find markdown files method does not include files with extensions other than md" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Find markdown files method does not include files with extensions other than md" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.022860"/>
-        <testcase name="Find markdown files method does not remove files starting with an underscore" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Find markdown files method does not remove files starting with an underscore" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.022458"/>
-        <testcase name="Static markdown helper discovers and parses markdown files in the specified directory" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Static markdown helper discovers and parses markdown files in the specified directory" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.023250"/>
-        <testcase name="Static markdown helper doest not ignore files starting with an underscore" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Static markdown helper doest not ignore files starting with an underscore" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.023636"/>
-        <testcase name="Source directory can be changed" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Source directory can be changed" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.032213"/>
-        <testcase name="Source directory is automatically added if missing" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Source directory is automatically added if missing" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="2" time="0.022832"/>
-        <testcase name="Custom source directory is automatically added if missing" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Custom source directory is automatically added if missing" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="2" time="0.021946"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)" tests="18" assertions="38" errors="0" failures="0" skipped="0" time="0.112700">
-        <testcase name="Get source file list for model method finds default model properties" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Get source file list for model method finds default model properties" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.028260"/>
-        <testcase name="Get source file list for model method finds customized source directory" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Get source file list for model method finds customized source directory" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.007721"/>
-        <testcase name="Get source file list for model method finds customized file extension" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Get source file list for model method finds customized file extension" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.007725"/>
-        <testcase name="Get media asset files" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Get media asset files" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.003180"/>
-        <testcase name="Get media asset files discovers files" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Get media asset files discovers files" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="8" time="0.008877"/>
-        <testcase name="Get media asset files discovers custom file types" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Get media asset files discovers custom file types" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="2" time="0.003732"/>
-        <testcase name="Get media asset files discovers files recursively" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Get media asset files discovers files recursively" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.003893"/>
-        <testcase name="Get media asset files discovers files very recursively" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Get media asset files discovers files very recursively" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.004192"/>
-        <testcase name="Media asset extensions can be added by comma separated values" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Media asset extensions can be added by comma separated values" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="2" time="0.003877"/>
-        <testcase name="Media asset extensions can be added by array" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Media asset extensions can be added by array" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="2" time="0.003801"/>
-        <testcase name="Blade page files starting with underscore are ignored" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Blade page files starting with underscore are ignored" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.006694"/>
-        <testcase name="Markdown page files starting with underscore are ignored" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Markdown page files starting with underscore are ignored" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.006311"/>
-        <testcase name="Post files starting with underscore are ignored" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Post files starting with underscore are ignored" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.006343"/>
-        <testcase name="Documentation page files starting with underscore are ignored" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Documentation page files starting with underscore are ignored" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.006317"/>
-        <testcase name="Blade page path to identifier helper formats path to identifier" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Blade page path to identifier helper formats path to identifier" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="5" time="0.003152"/>
-        <testcase name="Markdown page path to identifier helper formats path to identifier" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Markdown page path to identifier helper formats path to identifier" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="3" time="0.002875"/>
-        <testcase name="Markdown post path to identifier helper formats path to identifier" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Markdown post path to identifier helper formats path to identifier" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="3" time="0.002903"/>
-        <testcase name="Documentation page path to identifier helper formats path to identifier" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Documentation page path to identifier helper formats path to identifier" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="3" time="0.002846"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)" tests="9" assertions="9" errors="0" failures="0" skipped="0" time="0.242346">
-        <testcase name="Can create documentation search page instance" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)::Can create documentation search page instance" class="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" classname="Hyde.Framework.Testing.Feature.DocumentationSearchPageTest" assertions="1" time="0.044376"/>
-        <testcase name="Route key is set to documentation output directory" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)::Route key is set to documentation output directory" class="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" classname="Hyde.Framework.Testing.Feature.DocumentationSearchPageTest" assertions="1" time="0.021904"/>
-        <testcase name="Route key is set to configured documentation output directory" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)::Route key is set to configured documentation output directory" class="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" classname="Hyde.Framework.Testing.Feature.DocumentationSearchPageTest" assertions="1" time="0.021891"/>
-        <testcase name="Enabled defaults to true" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)::Enabled defaults to true" class="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" classname="Hyde.Framework.Testing.Feature.DocumentationSearchPageTest" assertions="1" time="0.038389"/>
-        <testcase name="Enabled is false when disabled" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)::Enabled is false when disabled" class="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" classname="Hyde.Framework.Testing.Feature.DocumentationSearchPageTest" assertions="1" time="0.020283"/>
-        <testcase name="Enabled is false when route exists" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)::Enabled is false when route exists" class="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" classname="Hyde.Framework.Testing.Feature.DocumentationSearchPageTest" assertions="1" time="0.024850"/>
-        <testcase name="Enabled is false when disabled and route exists" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)::Enabled is false when disabled and route exists" class="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" classname="Hyde.Framework.Testing.Feature.DocumentationSearchPageTest" assertions="1" time="0.029094"/>
-        <testcase name="Static route key helper" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)::Static route key helper" class="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" classname="Hyde.Framework.Testing.Feature.DocumentationSearchPageTest" assertions="1" time="0.021031"/>
-        <testcase name="Static route key helper with custom output directory" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)::Static route key helper with custom output directory" class="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" classname="Hyde.Framework.Testing.Feature.DocumentationSearchPageTest" assertions="1" time="0.020526"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\ExampleTest" file="Example (Hyde\Framework\Testing\Feature\Example)" tests="1" assertions="1" errors="0" failures="0" skipped="0" time="0.033536">
-        <testcase name="Example" file="Example (Hyde\Framework\Testing\Feature\Example)::Example" class="Hyde\Framework\Testing\Feature\ExampleTest" classname="Hyde.Framework.Testing.Feature.ExampleTest" assertions="1" time="0.033536"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\FeaturedImageFactoryTest" file="Featured Image Factory (Hyde\Framework\Testing\Feature\FeaturedImageFactory)" tests="8" assertions="27" errors="0" failures="0" skipped="0" time="0.178925">
-        <testcase name="With data from schema" file="Featured Image Factory (Hyde\Framework\Testing\Feature\FeaturedImageFactory)::With data from schema" class="Hyde\Framework\Testing\Feature\FeaturedImageFactoryTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageFactoryTest" assertions="1" time="0.023327"/>
-        <testcase name="Make method creates image when path is set" file="Featured Image Factory (Hyde\Framework\Testing\Feature\FeaturedImageFactory)::Make method creates image when path is set" class="Hyde\Framework\Testing\Feature\FeaturedImageFactoryTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageFactoryTest" assertions="2" time="0.021445"/>
-        <testcase name="Make method throws exception if no path information is set" file="Featured Image Factory (Hyde\Framework\Testing\Feature\FeaturedImageFactory)::Make method throws exception if no path information is set" class="Hyde\Framework\Testing\Feature\FeaturedImageFactoryTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageFactoryTest" assertions="2" time="0.020517"/>
-        <testcase name="Make method can create image from just string" file="Featured Image Factory (Hyde\Framework\Testing\Feature\FeaturedImageFactory)::Make method can create image from just string" class="Hyde\Framework\Testing\Feature\FeaturedImageFactoryTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageFactoryTest" assertions="2" time="0.021277"/>
-        <testcase name="Make method can create image from just string with url" file="Featured Image Factory (Hyde\Framework\Testing\Feature\FeaturedImageFactory)::Make method can create image from just string with url" class="Hyde\Framework\Testing\Feature\FeaturedImageFactoryTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageFactoryTest" assertions="2" time="0.020982"/>
-        <testcase name="Image paths are normalized" file="Featured Image Factory (Hyde\Framework\Testing\Feature\FeaturedImageFactory)::Image paths are normalized" class="Hyde\Framework\Testing\Feature\FeaturedImageFactoryTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageFactoryTest" assertions="6" time="0.022177"/>
-        <testcase name="Image paths are normalized for customized media directory" file="Featured Image Factory (Hyde\Framework\Testing\Feature\FeaturedImageFactory)::Image paths are normalized for customized media directory" class="Hyde\Framework\Testing\Feature\FeaturedImageFactoryTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageFactoryTest" assertions="6" time="0.024969"/>
-        <testcase name="Image paths are normalized for customized media directory without underscore" file="Featured Image Factory (Hyde\Framework\Testing\Feature\FeaturedImageFactory)::Image paths are normalized for customized media directory without underscore" class="Hyde\Framework\Testing\Feature\FeaturedImageFactoryTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageFactoryTest" assertions="6" time="0.024231"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\FeaturedImageTest" file="Featured Image (Hyde\Framework\Testing\Feature\FeaturedImage)" tests="7" assertions="19" errors="0" failures="0" skipped="0" time="0.172836">
-        <testcase name="Get metadata array" file="Featured Image (Hyde\Framework\Testing\Feature\FeaturedImage)::Get metadata array" class="Hyde\Framework\Testing\Feature\FeaturedImageTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageTest" assertions="4" time="0.034109"/>
-        <testcase name="Can construct featured image" file="Featured Image (Hyde\Framework\Testing\Feature\FeaturedImage)::Can construct featured image" class="Hyde\Framework\Testing\Feature\FeaturedImageTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageTest" assertions="2" time="0.020924"/>
-        <testcase name="Featured image get content length" file="Featured Image (Hyde\Framework\Testing\Feature\FeaturedImage)::Featured image get content length" class="Hyde\Framework\Testing\Feature\FeaturedImageTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageTest" assertions="1" time="0.021084"/>
-        <testcase name="Featured image get content length with remote source" file="Featured Image (Hyde\Framework\Testing\Feature\FeaturedImage)::Featured image get content length with remote source" class="Hyde\Framework\Testing\Feature\FeaturedImageTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageTest" assertions="1" time="0.032300"/>
-        <testcase name="Featured image get content length with remote source and not found response" file="Featured Image (Hyde\Framework\Testing\Feature\FeaturedImage)::Featured image get content length with remote source and not found response" class="Hyde\Framework\Testing\Feature\FeaturedImageTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageTest" assertions="1" time="0.021253"/>
-        <testcase name="Featured image get content length with remote source and invalid response" file="Featured Image (Hyde\Framework\Testing\Feature\FeaturedImage)::Featured image get content length with remote source and invalid response" class="Hyde\Framework\Testing\Feature\FeaturedImageTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageTest" assertions="1" time="0.021009"/>
-        <testcase name="Get source method" file="Featured Image (Hyde\Framework\Testing\Feature\FeaturedImage)::Get source method" class="Hyde\Framework\Testing\Feature\FeaturedImageTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageTest" assertions="9" time="0.022157"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\FileCollectionTest" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)" tests="9" assertions="16" errors="0" failures="0" skipped="0" time="0.234559">
-        <testcase name="Boot method creates new page collection and discovers pages automatically" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)::Boot method creates new page collection and discovers pages automatically" class="Hyde\Framework\Testing\Feature\FileCollectionTest" classname="Hyde.Framework.Testing.Feature.FileCollectionTest" assertions="3" time="0.031613"/>
-        <testcase name="Get file returns parsed file object for given file path" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)::Get file returns parsed file object for given file path" class="Hyde\Framework\Testing\Feature\FileCollectionTest" classname="Hyde.Framework.Testing.Feature.FileCollectionTest" assertions="1" time="0.025467"/>
-        <testcase name="Get file throws exception when file is not found" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)::Get file throws exception when file is not found" class="Hyde\Framework\Testing\Feature\FileCollectionTest" classname="Hyde.Framework.Testing.Feature.FileCollectionTest" assertions="2" time="0.024336"/>
-        <testcase name="Get source files returns all discovered source files when no parameter is supplied" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)::Get source files returns all discovered source files when no parameter is supplied" class="Hyde\Framework\Testing\Feature\FileCollectionTest" classname="Hyde.Framework.Testing.Feature.FileCollectionTest" assertions="1" time="0.025508"/>
-        <testcase name="Get source files does not include non page source files" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)::Get source files does not include non page source files" class="Hyde\Framework\Testing\Feature\FileCollectionTest" classname="Hyde.Framework.Testing.Feature.FileCollectionTest" assertions="1" time="0.035682"/>
-        <testcase name="Blade pages are discovered" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)::Blade pages are discovered" class="Hyde\Framework\Testing\Feature\FileCollectionTest" classname="Hyde.Framework.Testing.Feature.FileCollectionTest" assertions="2" time="0.023059"/>
-        <testcase name="Markdown pages are discovered" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)::Markdown pages are discovered" class="Hyde\Framework\Testing\Feature\FileCollectionTest" classname="Hyde.Framework.Testing.Feature.FileCollectionTest" assertions="2" time="0.022328"/>
-        <testcase name="Markdown posts are discovered" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)::Markdown posts are discovered" class="Hyde\Framework\Testing\Feature\FileCollectionTest" classname="Hyde.Framework.Testing.Feature.FileCollectionTest" assertions="2" time="0.023914"/>
-        <testcase name="Documentation pages are discovered" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)::Documentation pages are discovered" class="Hyde\Framework\Testing\Feature\FileCollectionTest" classname="Hyde.Framework.Testing.Feature.FileCollectionTest" assertions="2" time="0.022652"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)" tests="59" assertions="66" errors="0" failures="0" skipped="0" time="1.288914">
-        <testcase name="Base path" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Base path" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.033334"/>
-        <testcase name="Absolute path" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Absolute path" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="2" time="0.020659"/>
-        <testcase name="Relative path" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Relative path" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="3" time="0.020908"/>
-        <testcase name="Smart glob" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Smart glob" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="2" time="0.021301"/>
-        <testcase name="Touch" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Touch" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020396"/>
-        <testcase name="Unlink" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Unlink" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020525"/>
-        <testcase name="Unlink if exists" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Unlink if exists" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020718"/>
-        <testcase name="Get contents" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Get contents" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020761"/>
-        <testcase name="Put contents" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Put contents" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020819"/>
-        <testcase name="Exists" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Exists" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020715"/>
-        <testcase name="Missing" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Missing" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021319"/>
-        <testcase name="Get" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Get" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.022523"/>
-        <testcase name="Shared get" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Shared get" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021184"/>
-        <testcase name="Get require" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Get require" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021079"/>
-        <testcase name="Require once" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Require once" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021339"/>
-        <testcase name="Lines" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Lines" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.023092"/>
-        <testcase name="Hash" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Hash" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.022678"/>
-        <testcase name="Put" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Put" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.022064"/>
-        <testcase name="Replace" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Replace" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.022739"/>
-        <testcase name="Replace in file" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Replace in file" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021844"/>
-        <testcase name="Prepend" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Prepend" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021837"/>
-        <testcase name="Append" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Append" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021948"/>
-        <testcase name="Chmod" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Chmod" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021564"/>
-        <testcase name="Delete" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Delete" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021325"/>
-        <testcase name="Delete with array" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Delete with array" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.022164"/>
-        <testcase name="Move" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Move" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.036243"/>
-        <testcase name="Copy" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Copy" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021462"/>
-        <testcase name="Link" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Link" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020730"/>
-        <testcase name="Relative link" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Relative link" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020704"/>
-        <testcase name="Name" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Name" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021303"/>
-        <testcase name="Basename" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Basename" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020698"/>
-        <testcase name="Dirname" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Dirname" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020493"/>
-        <testcase name="Extension" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Extension" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.022220"/>
-        <testcase name="Guess extension" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Guess extension" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.022618"/>
-        <testcase name="Type" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Type" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021192"/>
-        <testcase name="Mime type" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Mime type" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021123"/>
-        <testcase name="Size" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Size" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021938"/>
-        <testcase name="Last modified" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Last modified" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.022333"/>
-        <testcase name="Is directory" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Is directory" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.022687"/>
-        <testcase name="Is empty directory" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Is empty directory" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021542"/>
-        <testcase name="Is readable" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Is readable" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021234"/>
-        <testcase name="Is writable" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Is writable" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021496"/>
-        <testcase name="Has same hash" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Has same hash" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020971"/>
-        <testcase name="Is file" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Is file" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021028"/>
-        <testcase name="Glob" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Glob" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020957"/>
-        <testcase name="Files" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Files" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021101"/>
-        <testcase name="All files" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::All files" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020816"/>
-        <testcase name="Directories" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Directories" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020901"/>
-        <testcase name="Ensure directory exists" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Ensure directory exists" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020727"/>
-        <testcase name="Make directory" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Make directory" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020665"/>
-        <testcase name="Move directory" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Move directory" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020867"/>
-        <testcase name="Copy directory" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Copy directory" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020859"/>
-        <testcase name="Delete directory" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Delete directory" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020843"/>
-        <testcase name="Delete directories" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Delete directories" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020963"/>
-        <testcase name="Clean directory" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Clean directory" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.025108"/>
-        <testcase name="Method without mocking" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Method without mocking" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="2" time="0.021263"/>
-        <testcase name="Method with named arguments" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Method with named arguments" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="2" time="0.021020"/>
-        <testcase name="Method with mixed sequential and named arguments" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Method with mixed sequential and named arguments" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="2" time="0.020955"/>
-        <testcase name="Method with mixed sequential and named arguments skipping middle one" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Method with mixed sequential and named arguments skipping middle one" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021016"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)" tests="51" assertions="84" errors="0" failures="0" skipped="0" time="0.214757">
-        <testcase name="Get base path returns kernels base path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Get base path returns kernels base path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.078937"/>
-        <testcase name="Path method exists" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method exists" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002651"/>
-        <testcase name="Path method returns string" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method returns string" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002540"/>
-        <testcase name="Path method returns base path when not supplied with argument" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method returns base path when not supplied with argument" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002601"/>
-        <testcase name="Path method returns path relative to base path when supplied with argument" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method returns path relative to base path when supplied with argument" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002784"/>
-        <testcase name="Path method returns qualified file path when supplied with argument" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method returns qualified file path when supplied with argument" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002650"/>
-        <testcase name="Path method returns expected value for nested path arguments" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method returns expected value for nested path arguments" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002664"/>
-        <testcase name="Path method strips trailing directory separators from argument" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method strips trailing directory separators from argument" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002650"/>
-        <testcase name="Path method returns expected value regardless of trailing directory separators in argument" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method returns expected value regardless of trailing directory separators in argument" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002676"/>
-        <testcase name="Path method resolves already absolute paths" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method resolves already absolute paths" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002607"/>
-        <testcase name="Path method resolves already absolute paths using helper" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method resolves already absolute paths using helper" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002643"/>
-        <testcase name="Path method resolves already absolute paths using helper with trailing slash" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method resolves already absolute paths using helper with trailing slash" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002666"/>
-        <testcase name="Path method does not modify phar paths" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method does not modify phar paths" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002493"/>
-        <testcase name="Hyde path method exists" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Hyde path method exists" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002467"/>
-        <testcase name="Hyde path string is returned" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Hyde path string is returned" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002564"/>
-        <testcase name="Hyde path returned directory contains content expected to be in the project directory" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Hyde path returned directory contains content expected to be in the project directory" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002678"/>
-        <testcase name="Vendor path method exists" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Vendor path method exists" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002451"/>
-        <testcase name="Vendor path method returns string" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Vendor path method returns string" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002605"/>
-        <testcase name="Vendor path method returns the vendor path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Vendor path method returns the vendor path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002645"/>
-        <testcase name="Vendor path method returns qualified file path when supplied with argument" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Vendor path method returns qualified file path when supplied with argument" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002633"/>
-        <testcase name="Vendor path method returns expected value regardless of trailing directory separators in argument" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Vendor path method returns expected value regardless of trailing directory separators in argument" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002687"/>
-        <testcase name="Vendor path can specify which hyde package to use" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Vendor path can specify which hyde package to use" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="2" time="0.002776"/>
-        <testcase name="Vendor path can run in phar" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Vendor path can run in phar" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002768"/>
-        <testcase name="Touch helper creates file at given path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Touch helper creates file at given path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="2" time="0.002897"/>
-        <testcase name="Touch helper creates multiple files at given paths" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Touch helper creates multiple files at given paths" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="3" time="0.003030"/>
-        <testcase name="Unlink helper deletes file at given path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Unlink helper deletes file at given path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="2" time="0.002863"/>
-        <testcase name="Unlink helper deletes multiple files at given paths" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Unlink helper deletes multiple files at given paths" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="3" time="0.003101"/>
-        <testcase name="Unlink if exists helper deletes file at given path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Unlink if exists helper deletes file at given path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="2" time="0.002882"/>
-        <testcase name="Unlink if exists handles non existent files gracefully" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Unlink if exists handles non existent files gracefully" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002573"/>
-        <testcase name="Get model source path method returns path for model classes" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Get model source path method returns path for model classes" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="5" time="0.003231"/>
-        <testcase name="Get model source path method returns path to file for model classes" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Get model source path method returns path to file for model classes" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="5" time="0.003222"/>
-        <testcase name="Helper for blade pages" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for blade pages" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002628"/>
-        <testcase name="Helper for markdown pages" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for markdown pages" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002621"/>
-        <testcase name="Helper for markdown posts" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for markdown posts" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002655"/>
-        <testcase name="Helper for documentation pages" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for documentation pages" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002638"/>
-        <testcase name="Helper for media path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for media path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002591"/>
-        <testcase name="Helper for media path returns path to file within the directory" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for media path returns path to file within the directory" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002621"/>
-        <testcase name="Get media path returns absolute path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Get media path returns absolute path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002609"/>
-        <testcase name="Helper for media output path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for media output path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002618"/>
-        <testcase name="Helper for media output path returns path to file within the directory" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for media output path returns path to file within the directory" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002665"/>
-        <testcase name="Get media output path returns absolute path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Get media output path returns absolute path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002636"/>
-        <testcase name="Helper for site output path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for site output path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002582"/>
-        <testcase name="Helper for site output path returns path to file within the directory" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for site output path returns path to file within the directory" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002619"/>
-        <testcase name="Get site output path returns absolute path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Get site output path returns absolute path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002589"/>
-        <testcase name="Site output path helper ignores trailing slashes" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Site output path helper ignores trailing slashes" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002656"/>
-        <testcase name="Path to absolute" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path to absolute" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002585"/>
-        <testcase name="Path to absolute helper is alias for path helper" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path to absolute helper is alias for path helper" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002586"/>
-        <testcase name="Path to absolute can convert array of paths" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path to absolute can convert array of paths" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002689"/>
-        <testcase name="Path to relative helper decodes hyde path into relative" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path to relative helper decodes hyde path into relative" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="5" time="0.003110"/>
-        <testcase name="Path to relative helper does not modify already relative paths" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path to relative helper does not modify already relative paths" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="7" time="0.003185"/>
-        <testcase name="Path to relative helper does not modify non project paths" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path to relative helper does not modify non project paths" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="8" time="0.003241"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)" tests="13" assertions="20" errors="0" failures="0" skipped="0" time="0.328345">
-        <testcase name="Asset helper gets relative web link to image stored in site media folder" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Asset helper gets relative web link to image stored in site media folder" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="4" time="0.069376"/>
-        <testcase name="Asset helper resolves paths for nested pages" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Asset helper resolves paths for nested pages" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="4" time="0.024048"/>
-        <testcase name="Asset helper returns qualified absolute uri when requested and site has base url" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Asset helper returns qualified absolute uri when requested and site has base url" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.019790"/>
-        <testcase name="Asset helper returns default relative path when qualified absolute uri is requested but site has no base url" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Asset helper returns default relative path when qualified absolute uri is requested but site has no base url" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.020297"/>
-        <testcase name="Asset helper returns input when qualified absolute uri is requested but image is already qualified" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Asset helper returns input when qualified absolute uri is requested but image is already qualified" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.020196"/>
-        <testcase name="Asset helper uses configured media directory" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Asset helper uses configured media directory" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.020448"/>
-        <testcase name="Media link helper" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Media link helper" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.020359"/>
-        <testcase name="Media link helper with relative path" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Media link helper with relative path" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.022050"/>
-        <testcase name="Media link helper uses configured media directory" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Media link helper uses configured media directory" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.020293"/>
-        <testcase name="Media link helper with validation and existing file" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Media link helper with validation and existing file" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.020759"/>
-        <testcase name="Media link helper with validation and non existing file" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Media link helper with validation and non existing file" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.020820"/>
-        <testcase name="Route helper" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Route helper" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="2" time="0.025697"/>
-        <testcase name="Route helper with invalid route" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Route helper with invalid route" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.024213"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)" tests="9" assertions="9" errors="0" failures="0" skipped="0" time="0.247705">
-        <testcase name="Site metadata adds config defined metadata" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)::Site metadata adds config defined metadata" class="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" classname="Hyde.Framework.Testing.Feature.GlobalMetadataBagTest" assertions="1" time="0.039334"/>
-        <testcase name="Site metadata automatically adds sitemap when enabled" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)::Site metadata automatically adds sitemap when enabled" class="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" classname="Hyde.Framework.Testing.Feature.GlobalMetadataBagTest" assertions="1" time="0.034281"/>
-        <testcase name="Site metadata sitemap uses configured site url" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)::Site metadata sitemap uses configured site url" class="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" classname="Hyde.Framework.Testing.Feature.GlobalMetadataBagTest" assertions="1" time="0.021467"/>
-        <testcase name="Site metadata automatically adds rss feed when enabled" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)::Site metadata automatically adds rss feed when enabled" class="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" classname="Hyde.Framework.Testing.Feature.GlobalMetadataBagTest" assertions="1" time="0.026928"/>
-        <testcase name="Site metadata rss feed uses configured site url" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)::Site metadata rss feed uses configured site url" class="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" classname="Hyde.Framework.Testing.Feature.GlobalMetadataBagTest" assertions="1" time="0.026913"/>
-        <testcase name="Site metadata rss feed uses configured site name" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)::Site metadata rss feed uses configured site name" class="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" classname="Hyde.Framework.Testing.Feature.GlobalMetadataBagTest" assertions="1" time="0.026726"/>
-        <testcase name="Site metadata rss feed uses configured rss file name" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)::Site metadata rss feed uses configured rss file name" class="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" classname="Hyde.Framework.Testing.Feature.GlobalMetadataBagTest" assertions="1" time="0.027037"/>
-        <testcase name="Metadata existing in the current page is not added" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)::Metadata existing in the current page is not added" class="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" classname="Hyde.Framework.Testing.Feature.GlobalMetadataBagTest" assertions="1" time="0.022559"/>
-        <testcase name="Metadata existing in the current page is not added regardless of its value" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)::Metadata existing in the current page is not added regardless of its value" class="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" classname="Hyde.Framework.Testing.Feature.GlobalMetadataBagTest" assertions="1" time="0.022460"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\HelpersTest" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)" tests="38" assertions="58" errors="0" failures="0" skipped="1" time="0.845078">
-        <testcase name="Hyde function exists" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde function exists" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.034829"/>
-        <testcase name="Hyde function returns hyde kernel class" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde function returns hyde kernel class" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.020815"/>
-        <testcase name="Can call methods on returned hyde class" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Can call methods on returned hyde class" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.020165"/>
-        <testcase name="Unslash function exists" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Unslash function exists" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.019780"/>
-        <testcase name="Unslash function trims trailing slashes" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Unslash function trims trailing slashes" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="14" time="0.021115"/>
-        <testcase name="Asset function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Asset function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="2" time="0.020236"/>
-        <testcase name="Asset function with qualified url" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Asset function with qualified url" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="2" time="0.020725"/>
-        <testcase name="Asset function with external url" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Asset function with external url" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="2" time="0.020903"/>
-        <testcase name="Asset function with qualified url and no base url" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Asset function with qualified url and no base url" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.021641"/>
-        <testcase name="Asset function from nested page" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Asset function from nested page" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.022133"/>
-        <testcase name="Asset function from deeply nested page" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Asset function from deeply nested page" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.021465"/>
-        <testcase name="Asset function with custom media directory" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Asset function with custom media directory" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.020598"/>
-        <testcase name="Route function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Route function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="2" time="0.024538"/>
-        <testcase name="Route function with invalid route" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Route function with invalid route" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.024283"/>
-        <testcase name="Route function returns null for non existent route" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Route function returns null for non existent route" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.024555"/>
-        <testcase name="Url function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Url function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.020294"/>
-        <testcase name="Url function with base url" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Url function with base url" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.020933"/>
-        <testcase name="Url function without base url" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Url function without base url" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.020584"/>
-        <testcase name="Url function with already qualified url" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Url function with already qualified url" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="0" time="0.021770">
+    <testsuite name="FeatureFramework" tests="1278" assertions="2656" errors="0" failures="0" skipped="3" time="29.429292">
+      <testsuite name="Hyde\Framework\Testing\Feature\Actions\AnonymousViewCompilerTest" file="Anonymous View Compiler (Hyde\Framework\Testing\Feature\Actions\AnonymousViewCompiler)" tests="3" assertions="4" errors="0" failures="0" skipped="0" time="0.075199">
+        <testcase name="Can compile blade file" file="Anonymous View Compiler (Hyde\Framework\Testing\Feature\Actions\AnonymousViewCompiler)::Can compile blade file" class="Hyde\Framework\Testing\Feature\Actions\AnonymousViewCompilerTest" classname="Hyde.Framework.Testing.Feature.Actions.AnonymousViewCompilerTest" assertions="1" time="0.033658"/>
+        <testcase name="Can compile blade file with data" file="Anonymous View Compiler (Hyde\Framework\Testing\Feature\Actions\AnonymousViewCompiler)::Can compile blade file with data" class="Hyde\Framework\Testing\Feature\Actions\AnonymousViewCompilerTest" classname="Hyde.Framework.Testing.Feature.Actions.AnonymousViewCompilerTest" assertions="1" time="0.021499"/>
+        <testcase name="With missing view" file="Anonymous View Compiler (Hyde\Framework\Testing\Feature\Actions\AnonymousViewCompiler)::With missing view" class="Hyde\Framework\Testing\Feature\Actions\AnonymousViewCompilerTest" classname="Hyde.Framework.Testing.Feature.Actions.AnonymousViewCompilerTest" assertions="2" time="0.020042"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)" tests="28" assertions="28" errors="0" failures="0" skipped="0" time="0.608671">
+        <testcase name="It removes headings" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes headings" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.024481"/>
+        <testcase name="It removes headings alternate syntax" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes headings alternate syntax" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.019540"/>
+        <testcase name="It removes paragraphs" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes paragraphs" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020472"/>
+        <testcase name="It removes paragraphs multiline" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes paragraphs multiline" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.029478"/>
+        <testcase name="It removes linebreaks" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes linebreaks" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.031978"/>
+        <testcase name="It removes bold" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes bold" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020086"/>
+        <testcase name="It removes italic" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes italic" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.031393"/>
+        <testcase name="It removes bold and italic" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes bold and italic" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020464"/>
+        <testcase name="It removes blockquotes" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes blockquotes" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020046"/>
+        <testcase name="It removes blockquotes with multiple paragraphs" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes blockquotes with multiple paragraphs" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.019993"/>
+        <testcase name="It removes ordered lists" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes ordered lists" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.026090"/>
+        <testcase name="It removes unordered lists" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes unordered lists" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.027140"/>
+        <testcase name="It removes code" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes code" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.019914"/>
+        <testcase name="It removes code blocks" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes code blocks" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.019843"/>
+        <testcase name="It removes horizontal rules" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes horizontal rules" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.019720"/>
+        <testcase name="It removes links" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes links" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.019957"/>
+        <testcase name="It removes images" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes images" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020008"/>
+        <testcase name="It removes linking images" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes linking images" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.020040"/>
+        <testcase name="It removes html" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes html" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.019891"/>
+        <testcase name="It removes footnotes" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes footnotes" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.019731"/>
+        <testcase name="It removes footnotes alternate" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes footnotes alternate" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.019846"/>
+        <testcase name="It replaces consecutively occurring newlines" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It replaces consecutively occurring newlines" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.019764"/>
+        <testcase name="It removes fenced code blocks" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes fenced code blocks" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.019776"/>
+        <testcase name="It removes fenced code blocks alternate" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes fenced code blocks alternate" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.019712"/>
+        <testcase name="It removes tables" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It removes tables" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.019725"/>
+        <testcase name="It trims indentation" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::It trims indentation" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.019819"/>
+        <testcase name="With empty string" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::With empty string" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.019989"/>
+        <testcase name="With only empty lines" file="Converts Markdown To Plain Text (Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainText)::With only empty lines" class="Hyde\Framework\Testing\Feature\Actions\ConvertsMarkdownToPlainTextTest" classname="Hyde.Framework.Testing.Feature.Actions.ConvertsMarkdownToPlainTextTest" assertions="1" time="0.019776"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)" tests="15" assertions="28" errors="0" failures="0" skipped="0" time="0.390928">
+        <testcase name="Class can be instantiated" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::Class can be instantiated" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="1" time="0.089125"/>
+        <testcase name="That an exception is thrown for invalid page type" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::That an exception is thrown for invalid page type" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="2" time="0.021514"/>
+        <testcase name="That an exception is thrown if file already exists and overwrite is false" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::That an exception is thrown if file already exists and overwrite is false" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="3" time="0.021069"/>
+        <testcase name="That can save file returns true if file already exists and overwrite is true" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::That can save file returns true if file already exists and overwrite is true" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="1" time="0.022211"/>
+        <testcase name="Exception is thrown for conflicting blade pages" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::Exception is thrown for conflicting blade pages" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="3" time="0.021403"/>
+        <testcase name="Exception is thrown for conflicting documentation pages" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::Exception is thrown for conflicting documentation pages" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="3" time="0.021050"/>
+        <testcase name="That a markdown file can be created and contains expected content" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::That a markdown file can be created and contains expected content" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="2" time="0.022381"/>
+        <testcase name="That a blade file can be created and contains expected content" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::That a blade file can be created and contains expected content" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="2" time="0.020693"/>
+        <testcase name="That a documentation file can be created and contains expected content" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::That a documentation file can be created and contains expected content" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="2" time="0.021918"/>
+        <testcase name="That a markdown file can be created with custom content" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::That a markdown file can be created with custom content" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="2" time="0.021787"/>
+        <testcase name="That a blade file can be created with custom content" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::That a blade file can be created with custom content" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="2" time="0.020518"/>
+        <testcase name="That the file path can be returned" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::That the file path can be returned" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="2" time="0.022171"/>
+        <testcase name="File is created using slug generated from title" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::File is created using slug generated from title" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="1" time="0.021591"/>
+        <testcase name="Action can generate nested pages" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::Action can generate nested pages" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="1" time="0.021758"/>
+        <testcase name="Can create deeply nested pages" file="Creates New Page Source File (Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFile)::Can create deeply nested pages" class="Hyde\Framework\Testing\Feature\Actions\CreatesNewPageSourceFileTest" classname="Hyde.Framework.Testing.Feature.Actions.CreatesNewPageSourceFileTest" assertions="1" time="0.021738"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)" tests="9" assertions="13" errors="0" failures="0" skipped="0" time="0.067790">
+        <testcase name="Can generate table of contents" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)::Can generate table of contents" class="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" classname="Hyde.Framework.Testing.Feature.Actions.GeneratesSidebarTableOfContentsTest" assertions="4" time="0.024760"/>
+        <testcase name="Return string contains expected content" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)::Return string contains expected content" class="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" classname="Hyde.Framework.Testing.Feature.Actions.GeneratesSidebarTableOfContentsTest" assertions="1" time="0.004358"/>
+        <testcase name="Can generate table of contents for document using setext headers" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)::Can generate table of contents for document using setext headers" class="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" classname="Hyde.Framework.Testing.Feature.Actions.GeneratesSidebarTableOfContentsTest" assertions="2" time="0.009278"/>
+        <testcase name="Non heading markdown is removed" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)::Non heading markdown is removed" class="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" classname="Hyde.Framework.Testing.Feature.Actions.GeneratesSidebarTableOfContentsTest" assertions="1" time="0.006847"/>
+        <testcase name="With no level one heading" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)::With no level one heading" class="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" classname="Hyde.Framework.Testing.Feature.Actions.GeneratesSidebarTableOfContentsTest" assertions="1" time="0.004115"/>
+        <testcase name="With multiple nested headings" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)::With multiple nested headings" class="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" classname="Hyde.Framework.Testing.Feature.Actions.GeneratesSidebarTableOfContentsTest" assertions="1" time="0.006328"/>
+        <testcase name="With multiple level one headings" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)::With multiple level one headings" class="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" classname="Hyde.Framework.Testing.Feature.Actions.GeneratesSidebarTableOfContentsTest" assertions="1" time="0.005070"/>
+        <testcase name="With no headings" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)::With no headings" class="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" classname="Hyde.Framework.Testing.Feature.Actions.GeneratesSidebarTableOfContentsTest" assertions="1" time="0.003785"/>
+        <testcase name="With no content" file="Generates Sidebar Table Of Contents (Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContents)::With no content" class="Hyde\Framework\Testing\Feature\Actions\GeneratesSidebarTableOfContentsTest" classname="Hyde.Framework.Testing.Feature.Actions.GeneratesSidebarTableOfContentsTest" assertions="1" time="0.003249"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\AssetServiceTest" file="Asset Service (Hyde\Framework\Testing\Feature\AssetService)" tests="3" assertions="6" errors="0" failures="0" skipped="0" time="0.085906">
+        <testcase name="Media link returns media path with cache key" file="Asset Service (Hyde\Framework\Testing\Feature\AssetService)::Media link returns media path with cache key" class="Hyde\Framework\Testing\Feature\AssetServiceTest" classname="Hyde.Framework.Testing.Feature.AssetServiceTest" assertions="2" time="0.044317"/>
+        <testcase name="Media link returns media path without cache key if cache busting is disabled" file="Asset Service (Hyde\Framework\Testing\Feature\AssetService)::Media link returns media path without cache key if cache busting is disabled" class="Hyde\Framework\Testing\Feature\AssetServiceTest" classname="Hyde.Framework.Testing.Feature.AssetServiceTest" assertions="2" time="0.020672"/>
+        <testcase name="Media link supports custom media directories" file="Asset Service (Hyde\Framework\Testing\Feature\AssetService)::Media link supports custom media directories" class="Hyde\Framework\Testing\Feature\AssetServiceTest" classname="Hyde.Framework.Testing.Feature.AssetServiceTest" assertions="2" time="0.020917"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\BladeMatterParserTest" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)" tests="15" assertions="38" errors="0" failures="0" skipped="0" time="0.304370">
+        <testcase name="Can parse front matter" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Can parse front matter" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.024527"/>
+        <testcase name="Parse string helper method" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Parse string helper method" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.019654"/>
+        <testcase name="Parse file helper method" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Parse file helper method" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.020312"/>
+        <testcase name="Can parse multiple front matter lines" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Can parse multiple front matter lines" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.019896"/>
+        <testcase name="Can parse front matter with various formats" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Can parse front matter with various formats" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="4" time="0.020325"/>
+        <testcase name="Can parse front matter with array" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Can parse front matter with array" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.019912"/>
+        <testcase name="Line matches front matter" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Line matches front matter" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="2" time="0.019835"/>
+        <testcase name="Directive cannot have leading whitespace" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Directive cannot have leading whitespace" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.019612"/>
+        <testcase name="Directive signature cannot contain whitespace" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Directive signature cannot contain whitespace" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="3" time="0.019814"/>
+        <testcase name="Extract key" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Extract key" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.019878"/>
+        <testcase name="Extract value" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Extract value" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.019744"/>
+        <testcase name="Get value with type" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Get value with type" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="11" time="0.020788"/>
+        <testcase name="Parse array string" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Parse array string" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="8" time="0.020797"/>
+        <testcase name="Parse invalid array string" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Parse invalid array string" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.019577"/>
+        <testcase name="Parse multidimensional array string" file="Blade Matter Parser (Hyde\Framework\Testing\Feature\BladeMatterParser)::Parse multidimensional array string" class="Hyde\Framework\Testing\Feature\BladeMatterParserTest" classname="Hyde.Framework.Testing.Feature.BladeMatterParserTest" assertions="1" time="0.019699"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodesTest" file="Colored Blockquote Shortcodes (Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodes)" tests="5" assertions="5" errors="0" failures="0" skipped="0" time="0.033068">
+        <testcase name="Signature" file="Colored Blockquote Shortcodes (Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodes)::Signature" class="Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodesTest" classname="Hyde.Framework.Testing.Feature.ColoredBlockquoteShortcodesTest" assertions="1" time="0.023054"/>
+        <testcase name="Signatures" file="Colored Blockquote Shortcodes (Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodes)::Signatures" class="Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodesTest" classname="Hyde.Framework.Testing.Feature.ColoredBlockquoteShortcodesTest" assertions="1" time="0.001946"/>
+        <testcase name="Resolve method" file="Colored Blockquote Shortcodes (Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodes)::Resolve method" class="Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodesTest" classname="Hyde.Framework.Testing.Feature.ColoredBlockquoteShortcodesTest" assertions="1" time="0.002888"/>
+        <testcase name="Can use markdown within blockquote" file="Colored Blockquote Shortcodes (Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodes)::Can use markdown within blockquote" class="Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodesTest" classname="Hyde.Framework.Testing.Feature.ColoredBlockquoteShortcodesTest" assertions="1" time="0.003302"/>
+        <testcase name="With unrelated class" file="Colored Blockquote Shortcodes (Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodes)::With unrelated class" class="Hyde\Framework\Testing\Feature\ColoredBlockquoteShortcodesTest" classname="Hyde.Framework.Testing.Feature.ColoredBlockquoteShortcodesTest" assertions="1" time="0.001878"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\CommandTest" file="Command (Hyde\Framework\Testing\Feature\Command)" tests="23" assertions="31" errors="0" failures="0" skipped="0" time="0.056728">
+        <testcase name="User exit constant" file="Command (Hyde\Framework\Testing\Feature\Command)::User exit constant" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.007219"/>
+        <testcase name="File link helper creates link for existing file" file="Command (Hyde\Framework\Testing\Feature\Command)::File link helper creates link for existing file" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002252"/>
+        <testcase name="File link helper creates link for non existing file" file="Command (Hyde\Framework\Testing\Feature\Command)::File link helper creates link for non existing file" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002086"/>
+        <testcase name="File link helper with custom label" file="Command (Hyde\Framework\Testing\Feature\Command)::File link helper with custom label" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002032"/>
+        <testcase name="File link helper with absolute path input" file="Command (Hyde\Framework\Testing\Feature\Command)::File link helper with absolute path input" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002075"/>
+        <testcase name="File link helper with absolute path input and custom label" file="Command (Hyde\Framework\Testing\Feature\Command)::File link helper with absolute path input and custom label" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002084"/>
+        <testcase name="File link helper with absolute path and real file" file="Command (Hyde\Framework\Testing\Feature\Command)::File link helper with absolute path and real file" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002156"/>
+        <testcase name="Info comment" file="Command (Hyde\Framework\Testing\Feature\Command)::Info comment" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002356"/>
+        <testcase name="Info comment with extra info" file="Command (Hyde\Framework\Testing\Feature\Command)::Info comment with extra info" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002289"/>
+        <testcase name="Info comment with extra info and comments" file="Command (Hyde\Framework\Testing\Feature\Command)::Info comment with extra info and comments" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002314"/>
+        <testcase name="Href" file="Command (Hyde\Framework\Testing\Feature\Command)::Href" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002066"/>
+        <testcase name="Inline gray" file="Command (Hyde\Framework\Testing\Feature\Command)::Inline gray" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002124"/>
+        <testcase name="Gray" file="Command (Hyde\Framework\Testing\Feature\Command)::Gray" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002335"/>
+        <testcase name="Indented line" file="Command (Hyde\Framework\Testing\Feature\Command)::Indented line" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002298"/>
+        <testcase name="Indented line with multiple indentations" file="Command (Hyde\Framework\Testing\Feature\Command)::Indented line with multiple indentations" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002303"/>
+        <testcase name="Indented line with no indentation" file="Command (Hyde\Framework\Testing\Feature\Command)::Indented line with no indentation" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.002379"/>
+        <testcase name="Handle calls base safe handle" file="Command (Hyde\Framework\Testing\Feature\Command)::Handle calls base safe handle" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.001999"/>
+        <testcase name="Handle calls child safe handle" file="Command (Hyde\Framework\Testing\Feature\Command)::Handle calls child safe handle" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="1" time="0.001988"/>
+        <testcase name="Safe handle exception" file="Command (Hyde\Framework\Testing\Feature\Command)::Safe handle exception" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="2" time="0.002642"/>
+        <testcase name="Can enable throw on exception" file="Command (Hyde\Framework\Testing\Feature\Command)::Can enable throw on exception" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="2" time="0.002451"/>
+        <testcase name="Ask for string" file="Command (Hyde\Framework\Testing\Feature\Command)::Ask for string" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="3" time="0.002409"/>
+        <testcase name="Ask for string with default value" file="Command (Hyde\Framework\Testing\Feature\Command)::Ask for string with default value" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="3" time="0.002419"/>
+        <testcase name="Ask for string with default value supplying null" file="Command (Hyde\Framework\Testing\Feature\Command)::Ask for string with default value supplying null" class="Hyde\Framework\Testing\Feature\CommandTest" classname="Hyde.Framework.Testing.Feature.CommandTest" assertions="3" time="0.002453"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Commands\BuildRssFeedCommandTest" file="Build Rss Feed Command (Hyde\Framework\Testing\Feature\Commands\BuildRssFeedCommand)" tests="2" assertions="8" errors="0" failures="0" skipped="0" time="0.081106">
+        <testcase name="Rss feed is generated when conditions are met" file="Build Rss Feed Command (Hyde\Framework\Testing\Feature\Commands\BuildRssFeedCommand)::Rss feed is generated when conditions are met" class="Hyde\Framework\Testing\Feature\Commands\BuildRssFeedCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildRssFeedCommandTest" assertions="3" time="0.052123"/>
+        <testcase name="Rss filename can be changed" file="Build Rss Feed Command (Hyde\Framework\Testing\Feature\Commands\BuildRssFeedCommand)::Rss filename can be changed" class="Hyde\Framework\Testing\Feature\Commands\BuildRssFeedCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildRssFeedCommandTest" assertions="5" time="0.028983"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Commands\BuildSearchCommandTest" file="Build Search Command (Hyde\Framework\Testing\Feature\Commands\BuildSearchCommand)" tests="8" assertions="22" errors="0" failures="0" skipped="0" time="0.303364">
+        <testcase name="It creates the search json file" file="Build Search Command (Hyde\Framework\Testing\Feature\Commands\BuildSearchCommand)::It creates the search json file" class="Hyde\Framework\Testing\Feature\Commands\BuildSearchCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildSearchCommandTest" assertions="3" time="0.059412"/>
+        <testcase name="It creates the search page" file="Build Search Command (Hyde\Framework\Testing\Feature\Commands\BuildSearchCommand)::It creates the search page" class="Hyde\Framework\Testing\Feature\Commands\BuildSearchCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildSearchCommandTest" assertions="3" time="0.036003"/>
+        <testcase name="It does not create the search page if disabled" file="Build Search Command (Hyde\Framework\Testing\Feature\Commands\BuildSearchCommand)::It does not create the search page if disabled" class="Hyde\Framework\Testing\Feature\Commands\BuildSearchCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildSearchCommandTest" assertions="2" time="0.026360"/>
+        <testcase name="It does not display the estimation message when it is less than 1 second" file="Build Search Command (Hyde\Framework\Testing\Feature\Commands\BuildSearchCommand)::It does not display the estimation message when it is less than 1 second" class="Hyde\Framework\Testing\Feature\Commands\BuildSearchCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildSearchCommandTest" assertions="2" time="0.035680"/>
+        <testcase name="Search files can be generated for custom docs output directory" file="Build Search Command (Hyde\Framework\Testing\Feature\Commands\BuildSearchCommand)::Search files can be generated for custom docs output directory" class="Hyde\Framework\Testing\Feature\Commands\BuildSearchCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildSearchCommandTest" assertions="3" time="0.035803"/>
+        <testcase name="Search files can be generated for custom site output directory" file="Build Search Command (Hyde\Framework\Testing\Feature\Commands\BuildSearchCommand)::Search files can be generated for custom site output directory" class="Hyde\Framework\Testing\Feature\Commands\BuildSearchCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildSearchCommandTest" assertions="3" time="0.036003"/>
+        <testcase name="Search files can be generated for custom site and docs output directories" file="Build Search Command (Hyde\Framework\Testing\Feature\Commands\BuildSearchCommand)::Search files can be generated for custom site and docs output directories" class="Hyde\Framework\Testing\Feature\Commands\BuildSearchCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildSearchCommandTest" assertions="3" time="0.038027"/>
+        <testcase name="Search files can be generated for custom site and nested docs output directories" file="Build Search Command (Hyde\Framework\Testing\Feature\Commands\BuildSearchCommand)::Search files can be generated for custom site and nested docs output directories" class="Hyde\Framework\Testing\Feature\Commands\BuildSearchCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildSearchCommandTest" assertions="3" time="0.036075"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Commands\BuildSitemapCommandTest" file="Build Sitemap Command (Hyde\Framework\Testing\Feature\Commands\BuildSitemapCommand)" tests="1" assertions="3" errors="0" failures="0" skipped="0" time="0.054300">
+        <testcase name="Sitemap is generated when conditions are met" file="Build Sitemap Command (Hyde\Framework\Testing\Feature\Commands\BuildSitemapCommand)::Sitemap is generated when conditions are met" class="Hyde\Framework\Testing\Feature\Commands\BuildSitemapCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.BuildSitemapCommandTest" assertions="3" time="0.054300"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommandTest" file="Change Source Directory Command (Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommand)" tests="6" assertions="38" errors="0" failures="0" skipped="0" time="0.164033">
+        <testcase name="Command moves source directories to new supplied directory and updates the configuration file" file="Change Source Directory Command (Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommand)::Command moves source directories to new supplied directory and updates the configuration file" class="Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ChangeSourceDirectoryCommandTest" assertions="15" time="0.029679"/>
+        <testcase name="With missing config search string" file="Change Source Directory Command (Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommand)::With missing config search string" class="Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ChangeSourceDirectoryCommandTest" assertions="15" time="0.028266"/>
+        <testcase name="With name matching current value" file="Change Source Directory Command (Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommand)::With name matching current value" class="Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ChangeSourceDirectoryCommandTest" assertions="2" time="0.022182"/>
+        <testcase name="With existing directory" file="Change Source Directory Command (Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommand)::With existing directory" class="Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ChangeSourceDirectoryCommandTest" assertions="2" time="0.024147"/>
+        <testcase name="With target containing subdirectory file" file="Change Source Directory Command (Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommand)::With target containing subdirectory file" class="Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ChangeSourceDirectoryCommandTest" assertions="2" time="0.036125"/>
+        <testcase name="With target being file" file="Change Source Directory Command (Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommand)::With target being file" class="Hyde\Framework\Testing\Feature\Commands\ChangeSourceDirectoryCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ChangeSourceDirectoryCommandTest" assertions="2" time="0.023632"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Commands\DebugCommandTest" file="Debug Command (Hyde\Framework\Testing\Feature\Commands\DebugCommand)" tests="3" assertions="15" errors="0" failures="0" skipped="0" time="0.083645">
+        <testcase name="Debug command can run" file="Debug Command (Hyde\Framework\Testing\Feature\Commands\DebugCommand)::Debug command can run" class="Hyde\Framework\Testing\Feature\Commands\DebugCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.DebugCommandTest" assertions="1" time="0.033488"/>
+        <testcase name="It prints debug information" file="Debug Command (Hyde\Framework\Testing\Feature\Commands\DebugCommand)::It prints debug information" class="Hyde\Framework\Testing\Feature\Commands\DebugCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.DebugCommandTest" assertions="8" time="0.024979"/>
+        <testcase name="It prints verbose debug information" file="Debug Command (Hyde\Framework\Testing\Feature\Commands\DebugCommand)::It prints verbose debug information" class="Hyde\Framework\Testing\Feature\Commands\DebugCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.DebugCommandTest" assertions="6" time="0.025178"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)" tests="14" assertions="34" errors="0" failures="0" skipped="0" time="0.352817">
+        <testcase name="Command can run" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command can run" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="1" time="0.029562"/>
+        <testcase name="Command output" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command output" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="3" time="0.024826"/>
+        <testcase name="Command allows user to specify page type" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command allows user to specify page type" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="2" time="0.027154"/>
+        <testcase name="Type option is case insensitive" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Type option is case insensitive" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="2" time="0.027092"/>
+        <testcase name="Command fails if user specifies invalid page type" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command fails if user specifies invalid page type" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="3" time="0.022491"/>
+        <testcase name="Command creates markdown file" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command creates markdown file" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="2" time="0.024296"/>
+        <testcase name="Command creates blade file" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command creates blade file" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="2" time="0.023245"/>
+        <testcase name="Command creates documentation file" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command creates documentation file" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="2" time="0.026150"/>
+        <testcase name="Command fails if file already exists" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command fails if file already exists" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="3" time="0.022639"/>
+        <testcase name="Command overwrites existing files when force option is used" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command overwrites existing files when force option is used" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="2" time="0.025017"/>
+        <testcase name="Command prompts for title if it was not specified" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command prompts for title if it was not specified" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="3" time="0.025372"/>
+        <testcase name="Command falls back to default title if user enters nothing" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Command falls back to default title if user enters nothing" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="3" time="0.024940"/>
+        <testcase name="Page type shorthand can be used to create blade pages" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Page type shorthand can be used to create blade pages" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="3" time="0.023526"/>
+        <testcase name="Page type shorthand can be used to create documentation pages" file="Make Page Command (Hyde\Framework\Testing\Feature\Commands\MakePageCommand)::Page type shorthand can be used to create documentation pages" class="Hyde\Framework\Testing\Feature\Commands\MakePageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePageCommandTest" assertions="3" time="0.026508"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Commands\MakePostCommandTest" file="Make Post Command (Hyde\Framework\Testing\Feature\Commands\MakePostCommand)" tests="5" assertions="48" errors="0" failures="0" skipped="0" time="0.166606">
+        <testcase name="Command has expected output and creates valid file" file="Make Post Command (Hyde\Framework\Testing\Feature\Commands\MakePostCommand)::Command has expected output and creates valid file" class="Hyde\Framework\Testing\Feature\Commands\MakePostCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePostCommandTest" assertions="16" time="0.047564"/>
+        <testcase name="That files are not overwritten when force flag is not set" file="Make Post Command (Hyde\Framework\Testing\Feature\Commands\MakePostCommand)::That files are not overwritten when force flag is not set" class="Hyde\Framework\Testing\Feature\Commands\MakePostCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePostCommandTest" assertions="9" time="0.027341"/>
+        <testcase name="That files are overwritten when force flag is set" file="Make Post Command (Hyde\Framework\Testing\Feature\Commands\MakePostCommand)::That files are overwritten when force flag is set" class="Hyde\Framework\Testing\Feature\Commands\MakePostCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePostCommandTest" assertions="9" time="0.039762"/>
+        <testcase name="That title can be specified in command signature" file="Make Post Command (Hyde\Framework\Testing\Feature\Commands\MakePostCommand)::That title can be specified in command signature" class="Hyde\Framework\Testing\Feature\Commands\MakePostCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePostCommandTest" assertions="6" time="0.027390"/>
+        <testcase name="That command can be canceled" file="Make Post Command (Hyde\Framework\Testing\Feature\Commands\MakePostCommand)::That command can be canceled" class="Hyde\Framework\Testing\Feature\Commands\MakePostCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.MakePostCommandTest" assertions="8" time="0.024550"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Commands\PackageDiscoverCommandTest" file="Package Discover Command (Hyde\Framework\Testing\Feature\Commands\PackageDiscoverCommand)" tests="1" assertions="3" errors="0" failures="0" skipped="0" time="0.074965">
+        <testcase name="Package discover command registers manifest path" file="Package Discover Command (Hyde\Framework\Testing\Feature\Commands\PackageDiscoverCommand)::Package discover command registers manifest path" class="Hyde\Framework\Testing\Feature\Commands\PackageDiscoverCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PackageDiscoverCommandTest" assertions="3" time="0.074965"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Commands\PublishConfigsCommandTest" file="Publish Configs Command (Hyde\Framework\Testing\Feature\Commands\PublishConfigsCommand)" tests="3" assertions="16" errors="0" failures="0" skipped="0" time="0.094407">
+        <testcase name="Command has expected output" file="Publish Configs Command (Hyde\Framework\Testing\Feature\Commands\PublishConfigsCommand)::Command has expected output" class="Hyde\Framework\Testing\Feature\Commands\PublishConfigsCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishConfigsCommandTest" assertions="4" time="0.036361"/>
+        <testcase name="Config files are published" file="Publish Configs Command (Hyde\Framework\Testing\Feature\Commands\PublishConfigsCommand)::Config files are published" class="Hyde\Framework\Testing\Feature\Commands\PublishConfigsCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishConfigsCommandTest" assertions="8" time="0.029284"/>
+        <testcase name="Command overwrites existing files" file="Publish Configs Command (Hyde\Framework\Testing\Feature\Commands\PublishConfigsCommand)::Command overwrites existing files" class="Hyde\Framework\Testing\Feature\Commands\PublishConfigsCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishConfigsCommandTest" assertions="4" time="0.028762"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)" tests="9" assertions="28" errors="0" failures="0" skipped="0" time="0.264177">
+        <testcase name="There are no default pages" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)::There are no default pages" class="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishHomepageCommandTest" assertions="1" time="0.025040"/>
+        <testcase name="Command returns expected output" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)::Command returns expected output" class="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishHomepageCommandTest" assertions="3" time="0.025776"/>
+        <testcase name="Command returns expected output with rebuild" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)::Command returns expected output with rebuild" class="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishHomepageCommandTest" assertions="5" time="0.042429"/>
+        <testcase name="Command prompts for output" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)::Command prompts for output" class="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishHomepageCommandTest" assertions="5" time="0.025960"/>
+        <testcase name="Command shows feedback output when supplying a homepage name" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)::Command shows feedback output when supplying a homepage name" class="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishHomepageCommandTest" assertions="4" time="0.026198"/>
+        <testcase name="Command handles error code 404" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)::Command handles error code 404" class="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishHomepageCommandTest" assertions="2" time="0.024028"/>
+        <testcase name="Command does not overwrite modified files without force flag" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)::Command does not overwrite modified files without force flag" class="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishHomepageCommandTest" assertions="3" time="0.035049"/>
+        <testcase name="Command overwrites modified files if force flag is set" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)::Command overwrites modified files if force flag is set" class="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishHomepageCommandTest" assertions="3" time="0.027411"/>
+        <testcase name="Command does not return 409 if the current file is a default file" file="Publish Homepage Command (Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommand)::Command does not return 409 if the current file is a default file" class="Hyde\Framework\Testing\Feature\Commands\PublishHomepageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishHomepageCommandTest" assertions="2" time="0.032286"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Commands\PublishViewsCommandTest" file="Publish Views Command (Hyde\Framework\Testing\Feature\Commands\PublishViewsCommand)" tests="3" assertions="9" errors="0" failures="0" skipped="0" time="0.114975">
+        <testcase name="Command publishes views" file="Publish Views Command (Hyde\Framework\Testing\Feature\Commands\PublishViewsCommand)::Command publishes views" class="Hyde\Framework\Testing\Feature\Commands\PublishViewsCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishViewsCommandTest" assertions="4" time="0.053671"/>
+        <testcase name="Can select view" file="Publish Views Command (Hyde\Framework\Testing\Feature\Commands\PublishViewsCommand)::Can select view" class="Hyde\Framework\Testing\Feature\Commands\PublishViewsCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishViewsCommandTest" assertions="3" time="0.037477"/>
+        <testcase name="With invalid supplied tag" file="Publish Views Command (Hyde\Framework\Testing\Feature\Commands\PublishViewsCommand)::With invalid supplied tag" class="Hyde\Framework\Testing\Feature\Commands\PublishViewsCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.PublishViewsCommandTest" assertions="2" time="0.023828"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Commands\RebuildPageCommandTest" file="Rebuild Page Command (Hyde\Framework\Testing\Feature\Commands\RebuildPageCommand)" tests="6" assertions="12" errors="0" failures="0" skipped="0" time="0.194910">
+        <testcase name="Handle is successful with valid path" file="Rebuild Page Command (Hyde\Framework\Testing\Feature\Commands\RebuildPageCommand)::Handle is successful with valid path" class="Hyde\Framework\Testing\Feature\Commands\RebuildPageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RebuildPageCommandTest" assertions="2" time="0.042213"/>
+        <testcase name="Media files can be transferred" file="Rebuild Page Command (Hyde\Framework\Testing\Feature\Commands\RebuildPageCommand)::Media files can be transferred" class="Hyde\Framework\Testing\Feature\Commands\RebuildPageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RebuildPageCommandTest" assertions="2" time="0.028641"/>
+        <testcase name="Validate catches bad source directory" file="Rebuild Page Command (Hyde\Framework\Testing\Feature\Commands\RebuildPageCommand)::Validate catches bad source directory" class="Hyde\Framework\Testing\Feature\Commands\RebuildPageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RebuildPageCommandTest" assertions="2" time="0.022337"/>
+        <testcase name="Validate catches missing file" file="Rebuild Page Command (Hyde\Framework\Testing\Feature\Commands\RebuildPageCommand)::Validate catches missing file" class="Hyde\Framework\Testing\Feature\Commands\RebuildPageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RebuildPageCommandTest" assertions="2" time="0.022473"/>
+        <testcase name="Rebuild documentation page" file="Rebuild Page Command (Hyde\Framework\Testing\Feature\Commands\RebuildPageCommand)::Rebuild documentation page" class="Hyde\Framework\Testing\Feature\Commands\RebuildPageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RebuildPageCommandTest" assertions="2" time="0.041586"/>
+        <testcase name="Rebuild blog post" file="Rebuild Page Command (Hyde\Framework\Testing\Feature\Commands\RebuildPageCommand)::Rebuild blog post" class="Hyde\Framework\Testing\Feature\Commands\RebuildPageCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RebuildPageCommandTest" assertions="2" time="0.037660"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Commands\RouteListCommandTest" file="Route List Command (Hyde\Framework\Testing\Feature\Commands\RouteListCommand)" tests="5" assertions="31" errors="0" failures="0" skipped="0" time="0.171036">
+        <testcase name="Route list command" file="Route List Command (Hyde\Framework\Testing\Feature\Commands\RouteListCommand)::Route list command" class="Hyde\Framework\Testing\Feature\Commands\RouteListCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RouteListCommandTest" assertions="7" time="0.055727"/>
+        <testcase name="Console route list" file="Route List Command (Hyde\Framework\Testing\Feature\Commands\RouteListCommand)::Console route list" class="Hyde\Framework\Testing\Feature\Commands\RouteListCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RouteListCommandTest" assertions="6" time="0.028416"/>
+        <testcase name="Console route list with clickable output paths" file="Route List Command (Hyde\Framework\Testing\Feature\Commands\RouteListCommand)::Console route list with clickable output paths" class="Hyde\Framework\Testing\Feature\Commands\RouteListCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RouteListCommandTest" assertions="6" time="0.028941"/>
+        <testcase name="Console route list with dynamic pages" file="Route List Command (Hyde\Framework\Testing\Feature\Commands\RouteListCommand)::Console route list with dynamic pages" class="Hyde\Framework\Testing\Feature\Commands\RouteListCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RouteListCommandTest" assertions="6" time="0.028870"/>
+        <testcase name="Console route list with type label" file="Route List Command (Hyde\Framework\Testing\Feature\Commands\RouteListCommand)::Console route list with type label" class="Hyde\Framework\Testing\Feature\Commands\RouteListCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.RouteListCommandTest" assertions="6" time="0.029082"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)" tests="13" assertions="41" errors="0" failures="0" skipped="0" time="0.316718">
+        <testcase name="Hyde serve command" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.043449"/>
+        <testcase name="Hyde serve command with port option" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with port option" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.023100"/>
+        <testcase name="Hyde serve command with host option" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with host option" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.022311"/>
+        <testcase name="Hyde serve command with port and host option" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with port and host option" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.022198"/>
+        <testcase name="Hyde serve command with port defined in config" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with port defined in config" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.022077"/>
+        <testcase name="Hyde serve command with port defined in config and port option" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with port defined in config and port option" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.022236"/>
+        <testcase name="Hyde serve command with port missing in config and port option" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with port missing in config and port option" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.022281"/>
+        <testcase name="Hyde serve command with host defined in config" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with host defined in config" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.022354"/>
+        <testcase name="Hyde serve command with host defined in config and host option" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with host defined in config and host option" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.022618"/>
+        <testcase name="Hyde serve command with host missing in config and host option" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with host missing in config and host option" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.022491"/>
+        <testcase name="Hyde serve command with invalid config value" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command with invalid config value" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="2" time="0.022037"/>
+        <testcase name="Hyde serve command passes through process output" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::Hyde serve command passes through process output" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="6" time="0.023022"/>
+        <testcase name="With fancy output" file="Serve Command (Hyde\Framework\Testing\Feature\Commands\ServeCommand)::With fancy output" class="Hyde\Framework\Testing\Feature\Commands\ServeCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ServeCommandTest" assertions="3" time="0.026545"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Commands\ValidateCommandTest" file="Validate Command (Hyde\Framework\Testing\Feature\Commands\ValidateCommand)" tests="2" assertions="8" errors="0" failures="0" skipped="0" time="0.093609">
+        <testcase name="Validate command can run" file="Validate Command (Hyde\Framework\Testing\Feature\Commands\ValidateCommand)::Validate command can run" class="Hyde\Framework\Testing\Feature\Commands\ValidateCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ValidateCommandTest" assertions="5" time="0.066672"/>
+        <testcase name="Validate command can run with skips" file="Validate Command (Hyde\Framework\Testing\Feature\Commands\ValidateCommand)::Validate command can run with skips" class="Hyde\Framework\Testing\Feature\Commands\ValidateCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.ValidateCommandTest" assertions="3" time="0.026937"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Commands\VendorPublishCommandTest" file="Vendor Publish Command (Hyde\Framework\Testing\Feature\Commands\VendorPublishCommand)" tests="5" assertions="13" errors="0" failures="0" skipped="0" time="0.133104">
+        <testcase name="Command prompts for provider or tag" file="Vendor Publish Command (Hyde\Framework\Testing\Feature\Commands\VendorPublishCommand)::Command prompts for provider or tag" class="Hyde\Framework\Testing\Feature\Commands\VendorPublishCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.VendorPublishCommandTest" assertions="3" time="0.027739"/>
+        <testcase name="Unhelpful publishers are removed" file="Vendor Publish Command (Hyde\Framework\Testing\Feature\Commands\VendorPublishCommand)::Unhelpful publishers are removed" class="Hyde\Framework\Testing\Feature\Commands\VendorPublishCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.VendorPublishCommandTest" assertions="3" time="0.022531"/>
+        <testcase name="Config group is renamed to be more helpful" file="Vendor Publish Command (Hyde\Framework\Testing\Feature\Commands\VendorPublishCommand)::Config group is renamed to be more helpful" class="Hyde\Framework\Testing\Feature\Commands\VendorPublishCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.VendorPublishCommandTest" assertions="3" time="0.034797"/>
+        <testcase name="Can select default" file="Vendor Publish Command (Hyde\Framework\Testing\Feature\Commands\VendorPublishCommand)::Can select default" class="Hyde\Framework\Testing\Feature\Commands\VendorPublishCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.VendorPublishCommandTest" assertions="3" time="0.023098"/>
+        <testcase name="Status method" file="Vendor Publish Command (Hyde\Framework\Testing\Feature\Commands\VendorPublishCommand)::Status method" class="Hyde\Framework\Testing\Feature\Commands\VendorPublishCommandTest" classname="Hyde.Framework.Testing.Feature.Commands.VendorPublishCommandTest" assertions="1" time="0.024939"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)" tests="10" assertions="60" errors="0" failures="0" skipped="0" time="0.216422">
+        <testcase name="Has feature returns false when feature is not enabled" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::Has feature returns false when feature is not enabled" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="8" time="0.027733"/>
+        <testcase name="Has feature returns true when feature is enabled" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::Has feature returns true when feature is enabled" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="6" time="0.019954"/>
+        <testcase name="Can generate sitemap helper returns true if hyde has base url" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::Can generate sitemap helper returns true if hyde has base url" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="1" time="0.019706"/>
+        <testcase name="Can generate sitemap helper returns false if hyde does not have base url" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::Can generate sitemap helper returns false if hyde does not have base url" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="1" time="0.019514"/>
+        <testcase name="Can generate sitemap helper returns false if sitemaps are disabled in config" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::Can generate sitemap helper returns false if sitemaps are disabled in config" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="1" time="0.019637"/>
+        <testcase name="To array method returns method array" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::To array method returns method array" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="26" time="0.026305"/>
+        <testcase name="To array method contains all settings" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::To array method contains all settings" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="9" time="0.024460"/>
+        <testcase name="Features can be mocked" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::Features can be mocked" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="2" time="0.019210"/>
+        <testcase name="Dynamic features can be mocked" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::Dynamic features can be mocked" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="2" time="0.019677"/>
+        <testcase name="Multiple features can be mocked" file="Configurable Features (Hyde\Framework\Testing\Feature\ConfigurableFeatures)::Multiple features can be mocked" class="Hyde\Framework\Testing\Feature\ConfigurableFeaturesTest" classname="Hyde.Framework.Testing.Feature.ConfigurableFeaturesTest" assertions="4" time="0.020226"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeatureTest" file="Configurable Source Roots Feature (Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeature)" tests="4" assertions="5" errors="0" failures="0" skipped="0" time="0.125253">
+        <testcase name="Default config value is empty string" file="Configurable Source Roots Feature (Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeature)::Default config value is empty string" class="Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeatureTest" classname="Hyde.Framework.Testing.Feature.ConfigurableSourceRootsFeatureTest" assertions="1" time="0.034911"/>
+        <testcase name="Files in custom source root can be discovered" file="Configurable Source Roots Feature (Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeature)::Files in custom source root can be discovered" class="Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeatureTest" classname="Hyde.Framework.Testing.Feature.ConfigurableSourceRootsFeatureTest" assertions="2" time="0.024183"/>
+        <testcase name="Files in custom source root can be compiled" file="Configurable Source Roots Feature (Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeature)::Files in custom source root can be compiled" class="Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeatureTest" classname="Hyde.Framework.Testing.Feature.ConfigurableSourceRootsFeatureTest" assertions="1" time="0.044615"/>
+        <testcase name="Hyde page path method supports custom source roots" file="Configurable Source Roots Feature (Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeature)::Hyde page path method supports custom source roots" class="Hyde\Framework\Testing\Feature\ConfigurableSourceRootsFeatureTest" classname="Hyde.Framework.Testing.Feature.ConfigurableSourceRootsFeatureTest" assertions="1" time="0.021545"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\ConsoleKernelTest" file="Console Kernel (Hyde\Framework\Testing\Feature\ConsoleKernel)" tests="3" assertions="5" errors="0" failures="0" skipped="0" time="0.065720">
+        <testcase name="Is instantiable" file="Console Kernel (Hyde\Framework\Testing\Feature\ConsoleKernel)::Is instantiable" class="Hyde\Framework\Testing\Feature\ConsoleKernelTest" classname="Hyde.Framework.Testing.Feature.ConsoleKernelTest" assertions="1" time="0.025620"/>
+        <testcase name="Class implements kernel interface" file="Console Kernel (Hyde\Framework\Testing\Feature\ConsoleKernel)::Class implements kernel interface" class="Hyde\Framework\Testing\Feature\ConsoleKernelTest" classname="Hyde.Framework.Testing.Feature.ConsoleKernelTest" assertions="1" time="0.019845"/>
+        <testcase name="Bootstrappers" file="Console Kernel (Hyde\Framework\Testing\Feature\ConsoleKernel)::Bootstrappers" class="Hyde\Framework\Testing\Feature\ConsoleKernelTest" classname="Hyde.Framework.Testing.Feature.ConsoleKernelTest" assertions="3" time="0.020254"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\ConvertsArrayToFrontMatterTest" file="Converts Array To Front Matter (Hyde\Framework\Testing\Feature\ConvertsArrayToFrontMatter)" tests="2" assertions="2" errors="0" failures="0" skipped="0" time="0.044351">
+        <testcase name="Action converts an array to front matter" file="Converts Array To Front Matter (Hyde\Framework\Testing\Feature\ConvertsArrayToFrontMatter)::Action converts an array to front matter" class="Hyde\Framework\Testing\Feature\ConvertsArrayToFrontMatterTest" classname="Hyde.Framework.Testing.Feature.ConvertsArrayToFrontMatterTest" assertions="1" time="0.024540"/>
+        <testcase name="Action returns empty string if array is empty" file="Converts Array To Front Matter (Hyde\Framework\Testing\Feature\ConvertsArrayToFrontMatter)::Action returns empty string if array is empty" class="Hyde\Framework\Testing\Feature\ConvertsArrayToFrontMatterTest" classname="Hyde.Framework.Testing.Feature.ConvertsArrayToFrontMatterTest" assertions="1" time="0.019811"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\DarkmodeFeatureTest" file="Darkmode Feature (Hyde\Framework\Testing\Feature\DarkmodeFeature)" tests="5" assertions="10" errors="0" failures="0" skipped="0" time="0.156980">
+        <testcase name="Has darkmode" file="Darkmode Feature (Hyde\Framework\Testing\Feature\DarkmodeFeature)::Has darkmode" class="Hyde\Framework\Testing\Feature\DarkmodeFeatureTest" classname="Hyde.Framework.Testing.Feature.DarkmodeFeatureTest" assertions="2" time="0.024887"/>
+        <testcase name="Layout has toggle button and script when enabled" file="Darkmode Feature (Hyde\Framework\Testing\Feature\DarkmodeFeature)::Layout has toggle button and script when enabled" class="Hyde\Framework\Testing\Feature\DarkmodeFeatureTest" classname="Hyde.Framework.Testing.Feature.DarkmodeFeatureTest" assertions="2" time="0.042894"/>
+        <testcase name="Documentation page has toggle button and script when enabled" file="Darkmode Feature (Hyde\Framework\Testing\Feature\DarkmodeFeature)::Documentation page has toggle button and script when enabled" class="Hyde\Framework\Testing\Feature\DarkmodeFeatureTest" classname="Hyde.Framework.Testing.Feature.DarkmodeFeatureTest" assertions="2" time="0.029715"/>
+        <testcase name="Dark mode theme button is hidden in layouts when disabled" file="Darkmode Feature (Hyde\Framework\Testing\Feature\DarkmodeFeature)::Dark mode theme button is hidden in layouts when disabled" class="Hyde\Framework\Testing\Feature\DarkmodeFeatureTest" classname="Hyde.Framework.Testing.Feature.DarkmodeFeatureTest" assertions="2" time="0.029981"/>
+        <testcase name="Dark mode theme button is hidden in documentation pages when disabled" file="Darkmode Feature (Hyde\Framework\Testing\Feature\DarkmodeFeature)::Dark mode theme button is hidden in documentation pages when disabled" class="Hyde\Framework\Testing\Feature\DarkmodeFeatureTest" classname="Hyde.Framework.Testing.Feature.DarkmodeFeatureTest" assertions="2" time="0.029503"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\DataCollectionTest" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)" tests="15" assertions="19" errors="0" failures="0" skipped="0" time="0.332605">
+        <testcase name="Markdown collections" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Markdown collections" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.029419"/>
+        <testcase name="Yaml collections" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Yaml collections" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.022377"/>
+        <testcase name="Json collections" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Json collections" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.021848"/>
+        <testcase name="Json collections as arrays" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Json collections as arrays" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.021691"/>
+        <testcase name="Find markdown files method returns empty array if the specified directory does not exist" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Find markdown files method returns empty array if the specified directory does not exist" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="2" time="0.020732"/>
+        <testcase name="Find markdown files method returns empty array if no files are found in specified directory" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Find markdown files method returns empty array if no files are found in specified directory" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="2" time="0.021151"/>
+        <testcase name="Find markdown files method returns an array of markdown files in the specified directory" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Find markdown files method returns an array of markdown files in the specified directory" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.021977"/>
+        <testcase name="Find markdown files method does not include files in subdirectories" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Find markdown files method does not include files in subdirectories" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.021842"/>
+        <testcase name="Find markdown files method does not include files with extensions other than md" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Find markdown files method does not include files with extensions other than md" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.021893"/>
+        <testcase name="Find markdown files method does not remove files starting with an underscore" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Find markdown files method does not remove files starting with an underscore" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.022243"/>
+        <testcase name="Static markdown helper discovers and parses markdown files in the specified directory" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Static markdown helper discovers and parses markdown files in the specified directory" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.022251"/>
+        <testcase name="Static markdown helper doest not ignore files starting with an underscore" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Static markdown helper doest not ignore files starting with an underscore" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.021783"/>
+        <testcase name="Source directory can be changed" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Source directory can be changed" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="1" time="0.021342"/>
+        <testcase name="Source directory is automatically added if missing" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Source directory is automatically added if missing" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="2" time="0.020996"/>
+        <testcase name="Custom source directory is automatically added if missing" file="Data Collection (Hyde\Framework\Testing\Feature\DataCollection)::Custom source directory is automatically added if missing" class="Hyde\Framework\Testing\Feature\DataCollectionTest" classname="Hyde.Framework.Testing.Feature.DataCollectionTest" assertions="2" time="0.021060"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)" tests="18" assertions="38" errors="0" failures="0" skipped="0" time="0.109955">
+        <testcase name="Get source file list for model method finds default model properties" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Get source file list for model method finds default model properties" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.027667"/>
+        <testcase name="Get source file list for model method finds customized source directory" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Get source file list for model method finds customized source directory" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.007409"/>
+        <testcase name="Get source file list for model method finds customized file extension" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Get source file list for model method finds customized file extension" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.007630"/>
+        <testcase name="Get media asset files" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Get media asset files" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.003057"/>
+        <testcase name="Get media asset files discovers files" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Get media asset files discovers files" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="8" time="0.008672"/>
+        <testcase name="Get media asset files discovers custom file types" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Get media asset files discovers custom file types" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="2" time="0.003629"/>
+        <testcase name="Get media asset files discovers files recursively" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Get media asset files discovers files recursively" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.003793"/>
+        <testcase name="Get media asset files discovers files very recursively" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Get media asset files discovers files very recursively" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.004016"/>
+        <testcase name="Media asset extensions can be added by comma separated values" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Media asset extensions can be added by comma separated values" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="2" time="0.003807"/>
+        <testcase name="Media asset extensions can be added by array" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Media asset extensions can be added by array" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="2" time="0.003746"/>
+        <testcase name="Blade page files starting with underscore are ignored" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Blade page files starting with underscore are ignored" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.006377"/>
+        <testcase name="Markdown page files starting with underscore are ignored" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Markdown page files starting with underscore are ignored" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.006181"/>
+        <testcase name="Post files starting with underscore are ignored" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Post files starting with underscore are ignored" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.006191"/>
+        <testcase name="Documentation page files starting with underscore are ignored" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Documentation page files starting with underscore are ignored" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="1" time="0.006183"/>
+        <testcase name="Blade page path to identifier helper formats path to identifier" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Blade page path to identifier helper formats path to identifier" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="5" time="0.003103"/>
+        <testcase name="Markdown page path to identifier helper formats path to identifier" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Markdown page path to identifier helper formats path to identifier" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="3" time="0.002814"/>
+        <testcase name="Markdown post path to identifier helper formats path to identifier" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Markdown post path to identifier helper formats path to identifier" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="3" time="0.002839"/>
+        <testcase name="Documentation page path to identifier helper formats path to identifier" file="Discovery Service (Hyde\Framework\Testing\Feature\DiscoveryService)::Documentation page path to identifier helper formats path to identifier" class="Hyde\Framework\Testing\Feature\DiscoveryServiceTest" classname="Hyde.Framework.Testing.Feature.DiscoveryServiceTest" assertions="3" time="0.002842"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)" tests="9" assertions="9" errors="0" failures="0" skipped="0" time="0.225525">
+        <testcase name="Can create documentation search page instance" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)::Can create documentation search page instance" class="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" classname="Hyde.Framework.Testing.Feature.DocumentationSearchPageTest" assertions="1" time="0.041659"/>
+        <testcase name="Route key is set to documentation output directory" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)::Route key is set to documentation output directory" class="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" classname="Hyde.Framework.Testing.Feature.DocumentationSearchPageTest" assertions="1" time="0.021109"/>
+        <testcase name="Route key is set to configured documentation output directory" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)::Route key is set to configured documentation output directory" class="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" classname="Hyde.Framework.Testing.Feature.DocumentationSearchPageTest" assertions="1" time="0.020442"/>
+        <testcase name="Enabled defaults to true" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)::Enabled defaults to true" class="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" classname="Hyde.Framework.Testing.Feature.DocumentationSearchPageTest" assertions="1" time="0.035847"/>
+        <testcase name="Enabled is false when disabled" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)::Enabled is false when disabled" class="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" classname="Hyde.Framework.Testing.Feature.DocumentationSearchPageTest" assertions="1" time="0.019831"/>
+        <testcase name="Enabled is false when route exists" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)::Enabled is false when route exists" class="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" classname="Hyde.Framework.Testing.Feature.DocumentationSearchPageTest" assertions="1" time="0.024112"/>
+        <testcase name="Enabled is false when disabled and route exists" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)::Enabled is false when disabled and route exists" class="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" classname="Hyde.Framework.Testing.Feature.DocumentationSearchPageTest" assertions="1" time="0.023773"/>
+        <testcase name="Static route key helper" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)::Static route key helper" class="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" classname="Hyde.Framework.Testing.Feature.DocumentationSearchPageTest" assertions="1" time="0.019265"/>
+        <testcase name="Static route key helper with custom output directory" file="Documentation Search Page (Hyde\Framework\Testing\Feature\DocumentationSearchPage)::Static route key helper with custom output directory" class="Hyde\Framework\Testing\Feature\DocumentationSearchPageTest" classname="Hyde.Framework.Testing.Feature.DocumentationSearchPageTest" assertions="1" time="0.019488"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\ExampleTest" file="Example (Hyde\Framework\Testing\Feature\Example)" tests="1" assertions="1" errors="0" failures="0" skipped="0" time="0.031798">
+        <testcase name="Example" file="Example (Hyde\Framework\Testing\Feature\Example)::Example" class="Hyde\Framework\Testing\Feature\ExampleTest" classname="Hyde.Framework.Testing.Feature.ExampleTest" assertions="1" time="0.031798"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\FeaturedImageFactoryTest" file="Featured Image Factory (Hyde\Framework\Testing\Feature\FeaturedImageFactory)" tests="8" assertions="27" errors="0" failures="0" skipped="0" time="0.165887">
+        <testcase name="With data from schema" file="Featured Image Factory (Hyde\Framework\Testing\Feature\FeaturedImageFactory)::With data from schema" class="Hyde\Framework\Testing\Feature\FeaturedImageFactoryTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageFactoryTest" assertions="1" time="0.021674"/>
+        <testcase name="Make method creates image when path is set" file="Featured Image Factory (Hyde\Framework\Testing\Feature\FeaturedImageFactory)::Make method creates image when path is set" class="Hyde\Framework\Testing\Feature\FeaturedImageFactoryTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageFactoryTest" assertions="2" time="0.020010"/>
+        <testcase name="Make method throws exception if no path information is set" file="Featured Image Factory (Hyde\Framework\Testing\Feature\FeaturedImageFactory)::Make method throws exception if no path information is set" class="Hyde\Framework\Testing\Feature\FeaturedImageFactoryTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageFactoryTest" assertions="2" time="0.019891"/>
+        <testcase name="Make method can create image from just string" file="Featured Image Factory (Hyde\Framework\Testing\Feature\FeaturedImageFactory)::Make method can create image from just string" class="Hyde\Framework\Testing\Feature\FeaturedImageFactoryTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageFactoryTest" assertions="2" time="0.020182"/>
+        <testcase name="Make method can create image from just string with url" file="Featured Image Factory (Hyde\Framework\Testing\Feature\FeaturedImageFactory)::Make method can create image from just string with url" class="Hyde\Framework\Testing\Feature\FeaturedImageFactoryTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageFactoryTest" assertions="2" time="0.019742"/>
+        <testcase name="Image paths are normalized" file="Featured Image Factory (Hyde\Framework\Testing\Feature\FeaturedImageFactory)::Image paths are normalized" class="Hyde\Framework\Testing\Feature\FeaturedImageFactoryTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageFactoryTest" assertions="6" time="0.021381"/>
+        <testcase name="Image paths are normalized for customized media directory" file="Featured Image Factory (Hyde\Framework\Testing\Feature\FeaturedImageFactory)::Image paths are normalized for customized media directory" class="Hyde\Framework\Testing\Feature\FeaturedImageFactoryTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageFactoryTest" assertions="6" time="0.021485"/>
+        <testcase name="Image paths are normalized for customized media directory without underscore" file="Featured Image Factory (Hyde\Framework\Testing\Feature\FeaturedImageFactory)::Image paths are normalized for customized media directory without underscore" class="Hyde\Framework\Testing\Feature\FeaturedImageFactoryTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageFactoryTest" assertions="6" time="0.021522"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\FeaturedImageTest" file="Featured Image (Hyde\Framework\Testing\Feature\FeaturedImage)" tests="7" assertions="19" errors="0" failures="0" skipped="0" time="0.167329">
+        <testcase name="Get metadata array" file="Featured Image (Hyde\Framework\Testing\Feature\FeaturedImage)::Get metadata array" class="Hyde\Framework\Testing\Feature\FeaturedImageTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageTest" assertions="4" time="0.032225"/>
+        <testcase name="Can construct featured image" file="Featured Image (Hyde\Framework\Testing\Feature\FeaturedImage)::Can construct featured image" class="Hyde\Framework\Testing\Feature\FeaturedImageTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageTest" assertions="2" time="0.019799"/>
+        <testcase name="Featured image get content length" file="Featured Image (Hyde\Framework\Testing\Feature\FeaturedImage)::Featured image get content length" class="Hyde\Framework\Testing\Feature\FeaturedImageTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageTest" assertions="1" time="0.020104"/>
+        <testcase name="Featured image get content length with remote source" file="Featured Image (Hyde\Framework\Testing\Feature\FeaturedImage)::Featured image get content length with remote source" class="Hyde\Framework\Testing\Feature\FeaturedImageTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageTest" assertions="1" time="0.032043"/>
+        <testcase name="Featured image get content length with remote source and not found response" file="Featured Image (Hyde\Framework\Testing\Feature\FeaturedImage)::Featured image get content length with remote source and not found response" class="Hyde\Framework\Testing\Feature\FeaturedImageTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageTest" assertions="1" time="0.020594"/>
+        <testcase name="Featured image get content length with remote source and invalid response" file="Featured Image (Hyde\Framework\Testing\Feature\FeaturedImage)::Featured image get content length with remote source and invalid response" class="Hyde\Framework\Testing\Feature\FeaturedImageTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageTest" assertions="1" time="0.020633"/>
+        <testcase name="Get source method" file="Featured Image (Hyde\Framework\Testing\Feature\FeaturedImage)::Get source method" class="Hyde\Framework\Testing\Feature\FeaturedImageTest" classname="Hyde.Framework.Testing.Feature.FeaturedImageTest" assertions="9" time="0.021931"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\FileCollectionTest" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)" tests="9" assertions="16" errors="0" failures="0" skipped="0" time="0.224629">
+        <testcase name="Boot method creates new page collection and discovers pages automatically" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)::Boot method creates new page collection and discovers pages automatically" class="Hyde\Framework\Testing\Feature\FileCollectionTest" classname="Hyde.Framework.Testing.Feature.FileCollectionTest" assertions="3" time="0.030786"/>
+        <testcase name="Get file returns parsed file object for given file path" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)::Get file returns parsed file object for given file path" class="Hyde\Framework\Testing\Feature\FileCollectionTest" classname="Hyde.Framework.Testing.Feature.FileCollectionTest" assertions="1" time="0.024852"/>
+        <testcase name="Get file throws exception when file is not found" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)::Get file throws exception when file is not found" class="Hyde\Framework\Testing\Feature\FileCollectionTest" classname="Hyde.Framework.Testing.Feature.FileCollectionTest" assertions="2" time="0.023775"/>
+        <testcase name="Get source files returns all discovered source files when no parameter is supplied" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)::Get source files returns all discovered source files when no parameter is supplied" class="Hyde\Framework\Testing\Feature\FileCollectionTest" classname="Hyde.Framework.Testing.Feature.FileCollectionTest" assertions="1" time="0.023972"/>
+        <testcase name="Get source files does not include non page source files" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)::Get source files does not include non page source files" class="Hyde\Framework\Testing\Feature\FileCollectionTest" classname="Hyde.Framework.Testing.Feature.FileCollectionTest" assertions="1" time="0.034636"/>
+        <testcase name="Blade pages are discovered" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)::Blade pages are discovered" class="Hyde\Framework\Testing\Feature\FileCollectionTest" classname="Hyde.Framework.Testing.Feature.FileCollectionTest" assertions="2" time="0.022317"/>
+        <testcase name="Markdown pages are discovered" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)::Markdown pages are discovered" class="Hyde\Framework\Testing\Feature\FileCollectionTest" classname="Hyde.Framework.Testing.Feature.FileCollectionTest" assertions="2" time="0.021501"/>
+        <testcase name="Markdown posts are discovered" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)::Markdown posts are discovered" class="Hyde\Framework\Testing\Feature\FileCollectionTest" classname="Hyde.Framework.Testing.Feature.FileCollectionTest" assertions="2" time="0.021345"/>
+        <testcase name="Documentation pages are discovered" file="File Collection (Hyde\Framework\Testing\Feature\FileCollection)::Documentation pages are discovered" class="Hyde\Framework\Testing\Feature\FileCollectionTest" classname="Hyde.Framework.Testing.Feature.FileCollectionTest" assertions="2" time="0.021446"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)" tests="59" assertions="66" errors="0" failures="0" skipped="0" time="1.229812">
+        <testcase name="Base path" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Base path" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.032392"/>
+        <testcase name="Absolute path" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Absolute path" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="2" time="0.019682"/>
+        <testcase name="Relative path" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Relative path" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="3" time="0.019811"/>
+        <testcase name="Smart glob" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Smart glob" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="2" time="0.020426"/>
+        <testcase name="Touch" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Touch" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.019825"/>
+        <testcase name="Unlink" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Unlink" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020005"/>
+        <testcase name="Unlink if exists" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Unlink if exists" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020000"/>
+        <testcase name="Get contents" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Get contents" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020446"/>
+        <testcase name="Put contents" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Put contents" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020064"/>
+        <testcase name="Exists" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Exists" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.019863"/>
+        <testcase name="Missing" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Missing" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.022709"/>
+        <testcase name="Get" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Get" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020064"/>
+        <testcase name="Shared get" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Shared get" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020008"/>
+        <testcase name="Get require" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Get require" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.019999"/>
+        <testcase name="Require once" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Require once" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.019927"/>
+        <testcase name="Lines" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Lines" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021510"/>
+        <testcase name="Hash" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Hash" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020002"/>
+        <testcase name="Put" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Put" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020049"/>
+        <testcase name="Replace" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Replace" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.019991"/>
+        <testcase name="Replace in file" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Replace in file" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020029"/>
+        <testcase name="Prepend" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Prepend" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020216"/>
+        <testcase name="Append" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Append" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020059"/>
+        <testcase name="Chmod" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Chmod" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020083"/>
+        <testcase name="Delete" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Delete" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020076"/>
+        <testcase name="Delete with array" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Delete with array" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020123"/>
+        <testcase name="Move" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Move" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.034288"/>
+        <testcase name="Copy" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Copy" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.022036"/>
+        <testcase name="Link" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Link" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.021264"/>
+        <testcase name="Relative link" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Relative link" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020659"/>
+        <testcase name="Name" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Name" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020423"/>
+        <testcase name="Basename" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Basename" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020210"/>
+        <testcase name="Dirname" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Dirname" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020022"/>
+        <testcase name="Extension" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Extension" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020173"/>
+        <testcase name="Guess extension" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Guess extension" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020427"/>
+        <testcase name="Type" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Type" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.022217"/>
+        <testcase name="Mime type" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Mime type" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020996"/>
+        <testcase name="Size" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Size" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020188"/>
+        <testcase name="Last modified" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Last modified" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020392"/>
+        <testcase name="Is directory" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Is directory" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020072"/>
+        <testcase name="Is empty directory" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Is empty directory" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020569"/>
+        <testcase name="Is readable" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Is readable" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020110"/>
+        <testcase name="Is writable" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Is writable" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020147"/>
+        <testcase name="Has same hash" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Has same hash" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020145"/>
+        <testcase name="Is file" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Is file" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020049"/>
+        <testcase name="Glob" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Glob" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020049"/>
+        <testcase name="Files" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Files" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020145"/>
+        <testcase name="All files" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::All files" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020024"/>
+        <testcase name="Directories" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Directories" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020200"/>
+        <testcase name="Ensure directory exists" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Ensure directory exists" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020110"/>
+        <testcase name="Make directory" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Make directory" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020176"/>
+        <testcase name="Move directory" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Move directory" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020326"/>
+        <testcase name="Copy directory" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Copy directory" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020266"/>
+        <testcase name="Delete directory" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Delete directory" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020140"/>
+        <testcase name="Delete directories" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Delete directories" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020185"/>
+        <testcase name="Clean directory" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Clean directory" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.019881"/>
+        <testcase name="Method without mocking" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Method without mocking" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="2" time="0.020134"/>
+        <testcase name="Method with named arguments" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Method with named arguments" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="2" time="0.025068"/>
+        <testcase name="Method with mixed sequential and named arguments" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Method with mixed sequential and named arguments" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="2" time="0.020830"/>
+        <testcase name="Method with mixed sequential and named arguments skipping middle one" file="Filesystem Facade (Hyde\Framework\Testing\Feature\FilesystemFacade)::Method with mixed sequential and named arguments skipping middle one" class="Hyde\Framework\Testing\Feature\FilesystemFacadeTest" classname="Hyde.Framework.Testing.Feature.FilesystemFacadeTest" assertions="1" time="0.020533"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)" tests="51" assertions="84" errors="0" failures="0" skipped="0" time="0.230684">
+        <testcase name="Get base path returns kernels base path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Get base path returns kernels base path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.080495"/>
+        <testcase name="Path method exists" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method exists" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.003008"/>
+        <testcase name="Path method returns string" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method returns string" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.003025"/>
+        <testcase name="Path method returns base path when not supplied with argument" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method returns base path when not supplied with argument" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.003141"/>
+        <testcase name="Path method returns path relative to base path when supplied with argument" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method returns path relative to base path when supplied with argument" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.003207"/>
+        <testcase name="Path method returns qualified file path when supplied with argument" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method returns qualified file path when supplied with argument" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.003153"/>
+        <testcase name="Path method returns expected value for nested path arguments" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method returns expected value for nested path arguments" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002831"/>
+        <testcase name="Path method strips trailing directory separators from argument" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method strips trailing directory separators from argument" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002834"/>
+        <testcase name="Path method returns expected value regardless of trailing directory separators in argument" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method returns expected value regardless of trailing directory separators in argument" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.003055"/>
+        <testcase name="Path method resolves already absolute paths" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method resolves already absolute paths" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.003165"/>
+        <testcase name="Path method resolves already absolute paths using helper" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method resolves already absolute paths using helper" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.003143"/>
+        <testcase name="Path method resolves already absolute paths using helper with trailing slash" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method resolves already absolute paths using helper with trailing slash" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.003621"/>
+        <testcase name="Path method does not modify phar paths" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path method does not modify phar paths" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002654"/>
+        <testcase name="Hyde path method exists" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Hyde path method exists" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002580"/>
+        <testcase name="Hyde path string is returned" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Hyde path string is returned" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002634"/>
+        <testcase name="Hyde path returned directory contains content expected to be in the project directory" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Hyde path returned directory contains content expected to be in the project directory" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002912"/>
+        <testcase name="Vendor path method exists" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Vendor path method exists" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002774"/>
+        <testcase name="Vendor path method returns string" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Vendor path method returns string" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.003111"/>
+        <testcase name="Vendor path method returns the vendor path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Vendor path method returns the vendor path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.003129"/>
+        <testcase name="Vendor path method returns qualified file path when supplied with argument" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Vendor path method returns qualified file path when supplied with argument" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.003126"/>
+        <testcase name="Vendor path method returns expected value regardless of trailing directory separators in argument" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Vendor path method returns expected value regardless of trailing directory separators in argument" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002741"/>
+        <testcase name="Vendor path can specify which hyde package to use" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Vendor path can specify which hyde package to use" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="2" time="0.002936"/>
+        <testcase name="Vendor path can run in phar" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Vendor path can run in phar" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002743"/>
+        <testcase name="Touch helper creates file at given path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Touch helper creates file at given path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="2" time="0.003354"/>
+        <testcase name="Touch helper creates multiple files at given paths" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Touch helper creates multiple files at given paths" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="3" time="0.003771"/>
+        <testcase name="Unlink helper deletes file at given path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Unlink helper deletes file at given path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="2" time="0.003317"/>
+        <testcase name="Unlink helper deletes multiple files at given paths" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Unlink helper deletes multiple files at given paths" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="3" time="0.003943"/>
+        <testcase name="Unlink if exists helper deletes file at given path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Unlink if exists helper deletes file at given path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="2" time="0.002867"/>
+        <testcase name="Unlink if exists handles non existent files gracefully" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Unlink if exists handles non existent files gracefully" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002604"/>
+        <testcase name="Get model source path method returns path for model classes" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Get model source path method returns path for model classes" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="5" time="0.004088"/>
+        <testcase name="Get model source path method returns path to file for model classes" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Get model source path method returns path to file for model classes" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="5" time="0.003677"/>
+        <testcase name="Helper for blade pages" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for blade pages" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002685"/>
+        <testcase name="Helper for markdown pages" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for markdown pages" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.003023"/>
+        <testcase name="Helper for markdown posts" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for markdown posts" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002676"/>
+        <testcase name="Helper for documentation pages" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for documentation pages" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002653"/>
+        <testcase name="Helper for media path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for media path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.003154"/>
+        <testcase name="Helper for media path returns path to file within the directory" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for media path returns path to file within the directory" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002812"/>
+        <testcase name="Get media path returns absolute path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Get media path returns absolute path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002660"/>
+        <testcase name="Helper for media output path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for media output path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002626"/>
+        <testcase name="Helper for media output path returns path to file within the directory" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for media output path returns path to file within the directory" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002734"/>
+        <testcase name="Get media output path returns absolute path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Get media output path returns absolute path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002642"/>
+        <testcase name="Helper for site output path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for site output path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002600"/>
+        <testcase name="Helper for site output path returns path to file within the directory" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Helper for site output path returns path to file within the directory" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002777"/>
+        <testcase name="Get site output path returns absolute path" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Get site output path returns absolute path" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.003235"/>
+        <testcase name="Site output path helper ignores trailing slashes" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Site output path helper ignores trailing slashes" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002913"/>
+        <testcase name="Path to absolute" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path to absolute" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002708"/>
+        <testcase name="Path to absolute helper is alias for path helper" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path to absolute helper is alias for path helper" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002566"/>
+        <testcase name="Path to absolute can convert array of paths" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path to absolute can convert array of paths" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="1" time="0.002660"/>
+        <testcase name="Path to relative helper decodes hyde path into relative" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path to relative helper decodes hyde path into relative" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="5" time="0.003169"/>
+        <testcase name="Path to relative helper does not modify already relative paths" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path to relative helper does not modify already relative paths" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="7" time="0.003303"/>
+        <testcase name="Path to relative helper does not modify non project paths" file="Filesystem (Hyde\Framework\Testing\Feature\Foundation\Filesystem)::Path to relative helper does not modify non project paths" class="Hyde\Framework\Testing\Feature\Foundation\FilesystemTest" classname="Hyde.Framework.Testing.Feature.Foundation.FilesystemTest" assertions="8" time="0.003448"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)" tests="13" assertions="20" errors="0" failures="0" skipped="0" time="0.405628">
+        <testcase name="Asset helper gets relative web link to image stored in site media folder" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Asset helper gets relative web link to image stored in site media folder" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="4" time="0.069262"/>
+        <testcase name="Asset helper resolves paths for nested pages" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Asset helper resolves paths for nested pages" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="4" time="0.024002"/>
+        <testcase name="Asset helper returns qualified absolute uri when requested and site has base url" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Asset helper returns qualified absolute uri when requested and site has base url" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.019430"/>
+        <testcase name="Asset helper returns default relative path when qualified absolute uri is requested but site has no base url" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Asset helper returns default relative path when qualified absolute uri is requested but site has no base url" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.020220"/>
+        <testcase name="Asset helper returns input when qualified absolute uri is requested but image is already qualified" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Asset helper returns input when qualified absolute uri is requested but image is already qualified" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.019551"/>
+        <testcase name="Asset helper uses configured media directory" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Asset helper uses configured media directory" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.019715"/>
+        <testcase name="Media link helper" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Media link helper" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.019539"/>
+        <testcase name="Media link helper with relative path" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Media link helper with relative path" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.021277"/>
+        <testcase name="Media link helper uses configured media directory" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Media link helper uses configured media directory" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.019418"/>
+        <testcase name="Media link helper with validation and existing file" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Media link helper with validation and existing file" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.105702"/>
+        <testcase name="Media link helper with validation and non existing file" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Media link helper with validation and non existing file" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.020371"/>
+        <testcase name="Route helper" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Route helper" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="2" time="0.023951"/>
+        <testcase name="Route helper with invalid route" file="Hyperlinks (Hyde\Framework\Testing\Feature\Foundation\Hyperlinks)::Route helper with invalid route" class="Hyde\Framework\Testing\Feature\Foundation\HyperlinksTest" classname="Hyde.Framework.Testing.Feature.Foundation.HyperlinksTest" assertions="1" time="0.023190"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)" tests="9" assertions="9" errors="0" failures="0" skipped="0" time="0.243553">
+        <testcase name="Site metadata adds config defined metadata" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)::Site metadata adds config defined metadata" class="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" classname="Hyde.Framework.Testing.Feature.GlobalMetadataBagTest" assertions="1" time="0.037882"/>
+        <testcase name="Site metadata automatically adds sitemap when enabled" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)::Site metadata automatically adds sitemap when enabled" class="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" classname="Hyde.Framework.Testing.Feature.GlobalMetadataBagTest" assertions="1" time="0.032345"/>
+        <testcase name="Site metadata sitemap uses configured site url" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)::Site metadata sitemap uses configured site url" class="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" classname="Hyde.Framework.Testing.Feature.GlobalMetadataBagTest" assertions="1" time="0.020911"/>
+        <testcase name="Site metadata automatically adds rss feed when enabled" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)::Site metadata automatically adds rss feed when enabled" class="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" classname="Hyde.Framework.Testing.Feature.GlobalMetadataBagTest" assertions="1" time="0.026018"/>
+        <testcase name="Site metadata rss feed uses configured site url" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)::Site metadata rss feed uses configured site url" class="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" classname="Hyde.Framework.Testing.Feature.GlobalMetadataBagTest" assertions="1" time="0.027815"/>
+        <testcase name="Site metadata rss feed uses configured site name" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)::Site metadata rss feed uses configured site name" class="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" classname="Hyde.Framework.Testing.Feature.GlobalMetadataBagTest" assertions="1" time="0.026915"/>
+        <testcase name="Site metadata rss feed uses configured rss file name" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)::Site metadata rss feed uses configured rss file name" class="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" classname="Hyde.Framework.Testing.Feature.GlobalMetadataBagTest" assertions="1" time="0.026109"/>
+        <testcase name="Metadata existing in the current page is not added" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)::Metadata existing in the current page is not added" class="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" classname="Hyde.Framework.Testing.Feature.GlobalMetadataBagTest" assertions="1" time="0.021498"/>
+        <testcase name="Metadata existing in the current page is not added regardless of its value" file="Global Metadata Bag (Hyde\Framework\Testing\Feature\GlobalMetadataBag)::Metadata existing in the current page is not added regardless of its value" class="Hyde\Framework\Testing\Feature\GlobalMetadataBagTest" classname="Hyde.Framework.Testing.Feature.GlobalMetadataBagTest" assertions="1" time="0.024062"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\HelpersTest" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)" tests="38" assertions="58" errors="0" failures="0" skipped="1" time="0.795786">
+        <testcase name="Hyde function exists" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde function exists" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.033521"/>
+        <testcase name="Hyde function returns hyde kernel class" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde function returns hyde kernel class" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.019354"/>
+        <testcase name="Can call methods on returned hyde class" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Can call methods on returned hyde class" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.019381"/>
+        <testcase name="Unslash function exists" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Unslash function exists" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.020495"/>
+        <testcase name="Unslash function trims trailing slashes" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Unslash function trims trailing slashes" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="14" time="0.020487"/>
+        <testcase name="Asset function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Asset function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="2" time="0.019732"/>
+        <testcase name="Asset function with qualified url" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Asset function with qualified url" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="2" time="0.019752"/>
+        <testcase name="Asset function with external url" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Asset function with external url" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="2" time="0.019822"/>
+        <testcase name="Asset function with qualified url and no base url" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Asset function with qualified url and no base url" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.019603"/>
+        <testcase name="Asset function from nested page" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Asset function from nested page" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.020102"/>
+        <testcase name="Asset function from deeply nested page" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Asset function from deeply nested page" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.019743"/>
+        <testcase name="Asset function with custom media directory" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Asset function with custom media directory" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.019694"/>
+        <testcase name="Route function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Route function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="2" time="0.024042"/>
+        <testcase name="Route function with invalid route" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Route function with invalid route" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.023593"/>
+        <testcase name="Route function returns null for non existent route" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Route function returns null for non existent route" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.023958"/>
+        <testcase name="Url function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Url function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.019557"/>
+        <testcase name="Url function with base url" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Url function with base url" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.019875"/>
+        <testcase name="Url function without base url" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Url function without base url" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.019789"/>
+        <testcase name="Url function with already qualified url" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Url function with already qualified url" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="0" time="0.019794">
           <skipped/>
         </testcase>
-        <testcase name="Hyde function exists in hyde namespace" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde function exists in hyde namespace" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.021993"/>
-        <testcase name="Namespaced hyde function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Namespaced hyde function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.022249"/>
-        <testcase name="Unslash function exists in hyde namespace" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Unslash function exists in hyde namespace" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.021563"/>
-        <testcase name="Namespaced unslash function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Namespaced unslash function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.034442"/>
-        <testcase name="Unixsum function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Unixsum function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="2" time="0.021668"/>
-        <testcase name="Unixsum file function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Unixsum file function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="2" time="0.022826"/>
-        <testcase name="Hyde make title function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde make title function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.021458"/>
-        <testcase name="Hyde normalize newlines function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde normalize newlines function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.021782"/>
-        <testcase name="Hyde strip newlines function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde strip newlines function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.021571"/>
-        <testcase name="Hyde trim slashes function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde trim slashes function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.021099"/>
-        <testcase name="Hyde evaluate arrayable function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde evaluate arrayable function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="2" time="0.021170"/>
-        <testcase name="Hyde yaml encode function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde yaml encode function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.022065"/>
-        <testcase name="Hyde yaml encode function encodes arrayables" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde yaml encode function encodes arrayables" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.022158"/>
-        <testcase name="Hyde yaml encode function accepts parameters" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde yaml encode function accepts parameters" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.021551"/>
-        <testcase name="Hyde yaml decode function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde yaml decode function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.020989"/>
-        <testcase name="Hyde yaml decode function accepts parameters" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde yaml decode function accepts parameters" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.021580"/>
-        <testcase name="Hyde path join function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde path join function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.021476"/>
-        <testcase name="Hyde path join function with multiple paths" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde path join function with multiple paths" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.021360"/>
-        <testcase name="Hyde normalize slashes function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde normalize slashes function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="2" time="0.020718"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\HydeCoreExtensionTest" file="Hyde Core Extension (Hyde\Framework\Testing\Feature\HydeCoreExtension)" tests="4" assertions="4" errors="0" failures="0" skipped="0" time="0.061198">
-        <testcase name="Class extends extension class" file="Hyde Core Extension (Hyde\Framework\Testing\Feature\HydeCoreExtension)::Class extends extension class" class="Hyde\Framework\Testing\Feature\HydeCoreExtensionTest" classname="Hyde.Framework.Testing.Feature.HydeCoreExtensionTest" assertions="1" time="0.054522"/>
-        <testcase name="Class is registered" file="Hyde Core Extension (Hyde\Framework\Testing\Feature\HydeCoreExtension)::Class is registered" class="Hyde\Framework\Testing\Feature\HydeCoreExtensionTest" classname="Hyde.Framework.Testing.Feature.HydeCoreExtensionTest" assertions="1" time="0.001987"/>
-        <testcase name="Get page classes" file="Hyde Core Extension (Hyde\Framework\Testing\Feature\HydeCoreExtension)::Get page classes" class="Hyde\Framework\Testing\Feature\HydeCoreExtensionTest" classname="Hyde.Framework.Testing.Feature.HydeCoreExtensionTest" assertions="1" time="0.002391"/>
-        <testcase name="Get page classes does not include classes for disabled features" file="Hyde Core Extension (Hyde\Framework\Testing\Feature\HydeCoreExtension)::Get page classes does not include classes for disabled features" class="Hyde\Framework\Testing\Feature\HydeCoreExtensionTest" classname="Hyde.Framework.Testing.Feature.HydeCoreExtensionTest" assertions="1" time="0.002298"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)" tests="9" assertions="15" errors="0" failures="0" skipped="0" time="0.249939">
-        <testcase name="Handler methods are called by discovery" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)::Handler methods are called by discovery" class="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" classname="Hyde.Framework.Testing.Feature.HydeExtensionFeatureTest" assertions="2" time="0.030931"/>
-        <testcase name="File handler dependency injection" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)::File handler dependency injection" class="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" classname="Hyde.Framework.Testing.Feature.HydeExtensionFeatureTest" assertions="1" time="0.025577"/>
-        <testcase name="Page handler dependency injection" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)::Page handler dependency injection" class="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" classname="Hyde.Framework.Testing.Feature.HydeExtensionFeatureTest" assertions="1" time="0.027356"/>
-        <testcase name="Route handler dependency injection" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)::Route handler dependency injection" class="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" classname="Hyde.Framework.Testing.Feature.HydeExtensionFeatureTest" assertions="1" time="0.025457"/>
-        <testcase name="Register extension method throws exception when kernel is already booted" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)::Register extension method throws exception when kernel is already booted" class="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" classname="Hyde.Framework.Testing.Feature.HydeExtensionFeatureTest" assertions="2" time="0.027050"/>
-        <testcase name="Register extension method only accepts instances of hyde extension" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)::Register extension method only accepts instances of hyde extension" class="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" classname="Hyde.Framework.Testing.Feature.HydeExtensionFeatureTest" assertions="2" time="0.022793"/>
-        <testcase name="Custom registered pages are discovered by the file collection class" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)::Custom registered pages are discovered by the file collection class" class="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" classname="Hyde.Framework.Testing.Feature.HydeExtensionFeatureTest" assertions="2" time="0.028963"/>
-        <testcase name="Custom registered pages are discovered by the page collection class" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)::Custom registered pages are discovered by the page collection class" class="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" classname="Hyde.Framework.Testing.Feature.HydeExtensionFeatureTest" assertions="2" time="0.031916"/>
-        <testcase name="Custom registered pages are discovered by the route collection class" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)::Custom registered pages are discovered by the route collection class" class="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" classname="Hyde.Framework.Testing.Feature.HydeExtensionFeatureTest" assertions="2" time="0.029897"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\HydeKernelTest" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)" tests="67" assertions="117" errors="0" failures="0" skipped="2" time="1.546766">
-        <testcase name="Kernel singleton can be accessed by service container" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Kernel singleton can be accessed by service container" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.034378"/>
-        <testcase name="Kernel singleton can be accessed by kernel static method" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Kernel singleton can be accessed by kernel static method" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.021885"/>
-        <testcase name="Kernel singleton can be accessed by hyde facade method" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Kernel singleton can be accessed by hyde facade method" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.021820"/>
-        <testcase name="Kernel singleton can be accessed by helper function" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Kernel singleton can be accessed by helper function" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020639"/>
-        <testcase name="Hyde facade version method returns kernel version" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Hyde facade version method returns kernel version" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020892"/>
-        <testcase name="Hyde facade get facade root method returns kernel singleton" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Hyde facade get facade root method returns kernel singleton" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="3" time="0.022080"/>
-        <testcase name="Features helper returns new features instance" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Features helper returns new features instance" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.021703"/>
-        <testcase name="Has feature helper calls method on features class" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Has feature helper calls method on features class" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.020972"/>
-        <testcase name="Current page helper returns current page name" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Current page helper returns current page name" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.021388"/>
-        <testcase name="Current route helper returns current route object" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Current route helper returns current route object" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.023668"/>
-        <testcase name="Current page helper returns current page object" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Current page helper returns current page object" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.023285"/>
-        <testcase name="Make title helper returns title from page slug" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Make title helper returns title from page slug" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.021825"/>
-        <testcase name="Normalize newlines replaces carriage returns with unix endings" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Normalize newlines replaces carriage returns with unix endings" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.021382"/>
-        <testcase name="Strip newlines helper removes all newlines" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Strip newlines helper removes all newlines" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.021765"/>
-        <testcase name="Trim slashes function trims trailing slashes" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Trim slashes function trims trailing slashes" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="14" time="0.023060"/>
-        <testcase name="Markdown helper converts markdown to html" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Markdown helper converts markdown to html" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.022363"/>
-        <testcase name="Markdown helper converts indented markdown to html" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Markdown helper converts indented markdown to html" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.022697"/>
-        <testcase name="Format html path helper formats path according to config rules" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Format html path helper formats path according to config rules" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="4" time="0.021963"/>
-        <testcase name="Relative link helper returns relative link to destination" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Relative link helper returns relative link to destination" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.021443"/>
-        <testcase name="Media link helper returns relative link to destination" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Media link helper returns relative link to destination" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.021727"/>
-        <testcase name="Image helper returns image path for given name" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Image helper returns image path for given name" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="4" time="0.022240"/>
-        <testcase name="Image helper trims media prefix" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Image helper trims media prefix" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.021412"/>
-        <testcase name="Image helper supports custom media directories" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Image helper supports custom media directories" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.023009"/>
-        <testcase name="Route helper" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Route helper" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.026790"/>
-        <testcase name="Route helper with invalid route" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Route helper with invalid route" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.025945"/>
-        <testcase name="Has site url helper returns boolean value for when config setting is set" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Has site url helper returns boolean value for when config setting is set" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.021240"/>
-        <testcase name="Url returns qualified url paths" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Url returns qualified url paths" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="6" time="0.021571"/>
-        <testcase name="Filesystem helper returns the kernel filesystem instance" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Filesystem helper returns the kernel filesystem instance" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020964"/>
-        <testcase name="Path returns qualified path for given path" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Path returns qualified path for given path" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.020973"/>
-        <testcase name="Vendor path returns qualified path for given path" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Vendor path returns qualified path for given path" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.020703"/>
-        <testcase name="Fluent model source path helpers" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Fluent model source path helpers" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="11" time="0.022183"/>
-        <testcase name="Path to relative helper returns relative path for given path" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Path to relative helper returns relative path for given path" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.021105"/>
-        <testcase name="To array method" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::To array method" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.040806"/>
-        <testcase name="Json serialize method" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Json serialize method" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.026672"/>
-        <testcase name="To json method" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::To json method" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.026358"/>
-        <testcase name="Version constant is a valid semver string" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Version constant is a valid semver string" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020813"/>
-        <testcase name="Version constant is up to date with composer" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Version constant is up to date with composer" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="0" time="0.021152">
+        <testcase name="Hyde function exists in hyde namespace" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde function exists in hyde namespace" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.019500"/>
+        <testcase name="Namespaced hyde function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Namespaced hyde function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.020140"/>
+        <testcase name="Unslash function exists in hyde namespace" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Unslash function exists in hyde namespace" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.019815"/>
+        <testcase name="Namespaced unslash function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Namespaced unslash function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.033129"/>
+        <testcase name="Unixsum function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Unixsum function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="2" time="0.020871"/>
+        <testcase name="Unixsum file function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Unixsum file function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="2" time="0.020851"/>
+        <testcase name="Hyde make title function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde make title function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.019686"/>
+        <testcase name="Hyde normalize newlines function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde normalize newlines function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.019738"/>
+        <testcase name="Hyde strip newlines function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde strip newlines function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.020398"/>
+        <testcase name="Hyde trim slashes function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde trim slashes function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.020647"/>
+        <testcase name="Hyde evaluate arrayable function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde evaluate arrayable function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="2" time="0.020298"/>
+        <testcase name="Hyde yaml encode function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde yaml encode function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.019866"/>
+        <testcase name="Hyde yaml encode function encodes arrayables" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde yaml encode function encodes arrayables" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.019716"/>
+        <testcase name="Hyde yaml encode function accepts parameters" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde yaml encode function accepts parameters" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.019862"/>
+        <testcase name="Hyde yaml decode function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde yaml decode function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.020333"/>
+        <testcase name="Hyde yaml decode function accepts parameters" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde yaml decode function accepts parameters" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.020041"/>
+        <testcase name="Hyde path join function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde path join function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.019480"/>
+        <testcase name="Hyde path join function with multiple paths" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde path join function with multiple paths" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="1" time="0.019425"/>
+        <testcase name="Hyde normalize slashes function" file="Helpers (Hyde\Framework\Testing\Feature\Helpers)::Hyde normalize slashes function" class="Hyde\Framework\Testing\Feature\HelpersTest" classname="Hyde.Framework.Testing.Feature.HelpersTest" assertions="2" time="0.019696"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\HydeCoreExtensionTest" file="Hyde Core Extension (Hyde\Framework\Testing\Feature\HydeCoreExtension)" tests="4" assertions="4" errors="0" failures="0" skipped="0" time="0.058613">
+        <testcase name="Class extends extension class" file="Hyde Core Extension (Hyde\Framework\Testing\Feature\HydeCoreExtension)::Class extends extension class" class="Hyde\Framework\Testing\Feature\HydeCoreExtensionTest" classname="Hyde.Framework.Testing.Feature.HydeCoreExtensionTest" assertions="1" time="0.052191"/>
+        <testcase name="Class is registered" file="Hyde Core Extension (Hyde\Framework\Testing\Feature\HydeCoreExtension)::Class is registered" class="Hyde\Framework\Testing\Feature\HydeCoreExtensionTest" classname="Hyde.Framework.Testing.Feature.HydeCoreExtensionTest" assertions="1" time="0.001953"/>
+        <testcase name="Get page classes" file="Hyde Core Extension (Hyde\Framework\Testing\Feature\HydeCoreExtension)::Get page classes" class="Hyde\Framework\Testing\Feature\HydeCoreExtensionTest" classname="Hyde.Framework.Testing.Feature.HydeCoreExtensionTest" assertions="1" time="0.002232"/>
+        <testcase name="Get page classes does not include classes for disabled features" file="Hyde Core Extension (Hyde\Framework\Testing\Feature\HydeCoreExtension)::Get page classes does not include classes for disabled features" class="Hyde\Framework\Testing\Feature\HydeCoreExtensionTest" classname="Hyde.Framework.Testing.Feature.HydeCoreExtensionTest" assertions="1" time="0.002237"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)" tests="9" assertions="15" errors="0" failures="0" skipped="0" time="0.229794">
+        <testcase name="Handler methods are called by discovery" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)::Handler methods are called by discovery" class="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" classname="Hyde.Framework.Testing.Feature.HydeExtensionFeatureTest" assertions="2" time="0.029712"/>
+        <testcase name="File handler dependency injection" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)::File handler dependency injection" class="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" classname="Hyde.Framework.Testing.Feature.HydeExtensionFeatureTest" assertions="1" time="0.023533"/>
+        <testcase name="Page handler dependency injection" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)::Page handler dependency injection" class="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" classname="Hyde.Framework.Testing.Feature.HydeExtensionFeatureTest" assertions="1" time="0.025101"/>
+        <testcase name="Route handler dependency injection" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)::Route handler dependency injection" class="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" classname="Hyde.Framework.Testing.Feature.HydeExtensionFeatureTest" assertions="1" time="0.026230"/>
+        <testcase name="Register extension method throws exception when kernel is already booted" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)::Register extension method throws exception when kernel is already booted" class="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" classname="Hyde.Framework.Testing.Feature.HydeExtensionFeatureTest" assertions="2" time="0.023668"/>
+        <testcase name="Register extension method only accepts instances of hyde extension" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)::Register extension method only accepts instances of hyde extension" class="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" classname="Hyde.Framework.Testing.Feature.HydeExtensionFeatureTest" assertions="2" time="0.019668"/>
+        <testcase name="Custom registered pages are discovered by the file collection class" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)::Custom registered pages are discovered by the file collection class" class="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" classname="Hyde.Framework.Testing.Feature.HydeExtensionFeatureTest" assertions="2" time="0.026325"/>
+        <testcase name="Custom registered pages are discovered by the page collection class" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)::Custom registered pages are discovered by the page collection class" class="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" classname="Hyde.Framework.Testing.Feature.HydeExtensionFeatureTest" assertions="2" time="0.028864"/>
+        <testcase name="Custom registered pages are discovered by the route collection class" file="Hyde Extension Feature (Hyde\Framework\Testing\Feature\HydeExtensionFeature)::Custom registered pages are discovered by the route collection class" class="Hyde\Framework\Testing\Feature\HydeExtensionFeatureTest" classname="Hyde.Framework.Testing.Feature.HydeExtensionFeatureTest" assertions="2" time="0.026693"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\HydeKernelTest" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)" tests="67" assertions="117" errors="0" failures="0" skipped="2" time="1.447843">
+        <testcase name="Kernel singleton can be accessed by service container" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Kernel singleton can be accessed by service container" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.033184"/>
+        <testcase name="Kernel singleton can be accessed by kernel static method" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Kernel singleton can be accessed by kernel static method" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.019879"/>
+        <testcase name="Kernel singleton can be accessed by hyde facade method" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Kernel singleton can be accessed by hyde facade method" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.019636"/>
+        <testcase name="Kernel singleton can be accessed by helper function" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Kernel singleton can be accessed by helper function" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.019627"/>
+        <testcase name="Hyde facade version method returns kernel version" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Hyde facade version method returns kernel version" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.019684"/>
+        <testcase name="Hyde facade get facade root method returns kernel singleton" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Hyde facade get facade root method returns kernel singleton" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="3" time="0.019819"/>
+        <testcase name="Features helper returns new features instance" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Features helper returns new features instance" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.019833"/>
+        <testcase name="Has feature helper calls method on features class" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Has feature helper calls method on features class" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.020420"/>
+        <testcase name="Current page helper returns current page name" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Current page helper returns current page name" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020121"/>
+        <testcase name="Current route helper returns current route object" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Current route helper returns current route object" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.021159"/>
+        <testcase name="Current page helper returns current page object" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Current page helper returns current page object" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.021092"/>
+        <testcase name="Make title helper returns title from page slug" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Make title helper returns title from page slug" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.019784"/>
+        <testcase name="Normalize newlines replaces carriage returns with unix endings" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Normalize newlines replaces carriage returns with unix endings" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020181"/>
+        <testcase name="Strip newlines helper removes all newlines" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Strip newlines helper removes all newlines" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020106"/>
+        <testcase name="Trim slashes function trims trailing slashes" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Trim slashes function trims trailing slashes" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="14" time="0.021097"/>
+        <testcase name="Markdown helper converts markdown to html" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Markdown helper converts markdown to html" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.021041"/>
+        <testcase name="Markdown helper converts indented markdown to html" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Markdown helper converts indented markdown to html" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020813"/>
+        <testcase name="Format html path helper formats path according to config rules" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Format html path helper formats path according to config rules" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="4" time="0.020083"/>
+        <testcase name="Relative link helper returns relative link to destination" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Relative link helper returns relative link to destination" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.020462"/>
+        <testcase name="Media link helper returns relative link to destination" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Media link helper returns relative link to destination" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.020474"/>
+        <testcase name="Image helper returns image path for given name" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Image helper returns image path for given name" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="4" time="0.021363"/>
+        <testcase name="Image helper trims media prefix" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Image helper trims media prefix" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020385"/>
+        <testcase name="Image helper supports custom media directories" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Image helper supports custom media directories" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020021"/>
+        <testcase name="Route helper" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Route helper" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.023946"/>
+        <testcase name="Route helper with invalid route" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Route helper with invalid route" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.023258"/>
+        <testcase name="Has site url helper returns boolean value for when config setting is set" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Has site url helper returns boolean value for when config setting is set" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.019632"/>
+        <testcase name="Url returns qualified url paths" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Url returns qualified url paths" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="6" time="0.020388"/>
+        <testcase name="Filesystem helper returns the kernel filesystem instance" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Filesystem helper returns the kernel filesystem instance" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.019747"/>
+        <testcase name="Path returns qualified path for given path" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Path returns qualified path for given path" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.019859"/>
+        <testcase name="Vendor path returns qualified path for given path" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Vendor path returns qualified path for given path" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.019842"/>
+        <testcase name="Fluent model source path helpers" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Fluent model source path helpers" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="11" time="0.021526"/>
+        <testcase name="Path to relative helper returns relative path for given path" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Path to relative helper returns relative path for given path" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.019809"/>
+        <testcase name="To array method" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::To array method" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.037844"/>
+        <testcase name="Json serialize method" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Json serialize method" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.025613"/>
+        <testcase name="To json method" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::To json method" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.025132"/>
+        <testcase name="Version constant is a valid semver string" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Version constant is a valid semver string" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.019680"/>
+        <testcase name="Version constant is up to date with composer" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Version constant is up to date with composer" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="0" time="0.020455">
           <skipped/>
         </testcase>
-        <testcase name="Version constant is up to date with git" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Version constant is up to date with git" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="0" time="0.023763">
+        <testcase name="Version constant is up to date with git" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Version constant is up to date with git" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="0" time="0.022593">
           <skipped/>
         </testcase>
-        <testcase name="Version method returns version constant" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Version method returns version constant" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.021363"/>
-        <testcase name="Can get source root" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can get source root" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.021115"/>
-        <testcase name="Can set source root" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can set source root" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.022390"/>
-        <testcase name="Can set source root to absolute project path" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can set source root to absolute project path" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.021896"/>
-        <testcase name="Set source root trims trailing slashes" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Set source root trims trailing slashes" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.021848"/>
-        <testcase name="Can get output directory" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can get output directory" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.021987"/>
-        <testcase name="Can set output directory" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can set output directory" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.021720"/>
-        <testcase name="Can set output directory to absolute project path" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can set output directory to absolute project path" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.021730"/>
-        <testcase name="Set output directory trims trailing slashes" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Set output directory trims trailing slashes" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020536"/>
-        <testcase name="Can get media directory" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can get media directory" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020235"/>
-        <testcase name="Can set media directory" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can set media directory" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020550"/>
-        <testcase name="Set media directory trims trailing slashes" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Set media directory trims trailing slashes" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.021047"/>
-        <testcase name="Can get media output directory name" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can get media output directory name" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020572"/>
-        <testcase name="Get media output directory name uses trimmed version of media source directory" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Get media output directory name uses trimmed version of media source directory" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020155"/>
-        <testcase name="Can get site media output directory" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can get site media output directory" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020132"/>
-        <testcase name="Get site media output directory uses trimmed version of media source directory" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Get site media output directory uses trimmed version of media source directory" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020811"/>
-        <testcase name="Get site media output directory uses configured site output directory" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Get site media output directory uses configured site output directory" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.021620"/>
-        <testcase name="Media output directory can be changed in configuration" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Media output directory can be changed in configuration" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.022713"/>
-        <testcase name="Can access kernel fluently using the facade" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can access kernel fluently using the facade" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="3" time="0.021211"/>
-        <testcase name="Can register booting callback closure" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can register booting callback closure" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.024788"/>
-        <testcase name="Can register booted callback closure" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can register booted callback closure" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.024892"/>
-        <testcase name="Can register booting callback callable" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can register booting callback callable" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.024324"/>
-        <testcase name="Can register booted callback callable" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can register booted callback callable" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.025159"/>
-        <testcase name="Booting callback receives kernel instance" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Booting callback receives kernel instance" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.025787"/>
-        <testcase name="Booted callback receives kernel instance" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Booted callback receives kernel instance" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.025412"/>
-        <testcase name="Can use booting callbacks to inject custom pages" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can use booting callbacks to inject custom pages" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.026838"/>
-        <testcase name="Is booted returns false when not booted" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Is booted returns false when not booted" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.021765"/>
-        <testcase name="Is booted returns true when booted" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Is booted returns true when booted" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.025648"/>
-        <testcase name="Is booted method on the facade" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Is booted method on the facade" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.039888"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\HydePageTest" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)" tests="154" assertions="242" errors="0" failures="0" skipped="0" time="3.691198">
-        <testcase name="Base source directory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base source directory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.107595"/>
-        <testcase name="Base output directory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base output directory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021495"/>
-        <testcase name="Base file extension" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base file extension" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.025405"/>
-        <testcase name="Base source path" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base source path" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021610"/>
-        <testcase name="Base output path" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base output path" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021762"/>
-        <testcase name="Base path" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base path" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021928"/>
-        <testcase name="Base path to identifier" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base path to identifier" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021717"/>
-        <testcase name="Base base route key" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base base route key" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021921"/>
-        <testcase name="Base is discoverable" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base is discoverable" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021763"/>
-        <testcase name="Source directory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Source directory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021748"/>
-        <testcase name="Output directory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Output directory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021590"/>
-        <testcase name="File extension" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::File extension" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022295"/>
-        <testcase name="Source path" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Source path" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022421"/>
-        <testcase name="Output path" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Output path" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021744"/>
-        <testcase name="Path" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Path" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021873"/>
-        <testcase name="Base route key" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base route key" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022274"/>
-        <testcase name="Is discoverable" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Is discoverable" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022519"/>
-        <testcase name="Get source path" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get source path" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023475"/>
-        <testcase name="Get output path" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get output path" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023071"/>
-        <testcase name="Get link" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get link" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023530"/>
-        <testcase name="Make" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Make" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023597"/>
-        <testcase name="Make with data" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Make with data" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.036538"/>
-        <testcase name="Show in navigation" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="5" time="0.025673"/>
-        <testcase name="Navigation menu priority" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu priority" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="5" time="0.025396"/>
-        <testcase name="Navigation menu label" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu label" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="5" time="0.026299"/>
-        <testcase name="Navigation menu group" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu group" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="6" time="0.026161"/>
-        <testcase name="To array" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::To array" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023957"/>
-        <testcase name="Get source directory returns static property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get source directory returns static property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022116"/>
-        <testcase name="Set source directory trims trailing slashes" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Set source directory trims trailing slashes" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021183"/>
-        <testcase name="Get output directory returns static property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get output directory returns static property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020758"/>
-        <testcase name="Set output directory trims trailing slashes" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Set output directory trims trailing slashes" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020846"/>
-        <testcase name="Get file extension returns static property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get file extension returns static property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020605"/>
-        <testcase name="Set file extension forces leading period" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Set file extension forces leading period" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020444"/>
-        <testcase name="Set file extension removes trailing period" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Set file extension removes trailing period" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021458"/>
-        <testcase name="Get identifier returns identifier property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get identifier returns identifier property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023707"/>
-        <testcase name="Set source directory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Set source directory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022113"/>
-        <testcase name="Set output directory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Set output directory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022066"/>
-        <testcase name="Set file extension" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Set file extension" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022345"/>
-        <testcase name="Static get method returns discovered page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Static get method returns discovered page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.027507"/>
-        <testcase name="Static get method throws exception if page not found" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Static get method throws exception if page not found" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.026368"/>
-        <testcase name="Parse parses supplied slug into a page model" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Parse parses supplied slug into a page model" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.024291"/>
-        <testcase name="Files returns array of source files" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Files returns array of source files" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.027488"/>
-        <testcase name="All returns collection of all parsed source files from page index" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::All returns collection of all parsed source files from page index" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.028019"/>
-        <testcase name="Qualify basename properly expands basename for the model" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Qualify basename properly expands basename for the model" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021701"/>
-        <testcase name="Qualify basename trims slashes from input" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Qualify basename trims slashes from input" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020377"/>
-        <testcase name="Qualify basename uses the static properties" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Qualify basename uses the static properties" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020492"/>
-        <testcase name="Path returns absolute path to source directory when no parameter is supplied" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Path returns absolute path to source directory when no parameter is supplied" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020510"/>
-        <testcase name="Path returns absolute path to file in source directory when parameter is supplied" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Path returns absolute path to file in source directory when parameter is supplied" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020292"/>
-        <testcase name="Path method removes trailing slashes" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Path method removes trailing slashes" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021489"/>
-        <testcase name="Get output location returns the file output path for the supplied basename" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get output location returns the file output path for the supplied basename" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021456"/>
-        <testcase name="Get output location returns the configured location" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get output location returns the configured location" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020874"/>
-        <testcase name="Get output location trims trailing slashes from directory setting" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get output location trims trailing slashes from directory setting" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020664"/>
-        <testcase name="Get output location trims trailing slashes from basename" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get output location trims trailing slashes from basename" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020560"/>
-        <testcase name="Get current page path returns output directory and basename" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get current page path returns output directory and basename" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022019"/>
-        <testcase name="Get current page path returns output directory and basename for configured directory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get current page path returns output directory and basename for configured directory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022264"/>
-        <testcase name="Get current page path trims trailing slashes from directory setting" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get current page path trims trailing slashes from directory setting" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.035509"/>
-        <testcase name="Get output path returns current page path with html extension appended" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get output path returns current page path with html extension appended" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022464"/>
-        <testcase name="Get source path returns qualified basename" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get source path returns qualified basename" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022556"/>
-        <testcase name="Markdown page implements page contract" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Markdown page implements page contract" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021732"/>
-        <testcase name="All page models extend abstract page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::All page models extend abstract page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="6" time="0.025517"/>
-        <testcase name="All page models have configured source directory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::All page models have configured source directory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="5" time="0.021125"/>
-        <testcase name="All page models have configured output directory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::All page models have configured output directory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="4" time="0.021529"/>
-        <testcase name="All page models have configured file extension" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::All page models have configured file extension" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="4" time="0.021283"/>
-        <testcase name="Abstract markdown page extends abstract page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page extends abstract page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.024216"/>
-        <testcase name="Abstract markdown page implements page contract" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page implements page contract" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020694"/>
-        <testcase name="Abstract markdown page has markdown document property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page has markdown document property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020928"/>
-        <testcase name="Abstract markdown page has file extension property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page has file extension property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021170"/>
-        <testcase name="Abstract markdown page file extension property is set to md" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page file extension property is set to md" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021095"/>
-        <testcase name="Abstract markdown page constructor arguments are optional" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page constructor arguments are optional" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022362"/>
-        <testcase name="Abstract markdown page constructor assigns markdown document property if set" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page constructor assigns markdown document property if set" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023804"/>
-        <testcase name="Abstract markdown page constructor creates new markdown document if no markdown document is set" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page constructor creates new markdown document if no markdown document is set" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023824"/>
-        <testcase name="Abstract markdown page markdown helper returns the markdown document instance" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page markdown helper returns the markdown document instance" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022470"/>
-        <testcase name="Abstract markdown page markdown helper returns the configured markdown document instance" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page markdown helper returns the configured markdown document instance" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022140"/>
-        <testcase name="Abstract markdown page make helper constructs dynamic title automatically" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page make helper constructs dynamic title automatically" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021976"/>
-        <testcase name="Markdown based pages extend abstract markdown page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Markdown based pages extend abstract markdown page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="3" time="0.022716"/>
-        <testcase name="Blade pages do not extend abstract markdown page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Blade pages do not extend abstract markdown page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021884"/>
-        <testcase name="Get route returns page route" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get route returns page route" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.024854"/>
-        <testcase name="Get route returns the route object from the router index" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get route returns the route object from the router index" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.026141"/>
-        <testcase name="Html title returns site name plus page title" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Html title returns site name plus page title" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021107"/>
-        <testcase name="Html title uses configured site name" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Html title uses configured site name" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021720"/>
-        <testcase name="Body helper returns markdown document body in markdown pages" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Body helper returns markdown document body in markdown pages" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022402"/>
-        <testcase name="Show in navigation returns false for markdown post" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation returns false for markdown post" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022071"/>
-        <testcase name="Show in navigation returns true for documentation page if slug is index" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation returns true for documentation page if slug is index" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023352"/>
-        <testcase name="Show in navigation returns true for documentation page if slug is not index" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation returns true for documentation page if slug is not index" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022100"/>
-        <testcase name="Show in navigation returns false for abstract markdown page if matter navigation hidden is true" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation returns false for abstract markdown page if matter navigation hidden is true" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021986"/>
-        <testcase name="Show in navigation returns true for abstract markdown page if matter navigation visible is true" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation returns true for abstract markdown page if matter navigation visible is true" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.028451"/>
-        <testcase name="Show in navigation returns true for abstract markdown page if matter navigation hidden is false" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation returns true for abstract markdown page if matter navigation hidden is false" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023244"/>
-        <testcase name="Show in navigation returns true for abstract markdown page if matter navigation hidden is not set" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation returns true for abstract markdown page if matter navigation hidden is not set" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022583"/>
-        <testcase name="Show in navigation returns false if slug is present in config hyde navigation exclude" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation returns false if slug is present in config hyde navigation exclude" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.023827"/>
-        <testcase name="Show in navigation returns false if slug is 404" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation returns false if slug is 404" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.036309"/>
-        <testcase name="Show in navigation defaults to true if all checks pass" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation defaults to true if all checks pass" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022116"/>
-        <testcase name="Navigation menu priority returns front matter value of navigation priority if abstract markdown page and not null" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu priority returns front matter value of navigation priority if abstract markdown page and not null" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021637"/>
-        <testcase name="Navigation menu priority can be set using order property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu priority can be set using order property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022909"/>
-        <testcase name="Navigation menu priority returns specified config value if slug exists in config hyde navigation order" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu priority returns specified config value if slug exists in config hyde navigation order" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.023801"/>
-        <testcase name="Navigation menu priority gives precedence to front matter over config hyde navigation order" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu priority gives precedence to front matter over config hyde navigation order" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.023164"/>
-        <testcase name="Navigation menu priority returns 999 for documentation page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu priority returns 999 for documentation page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022388"/>
-        <testcase name="Navigation menu priority returns 0 if slug is index" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu priority returns 0 if slug is index" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021767"/>
-        <testcase name="Navigation menu priority returns 10 if slug is posts" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu priority returns 10 if slug is posts" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021825"/>
-        <testcase name="Navigation menu priority defaults to 999 if no other conditions are met" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu priority defaults to 999 if no other conditions are met" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021855"/>
-        <testcase name="Navigation menu title returns navigation title matter if set" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu title returns navigation title matter if set" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021978"/>
-        <testcase name="Navigation menu title returns title matter if set" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu title returns title matter if set" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022722"/>
-        <testcase name="Navigation menu title navigation title has precedence over title" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu title navigation title has precedence over title" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022545"/>
-        <testcase name="Navigation menu title returns docs if slug is index and model is documentation page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu title returns docs if slug is index and model is documentation page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023452"/>
-        <testcase name="Navigation menu title returns home if slug is index and model is not documentation page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu title returns home if slug is index and model is not documentation page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.024192"/>
-        <testcase name="Navigation menu title returns title if title is set and not empty" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu title returns title if title is set and not empty" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023670"/>
-        <testcase name="Navigation menu title falls back to hyde make title from slug" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu title falls back to hyde make title from slug" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023580"/>
-        <testcase name="Navigation menu title can be set in configuration" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu title can be set in configuration" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022601"/>
-        <testcase name="Documentation page can be hidden from navigation using config" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Documentation page can be hidden from navigation using config" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022145"/>
-        <testcase name="Get canonical url returns url for top level page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get canonical url returns url for top level page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022155"/>
-        <testcase name="Get canonical url returns pretty url for top level page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get canonical url returns pretty url for top level page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022814"/>
-        <testcase name="Get canonical url returns url for nested page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get canonical url returns url for nested page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023655"/>
-        <testcase name="Get canonical url returns url for deeply nested page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get canonical url returns url for deeply nested page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023714"/>
-        <testcase name="Canonical url is not set when identifier is null" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Canonical url is not set when identifier is null" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.024611"/>
-        <testcase name="Canonical url is not set when site url is null" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Canonical url is not set when site url is null" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.024146"/>
-        <testcase name="Custom canonical link can be set in front matter" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Custom canonical link can be set in front matter" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.022976"/>
-        <testcase name="Can create canonical url using base url from config" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Can create canonical url using base url from config" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022307"/>
-        <testcase name="Can create canonical url using base url from config using pretty urls" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Can create canonical url using base url from config using pretty urls" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022294"/>
-        <testcase name="Canonical url is null when no base url is set" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Canonical url is null when no base url is set" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021637"/>
-        <testcase name="Render page metadata returns string" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Render page metadata returns string" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022102"/>
-        <testcase name="Has method returns true if page has standard property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Has method returns true if page has standard property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022247"/>
-        <testcase name="Has method returns false if page does not have standard property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Has method returns false if page does not have standard property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022541"/>
-        <testcase name="Has method returns true if page has dynamic property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Has method returns true if page has dynamic property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021873"/>
-        <testcase name="Has method returns false if page does not have dynamic property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Has method returns false if page does not have dynamic property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022662"/>
-        <testcase name="Has method returns true if page has property set in front matter" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Has method returns true if page has property set in front matter" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022640"/>
-        <testcase name="Has method returns false if page does not have property set in front matter" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Has method returns false if page does not have property set in front matter" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.039801"/>
-        <testcase name="Has method returns false if property exists but is blank" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Has method returns false if property exists but is blank" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.026500"/>
-        <testcase name="Has method returns true if page has blank property set in front matter" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Has method returns true if page has blank property set in front matter" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.022776"/>
-        <testcase name="Markdown pages can be saved to disk" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Markdown pages can be saved to disk" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023143"/>
-        <testcase name="Save method converts front matter array to yaml block" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Save method converts front matter array to yaml block" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023056"/>
-        <testcase name="Save method writes page body to file" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Save method writes page body to file" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022893"/>
-        <testcase name="Save method writes page body to file with front matter" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Save method writes page body to file with front matter" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022774"/>
-        <testcase name="New markdown pages can be saved" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::New markdown pages can be saved" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.023876"/>
-        <testcase name="Existing parsed markdown pages can be saved" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Existing parsed markdown pages can be saved" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="3" time="0.030357"/>
-        <testcase name="Save method creates source directory if it does not exist" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Save method creates source directory if it does not exist" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="3" time="0.023999"/>
-        <testcase name="Save method creates source directory recursively if it does not exist" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Save method creates source directory recursively if it does not exist" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="4" time="0.024601"/>
-        <testcase name="Markdown posts can be saved" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Markdown posts can be saved" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.024106"/>
-        <testcase name="Documentation pages can be saved" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Documentation pages can be saved" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023013"/>
-        <testcase name="Get method can access data from page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get method can access data from page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022179"/>
-        <testcase name="Get method can access nested data from page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get method can access nested data from page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022278"/>
-        <testcase name="Get method can access nested data from page with dot notation" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get method can access nested data from page with dot notation" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022650"/>
-        <testcase name="Get link with pretty urls" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get link with pretty urls" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021947"/>
-        <testcase name="Get link uses hyperlinks helper" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get link uses hyperlinks helper" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023171"/>
-        <testcase name="Path helpers return same result as fluent filesystem helpers" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Path helpers return same result as fluent filesystem helpers" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="4" time="0.023855"/>
-        <testcase name="All pages are routable" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::All pages are routable" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="25" time="0.066094"/>
-        <testcase name="Navigation data factory hides page from navigation when in a subdirectory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation data factory hides page from navigation when in a subdirectory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.023396"/>
-        <testcase name="Navigation data factory hides page from navigation when in a and config is set to hidden" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation data factory hides page from navigation when in a and config is set to hidden" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.022480"/>
-        <testcase name="Navigation data factory does not hide page from navigation when in a subdirectory and allowed in configuration" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation data factory does not hide page from navigation when in a subdirectory and allowed in configuration" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.022618"/>
-        <testcase name="Navigation data factory allows show in navigation and sets group when dropdown is selected in config" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation data factory allows show in navigation and sets group when dropdown is selected in config" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.022269"/>
-        <testcase name="Is discoverable method returns true for discoverable pages" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Is discoverable method returns true for discoverable pages" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020944"/>
-        <testcase name="Is discoverable method returns false for non discoverable pages" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Is discoverable method returns false for non discoverable pages" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021247"/>
-        <testcase name="Is discoverable method requires all required data to be present" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Is discoverable method requires all required data to be present" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020849"/>
-        <testcase name="Is discoverable method requires source directory to be filled" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Is discoverable method requires source directory to be filled" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020750"/>
-        <testcase name="All core extension pages are discoverable" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::All core extension pages are discoverable" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="5" time="0.022602"/>
-        <testcase name="Nested index pages show up in navigation" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Nested index pages show up in navigation" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.023743"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)" tests="21" assertions="95" errors="0" failures="0" skipped="0" time="0.691964">
-        <testcase name="Provider is constructed" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider is constructed" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="1" time="0.229240"/>
-        <testcase name="Provider has register method" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider has register method" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="1" time="0.025588"/>
-        <testcase name="Provider has boot method" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider has boot method" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="1" time="0.020394"/>
-        <testcase name="Provider registers asset service as singleton" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers asset service as singleton" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="3" time="0.020343"/>
-        <testcase name="Provider registers build task service as singleton" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers build task service as singleton" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="3" time="0.025143"/>
-        <testcase name="Provider registers source directories" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers source directories" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="8" time="0.022423"/>
-        <testcase name="Provider registers output directories" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers output directories" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="8" time="0.021537"/>
-        <testcase name="Custom source roots are applied to the page models" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Custom source roots are applied to the page models" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="8" time="0.021533"/>
-        <testcase name="Source root set in config is assigned" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Source root set in config is assigned" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="3" time="0.021507"/>
-        <testcase name="Provider registers site output directory" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers site output directory" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="2" time="0.022061"/>
-        <testcase name="Provider registers media directory" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers media directory" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="3" time="0.021578"/>
-        <testcase name="Provider registers blade view discovery location for configured blade view path" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers blade view discovery location for configured blade view path" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="2" time="0.021425"/>
-        <testcase name="Blade view locations are only registered once per key" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Blade view locations are only registered once per key" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="2" time="0.022445"/>
-        <testcase name="Provider registers console commands" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers console commands" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="18" time="0.026419"/>
-        <testcase name="Provider registers additional module service providers" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers additional module service providers" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="1" time="0.021385"/>
-        <testcase name="Provider registers all page model source paths" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers all page model source paths" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="6" time="0.022402"/>
-        <testcase name="Provider registers all page model output paths" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers all page model output paths" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="5" time="0.037712"/>
-        <testcase name="Provider registers source directories using options in configuration" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers source directories using options in configuration" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="5" time="0.021765"/>
-        <testcase name="Source directories can be set using kebab case class names" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Source directories can be set using kebab case class names" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="5" time="0.021337"/>
-        <testcase name="Provider registers output directories using options in configuration" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers output directories using options in configuration" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="5" time="0.022341"/>
-        <testcase name="Output directories can be set using kebab case class names" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Output directories can be set using kebab case class names" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="5" time="0.023384"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\IncludesFacadeTest" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)" tests="14" assertions="19" errors="0" failures="0" skipped="0" time="0.336377">
-        <testcase name="Path returns the includes directory" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Path returns the includes directory" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="1" time="0.049548"/>
-        <testcase name="Path returns a partial within the includes directory" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Path returns a partial within the includes directory" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="1" time="0.021210"/>
-        <testcase name="Path creates directory if it does not exist" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Path creates directory if it does not exist" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="2" time="0.021320"/>
-        <testcase name="Get returns partial" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Get returns partial" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="1" time="0.021333"/>
-        <testcase name="Get returns default value when not found" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Get returns default value when not found" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="2" time="0.021164"/>
-        <testcase name="Html returns rendered partial" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Html returns rendered partial" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="1" time="0.020705"/>
-        <testcase name="Html returns efault value when not found" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Html returns efault value when not found" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="2" time="0.021166"/>
-        <testcase name="Html with and without extension" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Html with and without extension" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="1" time="0.020890"/>
-        <testcase name="Markdown returns rendered partial" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Markdown returns rendered partial" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="1" time="0.022133"/>
-        <testcase name="Markdown returns rendered default value when not found" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Markdown returns rendered default value when not found" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="2" time="0.022488"/>
-        <testcase name="Markdown with and without extension" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Markdown with and without extension" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="1" time="0.024726"/>
-        <testcase name="Blade returns rendered partial" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Blade returns rendered partial" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="1" time="0.024233"/>
-        <testcase name="Blade with and without extension" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Blade with and without extension" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="1" time="0.023046"/>
-        <testcase name="Blade returns rendered default value when not found" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Blade returns rendered default value when not found" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="2" time="0.022417"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)" tests="18" assertions="33" errors="0" failures="0" skipped="0" time="0.427428">
-        <testcase name="Can define hyde config settings in hyde yml file" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Can define hyde config settings in hyde yml file" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="9" time="0.042716"/>
-        <testcase name="Can define multiple config settings in hyde yml file" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Can define multiple config settings in hyde yml file" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="3" time="0.021578"/>
-        <testcase name="Bootstrapper applies yaml configuration when present" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Bootstrapper applies yaml configuration when present" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.021365"/>
-        <testcase name="Changes in yaml file override changes in hyde config" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Changes in yaml file override changes in hyde config" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.021045"/>
-        <testcase name="Changes in yaml file override changes in hyde config when using yaml extension" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Changes in yaml file override changes in hyde config when using yaml extension" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.021535"/>
-        <testcase name="Service gracefully handles missing file" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Service gracefully handles missing file" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.022016"/>
-        <testcase name="Service gracefully handles empty file" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Service gracefully handles empty file" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.035779"/>
-        <testcase name="Can add arbitrary config keys" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Can add arbitrary config keys" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.021295"/>
-        <testcase name="Configuration options are merged" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Configuration options are merged" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.021384"/>
-        <testcase name="Can add configuration options in namespaced array" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Can add configuration options in namespaced array" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="3" time="0.022407"/>
-        <testcase name="Can add arbitrary namespaced data" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Can add arbitrary namespaced data" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.021745"/>
-        <testcase name="Additional namespaces require the hyde namespace to be present" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Additional namespaces require the hyde namespace to be present" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.021665"/>
-        <testcase name="Additional namespaces requires hyde namespace to be the first entry" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Additional namespaces requires hyde namespace to be the first entry" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.022134"/>
-        <testcase name="Hyde namespace can be empty" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Hyde namespace can be empty" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.022534"/>
-        <testcase name="Hyde namespace can be null" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Hyde namespace can be null" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.021953"/>
-        <testcase name="Hyde namespace can blank" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Hyde namespace can blank" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.021913"/>
-        <testcase name="Dot notation can be used" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Dot notation can be used" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="2" time="0.021757"/>
-        <testcase name="Dot notation can be used with namespaces" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Dot notation can be used with namespaces" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="3" time="0.022606"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\MarkdownFileParserTest" file="Markdown File Parser (Hyde\Framework\Testing\Feature\MarkdownFileParser)" tests="3" assertions="8" errors="0" failures="0" skipped="0" time="0.033937">
-        <testcase name="Can parse markdown file" file="Markdown File Parser (Hyde\Framework\Testing\Feature\MarkdownFileParser)::Can parse markdown file" class="Hyde\Framework\Testing\Feature\MarkdownFileParserTest" classname="Hyde.Framework.Testing.Feature.MarkdownFileParserTest" assertions="2" time="0.027096"/>
-        <testcase name="Can parse markdown file with front matter" file="Markdown File Parser (Hyde\Framework\Testing\Feature\MarkdownFileParser)::Can parse markdown file with front matter" class="Hyde\Framework\Testing\Feature\MarkdownFileParserTest" classname="Hyde.Framework.Testing.Feature.MarkdownFileParserTest" assertions="3" time="0.003545"/>
-        <testcase name="Parsed markdown post contains valid front matter" file="Markdown File Parser (Hyde\Framework\Testing\Feature\MarkdownFileParser)::Parsed markdown post contains valid front matter" class="Hyde\Framework\Testing\Feature\MarkdownFileParserTest" classname="Hyde.Framework.Testing.Feature.MarkdownFileParserTest" assertions="3" time="0.003296"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\MarkdownPostTest" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)" tests="9" assertions="22" errors="0" failures="0" skipped="0" time="0.201160">
-        <testcase name="Constructor can create a new author instance from username string" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)::Constructor can create a new author instance from username string" class="Hyde\Framework\Testing\Feature\MarkdownPostTest" classname="Hyde.Framework.Testing.Feature.MarkdownPostTest" assertions="4" time="0.026798"/>
-        <testcase name="Constructor can create a new author instance from user array" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)::Constructor can create a new author instance from user array" class="Hyde\Framework\Testing\Feature\MarkdownPostTest" classname="Hyde.Framework.Testing.Feature.MarkdownPostTest" assertions="4" time="0.021514"/>
-        <testcase name="Constructor can create a new image instance from a string" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)::Constructor can create a new image instance from a string" class="Hyde\Framework\Testing\Feature\MarkdownPostTest" classname="Hyde.Framework.Testing.Feature.MarkdownPostTest" assertions="2" time="0.021372"/>
-        <testcase name="Constructor can create a new image instance from an array" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)::Constructor can create a new image instance from an array" class="Hyde\Framework\Testing\Feature\MarkdownPostTest" classname="Hyde.Framework.Testing.Feature.MarkdownPostTest" assertions="2" time="0.021431"/>
-        <testcase name="Constructor can create a new date string instance from matter" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)::Constructor can create a new date string instance from matter" class="Hyde\Framework\Testing\Feature\MarkdownPostTest" classname="Hyde.Framework.Testing.Feature.MarkdownPostTest" assertions="2" time="0.021318"/>
-        <testcase name="Featured image can be constructed returns null when no image is set in the page matter" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)::Featured image can be constructed returns null when no image is set in the page matter" class="Hyde\Framework\Testing\Feature\MarkdownPostTest" classname="Hyde.Framework.Testing.Feature.MarkdownPostTest" assertions="1" time="0.021080"/>
-        <testcase name="Featured image can be constructed returns image object with local path when matter is string" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)::Featured image can be constructed returns image object with local path when matter is string" class="Hyde\Framework\Testing\Feature\MarkdownPostTest" classname="Hyde.Framework.Testing.Feature.MarkdownPostTest" assertions="2" time="0.022057"/>
-        <testcase name="Featured image can be constructed returns image object with remote path when matter is string" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)::Featured image can be constructed returns image object with remote path when matter is string" class="Hyde\Framework\Testing\Feature\MarkdownPostTest" classname="Hyde.Framework.Testing.Feature.MarkdownPostTest" assertions="2" time="0.022613"/>
-        <testcase name="Featured image can be constructed returns image object with supplied data when matter is array" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)::Featured image can be constructed returns image object with supplied data when matter is array" class="Hyde\Framework\Testing\Feature\MarkdownPostTest" classname="Hyde.Framework.Testing.Feature.MarkdownPostTest" assertions="3" time="0.022975"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\MarkdownServiceTest" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)" tests="31" assertions="38" errors="0" failures="0" skipped="0" time="0.750959">
-        <testcase name="Service can parse markdown to html" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Service can parse markdown to html" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="2" time="0.036892"/>
-        <testcase name="Service can parse markdown to html with permalinks" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Service can parse markdown to html with permalinks" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="2" time="0.023832"/>
-        <testcase name="Torchlight extension is not enabled by default" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Torchlight extension is not enabled by default" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.023243"/>
-        <testcase name="Torchlight extension is enabled automatically when has torchlight feature" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Torchlight extension is enabled automatically when has torchlight feature" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.037831"/>
-        <testcase name="Torchlight integration injects attribution" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Torchlight integration injects attribution" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.025091"/>
-        <testcase name="Bladedown is not enabled by default" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Bladedown is not enabled by default" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.024497"/>
-        <testcase name="Bladedown can be enabled" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Bladedown can be enabled" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.039309"/>
-        <testcase name="Raw html tags are stripped by default" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Raw html tags are stripped by default" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.023654"/>
-        <testcase name="Raw html tags are not stripped when explicitly enabled" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Raw html tags are not stripped when explicitly enabled" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.023719"/>
-        <testcase name="Has features array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Has features array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.021748"/>
-        <testcase name="The features array is empty by default" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::The features array is empty by default" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.021776"/>
-        <testcase name="Features can be added to the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Features can be added to the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.021477"/>
-        <testcase name="Features can be removed from the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Features can be removed from the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.020643"/>
-        <testcase name="Method chaining can be used to programmatically add features to the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Method chaining can be used to programmatically add features to the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="2" time="0.021023"/>
-        <testcase name="Method chaining can be used to programmatically remove features from the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Method chaining can be used to programmatically remove features from the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="2" time="0.021933"/>
-        <testcase name="Method with table of contents method chain adds the table of contents feature" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Method with table of contents method chain adds the table of contents feature" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.021758"/>
-        <testcase name="Method with permalinks method chain adds the permalinks feature" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Method with permalinks method chain adds the permalinks feature" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.021109"/>
-        <testcase name="Has feature returns true if the feature is in the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Has feature returns true if the feature is in the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.026304"/>
-        <testcase name="Has feature returns false if the feature is not in the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Has feature returns false if the feature is not in the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.022323"/>
-        <testcase name="Method can enable permalinks returns true if the permalinks feature is in the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Method can enable permalinks returns true if the permalinks feature is in the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.021903"/>
-        <testcase name="Method can enable permalinks is automatically for documentation pages" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Method can enable permalinks is automatically for documentation pages" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.021703"/>
-        <testcase name="Method can enable permalinks returns false if the permalinks feature is not in the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Method can enable permalinks returns false if the permalinks feature is not in the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.021467"/>
-        <testcase name="Method can enable torchlight returns true if the torchlight feature is in the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Method can enable torchlight returns true if the torchlight feature is in the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.021541"/>
-        <testcase name="Method can enable torchlight returns false if the torchlight feature is not in the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Method can enable torchlight returns false if the torchlight feature is not in the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.021493"/>
-        <testcase name="Strip indentation method with unindented markdown" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Strip indentation method with unindented markdown" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.020992"/>
-        <testcase name="Strip indentation method with indented markdown" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Strip indentation method with indented markdown" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="3" time="0.021440"/>
-        <testcase name="Strip indentation method with tab indented markdown" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Strip indentation method with tab indented markdown" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.021702"/>
-        <testcase name="Strip indentation method with carriage return line feed" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Strip indentation method with carriage return line feed" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.021678"/>
-        <testcase name="Strip indentation method with code indentation" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Strip indentation method with code indentation" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.021763"/>
-        <testcase name="Strip indentation method with empty newlines" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Strip indentation method with empty newlines" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="2" time="0.035035"/>
-        <testcase name="Strip indentation method with trailing newline" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Strip indentation method with trailing newline" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.022081"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\MetadataHelperTest" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)" tests="9" assertions="9" errors="0" failures="0" skipped="0" time="0.237950">
-        <testcase name="Name method returns a valid html meta string" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)::Name method returns a valid html meta string" class="Hyde\Framework\Testing\Feature\MetadataHelperTest" classname="Hyde.Framework.Testing.Feature.MetadataHelperTest" assertions="1" time="0.065394"/>
-        <testcase name="Property method returns a valid html meta string" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)::Property method returns a valid html meta string" class="Hyde\Framework\Testing\Feature\MetadataHelperTest" classname="Hyde.Framework.Testing.Feature.MetadataHelperTest" assertions="1" time="0.021734"/>
-        <testcase name="Property method accepts property with og prefix" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)::Property method accepts property with og prefix" class="Hyde\Framework\Testing\Feature\MetadataHelperTest" classname="Hyde.Framework.Testing.Feature.MetadataHelperTest" assertions="1" time="0.021495"/>
-        <testcase name="Property method accepts property without og prefix" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)::Property method accepts property without og prefix" class="Hyde\Framework\Testing\Feature\MetadataHelperTest" classname="Hyde.Framework.Testing.Feature.MetadataHelperTest" assertions="1" time="0.020561"/>
-        <testcase name="Link method returns a valid html link string" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)::Link method returns a valid html link string" class="Hyde\Framework\Testing\Feature\MetadataHelperTest" classname="Hyde.Framework.Testing.Feature.MetadataHelperTest" assertions="1" time="0.021376"/>
-        <testcase name="Link method returns a valid html link string with attributes" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)::Link method returns a valid html link string with attributes" class="Hyde\Framework\Testing\Feature\MetadataHelperTest" classname="Hyde.Framework.Testing.Feature.MetadataHelperTest" assertions="1" time="0.021864"/>
-        <testcase name="Link method returns a valid html link string with multiple attributes" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)::Link method returns a valid html link string with multiple attributes" class="Hyde\Framework\Testing\Feature\MetadataHelperTest" classname="Hyde.Framework.Testing.Feature.MetadataHelperTest" assertions="1" time="0.022153"/>
-        <testcase name="Get method returns global metadata bag" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)::Get method returns global metadata bag" class="Hyde\Framework\Testing\Feature\MetadataHelperTest" classname="Hyde.Framework.Testing.Feature.MetadataHelperTest" assertions="1" time="0.022027"/>
-        <testcase name="Render method renders global metadata bag" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)::Render method renders global metadata bag" class="Hyde\Framework\Testing\Feature\MetadataHelperTest" classname="Hyde.Framework.Testing.Feature.MetadataHelperTest" assertions="1" time="0.021348"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\MetadataTest" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)" tests="48" assertions="55" errors="0" failures="0" skipped="0" time="1.163541">
-        <testcase name="Metadata object is generated automatically" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Metadata object is generated automatically" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="3" time="0.035710"/>
-        <testcase name="Link item model" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Link item model" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="3" time="0.020973"/>
-        <testcase name="Metadata item model" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Metadata item model" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="2" time="0.020653"/>
-        <testcase name="Open graph item model" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Open graph item model" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="3" time="0.021790"/>
-        <testcase name="Link item can be added" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Link item can be added" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.023456"/>
-        <testcase name="Metadata item can be added" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Metadata item can be added" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.022790"/>
-        <testcase name="Open graph item can be added" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Open graph item can be added" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.022710"/>
-        <testcase name="Generic item can be added" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Generic item can be added" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.023023"/>
-        <testcase name="Multiple items can be accessed with get method" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Multiple items can be accessed with get method" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.023157"/>
-        <testcase name="Multiple items of same key and type only keeps latest" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Multiple items of same key and type only keeps latest" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.023639"/>
-        <testcase name="Render returns html string of imploded metadata arrays" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Render returns html string of imploded metadata arrays" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024180"/>
-        <testcase name="Custom metadata overrides config defined metadata" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Custom metadata overrides config defined metadata" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024571"/>
-        <testcase name="Dynamic metadata overrides config defined metadata" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic metadata overrides config defined metadata" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024093"/>
-        <testcase name="Does not add canonical link when base url is not set" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add canonical link when base url is not set" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.023793"/>
-        <testcase name="Does not add canonical link when identifier is not set" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add canonical link when identifier is not set" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.023209"/>
-        <testcase name="Adds canonical link when base url and identifier is set" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds canonical link when base url and identifier is set" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.037290"/>
-        <testcase name="Canonical link uses clean url setting" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Canonical link uses clean url setting" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.025397"/>
-        <testcase name="Can override canonical link with front matter" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Can override canonical link with front matter" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.022024"/>
-        <testcase name="Adds twitter and open graph title when title is set" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds twitter and open graph title when title is set" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.022892"/>
-        <testcase name="Does not add twitter and open graph title when no title is set" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add twitter and open graph title when no title is set" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.023323"/>
-        <testcase name="Adds description when description is set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds description when description is set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024063"/>
-        <testcase name="Does not add description when description is not set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add description when description is not set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024125"/>
-        <testcase name="Adds author when author is set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds author when author is set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024369"/>
-        <testcase name="Does not add author when author is not set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add author when author is not set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.023600"/>
-        <testcase name="Adds keywords when category is set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds keywords when category is set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024380"/>
-        <testcase name="Does not add keywords when category is not set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add keywords when category is not set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024143"/>
-        <testcase name="Adds url property when canonical url is set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds url property when canonical url is set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.023668"/>
-        <testcase name="Does not add url property when canonical url is not set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add url property when canonical url is not set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.023775"/>
-        <testcase name="Does not add url property when canonical url is null" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add url property when canonical url is null" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.023869"/>
-        <testcase name="Adds title property when title is set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds title property when title is set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.023834"/>
-        <testcase name="Does not add title property when title is not set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add title property when title is not set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024175"/>
-        <testcase name="Adds published time property when date is set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds published time property when date is set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.023794"/>
-        <testcase name="Does not add published time property when date is not set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add published time property when date is not set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024052"/>
-        <testcase name="Adds image property when image is set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds image property when image is set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024991"/>
-        <testcase name="Does not add image property when image is not set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add image property when image is not set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.023814"/>
-        <testcase name="Adds type property automatically" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds type property automatically" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.023623"/>
-        <testcase name="Dynamic post meta properties returns base array when initialized with empty front matter" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post meta properties returns base array when initialized with empty front matter" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024030"/>
-        <testcase name="Dynamic post meta properties contains image metadata when featured image set to string" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post meta properties contains image metadata when featured image set to string" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024780"/>
-        <testcase name="Dynamic post meta properties contains image link that is always relative" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post meta properties contains image link that is always relative" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024732"/>
-        <testcase name="Dynamic post meta properties contains image link that is always relative for nested posts" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post meta properties contains image link that is always relative for nested posts" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024092"/>
-        <testcase name="Dynamic post meta properties contains image link that is always relative for nested output directories" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post meta properties contains image link that is always relative for nested output directories" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024765"/>
-        <testcase name="Dynamic post meta properties contains image link that is always relative for nested posts and nested output directories" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post meta properties contains image link that is always relative for nested posts and nested output directories" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024445"/>
-        <testcase name="Dynamic post meta properties contains image link that uses the configured media directory" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post meta properties contains image link that uses the configured media directory" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024009"/>
-        <testcase name="Dynamic post meta properties contains image metadata when featured image set to array with path" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post meta properties contains image metadata when featured image set to array with path" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024011"/>
-        <testcase name="Dynamic post meta properties contains image metadata when featured image set to array with url" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post meta properties contains image metadata when featured image set to array with url" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024302"/>
-        <testcase name="Dynamic post author returns author name when author set to array using username" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post author returns author name when author set to array using username" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.023825"/>
-        <testcase name="Dynamic post author returns author name when author set to array using name" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post author returns author name when author set to array using name" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.023436"/>
-        <testcase name="No author is set when author set to array without name or username" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::No author is set when author set to array without name or username" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024165"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\NavigationDataTest" file="Navigation Data (Hyde\Framework\Testing\Feature\NavigationData)" tests="5" assertions="8" errors="0" failures="0" skipped="0" time="0.088494">
-        <testcase name="Class matches schema" file="Navigation Data (Hyde\Framework\Testing\Feature\NavigationData)::Class matches schema" class="Hyde\Framework\Testing\Feature\NavigationDataTest" classname="Hyde.Framework.Testing.Feature.NavigationDataTest" assertions="1" time="0.080001"/>
-        <testcase name="Construct" file="Navigation Data (Hyde\Framework\Testing\Feature\NavigationData)::Construct" class="Hyde\Framework\Testing\Feature\NavigationDataTest" classname="Hyde.Framework.Testing.Feature.NavigationDataTest" assertions="4" time="0.002289"/>
-        <testcase name="Make" file="Navigation Data (Hyde\Framework\Testing\Feature\NavigationData)::Make" class="Hyde\Framework\Testing\Feature\NavigationDataTest" classname="Hyde.Framework.Testing.Feature.NavigationDataTest" assertions="1" time="0.002028"/>
-        <testcase name="To array" file="Navigation Data (Hyde\Framework\Testing\Feature\NavigationData)::To array" class="Hyde\Framework\Testing\Feature\NavigationDataTest" classname="Hyde.Framework.Testing.Feature.NavigationDataTest" assertions="1" time="0.001969"/>
-        <testcase name="Json serialize" file="Navigation Data (Hyde\Framework\Testing\Feature\NavigationData)::Json serialize" class="Hyde\Framework\Testing\Feature\NavigationDataTest" classname="Hyde.Framework.Testing.Feature.NavigationDataTest" assertions="1" time="0.002206"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\NavigationMenuTest" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)" tests="29" assertions="48" errors="0" failures="0" skipped="0" time="0.836056">
-        <testcase name="Constructor" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Constructor" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.032748"/>
-        <testcase name="Generate method creates collection of nav items" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Generate method creates collection of nav items" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.025808"/>
-        <testcase name="Get items returns items" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Get items returns items" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.026569"/>
-        <testcase name="Items are sorted by priority" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Items are sorted by priority" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.028202"/>
-        <testcase name="Items with hidden property set to true are not added" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Items with hidden property set to true are not added" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.027593"/>
-        <testcase name="Created collection is sorted by navigation menu priority" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Created collection is sorted by navigation menu priority" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.030032"/>
-        <testcase name="Is sorted automatically when using navigation menu create" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Is sorted automatically when using navigation menu create" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.029749"/>
-        <testcase name="Collection only contains nav items" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Collection only contains nav items" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.026255"/>
-        <testcase name="External link can be added in config" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::External link can be added in config" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.026543"/>
-        <testcase name="Path link can be added in config" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Path link can be added in config" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.026833"/>
-        <testcase name="Duplicates are removed when adding in config" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Duplicates are removed when adding in config" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.026889"/>
-        <testcase name="Duplicates are removed when adding in config regardless of destination" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Duplicates are removed when adding in config regardless of destination" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.026606"/>
-        <testcase name="Config items take precedence over generated items" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Config items take precedence over generated items" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.028125"/>
-        <testcase name="Documentation pages that are not index are not added to the menu" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Documentation pages that are not index are not added to the menu" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.029795"/>
-        <testcase name="Pages in subdirectories are not added to the navigation menu" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Pages in subdirectories are not added to the navigation menu" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.027930"/>
-        <testcase name="Pages in subdirectories can be added to the navigation menu with config flat setting" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Pages in subdirectories can be added to the navigation menu with config flat setting" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.028782"/>
-        <testcase name="Pages in subdirectories are not added to the navigation menu with config dropdown setting" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Pages in subdirectories are not added to the navigation menu with config dropdown setting" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.029985"/>
-        <testcase name="Has dropdowns returns false when there are no dropdowns" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Has dropdowns returns false when there are no dropdowns" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.026739"/>
-        <testcase name="Has dropdowns returns true when there are dropdowns" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Has dropdowns returns true when there are dropdowns" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.027316"/>
-        <testcase name="Has dropdowns always returns false when dropdowns are disabled" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Has dropdowns always returns false when dropdowns are disabled" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.027471"/>
-        <testcase name="Get dropdowns returns empty array there are no dropdowns" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Get dropdowns returns empty array there are no dropdowns" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.027231"/>
-        <testcase name="Get dropdowns returns correct array when there are dropdowns" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Get dropdowns returns correct array when there are dropdowns" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.029022"/>
-        <testcase name="Get dropdowns with multiple items" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Get dropdowns with multiple items" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.030531"/>
-        <testcase name="Get dropdowns with multiple dropdowns" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Get dropdowns with multiple dropdowns" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.032145"/>
-        <testcase name="Get dropdowns throws exception when disabled" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Get dropdowns throws exception when disabled" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.040690"/>
-        <testcase name="Documentation pages do not get added to dropdowns" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Documentation pages do not get added to dropdowns" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.028429"/>
-        <testcase name="Blog posts do not get added to dropdowns" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Blog posts do not get added to dropdowns" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.028865"/>
-        <testcase name="Pages in dropdowns do not get added to the main navigation" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Pages in dropdowns do not get added to the main navigation" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.030157"/>
-        <testcase name="Dropdown menu items are sorted by priority" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Dropdown menu items are sorted by priority" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.029013"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\PageCollectionTest" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)" tests="12" assertions="38" errors="0" failures="0" skipped="0" time="0.421880">
-        <testcase name="Boot method creates new page collection and discovers pages automatically" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Boot method creates new page collection and discovers pages automatically" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="3" time="0.070220"/>
-        <testcase name="Blade pages are discovered" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Blade pages are discovered" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="2" time="0.030013"/>
-        <testcase name="Markdown pages are discovered" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Markdown pages are discovered" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="2" time="0.031141"/>
-        <testcase name="Markdown posts are discovered" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Markdown posts are discovered" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="2" time="0.033407"/>
-        <testcase name="Documentation pages are discovered" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Documentation pages are discovered" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="2" time="0.036804"/>
-        <testcase name="Get page returns parsed page object for given source path" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Get page returns parsed page object for given source path" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="1" time="0.028002"/>
-        <testcase name="Get pages returns collection of pages of given class" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Get pages returns collection of pages of given class" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="11" time="0.043392"/>
-        <testcase name="Get pages returns all pages when not supplied with class string" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Get pages returns all pages when not supplied with class string" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="6" time="0.039056"/>
-        <testcase name="Get pages returns empty collection when no pages are discovered" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Get pages returns empty collection when no pages are discovered" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="1" time="0.023807"/>
-        <testcase name="Pages are not discovered for disabled features" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Pages are not discovered for disabled features" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="1" time="0.022830"/>
-        <testcase name="Pages with custom source directories are discovered properly" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Pages with custom source directories are discovered properly" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="5" time="0.037142"/>
-        <testcase name="Get file throws exception when file is not found" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Get file throws exception when file is not found" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="2" time="0.026066"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\PageModelConstructorsTest" file="Page Model Constructors (Hyde\Framework\Testing\Feature\PageModelConstructors)" tests="5" assertions="5" errors="0" failures="0" skipped="0" time="0.133715">
-        <testcase name="Dynamic data constructor can find title from front matter" file="Page Model Constructors (Hyde\Framework\Testing\Feature\PageModelConstructors)::Dynamic data constructor can find title from front matter" class="Hyde\Framework\Testing\Feature\PageModelConstructorsTest" classname="Hyde.Framework.Testing.Feature.PageModelConstructorsTest" assertions="1" time="0.040336"/>
-        <testcase name="Dynamic data constructor can find title from h 1 tag" file="Page Model Constructors (Hyde\Framework\Testing\Feature\PageModelConstructors)::Dynamic data constructor can find title from h 1 tag" class="Hyde\Framework\Testing\Feature\PageModelConstructorsTest" classname="Hyde.Framework.Testing.Feature.PageModelConstructorsTest" assertions="1" time="0.024070"/>
-        <testcase name="Dynamic data constructor can find title from slug" file="Page Model Constructors (Hyde\Framework\Testing\Feature\PageModelConstructors)::Dynamic data constructor can find title from slug" class="Hyde\Framework\Testing\Feature\PageModelConstructorsTest" classname="Hyde.Framework.Testing.Feature.PageModelConstructorsTest" assertions="1" time="0.023210"/>
-        <testcase name="Documentation page parser can get group from front matter" file="Page Model Constructors (Hyde\Framework\Testing\Feature\PageModelConstructors)::Documentation page parser can get group from front matter" class="Hyde\Framework\Testing\Feature\PageModelConstructorsTest" classname="Hyde.Framework.Testing.Feature.PageModelConstructorsTest" assertions="1" time="0.022867"/>
-        <testcase name="Documentation page parser can get group automatically from nested page" file="Page Model Constructors (Hyde\Framework\Testing\Feature\PageModelConstructors)::Documentation page parser can get group automatically from nested page" class="Hyde\Framework\Testing\Feature\PageModelConstructorsTest" classname="Hyde.Framework.Testing.Feature.PageModelConstructorsTest" assertions="1" time="0.023231"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\PaginatorTest" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)" tests="32" assertions="60" errors="0" failures="0" skipped="0" time="0.750329">
-        <testcase name="It can be instantiated" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::It can be instantiated" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.054147"/>
-        <testcase name="Get paginated page collection" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Get paginated page collection" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020768"/>
-        <testcase name="Get paginated page collection with pages" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Get paginated page collection with pages" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="4" time="0.021138"/>
-        <testcase name="Collection is chunked by specified setting value" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Collection is chunked by specified setting value" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="3" time="0.020623"/>
-        <testcase name="Get items for page returns the correct chunk" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Get items for page returns the correct chunk" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="10" time="0.023005"/>
-        <testcase name="Can get current page number" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Can get current page number" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020565"/>
-        <testcase name="Can set current page number" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Can set current page number" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.022257"/>
-        <testcase name="Set current page number requires integer to be greater than nought" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Set current page number requires integer to be greater than nought" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.023061"/>
-        <testcase name="Set current page number requires integer to be greater than nought" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Set current page number requires integer to be greater than nought" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.022441"/>
-        <testcase name="Set current page number requires integer to be less than total pages" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Set current page number requires integer to be less than total pages" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="2" time="0.022600"/>
-        <testcase name="Cannot set invalid current page number in constructor" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Cannot set invalid current page number in constructor" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.021464"/>
-        <testcase name="Last page returns the last page number" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Last page returns the last page number" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020826"/>
-        <testcase name="Total pages returns the total number of pages" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Total pages returns the total number of pages" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.021278"/>
-        <testcase name="Per page returns the number of items to be shown per page" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Per page returns the number of items to be shown per page" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020672"/>
-        <testcase name="Has multiple pages returns true if there are enough items to split into multiple pages" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Has multiple pages returns true if there are enough items to split into multiple pages" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020394"/>
-        <testcase name="Has pages returns false if there are not enough items to split into multiple pages" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Has pages returns false if there are not enough items to split into multiple pages" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020484"/>
-        <testcase name="Has more pages returns true if cursor can navigate forward" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Has more pages returns true if cursor can navigate forward" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020790"/>
-        <testcase name="Has more pages returns false if cursor cannot navigate forward" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Has more pages returns false if cursor cannot navigate forward" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020502"/>
-        <testcase name="Has fewer pages returns true if cursor can navigate back" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Has fewer pages returns true if cursor can navigate back" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.021318"/>
-        <testcase name="Has fewer pages returns false if cursor cannot navigate back" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Has fewer pages returns false if cursor cannot navigate back" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020908"/>
-        <testcase name="Previous method without fewer pages returns false" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Previous method without fewer pages returns false" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020603"/>
-        <testcase name="Next method without more pages returns false" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Next method without more pages returns false" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020478"/>
-        <testcase name="Previous method returns previous page link when no base route is set" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Previous method returns previous page link when no base route is set" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020696"/>
-        <testcase name="Next method returns next page link when no base route is set" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Next method returns next page link when no base route is set" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.021305"/>
-        <testcase name="Previous and next methods with base route set" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Previous and next methods with base route set" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="6" time="0.035302"/>
-        <testcase name="Previous number without fewer pages returns false" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Previous number without fewer pages returns false" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.035795"/>
-        <testcase name="Next number without more pages returns false" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Next number without more pages returns false" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.021066"/>
-        <testcase name="Previous number returns the previous page number when there is one" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Previous number returns the previous page number when there is one" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020557"/>
-        <testcase name="Next number returns the next page number when there is one" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Next number returns the next page number when there is one" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020448"/>
-        <testcase name="Get page links" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Get page links" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.021614"/>
-        <testcase name="Get page links with base route" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Get page links with base route" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.031818"/>
-        <testcase name="First item number on page" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::First item number on page" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="9" time="0.021404"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\PharSupportTest" file="Phar Support (Hyde\Framework\Testing\Feature\PharSupport)" tests="6" assertions="8" errors="0" failures="0" skipped="0" time="0.163619">
-        <testcase name="Active" file="Phar Support (Hyde\Framework\Testing\Feature\PharSupport)::Active" class="Hyde\Framework\Testing\Feature\PharSupportTest" classname="Hyde.Framework.Testing.Feature.PharSupportTest" assertions="1" time="0.062812"/>
-        <testcase name="Mock active" file="Phar Support (Hyde\Framework\Testing\Feature\PharSupport)::Mock active" class="Hyde\Framework\Testing\Feature\PharSupportTest" classname="Hyde.Framework.Testing.Feature.PharSupportTest" assertions="2" time="0.020124"/>
-        <testcase name="Has vendor directory" file="Phar Support (Hyde\Framework\Testing\Feature\PharSupport)::Has vendor directory" class="Hyde\Framework\Testing\Feature\PharSupportTest" classname="Hyde.Framework.Testing.Feature.PharSupportTest" assertions="1" time="0.019921"/>
-        <testcase name="Mock has vendor directory" file="Phar Support (Hyde\Framework\Testing\Feature\PharSupport)::Mock has vendor directory" class="Hyde\Framework\Testing\Feature\PharSupportTest" classname="Hyde.Framework.Testing.Feature.PharSupportTest" assertions="2" time="0.020228"/>
-        <testcase name="Vendor path can run in phar" file="Phar Support (Hyde\Framework\Testing\Feature\PharSupport)::Vendor path can run in phar" class="Hyde\Framework\Testing\Feature\PharSupportTest" classname="Hyde.Framework.Testing.Feature.PharSupportTest" assertions="1" time="0.020062"/>
-        <testcase name="Vendor path can run in phar with path argument" file="Phar Support (Hyde\Framework\Testing\Feature\PharSupport)::Vendor path can run in phar with path argument" class="Hyde\Framework\Testing\Feature\PharSupportTest" classname="Hyde.Framework.Testing.Feature.PharSupportTest" assertions="1" time="0.020471"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\PostsAuthorIntegrationTest" file="Posts Author Integration (Hyde\Framework\Testing\Feature\PostsAuthorIntegration)" tests="3" assertions="15" errors="0" failures="0" skipped="0" time="0.138253">
-        <testcase name="Create post with undefined author" file="Posts Author Integration (Hyde\Framework\Testing\Feature\PostsAuthorIntegration)::Create post with undefined author" class="Hyde\Framework\Testing\Feature\PostsAuthorIntegrationTest" classname="Hyde.Framework.Testing.Feature.PostsAuthorIntegrationTest" assertions="4" time="0.051367"/>
-        <testcase name="Create post with defined author with name" file="Posts Author Integration (Hyde\Framework\Testing\Feature\PostsAuthorIntegration)::Create post with defined author with name" class="Hyde\Framework\Testing\Feature\PostsAuthorIntegrationTest" classname="Hyde.Framework.Testing.Feature.PostsAuthorIntegrationTest" assertions="5" time="0.042763"/>
-        <testcase name="Create post with defined author with website" file="Posts Author Integration (Hyde\Framework\Testing\Feature\PostsAuthorIntegration)::Create post with defined author with website" class="Hyde\Framework\Testing\Feature\PostsAuthorIntegrationTest" classname="Hyde.Framework.Testing.Feature.PostsAuthorIntegrationTest" assertions="6" time="0.044123"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\ReadingTimeTest" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)" tests="12" assertions="38" errors="0" failures="0" skipped="0" time="0.044065">
-        <testcase name="Construct" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::Construct" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="1" time="0.018805"/>
-        <testcase name="To string" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::To string" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="1" time="0.002166"/>
-        <testcase name="Get word count" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::Get word count" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="4" time="0.002304"/>
-        <testcase name="Get minutes" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::Get minutes" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="4" time="0.002210"/>
-        <testcase name="Get seconds" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::Get seconds" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="4" time="0.002182"/>
-        <testcase name="Get seconds over" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::Get seconds over" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="4" time="0.002218"/>
-        <testcase name="Get formatted" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::Get formatted" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="4" time="0.002220"/>
-        <testcase name="Get formatted with custom formatting" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::Get formatted with custom formatting" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="4" time="0.002240"/>
-        <testcase name="Get formatted formats up to one minute when round up is set" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::Get formatted formats up to one minute when round up is set" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="4" time="0.002240"/>
-        <testcase name="Format using closure" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::Format using closure" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="4" time="0.002221"/>
-        <testcase name="From string" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::From string" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="2" time="0.002101"/>
-        <testcase name="From file" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::From file" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="2" time="0.003159"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\RedirectTest" file="Redirect (Hyde\Framework\Testing\Feature\Redirect)" tests="4" assertions="12" errors="0" failures="0" skipped="0" time="0.123186">
-        <testcase name="Can create a redirect" file="Redirect (Hyde\Framework\Testing\Feature\Redirect)::Can create a redirect" class="Hyde\Framework\Testing\Feature\RedirectTest" classname="Hyde.Framework.Testing.Feature.RedirectTest" assertions="7" time="0.046482"/>
-        <testcase name="Path parameter is normalized" file="Redirect (Hyde\Framework\Testing\Feature\Redirect)::Path parameter is normalized" class="Hyde\Framework\Testing\Feature\RedirectTest" classname="Hyde.Framework.Testing.Feature.RedirectTest" assertions="1" time="0.023689"/>
-        <testcase name="Text can be disabled" file="Redirect (Hyde\Framework\Testing\Feature\Redirect)::Text can be disabled" class="Hyde\Framework\Testing\Feature\RedirectTest" classname="Hyde.Framework.Testing.Feature.RedirectTest" assertions="2" time="0.025058"/>
-        <testcase name="Redirect pages can be compilable by static site though manual discovery" file="Redirect (Hyde\Framework\Testing\Feature\Redirect)::Redirect pages can be compilable by static site though manual discovery" class="Hyde\Framework\Testing\Feature\RedirectTest" classname="Hyde.Framework.Testing.Feature.RedirectTest" assertions="2" time="0.027957"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\RenderHelperTest" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)" tests="14" assertions="36" errors="0" failures="0" skipped="0" time="0.353657">
-        <testcase name="Set and get page" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Set and get page" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.033040"/>
-        <testcase name="Set page shares data to view automatically" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Set page shares data to view automatically" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.025783"/>
-        <testcase name="Get route" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Get route" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.025344"/>
-        <testcase name="Get route key" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Get route key" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.024965"/>
-        <testcase name="Share to view" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Share to view" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="6" time="0.026151"/>
-        <testcase name="Share" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Share" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.021158"/>
-        <testcase name="Share invalid property" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Share invalid property" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.020834"/>
-        <testcase name="Share cascades data to view" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Share cascades data to view" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.021778"/>
-        <testcase name="Clear data" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Clear data" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.026571"/>
-        <testcase name="Clear data on facade" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Clear data on facade" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.025994"/>
-        <testcase name="Clear data cascades to clear its view data" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Clear data cascades to clear its view data" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="6" time="0.028722"/>
-        <testcase name="Clear data does not clear other view data" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Clear data does not clear other view data" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.022571"/>
-        <testcase name="Clear data does not clear render instance from view data" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Clear data does not clear render instance from view data" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.022995"/>
-        <testcase name="To array" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::To array" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.027750"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\RouteCollectionTest" file="Route Collection (Hyde\Framework\Testing\Feature\RouteCollection)" tests="7" assertions="19" errors="0" failures="0" skipped="0" time="0.244329">
-        <testcase name="Boot method discovers all pages" file="Route Collection (Hyde\Framework\Testing\Feature\RouteCollection)::Boot method discovers all pages" class="Hyde\Framework\Testing\Feature\RouteCollectionTest" classname="Hyde.Framework.Testing.Feature.RouteCollectionTest" assertions="3" time="0.046689"/>
-        <testcase name="Boot method discovers all page types" file="Route Collection (Hyde\Framework\Testing\Feature\RouteCollection)::Boot method discovers all page types" class="Hyde\Framework\Testing\Feature\RouteCollectionTest" classname="Hyde.Framework.Testing.Feature.RouteCollectionTest" assertions="3" time="0.037299"/>
-        <testcase name="Get routes returns all routes" file="Route Collection (Hyde\Framework\Testing\Feature\RouteCollection)::Get routes returns all routes" class="Hyde\Framework\Testing\Feature\RouteCollectionTest" classname="Hyde.Framework.Testing.Feature.RouteCollectionTest" assertions="1" time="0.031503"/>
-        <testcase name="Get routes for model returns collection of routes of given class" file="Route Collection (Hyde\Framework\Testing\Feature\RouteCollection)::Get routes for model returns collection of routes of given class" class="Hyde\Framework\Testing\Feature\RouteCollectionTest" classname="Hyde.Framework.Testing.Feature.RouteCollectionTest" assertions="6" time="0.049890"/>
-        <testcase name="Add route adds new route" file="Route Collection (Hyde\Framework\Testing\Feature\RouteCollection)::Add route adds new route" class="Hyde\Framework\Testing\Feature\RouteCollectionTest" classname="Hyde.Framework.Testing.Feature.RouteCollectionTest" assertions="3" time="0.027010"/>
-        <testcase name="Get route" file="Route Collection (Hyde\Framework\Testing\Feature\RouteCollection)::Get route" class="Hyde\Framework\Testing\Feature\RouteCollectionTest" classname="Hyde.Framework.Testing.Feature.RouteCollectionTest" assertions="1" time="0.026401"/>
-        <testcase name="Get route with non existing route" file="Route Collection (Hyde\Framework\Testing\Feature\RouteCollection)::Get route with non existing route" class="Hyde\Framework\Testing\Feature\RouteCollectionTest" classname="Hyde.Framework.Testing.Feature.RouteCollectionTest" assertions="2" time="0.025538"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\RouteListTest" file="Route List (Hyde\Framework\Testing\Feature\RouteList)" tests="3" assertions="3" errors="0" failures="0" skipped="0" time="0.084520">
-        <testcase name="Route list" file="Route List (Hyde\Framework\Testing\Feature\RouteList)::Route list" class="Hyde\Framework\Testing\Feature\RouteListTest" classname="Hyde.Framework.Testing.Feature.RouteListTest" assertions="1" time="0.034575"/>
-        <testcase name="Headers" file="Route List (Hyde\Framework\Testing\Feature\RouteList)::Headers" class="Hyde\Framework\Testing\Feature\RouteListTest" classname="Hyde.Framework.Testing.Feature.RouteListTest" assertions="1" time="0.024531"/>
-        <testcase name="With dynamic pages" file="Route List (Hyde\Framework\Testing\Feature\RouteList)::With dynamic pages" class="Hyde\Framework\Testing\Feature\RouteListTest" classname="Hyde.Framework.Testing.Feature.RouteListTest" assertions="1" time="0.025413"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)" tests="9" assertions="9" errors="0" failures="0" skipped="0" time="0.201989">
-        <testcase name="It renders blade echo syntax" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)::It renders blade echo syntax" class="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.BladeDownProcessorTest" assertions="1" time="0.026515"/>
-        <testcase name="It renders blade within multiline markdown" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)::It renders blade within multiline markdown" class="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.BladeDownProcessorTest" assertions="1" time="0.021461"/>
-        <testcase name="It renders blade views" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)::It renders blade views" class="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.BladeDownProcessorTest" assertions="1" time="0.021948"/>
-        <testcase name="Directive is case insensitive" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)::Directive is case insensitive" class="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.BladeDownProcessorTest" assertions="1" time="0.021992"/>
-        <testcase name="Directive is ignored if it is not at the start of a line" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)::Directive is ignored if it is not at the start of a line" class="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.BladeDownProcessorTest" assertions="1" time="0.020607"/>
-        <testcase name="It renders blade echo syntax with variables" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)::It renders blade echo syntax with variables" class="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.BladeDownProcessorTest" assertions="1" time="0.022539"/>
-        <testcase name="It renders blade views with variables" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)::It renders blade views with variables" class="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.BladeDownProcessorTest" assertions="1" time="0.023249"/>
-        <testcase name="Preprocess method expands shortcode" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)::Preprocess method expands shortcode" class="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.BladeDownProcessorTest" assertions="1" time="0.021046"/>
-        <testcase name="Process method renders shortcode" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)::Process method renders shortcode" class="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.BladeDownProcessorTest" assertions="1" time="0.022633"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Services\BuildTaskServiceTest" file="Build Task Service (Hyde\Framework\Testing\Feature\Services\BuildTaskService)" tests="8" assertions="11" errors="0" failures="0" skipped="0" time="0.248985">
-        <testcase name="Build command can run build tasks" file="Build Task Service (Hyde\Framework\Testing\Feature\Services\BuildTaskService)::Build command can run build tasks" class="Hyde\Framework\Testing\Feature\Services\BuildTaskServiceTest" classname="Hyde.Framework.Testing.Feature.Services.BuildTaskServiceTest" assertions="4" time="0.055468"/>
-        <testcase name="Run post build tasks runs configured tasks does nothing if no tasks are configured" file="Build Task Service (Hyde\Framework\Testing\Feature\Services\BuildTaskService)::Run post build tasks runs configured tasks does nothing if no tasks are configured" class="Hyde\Framework\Testing\Feature\Services\BuildTaskServiceTest" classname="Hyde.Framework.Testing.Feature.Services.BuildTaskServiceTest" assertions="1" time="0.028119"/>
-        <testcase name="Get post build tasks returns array merged with config" file="Build Task Service (Hyde\Framework\Testing\Feature\Services\BuildTaskService)::Get post build tasks returns array merged with config" class="Hyde\Framework\Testing\Feature\Services\BuildTaskServiceTest" classname="Hyde.Framework.Testing.Feature.Services.BuildTaskServiceTest" assertions="1" time="0.026317"/>
-        <testcase name="Get post build tasks merges duplicate keys" file="Build Task Service (Hyde\Framework\Testing\Feature\Services\BuildTaskService)::Get post build tasks merges duplicate keys" class="Hyde\Framework\Testing\Feature\Services\BuildTaskServiceTest" classname="Hyde.Framework.Testing.Feature.Services.BuildTaskServiceTest" assertions="1" time="0.026122"/>
-        <testcase name="Run post build tasks runs configured tasks" file="Build Task Service (Hyde\Framework\Testing\Feature\Services\BuildTaskService)::Run post build tasks runs configured tasks" class="Hyde\Framework\Testing\Feature\Services\BuildTaskServiceTest" classname="Hyde.Framework.Testing.Feature.Services.BuildTaskServiceTest" assertions="1" time="0.027097"/>
-        <testcase name="Exception handler shows error message and exits with code 1 without throwing exception" file="Build Task Service (Hyde\Framework\Testing\Feature\Services\BuildTaskService)::Exception handler shows error message and exits with code 1 without throwing exception" class="Hyde\Framework\Testing\Feature\Services\BuildTaskServiceTest" classname="Hyde.Framework.Testing.Feature.Services.BuildTaskServiceTest" assertions="1" time="0.021232"/>
-        <testcase name="Find tasks in app directory method discovers tasks in app directory" file="Build Task Service (Hyde\Framework\Testing\Feature\Services\BuildTaskService)::Find tasks in app directory method discovers tasks in app directory" class="Hyde\Framework\Testing\Feature\Services\BuildTaskServiceTest" classname="Hyde.Framework.Testing.Feature.Services.BuildTaskServiceTest" assertions="1" time="0.028364"/>
-        <testcase name="Automatically discovered tasks can be executed" file="Build Task Service (Hyde\Framework\Testing\Feature\Services\BuildTaskService)::Automatically discovered tasks can be executed" class="Hyde\Framework\Testing\Feature\Services\BuildTaskServiceTest" classname="Hyde.Framework.Testing.Feature.Services.BuildTaskServiceTest" assertions="1" time="0.036267"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)" tests="10" assertions="10" errors="0" failures="0" skipped="0" time="0.100361">
-        <testcase name="It generates a json file with a search index" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::It generates a json file with a search index" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.020586"/>
-        <testcase name="It adds all files to search index" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::It adds all files to search index" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.010932"/>
-        <testcase name="It handles generation even when there are no pages" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::It handles generation even when there are no pages" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.006929"/>
-        <testcase name="Save method saves the file to the correct location" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::Save method saves the file to the correct location" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.006757"/>
-        <testcase name="It generates a valid j s o n" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::It generates a valid j s o n" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.009548"/>
-        <testcase name="It strips markdown" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::It strips markdown" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.011020"/>
-        <testcase name="Get destination for slug returns empty string for index when pretty url is enabled" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::Get destination for slug returns empty string for index when pretty url is enabled" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.008589"/>
-        <testcase name="Get destination for slug returns pretty url when enabled" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::Get destination for slug returns pretty url when enabled" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.008536"/>
-        <testcase name="Excluded pages are not present in the search index" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::Excluded pages are not present in the search index" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.008464"/>
-        <testcase name="Nested source files do not retain directory name in search index" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::Nested source files do not retain directory name in search index" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.008999"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)" tests="36" assertions="51" errors="0" failures="0" skipped="0" time="1.109649">
-        <testcase name="Sidebar can be created" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Sidebar can be created" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.040518"/>
-        <testcase name="Sidebar items are added automatically" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Sidebar items are added automatically" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.033696"/>
-        <testcase name="Index page is removed from sidebar" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Index page is removed from sidebar" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.034353"/>
-        <testcase name="Files with front matter hidden set to true are removed from sidebar" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Files with front matter hidden set to true are removed from sidebar" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.033968"/>
-        <testcase name="Sidebar is ordered alphabetically when no order is set in config" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Sidebar is ordered alphabetically when no order is set in config" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.032048"/>
-        <testcase name="Sidebar is ordered by priority when priority is set in config" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Sidebar is ordered by priority when priority is set in config" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.031738"/>
-        <testcase name="Sidebar item priority can be set in front matter" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Sidebar item priority can be set in front matter" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.028138"/>
-        <testcase name="Sidebar item priority set in config overrides front matter" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Sidebar item priority set in config overrides front matter" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.027227"/>
-        <testcase name="Sidebar priorities can be set in both front matter and config" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Sidebar priorities can be set in both front matter and config" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.031565"/>
-        <testcase name="Group can be set in front matter" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Group can be set in front matter" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.028689"/>
-        <testcase name="Has groups returns false when there are no groups" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Has groups returns false when there are no groups" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.026650"/>
-        <testcase name="Has groups returns true when there are groups" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Has groups returns true when there are groups" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.028157"/>
-        <testcase name="Has groups returns true when there are multiple groups" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Has groups returns true when there are multiple groups" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.029569"/>
-        <testcase name="Has groups returns true when there are multiple groups mixed with defaults" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Has groups returns true when there are multiple groups mixed with defaults" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.030399"/>
-        <testcase name="Get groups returns empty array when there are no groups" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Get groups returns empty array when there are no groups" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.026541"/>
-        <testcase name="Get groups returns array of groups when there are groups" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Get groups returns array of groups when there are groups" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.027771"/>
-        <testcase name="Get groups returns array with no duplicates" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Get groups returns array with no duplicates" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.031270"/>
-        <testcase name="Groups are sorted by lowest found priority in each group" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Groups are sorted by lowest found priority in each group" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.030847"/>
-        <testcase name="Get items in group returns empty collection when there are no items" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Get items in group returns empty collection when there are no items" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.026395"/>
-        <testcase name="Get items in group returns collection of items in group" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Get items in group returns collection of items in group" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="2" time="0.032254"/>
-        <testcase name="Get items in group normalizes group name to slug format" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Get items in group normalizes group name to slug format" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.032253"/>
-        <testcase name="Get items in group does not include items with hidden front matter" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Get items in group does not include items with hidden front matter" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.030791"/>
-        <testcase name="Get items in group does not include docs index" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Get items in group does not include docs index" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.029937"/>
-        <testcase name="Is group active returns false when supplied group is not active" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Is group active returns false when supplied group is not active" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.027691"/>
-        <testcase name="Is group active returns true when supplied group is active" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Is group active returns true when supplied group is active" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.027230"/>
-        <testcase name="Is group active returns true for differing casing" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Is group active returns true for differing casing" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.027433"/>
-        <testcase name="Is group active returns true first group of index page" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Is group active returns true first group of index page" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="3" time="0.034650"/>
-        <testcase name="Is group active returns true first sorted group of index page" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Is group active returns true first sorted group of index page" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="3" time="0.048315"/>
-        <testcase name="Automatic index page group expansion respects custom navigation menu settings" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Automatic index page group expansion respects custom navigation menu settings" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="3" time="0.039344"/>
-        <testcase name="Make group title turns group key into title" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Make group title turns group key into title" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="4" time="0.026562"/>
-        <testcase name="Make group title uses configured sidebar group labels when available" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Make group title uses configured sidebar group labels when available" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="2" time="0.025639"/>
-        <testcase name="Can have multiple grouped pages with the same name labels" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Can have multiple grouped pages with the same name labels" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="2" time="0.029919"/>
-        <testcase name="Duplicate labels within the same group is removed" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Duplicate labels within the same group is removed" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="2" time="0.030649"/>
-        <testcase name="Is group active for index page with no groups" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Is group active for index page with no groups" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.029050"/>
-        <testcase name="Index page added to sidebar when it is the only page" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Index page added to sidebar when it is the only page" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="2" time="0.028804"/>
-        <testcase name="Index page not added to sidebar when other pages exist" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Index page not added to sidebar when other pages exist" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="2" time="0.029591"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)" tests="18" assertions="30" errors="0" failures="0" skipped="0" time="0.567586">
-        <testcase name="Class tokenizes document" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Class tokenizes document" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="2" time="0.077092"/>
-        <testcase name="Class can handle document with no header" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Class can handle document with no header" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="2" time="0.025964"/>
-        <testcase name="Class can handle document with only header" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Class can handle document with only header" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="2" time="0.024892"/>
-        <testcase name="Class can handle empty document" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Class can handle empty document" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="2" time="0.025091"/>
-        <testcase name="Create helper creates new instance and processes it" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Create helper creates new instance and processes it" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="2" time="0.025991"/>
-        <testcase name="Render header returns the extracted header" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Render header returns the extracted header" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="1" time="0.025959"/>
-        <testcase name="Render header returns the extracted header with varying newlines" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Render header returns the extracted header with varying newlines" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="3" time="0.033275"/>
-        <testcase name="Render body returns the extracted body" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Render body returns the extracted body" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="1" time="0.027753"/>
-        <testcase name="Render body returns the extracted body with varying newlines" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Render body returns the extracted body with varying newlines" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="3" time="0.047188"/>
-        <testcase name="Render footer is empty by default" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Render footer is empty by default" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="1" time="0.027346"/>
-        <testcase name="Add dynamic header content adds source link when conditions are met" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Add dynamic header content adds source link when conditions are met" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="1" time="0.028225"/>
-        <testcase name="Edit source link is added to footer when conditions are met" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Edit source link is added to footer when conditions are met" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="1" time="0.028349"/>
-        <testcase name="Edit source link can be added to both header and footer" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Edit source link can be added to both header and footer" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="2" time="0.028532"/>
-        <testcase name="Edit source link text can be customized in header" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Edit source link text can be customized in header" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="1" time="0.028371"/>
-        <testcase name="Edit source link text can be customized in footer" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Edit source link text can be customized in footer" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="1" time="0.028117"/>
-        <testcase name="Add dynamic footer content adds torchlight attribution when conditions are met" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Add dynamic footer content adds torchlight attribution when conditions are met" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="1" time="0.029303"/>
-        <testcase name="The documentation article view" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::The documentation article view" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="2" time="0.028229"/>
-        <testcase name="The documentation article view with existing variable" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::The documentation article view with existing variable" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="2" time="0.027910"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)" tests="11" assertions="26" errors="0" failures="0" skipped="0" time="0.280448">
-        <testcase name="Preprocess expands filepath" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Preprocess expands filepath" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="1" time="0.045395"/>
-        <testcase name="Preprocess accepts multiple filepath formats" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Preprocess accepts multiple filepath formats" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="8" time="0.021555"/>
-        <testcase name="Filepath pattern is case insensitive" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Filepath pattern is case insensitive" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="4" time="0.021244"/>
-        <testcase name="Preprocess accepts multiple languages" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Preprocess accepts multiple languages" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="6" time="0.020884"/>
-        <testcase name="Preprocess accepts multiple input blocks" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Preprocess accepts multiple input blocks" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="1" time="0.021495"/>
-        <testcase name="Preprocess accepts multi line codeblocks" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Preprocess accepts multi line codeblocks" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="1" time="0.021348"/>
-        <testcase name="Space after filepath is optional" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Space after filepath is optional" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="1" time="0.027555"/>
-        <testcase name="Processor expands filepath directive in standard codeblock" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Processor expands filepath directive in standard codeblock" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="1" time="0.021677"/>
-        <testcase name="Processor expands filepath directive in torchlight codeblock" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Processor expands filepath directive in torchlight codeblock" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="1" time="0.035795"/>
-        <testcase name="Processor escapes html by default" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Processor escapes html by default" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="1" time="0.021766"/>
-        <testcase name="Processor does not escape html if configured" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Processor does not escape html if configured" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="1" time="0.021735"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessorTest" file="Shortcode Processor (Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessor)" tests="6" assertions="9" errors="0" failures="0" skipped="0" time="0.030177">
-        <testcase name="Constructor discovers default shortcodes" file="Shortcode Processor (Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessor)::Constructor discovers default shortcodes" class="Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.ShortcodeProcessorTest" assertions="2" time="0.017935"/>
-        <testcase name="Discovered shortcodes are used to process input" file="Shortcode Processor (Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessor)::Discovered shortcodes are used to process input" class="Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.ShortcodeProcessorTest" assertions="1" time="0.003093"/>
-        <testcase name="String without shortcode is not modified" file="Shortcode Processor (Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessor)::String without shortcode is not modified" class="Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.ShortcodeProcessorTest" assertions="1" time="0.001945"/>
-        <testcase name="Process static shorthand" file="Shortcode Processor (Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessor)::Process static shorthand" class="Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.ShortcodeProcessorTest" assertions="1" time="0.002979"/>
-        <testcase name="Shortcodes can be added to processor" file="Shortcode Processor (Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessor)::Shortcodes can be added to processor" class="Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.ShortcodeProcessorTest" assertions="2" time="0.002100"/>
-        <testcase name="Shortcodes can be added to processor using array" file="Shortcode Processor (Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessor)::Shortcodes can be added to processor using array" class="Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.ShortcodeProcessorTest" assertions="2" time="0.002124"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)" tests="12" assertions="35" errors="0" failures="0" skipped="0" time="0.283505">
-        <testcase name="Service instantiates xml element" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Service instantiates xml element" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="1" time="0.027918"/>
-        <testcase name="Xml root element is set to rss 20" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Xml root element is set to rss 20" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="2" time="0.021710"/>
-        <testcase name="Xml element has channel element" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Xml element has channel element" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="1" time="0.021417"/>
-        <testcase name="Xml channel element has required elements" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Xml channel element has required elements" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="6" time="0.022379"/>
-        <testcase name="Xml channel element has additional elements" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Xml channel element has additional elements" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="6" time="0.022078"/>
-        <testcase name="Xml channel data can be customized" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Xml channel data can be customized" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="3" time="0.021958"/>
-        <testcase name="Markdown blog posts are added to rss feed through autodiscovery" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Markdown blog posts are added to rss feed through autodiscovery" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="11" time="0.029881"/>
-        <testcase name="Get xml method returns xml string" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Get xml method returns xml string" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="1" time="0.021790"/>
-        <testcase name="Generate feed helper returns xml string" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Generate feed helper returns xml string" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="1" time="0.025461"/>
-        <testcase name="Can generate feed helper returns true if hyde has base url" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Can generate feed helper returns true if hyde has base url" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="1" time="0.027233"/>
-        <testcase name="Can generate feed helper returns false if hyde does not have base url" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Can generate feed helper returns false if hyde does not have base url" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="1" time="0.021277"/>
-        <testcase name="Can generate feed helper returns false if feeds are disabled in config" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Can generate feed helper returns false if feeds are disabled in config" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="1" time="0.020404"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)" tests="12" assertions="23" errors="0" failures="0" skipped="0" time="0.356979">
-        <testcase name="Service instantiates xml element" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Service instantiates xml element" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="1" time="0.038500"/>
-        <testcase name="Generate adds default pages to xml" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Generate adds default pages to xml" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="1" time="0.027143"/>
-        <testcase name="Generate adds markdown pages to xml" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Generate adds markdown pages to xml" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="1" time="0.027922"/>
-        <testcase name="Generate adds markdown posts to xml" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Generate adds markdown posts to xml" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="1" time="0.027942"/>
-        <testcase name="Generate adds documentation pages to xml" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Generate adds documentation pages to xml" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="1" time="0.028338"/>
-        <testcase name="Get xml returns xml string" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Get xml returns xml string" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="2" time="0.026949"/>
-        <testcase name="Generate sitemap shorthand method returns xml string" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Generate sitemap shorthand method returns xml string" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="2" time="0.026850"/>
-        <testcase name="Url item is generated correctly" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Url item is generated correctly" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="3" time="0.027715"/>
-        <testcase name="Url item is generated with pretty urls if enabled" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Url item is generated with pretty urls if enabled" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="1" time="0.027457"/>
-        <testcase name="All route types are discovered" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::All route types are discovered" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="6" time="0.031634"/>
-        <testcase name="Links fallback to relative links when a site url is not set" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Links fallback to relative links when a site url is not set" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="2" time="0.039583"/>
-        <testcase name="Links fallback to relative links when site url is localhost" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Links fallback to relative links when site url is localhost" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="2" time="0.026947"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)" tests="24" assertions="63" errors="0" failures="0" skipped="0" time="0.547264">
-        <testcase name="Checks returns an array of validation check methods" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Checks returns an array of validation check methods" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="17" time="0.038094"/>
-        <testcase name="Check validators can run" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check validators can run" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.021302"/>
-        <testcase name="Check site has a 404 page can pass" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check site has a 404 page can pass" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.020417"/>
-        <testcase name="Check site has a 404 page can fail" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check site has a 404 page can fail" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.020412"/>
-        <testcase name="Check documentation site has an index page can pass" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check documentation site has an index page can pass" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.026121"/>
-        <testcase name="Check documentation site has an index page can pass with warning when only finding readme" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check documentation site has an index page can pass with warning when only finding readme" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="3" time="0.026522"/>
-        <testcase name="Check documentation site has an index page can fail" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check documentation site has an index page can fail" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.028165"/>
-        <testcase name="Check documentation site has an index page be skipped" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check documentation site has an index page be skipped" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.024895"/>
-        <testcase name="Check site has an index page can pass" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check site has an index page can pass" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.020201"/>
-        <testcase name="Check site has an index page can fail" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check site has an index page can fail" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.020747"/>
-        <testcase name="Check site has an app css stylesheet can pass" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check site has an app css stylesheet can pass" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.021065"/>
-        <testcase name="Check site has an app css stylesheet can fail" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check site has an app css stylesheet can fail" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.020588"/>
-        <testcase name="Check site has a base url set can pass" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check site has a base url set can pass" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.020410"/>
-        <testcase name="Check site has a base url set can fail" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check site has a base url set can fail" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.020272"/>
-        <testcase name="Check a torchlight api token is set can skip" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check a torchlight api token is set can skip" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.020166"/>
-        <testcase name="Check a torchlight api token is set can pass" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check a torchlight api token is set can pass" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.020258"/>
-        <testcase name="Check a torchlight api token is set can fail" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check a torchlight api token is set can fail" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.020987"/>
-        <testcase name="Check for conflicts between blade and markdown pages can pass" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check for conflicts between blade and markdown pages can pass" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.026435"/>
-        <testcase name="Check for conflicts between blade and markdown pages can fail" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check for conflicts between blade and markdown pages can fail" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.026668"/>
-        <testcase name="Validation result message returns message" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Validation result message returns message" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="1" time="0.020381"/>
-        <testcase name="Validation result passed returns true when passed is true" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Validation result passed returns true when passed is true" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.021149"/>
-        <testcase name="Validation result failed returns true when passed is false" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Validation result failed returns true when passed is false" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.020579"/>
-        <testcase name="Validation result skipped returns true when skipped is true" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Validation result skipped returns true when skipped is true" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.020886"/>
-        <testcase name="Validation result tip returns message when set" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Validation result tip returns message when set" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.020542"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Services\ViewDiffServiceTest" file="View Diff Service (Hyde\Framework\Testing\Feature\Services\ViewDiffService)" tests="4" assertions="8" errors="0" failures="0" skipped="0" time="0.145309">
-        <testcase name="Get filecache" file="View Diff Service (Hyde\Framework\Testing\Feature\Services\ViewDiffService)::Get filecache" class="Hyde\Framework\Testing\Feature\Services\ViewDiffServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ViewDiffServiceTest" assertions="4" time="0.071755"/>
-        <testcase name="Get checksums" file="View Diff Service (Hyde\Framework\Testing\Feature\Services\ViewDiffService)::Get checksums" class="Hyde\Framework\Testing\Feature\Services\ViewDiffServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ViewDiffServiceTest" assertions="2" time="0.024823"/>
-        <testcase name="Checksum matches any" file="View Diff Service (Hyde\Framework\Testing\Feature\Services\ViewDiffService)::Checksum matches any" class="Hyde\Framework\Testing\Feature\Services\ViewDiffServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ViewDiffServiceTest" assertions="1" time="0.024715"/>
-        <testcase name="Checksum matches any false" file="View Diff Service (Hyde\Framework\Testing\Feature\Services\ViewDiffService)::Checksum matches any false" class="Hyde\Framework\Testing\Feature\Services\ViewDiffServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ViewDiffServiceTest" assertions="1" time="0.024017"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\SiteTest" file="Site (Hyde\Framework\Testing\Feature\Site)" tests="4" assertions="10" errors="0" failures="0" skipped="0" time="0.091637">
-        <testcase name="Url" file="Site (Hyde\Framework\Testing\Feature\Site)::Url" class="Hyde\Framework\Testing\Feature\SiteTest" classname="Hyde.Framework.Testing.Feature.SiteTest" assertions="3" time="0.026352"/>
-        <testcase name="Name" file="Site (Hyde\Framework\Testing\Feature\Site)::Name" class="Hyde\Framework\Testing\Feature\SiteTest" classname="Hyde.Framework.Testing.Feature.SiteTest" assertions="3" time="0.020126"/>
-        <testcase name="Language" file="Site (Hyde\Framework\Testing\Feature\Site)::Language" class="Hyde\Framework\Testing\Feature\SiteTest" classname="Hyde.Framework.Testing.Feature.SiteTest" assertions="3" time="0.020102"/>
-        <testcase name="Metadata" file="Site (Hyde\Framework\Testing\Feature\Site)::Metadata" class="Hyde\Framework\Testing\Feature\SiteTest" classname="Hyde.Framework.Testing.Feature.SiteTest" assertions="1" time="0.025057"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChangedTest" file="Source Directories Can Be Changed (Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChanged)" tests="6" assertions="18" errors="0" failures="0" skipped="0" time="0.140179">
-        <testcase name="Baselines" file="Source Directories Can Be Changed (Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChanged)::Baselines" class="Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChangedTest" classname="Hyde.Framework.Testing.Feature.SourceDirectoriesCanBeChangedTest" assertions="5" time="0.025696"/>
-        <testcase name="Source directories can be changed programmatically" file="Source Directories Can Be Changed (Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChanged)::Source directories can be changed programmatically" class="Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChangedTest" classname="Hyde.Framework.Testing.Feature.SourceDirectoriesCanBeChangedTest" assertions="5" time="0.020041"/>
-        <testcase name="Source directories can be changed in config" file="Source Directories Can Be Changed (Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChanged)::Source directories can be changed in config" class="Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChangedTest" classname="Hyde.Framework.Testing.Feature.SourceDirectoriesCanBeChangedTest" assertions="5" time="0.020832"/>
-        <testcase name="Build service recognizes changed directory" file="Source Directories Can Be Changed (Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChanged)::Build service recognizes changed directory" class="Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChangedTest" classname="Hyde.Framework.Testing.Feature.SourceDirectoriesCanBeChangedTest" assertions="1" time="0.019619"/>
-        <testcase name="Autodiscovery discovers posts in custom directory" file="Source Directories Can Be Changed (Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChanged)::Autodiscovery discovers posts in custom directory" class="Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChangedTest" classname="Hyde.Framework.Testing.Feature.SourceDirectoriesCanBeChangedTest" assertions="1" time="0.026796"/>
-        <testcase name="Autodiscovery discovers posts in custom subdirectory" file="Source Directories Can Be Changed (Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChanged)::Autodiscovery discovers posts in custom subdirectory" class="Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChangedTest" classname="Hyde.Framework.Testing.Feature.SourceDirectoriesCanBeChangedTest" assertions="1" time="0.027195"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\SourceFileParserTest" file="Source File Parser (Hyde\Framework\Testing\Feature\SourceFileParser)" tests="8" assertions="20" errors="0" failures="0" skipped="0" time="0.203408">
-        <testcase name="Blade page parser" file="Source File Parser (Hyde\Framework\Testing\Feature\SourceFileParser)::Blade page parser" class="Hyde\Framework\Testing\Feature\SourceFileParserTest" classname="Hyde.Framework.Testing.Feature.SourceFileParserTest" assertions="2" time="0.033033"/>
-        <testcase name="Markdown page parser" file="Source File Parser (Hyde\Framework\Testing\Feature\SourceFileParser)::Markdown page parser" class="Hyde\Framework\Testing\Feature\SourceFileParserTest" classname="Hyde.Framework.Testing.Feature.SourceFileParserTest" assertions="4" time="0.023548"/>
-        <testcase name="Markdown post parser" file="Source File Parser (Hyde\Framework\Testing\Feature\SourceFileParser)::Markdown post parser" class="Hyde\Framework\Testing\Feature\SourceFileParserTest" classname="Hyde.Framework.Testing.Feature.SourceFileParserTest" assertions="4" time="0.024382"/>
-        <testcase name="Documentation page parser" file="Source File Parser (Hyde\Framework\Testing\Feature\SourceFileParser)::Documentation page parser" class="Hyde\Framework\Testing\Feature\SourceFileParserTest" classname="Hyde.Framework.Testing.Feature.SourceFileParserTest" assertions="4" time="0.024689"/>
-        <testcase name="Html page parser" file="Source File Parser (Hyde\Framework\Testing\Feature\SourceFileParser)::Html page parser" class="Hyde\Framework\Testing\Feature\SourceFileParserTest" classname="Hyde.Framework.Testing.Feature.SourceFileParserTest" assertions="3" time="0.024021"/>
-        <testcase name="Parsed page is run through dynamic constructor" file="Source File Parser (Hyde\Framework\Testing\Feature\SourceFileParser)::Parsed page is run through dynamic constructor" class="Hyde\Framework\Testing\Feature\SourceFileParserTest" classname="Hyde.Framework.Testing.Feature.SourceFileParserTest" assertions="1" time="0.024225"/>
-        <testcase name="Blade page data is parsed to front matter" file="Source File Parser (Hyde\Framework\Testing\Feature\SourceFileParser)::Blade page data is parsed to front matter" class="Hyde\Framework\Testing\Feature\SourceFileParserTest" classname="Hyde.Framework.Testing.Feature.SourceFileParserTest" assertions="1" time="0.025993"/>
-        <testcase name="Blade page matter is used for the page title" file="Source File Parser (Hyde\Framework\Testing\Feature\SourceFileParser)::Blade page matter is used for the page title" class="Hyde\Framework\Testing\Feature\SourceFileParserTest" classname="Hyde.Framework.Testing.Feature.SourceFileParserTest" assertions="1" time="0.023517"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)" tests="13" assertions="73" errors="0" failures="0" skipped="0" time="0.473595">
-        <testcase name="Can build blade page" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can build blade page" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="3" time="0.039506"/>
-        <testcase name="Can build markdown post" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can build markdown post" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="10" time="0.036415"/>
-        <testcase name="Can build markdown page" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can build markdown page" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="10" time="0.049753"/>
-        <testcase name="Can build documentation page" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can build documentation page" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="10" time="0.037425"/>
-        <testcase name="Can build html page" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can build html page" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="3" time="0.029183"/>
-        <testcase name="Can build nested html page" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can build nested html page" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="3" time="0.029612"/>
-        <testcase name="Creates custom documentation directory" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Creates custom documentation directory" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="10" time="0.039200"/>
-        <testcase name="Site directory can be customized" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Site directory can be customized" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="10" time="0.036995"/>
-        <testcase name="Site directory can be customized with nested pages" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Site directory can be customized with nested pages" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="10" time="0.037418"/>
-        <testcase name="Can rebuild blade page" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can rebuild blade page" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="1" time="0.028226"/>
-        <testcase name="Can rebuild markdown page" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can rebuild markdown page" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="1" time="0.036847"/>
-        <testcase name="Can rebuild markdown post" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can rebuild markdown post" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="1" time="0.037076"/>
-        <testcase name="Can rebuild documentation page" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can rebuild documentation page" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="1" time="0.035939"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\StaticSiteBuilderDocumentationModuleTest" file="Static Site Builder Documentation Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderDocumentationModule)" tests="3" assertions="7" errors="0" failures="0" skipped="0" time="0.141792">
-        <testcase name="Can create page" file="Static Site Builder Documentation Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderDocumentationModule)::Can create page" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderDocumentationModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderDocumentationModuleTest" assertions="1" time="0.055193"/>
-        <testcase name="Page contains expected content" file="Static Site Builder Documentation Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderDocumentationModule)::Page contains expected content" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderDocumentationModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderDocumentationModuleTest" assertions="3" time="0.036108"/>
-        <testcase name="Can compile page to root output directory" file="Static Site Builder Documentation Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderDocumentationModule)::Can compile page to root output directory" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderDocumentationModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderDocumentationModuleTest" assertions="3" time="0.050490"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModuleTest" file="Static Site Builder Post Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModule)" tests="7" assertions="38" errors="0" failures="0" skipped="0" time="0.271513">
-        <testcase name="Can create post" file="Static Site Builder Post Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModule)::Can create post" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderPostModuleTest" assertions="1" time="0.042385"/>
-        <testcase name="Post contains expected content" file="Static Site Builder Post Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModule)::Post contains expected content" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderPostModuleTest" assertions="6" time="0.037561"/>
-        <testcase name="Post contains expected elements" file="Static Site Builder Post Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModule)::Post contains expected elements" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderPostModuleTest" assertions="11" time="0.037143"/>
-        <testcase name="Post contains expected meta tags" file="Static Site Builder Post Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModule)::Post contains expected meta tags" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderPostModuleTest" assertions="6" time="0.038040"/>
-        <testcase name="Post contains expected itemprops" file="Static Site Builder Post Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModule)::Post contains expected itemprops" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderPostModuleTest" assertions="8" time="0.039327"/>
-        <testcase name="Post contains expected aria support" file="Static Site Builder Post Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModule)::Post contains expected aria support" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderPostModuleTest" assertions="3" time="0.039950"/>
-        <testcase name="Post image is resolved relatively" file="Static Site Builder Post Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModule)::Post image is resolved relatively" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderPostModuleTest" assertions="3" time="0.037106"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)" tests="23" assertions="79" errors="0" failures="0" skipped="0" time="1.081182">
-        <testcase name="Build command contains expected output" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Build command contains expected output" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="4" time="0.050462"/>
-        <testcase name="Build command creates html files" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Build command creates html files" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="3" time="0.051790"/>
-        <testcase name="Build command transfers media asset files" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Build command transfers media asset files" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="3" time="0.038028"/>
-        <testcase name="Build command transfers media asset files recursively" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Build command transfers media asset files recursively" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="4" time="0.038714"/>
-        <testcase name="All page types can be compiled" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::All page types can be compiled" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="12" time="0.112177"/>
-        <testcase name="Only progress bars for types with pages are shown" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Only progress bars for types with pages are shown" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="9" time="0.055620"/>
-        <testcase name="Print initial information allows api to be disabled" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Print initial information allows api to be disabled" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="2" time="0.041681"/>
-        <testcase name="Node action outputs" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Node action outputs" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="4" time="0.046349"/>
-        <testcase name="Pretty urls option output" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Pretty urls option output" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="2" time="0.040934"/>
-        <testcase name="Sitemap is not generated when conditions are not met" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Sitemap is not generated when conditions are not met" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="2" time="0.037793"/>
-        <testcase name="Sitemap is generated when conditions are met" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Sitemap is generated when conditions are met" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="1" time="0.039774"/>
-        <testcase name="Rss feed is not generated when conditions are not met" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Rss feed is not generated when conditions are not met" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="2" time="0.037993"/>
-        <testcase name="Rss feed is generated when conditions are met" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Rss feed is generated when conditions are met" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="1" time="0.052510"/>
-        <testcase name="Does not generate search files when conditions are not met" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Does not generate search files when conditions are not met" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="3" time="0.038478"/>
-        <testcase name="Generates search files when conditions are met" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Generates search files when conditions are met" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="1" time="0.062913"/>
-        <testcase name="Site directory is emptied before build" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Site directory is emptied before build" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="3" time="0.038633"/>
-        <testcase name="Output directory is not emptied if disabled in config" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Output directory is not emptied if disabled in config" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="3" time="0.037457"/>
-        <testcase name="Aborts when non standard directory is emptied" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Aborts when non standard directory is emptied" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="5" time="0.038817"/>
-        <testcase name="Without warnings" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Without warnings" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="2" time="0.038165"/>
-        <testcase name="With warnings" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::With warnings" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="3" time="0.041283"/>
-        <testcase name="With warnings and verbose" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::With warnings and verbose" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="4" time="0.056624"/>
-        <testcase name="With warnings but warnings are disabled" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::With warnings but warnings are disabled" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="2" time="0.038778"/>
-        <testcase name="With warnings converted to exceptions" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::With warnings converted to exceptions" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="4" time="0.046206"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Support\MediaFileTest" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)" tests="25" assertions="32" errors="0" failures="0" skipped="0" time="0.582814">
-        <testcase name="Can construct" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Can construct" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="2" time="0.052684"/>
-        <testcase name="Can construct with nested paths" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Can construct with nested paths" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.019843"/>
-        <testcase name="Absolute path is normalized to relative" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Absolute path is normalized to relative" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.019946"/>
-        <testcase name="Get name returns name of file" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get name returns name of file" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="2" time="0.019860"/>
-        <testcase name="Get path returns path of file" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get path returns path of file" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="2" time="0.019991"/>
-        <testcase name="Get absolute path returns absolute path of file" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get absolute path returns absolute path of file" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="2" time="0.020033"/>
-        <testcase name="Get contents returns contents of file" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get contents returns contents of file" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.020410"/>
-        <testcase name="Get extension returns extension of file" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get extension returns extension of file" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="2" time="0.021694"/>
-        <testcase name="To array returns array of file properties" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::To array returns array of file properties" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.023257"/>
-        <testcase name="To array with empty file with no extension" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::To array with empty file with no extension" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.025093"/>
-        <testcase name="To array with file in subdirectory" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::To array with file in subdirectory" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.023821"/>
-        <testcase name="Get content length" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get content length" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.023107"/>
-        <testcase name="Get content length with empty file" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get content length with empty file" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.022570"/>
-        <testcase name="Get content length with directory" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get content length with directory" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="2" time="0.021857"/>
-        <testcase name="Get content length with non existent file" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get content length with non existent file" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="2" time="0.020841"/>
-        <testcase name="Get mime type" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get mime type" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.020352"/>
-        <testcase name="Get mime type without extension" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get mime type without extension" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.022653"/>
-        <testcase name="Get mime type with empty file" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get mime type with empty file" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.021185"/>
-        <testcase name="Get mime type with directory" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get mime type with directory" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.021728"/>
-        <testcase name="Get mime type with non existent file" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get mime type with non existent file" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.021238"/>
-        <testcase name="All helper returns all media files" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::All helper returns all media files" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.022425"/>
-        <testcase name="All helper does not include non media files" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::All helper does not include non media files" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.021798"/>
-        <testcase name="Files helper" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Files helper" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.020841"/>
-        <testcase name="Get identifier" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get identifier" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.019954"/>
-        <testcase name="Get identifier with subdirectory" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get identifier with subdirectory" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.035631"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)" tests="11" assertions="16" errors="0" failures="0" skipped="0" time="0.262451">
-        <testcase name="Can construct" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::Can construct" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="2" time="0.056578"/>
-        <testcase name="Can construct with nested paths" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::Can construct with nested paths" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="1" time="0.019614"/>
-        <testcase name="Absolute path is normalized to relative" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::Absolute path is normalized to relative" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="1" time="0.019682"/>
-        <testcase name="Get name returns name of file" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::Get name returns name of file" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="2" time="0.019799"/>
-        <testcase name="Get path returns path of file" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::Get path returns path of file" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="2" time="0.019703"/>
-        <testcase name="Get absolute path returns absolute path of file" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::Get absolute path returns absolute path of file" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="2" time="0.020507"/>
-        <testcase name="Get contents returns contents of file" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::Get contents returns contents of file" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="1" time="0.021085"/>
-        <testcase name="Get extension returns extension of file" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::Get extension returns extension of file" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="2" time="0.021969"/>
-        <testcase name="To array returns array of file properties" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::To array returns array of file properties" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="1" time="0.021462"/>
-        <testcase name="To array with empty file with no extension" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::To array with empty file with no extension" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="1" time="0.021205"/>
-        <testcase name="To array with file in subdirectory" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::To array with file in subdirectory" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="1" time="0.020846"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Support\SourceFileTest" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)" tests="13" assertions="21" errors="0" failures="0" skipped="0" time="0.288352">
-        <testcase name="Can construct" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Can construct" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="3" time="0.037472"/>
-        <testcase name="Can construct with model class" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Can construct with model class" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="3" time="0.020144"/>
-        <testcase name="Can make with model class" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Can make with model class" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="1" time="0.019941"/>
-        <testcase name="Can construct with nested paths" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Can construct with nested paths" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="1" time="0.020247"/>
-        <testcase name="Absolute path is normalized to relative" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Absolute path is normalized to relative" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="1" time="0.020121"/>
-        <testcase name="Get name returns name of file" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Get name returns name of file" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="2" time="0.020889"/>
-        <testcase name="Get path returns path of file" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Get path returns path of file" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="2" time="0.021794"/>
-        <testcase name="Get absolute path returns absolute path of file" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Get absolute path returns absolute path of file" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="2" time="0.022166"/>
-        <testcase name="Get contents returns contents of file" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Get contents returns contents of file" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="1" time="0.021831"/>
-        <testcase name="Get extension returns extension of file" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Get extension returns extension of file" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="2" time="0.021386"/>
-        <testcase name="To array returns array of file properties" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::To array returns array of file properties" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="1" time="0.020786"/>
-        <testcase name="To array with empty file with no extension" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::To array with empty file with no extension" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="1" time="0.020887"/>
-        <testcase name="To array with file in subdirectory" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::To array with file in subdirectory" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="1" time="0.020688"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)" tests="27" assertions="29" errors="0" failures="0" skipped="0" time="0.583812">
-        <testcase name="Get array" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get array" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.055449"/>
-        <testcase name="Get string" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get string" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.020750"/>
-        <testcase name="Get bool" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get bool" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.020086"/>
-        <testcase name="Get int" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get int" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.020463"/>
-        <testcase name="Get float" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get float" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.021659"/>
-        <testcase name="Get array with default value" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get array with default value" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.021778"/>
-        <testcase name="Get string with default value" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get string with default value" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.021825"/>
-        <testcase name="Get bool with default value" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get bool with default value" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.020391"/>
-        <testcase name="Get int with default value" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get int with default value" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.020611"/>
-        <testcase name="Get float with default value" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get float with default value" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.021197"/>
-        <testcase name="Get array with strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get array with strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.020461"/>
-        <testcase name="Get string with strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get string with strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019729"/>
-        <testcase name="Get bool with strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get bool with strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019545"/>
-        <testcase name="Get int with strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get int with strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019696"/>
-        <testcase name="Get float with strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get float with strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019524"/>
-        <testcase name="Get array with failing strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get array with failing strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019642"/>
-        <testcase name="Get string with failing strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get string with failing strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019546"/>
-        <testcase name="Get bool with failing strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get bool with failing strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019633"/>
-        <testcase name="Get int with failing strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get int with failing strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019720"/>
-        <testcase name="Get float with failing strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get float with failing strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019846"/>
-        <testcase name="Get array with array" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get array with array" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019828"/>
-        <testcase name="Get string with string" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get string with string" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.020273"/>
-        <testcase name="Get bool with bool" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get bool with bool" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019886"/>
-        <testcase name="Get int with int" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get int with int" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019845"/>
-        <testcase name="Get float with float" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get float with float" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019960"/>
-        <testcase name="Get nullable string" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get nullable string" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="2" time="0.020342"/>
-        <testcase name="Invalid type message" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Invalid type message" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="2" time="0.022128"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Views\MetadataViewTest" file="Metadata View (Hyde\Framework\Testing\Feature\Views\MetadataView)" tests="5" assertions="84" errors="0" failures="0" skipped="0" time="0.259822">
-        <testcase name="Metadata tags in empty blade page" file="Metadata View (Hyde\Framework\Testing\Feature\Views\MetadataView)::Metadata tags in empty blade page" class="Hyde\Framework\Testing\Feature\Views\MetadataViewTest" classname="Hyde.Framework.Testing.Feature.Views.MetadataViewTest" assertions="13" time="0.088278"/>
-        <testcase name="Metadata tags in empty markdown page" file="Metadata View (Hyde\Framework\Testing\Feature\Views\MetadataView)::Metadata tags in empty markdown page" class="Hyde\Framework\Testing\Feature\Views\MetadataViewTest" classname="Hyde.Framework.Testing.Feature.Views.MetadataViewTest" assertions="13" time="0.041317"/>
-        <testcase name="Metadata tags in empty documentation page" file="Metadata View (Hyde\Framework\Testing\Feature\Views\MetadataView)::Metadata tags in empty documentation page" class="Hyde\Framework\Testing\Feature\Views\MetadataViewTest" classname="Hyde.Framework.Testing.Feature.Views.MetadataViewTest" assertions="13" time="0.044327"/>
-        <testcase name="Metadata tags in empty markdown post" file="Metadata View (Hyde\Framework\Testing\Feature\Views\MetadataView)::Metadata tags in empty markdown post" class="Hyde\Framework\Testing\Feature\Views\MetadataViewTest" classname="Hyde.Framework.Testing.Feature.Views.MetadataViewTest" assertions="19" time="0.041271"/>
-        <testcase name="Metadata tags in markdown post with flat front matter" file="Metadata View (Hyde\Framework\Testing\Feature\Views\MetadataView)::Metadata tags in markdown post with flat front matter" class="Hyde\Framework\Testing\Feature\Views\MetadataViewTest" classname="Hyde.Framework.Testing.Feature.Views.MetadataViewTest" assertions="26" time="0.044629"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Views\SidebarBrandViewTest" file="Sidebar Brand View (Hyde\Framework\Testing\Feature\Views\SidebarBrandView)" tests="5" assertions="13" errors="0" failures="0" skipped="0" time="0.137497">
-        <testcase name="Sidebar brand view" file="Sidebar Brand View (Hyde\Framework\Testing\Feature\Views\SidebarBrandView)::Sidebar brand view" class="Hyde\Framework\Testing\Feature\Views\SidebarBrandViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarBrandViewTest" assertions="3" time="0.033347"/>
-        <testcase name="Sidebar brand view with home route" file="Sidebar Brand View (Hyde\Framework\Testing\Feature\Views\SidebarBrandView)::Sidebar brand view with home route" class="Hyde\Framework\Testing\Feature\Views\SidebarBrandViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarBrandViewTest" assertions="3" time="0.026266"/>
-        <testcase name="Sidebar brand view with default header text" file="Sidebar Brand View (Hyde\Framework\Testing\Feature\Views\SidebarBrandView)::Sidebar brand view with default header text" class="Hyde\Framework\Testing\Feature\Views\SidebarBrandViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarBrandViewTest" assertions="2" time="0.025143"/>
-        <testcase name="Sidebar brand view with default header text and home route" file="Sidebar Brand View (Hyde\Framework\Testing\Feature\Views\SidebarBrandView)::Sidebar brand view with default header text and home route" class="Hyde\Framework\Testing\Feature\Views\SidebarBrandViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarBrandViewTest" assertions="3" time="0.026879"/>
-        <testcase name="Sidebar brand view without darkmode feature" file="Sidebar Brand View (Hyde\Framework\Testing\Feature\Views\SidebarBrandView)::Sidebar brand view without darkmode feature" class="Hyde\Framework\Testing\Feature\Views\SidebarBrandViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarBrandViewTest" assertions="2" time="0.025862"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Views\SidebarFooterTextViewTest" file="Sidebar Footer Text View (Hyde\Framework\Testing\Feature\Views\SidebarFooterTextView)" tests="4" assertions="4" errors="0" failures="0" skipped="0" time="0.091327">
-        <testcase name="Sidebar footer text view with default config" file="Sidebar Footer Text View (Hyde\Framework\Testing\Feature\Views\SidebarFooterTextView)::Sidebar footer text view with default config" class="Hyde\Framework\Testing\Feature\Views\SidebarFooterTextViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarFooterTextViewTest" assertions="1" time="0.028017"/>
-        <testcase name="Sidebar footer text view when config option is true" file="Sidebar Footer Text View (Hyde\Framework\Testing\Feature\Views\SidebarFooterTextView)::Sidebar footer text view when config option is true" class="Hyde\Framework\Testing\Feature\Views\SidebarFooterTextViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarFooterTextViewTest" assertions="1" time="0.021087"/>
-        <testcase name="Sidebar footer text view when config option is markdown string" file="Sidebar Footer Text View (Hyde\Framework\Testing\Feature\Views\SidebarFooterTextView)::Sidebar footer text view when config option is markdown string" class="Hyde\Framework\Testing\Feature\Views\SidebarFooterTextViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarFooterTextViewTest" assertions="1" time="0.021838"/>
-        <testcase name="Sidebar footer text view when config option is false" file="Sidebar Footer Text View (Hyde\Framework\Testing\Feature\Views\SidebarFooterTextView)::Sidebar footer text view when config option is false" class="Hyde\Framework\Testing\Feature\Views\SidebarFooterTextViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarFooterTextViewTest" assertions="1" time="0.020385"/>
-      </testsuite>
-      <testsuite name="Hyde\Framework\Testing\Feature\Views\SidebarViewTest" file="Sidebar View (Hyde\Framework\Testing\Feature\Views\SidebarView)" tests="7" assertions="60" errors="0" failures="0" skipped="0" time="0.242232">
-        <testcase name="Base sidebar" file="Sidebar View (Hyde\Framework\Testing\Feature\Views\SidebarView)::Base sidebar" class="Hyde\Framework\Testing\Feature\Views\SidebarViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarViewTest" assertions="12" time="0.036526"/>
-        <testcase name="Base sidebar without footer" file="Sidebar View (Hyde\Framework\Testing\Feature\Views\SidebarView)::Base sidebar without footer" class="Hyde\Framework\Testing\Feature\Views\SidebarViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarViewTest" assertions="2" time="0.029633"/>
-        <testcase name="Base sidebar with custom footer text" file="Sidebar View (Hyde\Framework\Testing\Feature\Views\SidebarView)::Base sidebar with custom footer text" class="Hyde\Framework\Testing\Feature\Views\SidebarViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarViewTest" assertions="4" time="0.029538"/>
-        <testcase name="Base sidebar custom header brand" file="Sidebar View (Hyde\Framework\Testing\Feature\Views\SidebarView)::Base sidebar custom header brand" class="Hyde\Framework\Testing\Feature\Views\SidebarViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarViewTest" assertions="4" time="0.028257"/>
-        <testcase name="Base sidebar with items" file="Sidebar View (Hyde\Framework\Testing\Feature\Views\SidebarView)::Base sidebar with items" class="Hyde\Framework\Testing\Feature\Views\SidebarViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarViewTest" assertions="6" time="0.032915"/>
-        <testcase name="Sidebar with grouped items" file="Sidebar View (Hyde\Framework\Testing\Feature\Views\SidebarView)::Sidebar with grouped items" class="Hyde\Framework\Testing\Feature\Views\SidebarViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarViewTest" assertions="16" time="0.050082"/>
-        <testcase name="Sidebar with non collapsible grouped items" file="Sidebar View (Hyde\Framework\Testing\Feature\Views\SidebarView)::Sidebar with non collapsible grouped items" class="Hyde\Framework\Testing\Feature\Views\SidebarViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarViewTest" assertions="16" time="0.035282"/>
+        <testcase name="Version method returns version constant" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Version method returns version constant" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020058"/>
+        <testcase name="Can get source root" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can get source root" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.019962"/>
+        <testcase name="Can set source root" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can set source root" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.019766"/>
+        <testcase name="Can set source root to absolute project path" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can set source root to absolute project path" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.019920"/>
+        <testcase name="Set source root trims trailing slashes" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Set source root trims trailing slashes" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.019877"/>
+        <testcase name="Can get output directory" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can get output directory" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.019818"/>
+        <testcase name="Can set output directory" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can set output directory" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.020236"/>
+        <testcase name="Can set output directory to absolute project path" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can set output directory to absolute project path" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.020344"/>
+        <testcase name="Set output directory trims trailing slashes" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Set output directory trims trailing slashes" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020011"/>
+        <testcase name="Can get media directory" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can get media directory" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.019790"/>
+        <testcase name="Can set media directory" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can set media directory" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.019820"/>
+        <testcase name="Set media directory trims trailing slashes" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Set media directory trims trailing slashes" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020004"/>
+        <testcase name="Can get media output directory name" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can get media output directory name" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020043"/>
+        <testcase name="Get media output directory name uses trimmed version of media source directory" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Get media output directory name uses trimmed version of media source directory" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020234"/>
+        <testcase name="Can get site media output directory" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can get site media output directory" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020161"/>
+        <testcase name="Get site media output directory uses trimmed version of media source directory" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Get site media output directory uses trimmed version of media source directory" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020013"/>
+        <testcase name="Get site media output directory uses configured site output directory" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Get site media output directory uses configured site output directory" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020143"/>
+        <testcase name="Media output directory can be changed in configuration" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Media output directory can be changed in configuration" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.020714"/>
+        <testcase name="Can access kernel fluently using the facade" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can access kernel fluently using the facade" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="3" time="0.019939"/>
+        <testcase name="Can register booting callback closure" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can register booting callback closure" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.023810"/>
+        <testcase name="Can register booted callback closure" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can register booted callback closure" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.023444"/>
+        <testcase name="Can register booting callback callable" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can register booting callback callable" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.023623"/>
+        <testcase name="Can register booted callback callable" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can register booted callback callable" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.023306"/>
+        <testcase name="Booting callback receives kernel instance" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Booting callback receives kernel instance" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.023152"/>
+        <testcase name="Booted callback receives kernel instance" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Booted callback receives kernel instance" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.023310"/>
+        <testcase name="Can use booting callbacks to inject custom pages" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Can use booting callbacks to inject custom pages" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.024396"/>
+        <testcase name="Is booted returns false when not booted" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Is booted returns false when not booted" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.020849"/>
+        <testcase name="Is booted returns true when booted" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Is booted returns true when booted" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="1" time="0.023940"/>
+        <testcase name="Is booted method on the facade" file="Hyde Kernel (Hyde\Framework\Testing\Feature\HydeKernel)::Is booted method on the facade" class="Hyde\Framework\Testing\Feature\HydeKernelTest" classname="Hyde.Framework.Testing.Feature.HydeKernelTest" assertions="2" time="0.037576"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\HydePageTest" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)" tests="154" assertions="242" errors="0" failures="0" skipped="0" time="3.486649">
+        <testcase name="Base source directory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base source directory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.106723"/>
+        <testcase name="Base output directory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base output directory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.019896"/>
+        <testcase name="Base file extension" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base file extension" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.019725"/>
+        <testcase name="Base source path" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base source path" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.019749"/>
+        <testcase name="Base output path" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base output path" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.019755"/>
+        <testcase name="Base path" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base path" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020233"/>
+        <testcase name="Base path to identifier" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base path to identifier" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020438"/>
+        <testcase name="Base base route key" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base base route key" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020879"/>
+        <testcase name="Base is discoverable" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base is discoverable" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020059"/>
+        <testcase name="Source directory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Source directory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.019801"/>
+        <testcase name="Output directory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Output directory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020773"/>
+        <testcase name="File extension" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::File extension" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020008"/>
+        <testcase name="Source path" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Source path" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.019863"/>
+        <testcase name="Output path" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Output path" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.019861"/>
+        <testcase name="Path" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Path" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.019827"/>
+        <testcase name="Base route key" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Base route key" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.019829"/>
+        <testcase name="Is discoverable" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Is discoverable" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.019857"/>
+        <testcase name="Get source path" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get source path" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021263"/>
+        <testcase name="Get output path" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get output path" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021734"/>
+        <testcase name="Get link" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get link" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021529"/>
+        <testcase name="Make" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Make" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021491"/>
+        <testcase name="Make with data" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Make with data" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.035400"/>
+        <testcase name="Show in navigation" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="5" time="0.023594"/>
+        <testcase name="Navigation menu priority" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu priority" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="5" time="0.023224"/>
+        <testcase name="Navigation menu label" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu label" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="5" time="0.024413"/>
+        <testcase name="Navigation menu group" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu group" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="6" time="0.023511"/>
+        <testcase name="To array" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::To array" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021382"/>
+        <testcase name="Get source directory returns static property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get source directory returns static property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020083"/>
+        <testcase name="Set source directory trims trailing slashes" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Set source directory trims trailing slashes" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020128"/>
+        <testcase name="Get output directory returns static property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get output directory returns static property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020281"/>
+        <testcase name="Set output directory trims trailing slashes" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Set output directory trims trailing slashes" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020002"/>
+        <testcase name="Get file extension returns static property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get file extension returns static property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020589"/>
+        <testcase name="Set file extension forces leading period" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Set file extension forces leading period" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020811"/>
+        <testcase name="Set file extension removes trailing period" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Set file extension removes trailing period" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020271"/>
+        <testcase name="Get identifier returns identifier property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get identifier returns identifier property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021549"/>
+        <testcase name="Set source directory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Set source directory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.019840"/>
+        <testcase name="Set output directory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Set output directory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020004"/>
+        <testcase name="Set file extension" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Set file extension" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020084"/>
+        <testcase name="Static get method returns discovered page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Static get method returns discovered page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.025866"/>
+        <testcase name="Static get method throws exception if page not found" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Static get method throws exception if page not found" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.024201"/>
+        <testcase name="Parse parses supplied slug into a page model" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Parse parses supplied slug into a page model" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.022175"/>
+        <testcase name="Files returns array of source files" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Files returns array of source files" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.025372"/>
+        <testcase name="All returns collection of all parsed source files from page index" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::All returns collection of all parsed source files from page index" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.026681"/>
+        <testcase name="Qualify basename properly expands basename for the model" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Qualify basename properly expands basename for the model" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020091"/>
+        <testcase name="Qualify basename trims slashes from input" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Qualify basename trims slashes from input" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.019932"/>
+        <testcase name="Qualify basename uses the static properties" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Qualify basename uses the static properties" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020156"/>
+        <testcase name="Path returns absolute path to source directory when no parameter is supplied" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Path returns absolute path to source directory when no parameter is supplied" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020197"/>
+        <testcase name="Path returns absolute path to file in source directory when parameter is supplied" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Path returns absolute path to file in source directory when parameter is supplied" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020132"/>
+        <testcase name="Path method removes trailing slashes" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Path method removes trailing slashes" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020050"/>
+        <testcase name="Get output location returns the file output path for the supplied basename" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get output location returns the file output path for the supplied basename" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020200"/>
+        <testcase name="Get output location returns the configured location" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get output location returns the configured location" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020124"/>
+        <testcase name="Get output location trims trailing slashes from directory setting" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get output location trims trailing slashes from directory setting" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020300"/>
+        <testcase name="Get output location trims trailing slashes from basename" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get output location trims trailing slashes from basename" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020100"/>
+        <testcase name="Get current page path returns output directory and basename" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get current page path returns output directory and basename" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021386"/>
+        <testcase name="Get current page path returns output directory and basename for configured directory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get current page path returns output directory and basename for configured directory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.026472"/>
+        <testcase name="Get current page path trims trailing slashes from directory setting" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get current page path trims trailing slashes from directory setting" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.034939"/>
+        <testcase name="Get output path returns current page path with html extension appended" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get output path returns current page path with html extension appended" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021846"/>
+        <testcase name="Get source path returns qualified basename" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get source path returns qualified basename" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021136"/>
+        <testcase name="Markdown page implements page contract" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Markdown page implements page contract" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020856"/>
+        <testcase name="All page models extend abstract page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::All page models extend abstract page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="6" time="0.024083"/>
+        <testcase name="All page models have configured source directory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::All page models have configured source directory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="5" time="0.021004"/>
+        <testcase name="All page models have configured output directory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::All page models have configured output directory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="4" time="0.021102"/>
+        <testcase name="All page models have configured file extension" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::All page models have configured file extension" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="4" time="0.021579"/>
+        <testcase name="Abstract markdown page extends abstract page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page extends abstract page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.024002"/>
+        <testcase name="Abstract markdown page implements page contract" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page implements page contract" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020081"/>
+        <testcase name="Abstract markdown page has markdown document property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page has markdown document property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020050"/>
+        <testcase name="Abstract markdown page has file extension property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page has file extension property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.019932"/>
+        <testcase name="Abstract markdown page file extension property is set to md" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page file extension property is set to md" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020498"/>
+        <testcase name="Abstract markdown page constructor arguments are optional" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page constructor arguments are optional" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020185"/>
+        <testcase name="Abstract markdown page constructor assigns markdown document property if set" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page constructor assigns markdown document property if set" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021134"/>
+        <testcase name="Abstract markdown page constructor creates new markdown document if no markdown document is set" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page constructor creates new markdown document if no markdown document is set" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021230"/>
+        <testcase name="Abstract markdown page markdown helper returns the markdown document instance" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page markdown helper returns the markdown document instance" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020995"/>
+        <testcase name="Abstract markdown page markdown helper returns the configured markdown document instance" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page markdown helper returns the configured markdown document instance" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020995"/>
+        <testcase name="Abstract markdown page make helper constructs dynamic title automatically" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Abstract markdown page make helper constructs dynamic title automatically" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021148"/>
+        <testcase name="Markdown based pages extend abstract markdown page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Markdown based pages extend abstract markdown page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="3" time="0.022134"/>
+        <testcase name="Blade pages do not extend abstract markdown page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Blade pages do not extend abstract markdown page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021363"/>
+        <testcase name="Get route returns page route" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get route returns page route" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.024651"/>
+        <testcase name="Get route returns the route object from the router index" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get route returns the route object from the router index" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.026081"/>
+        <testcase name="Html title returns site name plus page title" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Html title returns site name plus page title" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020969"/>
+        <testcase name="Html title uses configured site name" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Html title uses configured site name" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021266"/>
+        <testcase name="Body helper returns markdown document body in markdown pages" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Body helper returns markdown document body in markdown pages" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021099"/>
+        <testcase name="Show in navigation returns false for markdown post" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation returns false for markdown post" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021286"/>
+        <testcase name="Show in navigation returns true for documentation page if slug is index" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation returns true for documentation page if slug is index" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021227"/>
+        <testcase name="Show in navigation returns true for documentation page if slug is not index" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation returns true for documentation page if slug is not index" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021366"/>
+        <testcase name="Show in navigation returns false for abstract markdown page if matter navigation hidden is true" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation returns false for abstract markdown page if matter navigation hidden is true" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021639"/>
+        <testcase name="Show in navigation returns true for abstract markdown page if matter navigation visible is true" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation returns true for abstract markdown page if matter navigation visible is true" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.025656"/>
+        <testcase name="Show in navigation returns true for abstract markdown page if matter navigation hidden is false" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation returns true for abstract markdown page if matter navigation hidden is false" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.023345"/>
+        <testcase name="Show in navigation returns true for abstract markdown page if matter navigation hidden is not set" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation returns true for abstract markdown page if matter navigation hidden is not set" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021219"/>
+        <testcase name="Show in navigation returns false if slug is present in config hyde navigation exclude" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation returns false if slug is present in config hyde navigation exclude" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.021878"/>
+        <testcase name="Show in navigation returns false if slug is 404" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation returns false if slug is 404" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.034397"/>
+        <testcase name="Show in navigation defaults to true if all checks pass" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Show in navigation defaults to true if all checks pass" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021761"/>
+        <testcase name="Navigation menu priority returns front matter value of navigation priority if abstract markdown page and not null" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu priority returns front matter value of navigation priority if abstract markdown page and not null" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021163"/>
+        <testcase name="Navigation menu priority can be set using order property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu priority can be set using order property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021137"/>
+        <testcase name="Navigation menu priority returns specified config value if slug exists in config hyde navigation order" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu priority returns specified config value if slug exists in config hyde navigation order" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.021883"/>
+        <testcase name="Navigation menu priority gives precedence to front matter over config hyde navigation order" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu priority gives precedence to front matter over config hyde navigation order" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.021536"/>
+        <testcase name="Navigation menu priority returns 999 for documentation page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu priority returns 999 for documentation page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021632"/>
+        <testcase name="Navigation menu priority returns 0 if slug is index" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu priority returns 0 if slug is index" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021255"/>
+        <testcase name="Navigation menu priority returns 10 if slug is posts" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu priority returns 10 if slug is posts" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021891"/>
+        <testcase name="Navigation menu priority defaults to 999 if no other conditions are met" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu priority defaults to 999 if no other conditions are met" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021477"/>
+        <testcase name="Navigation menu title returns navigation title matter if set" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu title returns navigation title matter if set" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021205"/>
+        <testcase name="Navigation menu title returns title matter if set" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu title returns title matter if set" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021126"/>
+        <testcase name="Navigation menu title navigation title has precedence over title" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu title navigation title has precedence over title" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021022"/>
+        <testcase name="Navigation menu title returns docs if slug is index and model is documentation page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu title returns docs if slug is index and model is documentation page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021339"/>
+        <testcase name="Navigation menu title returns home if slug is index and model is not documentation page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu title returns home if slug is index and model is not documentation page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021250"/>
+        <testcase name="Navigation menu title returns title if title is set and not empty" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu title returns title if title is set and not empty" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021356"/>
+        <testcase name="Navigation menu title falls back to hyde make title from slug" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu title falls back to hyde make title from slug" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021270"/>
+        <testcase name="Navigation menu title can be set in configuration" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation menu title can be set in configuration" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021463"/>
+        <testcase name="Documentation page can be hidden from navigation using config" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Documentation page can be hidden from navigation using config" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021372"/>
+        <testcase name="Get canonical url returns url for top level page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get canonical url returns url for top level page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021361"/>
+        <testcase name="Get canonical url returns pretty url for top level page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get canonical url returns pretty url for top level page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021321"/>
+        <testcase name="Get canonical url returns url for nested page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get canonical url returns url for nested page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021386"/>
+        <testcase name="Get canonical url returns url for deeply nested page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get canonical url returns url for deeply nested page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021346"/>
+        <testcase name="Canonical url is not set when identifier is null" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Canonical url is not set when identifier is null" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.021060"/>
+        <testcase name="Canonical url is not set when site url is null" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Canonical url is not set when site url is null" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.021185"/>
+        <testcase name="Custom canonical link can be set in front matter" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Custom canonical link can be set in front matter" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.020993"/>
+        <testcase name="Can create canonical url using base url from config" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Can create canonical url using base url from config" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021363"/>
+        <testcase name="Can create canonical url using base url from config using pretty urls" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Can create canonical url using base url from config using pretty urls" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021357"/>
+        <testcase name="Canonical url is null when no base url is set" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Canonical url is null when no base url is set" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020963"/>
+        <testcase name="Render page metadata returns string" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Render page metadata returns string" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021316"/>
+        <testcase name="Has method returns true if page has standard property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Has method returns true if page has standard property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021235"/>
+        <testcase name="Has method returns false if page does not have standard property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Has method returns false if page does not have standard property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021319"/>
+        <testcase name="Has method returns true if page has dynamic property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Has method returns true if page has dynamic property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021079"/>
+        <testcase name="Has method returns false if page does not have dynamic property" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Has method returns false if page does not have dynamic property" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020950"/>
+        <testcase name="Has method returns true if page has property set in front matter" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Has method returns true if page has property set in front matter" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020738"/>
+        <testcase name="Has method returns false if page does not have property set in front matter" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Has method returns false if page does not have property set in front matter" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.034609"/>
+        <testcase name="Has method returns false if property exists but is blank" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Has method returns false if property exists but is blank" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.024857"/>
+        <testcase name="Has method returns true if page has blank property set in front matter" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Has method returns true if page has blank property set in front matter" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.021693"/>
+        <testcase name="Markdown pages can be saved to disk" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Markdown pages can be saved to disk" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021890"/>
+        <testcase name="Save method converts front matter array to yaml block" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Save method converts front matter array to yaml block" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022101"/>
+        <testcase name="Save method writes page body to file" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Save method writes page body to file" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021895"/>
+        <testcase name="Save method writes page body to file with front matter" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Save method writes page body to file with front matter" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021942"/>
+        <testcase name="New markdown pages can be saved" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::New markdown pages can be saved" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.021769"/>
+        <testcase name="Existing parsed markdown pages can be saved" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Existing parsed markdown pages can be saved" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="3" time="0.027167"/>
+        <testcase name="Save method creates source directory if it does not exist" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Save method creates source directory if it does not exist" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="3" time="0.022064"/>
+        <testcase name="Save method creates source directory recursively if it does not exist" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Save method creates source directory recursively if it does not exist" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="4" time="0.024575"/>
+        <testcase name="Markdown posts can be saved" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Markdown posts can be saved" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022258"/>
+        <testcase name="Documentation pages can be saved" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Documentation pages can be saved" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021744"/>
+        <testcase name="Get method can access data from page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get method can access data from page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021321"/>
+        <testcase name="Get method can access nested data from page" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get method can access nested data from page" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021612"/>
+        <testcase name="Get method can access nested data from page with dot notation" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get method can access nested data from page with dot notation" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.021270"/>
+        <testcase name="Get link with pretty urls" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get link with pretty urls" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.027185"/>
+        <testcase name="Get link uses hyperlinks helper" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Get link uses hyperlinks helper" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.022016"/>
+        <testcase name="Path helpers return same result as fluent filesystem helpers" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Path helpers return same result as fluent filesystem helpers" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="4" time="0.020372"/>
+        <testcase name="All pages are routable" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::All pages are routable" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="25" time="0.060649"/>
+        <testcase name="Navigation data factory hides page from navigation when in a subdirectory" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation data factory hides page from navigation when in a subdirectory" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.021717"/>
+        <testcase name="Navigation data factory hides page from navigation when in a and config is set to hidden" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation data factory hides page from navigation when in a and config is set to hidden" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.021719"/>
+        <testcase name="Navigation data factory does not hide page from navigation when in a subdirectory and allowed in configuration" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation data factory does not hide page from navigation when in a subdirectory and allowed in configuration" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.021552"/>
+        <testcase name="Navigation data factory allows show in navigation and sets group when dropdown is selected in config" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Navigation data factory allows show in navigation and sets group when dropdown is selected in config" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.021831"/>
+        <testcase name="Is discoverable method returns true for discoverable pages" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Is discoverable method returns true for discoverable pages" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020176"/>
+        <testcase name="Is discoverable method returns false for non discoverable pages" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Is discoverable method returns false for non discoverable pages" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020842"/>
+        <testcase name="Is discoverable method requires all required data to be present" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Is discoverable method requires all required data to be present" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020220"/>
+        <testcase name="Is discoverable method requires source directory to be filled" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Is discoverable method requires source directory to be filled" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="1" time="0.020601"/>
+        <testcase name="All core extension pages are discoverable" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::All core extension pages are discoverable" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="5" time="0.021117"/>
+        <testcase name="Nested index pages show up in navigation" file="Hyde Page (Hyde\Framework\Testing\Feature\HydePage)::Nested index pages show up in navigation" class="Hyde\Framework\Testing\Feature\HydePageTest" classname="Hyde.Framework.Testing.Feature.HydePageTest" assertions="2" time="0.021514"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)" tests="21" assertions="95" errors="0" failures="0" skipped="0" time="0.676228">
+        <testcase name="Provider is constructed" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider is constructed" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="1" time="0.230274"/>
+        <testcase name="Provider has register method" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider has register method" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="1" time="0.019433"/>
+        <testcase name="Provider has boot method" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider has boot method" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="1" time="0.019512"/>
+        <testcase name="Provider registers asset service as singleton" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers asset service as singleton" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="3" time="0.019939"/>
+        <testcase name="Provider registers build task service as singleton" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers build task service as singleton" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="3" time="0.025022"/>
+        <testcase name="Provider registers source directories" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers source directories" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="8" time="0.021324"/>
+        <testcase name="Provider registers output directories" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers output directories" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="8" time="0.021122"/>
+        <testcase name="Custom source roots are applied to the page models" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Custom source roots are applied to the page models" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="8" time="0.021116"/>
+        <testcase name="Source root set in config is assigned" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Source root set in config is assigned" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="3" time="0.020825"/>
+        <testcase name="Provider registers site output directory" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers site output directory" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="2" time="0.020586"/>
+        <testcase name="Provider registers media directory" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers media directory" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="3" time="0.020698"/>
+        <testcase name="Provider registers blade view discovery location for configured blade view path" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers blade view discovery location for configured blade view path" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="2" time="0.021021"/>
+        <testcase name="Blade view locations are only registered once per key" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Blade view locations are only registered once per key" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="2" time="0.021735"/>
+        <testcase name="Provider registers console commands" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers console commands" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="18" time="0.025386"/>
+        <testcase name="Provider registers additional module service providers" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers additional module service providers" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="1" time="0.020599"/>
+        <testcase name="Provider registers all page model source paths" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers all page model source paths" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="6" time="0.021553"/>
+        <testcase name="Provider registers all page model output paths" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers all page model output paths" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="5" time="0.036374"/>
+        <testcase name="Provider registers source directories using options in configuration" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers source directories using options in configuration" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="5" time="0.021683"/>
+        <testcase name="Source directories can be set using kebab case class names" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Source directories can be set using kebab case class names" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="5" time="0.020939"/>
+        <testcase name="Provider registers output directories using options in configuration" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Provider registers output directories using options in configuration" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="5" time="0.025390"/>
+        <testcase name="Output directories can be set using kebab case class names" file="Hyde Service Provider (Hyde\Framework\Testing\Feature\HydeServiceProvider)::Output directories can be set using kebab case class names" class="Hyde\Framework\Testing\Feature\HydeServiceProviderTest" classname="Hyde.Framework.Testing.Feature.HydeServiceProviderTest" assertions="5" time="0.021698"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\IncludesFacadeTest" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)" tests="14" assertions="19" errors="0" failures="0" skipped="0" time="0.316574">
+        <testcase name="Path returns the includes directory" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Path returns the includes directory" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="1" time="0.047492"/>
+        <testcase name="Path returns a partial within the includes directory" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Path returns a partial within the includes directory" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="1" time="0.019721"/>
+        <testcase name="Path creates directory if it does not exist" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Path creates directory if it does not exist" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="2" time="0.020474"/>
+        <testcase name="Get returns partial" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Get returns partial" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="1" time="0.020072"/>
+        <testcase name="Get returns default value when not found" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Get returns default value when not found" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="2" time="0.020183"/>
+        <testcase name="Html returns rendered partial" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Html returns rendered partial" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="1" time="0.020272"/>
+        <testcase name="Html returns efault value when not found" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Html returns efault value when not found" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="2" time="0.020147"/>
+        <testcase name="Html with and without extension" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Html with and without extension" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="1" time="0.020130"/>
+        <testcase name="Markdown returns rendered partial" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Markdown returns rendered partial" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="1" time="0.021263"/>
+        <testcase name="Markdown returns rendered default value when not found" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Markdown returns rendered default value when not found" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="2" time="0.021320"/>
+        <testcase name="Markdown with and without extension" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Markdown with and without extension" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="1" time="0.021826"/>
+        <testcase name="Blade returns rendered partial" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Blade returns rendered partial" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="1" time="0.021215"/>
+        <testcase name="Blade with and without extension" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Blade with and without extension" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="1" time="0.021191"/>
+        <testcase name="Blade returns rendered default value when not found" file="Includes Facade (Hyde\Framework\Testing\Feature\IncludesFacade)::Blade returns rendered default value when not found" class="Hyde\Framework\Testing\Feature\IncludesFacadeTest" classname="Hyde.Framework.Testing.Feature.IncludesFacadeTest" assertions="2" time="0.021269"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)" tests="18" assertions="33" errors="0" failures="0" skipped="0" time="0.405412">
+        <testcase name="Can define hyde config settings in hyde yml file" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Can define hyde config settings in hyde yml file" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="9" time="0.040328"/>
+        <testcase name="Can define multiple config settings in hyde yml file" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Can define multiple config settings in hyde yml file" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="3" time="0.021104"/>
+        <testcase name="Bootstrapper applies yaml configuration when present" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Bootstrapper applies yaml configuration when present" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.020589"/>
+        <testcase name="Changes in yaml file override changes in hyde config" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Changes in yaml file override changes in hyde config" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.020459"/>
+        <testcase name="Changes in yaml file override changes in hyde config when using yaml extension" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Changes in yaml file override changes in hyde config when using yaml extension" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.020415"/>
+        <testcase name="Service gracefully handles missing file" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Service gracefully handles missing file" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.019793"/>
+        <testcase name="Service gracefully handles empty file" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Service gracefully handles empty file" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.033470"/>
+        <testcase name="Can add arbitrary config keys" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Can add arbitrary config keys" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.021124"/>
+        <testcase name="Configuration options are merged" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Configuration options are merged" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.020562"/>
+        <testcase name="Can add configuration options in namespaced array" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Can add configuration options in namespaced array" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="3" time="0.021241"/>
+        <testcase name="Can add arbitrary namespaced data" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Can add arbitrary namespaced data" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.020796"/>
+        <testcase name="Additional namespaces require the hyde namespace to be present" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Additional namespaces require the hyde namespace to be present" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.020611"/>
+        <testcase name="Additional namespaces requires hyde namespace to be the first entry" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Additional namespaces requires hyde namespace to be the first entry" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.020692"/>
+        <testcase name="Hyde namespace can be empty" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Hyde namespace can be empty" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.020576"/>
+        <testcase name="Hyde namespace can be null" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Hyde namespace can be null" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.020770"/>
+        <testcase name="Hyde namespace can blank" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Hyde namespace can blank" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="1" time="0.020727"/>
+        <testcase name="Dot notation can be used" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Dot notation can be used" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="2" time="0.020832"/>
+        <testcase name="Dot notation can be used with namespaces" file="Load Yaml Configuration (Hyde\Framework\Testing\Feature\LoadYamlConfiguration)::Dot notation can be used with namespaces" class="Hyde\Framework\Testing\Feature\LoadYamlConfigurationTest" classname="Hyde.Framework.Testing.Feature.LoadYamlConfigurationTest" assertions="3" time="0.021322"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\MarkdownFileParserTest" file="Markdown File Parser (Hyde\Framework\Testing\Feature\MarkdownFileParser)" tests="3" assertions="8" errors="0" failures="0" skipped="0" time="0.032253">
+        <testcase name="Can parse markdown file" file="Markdown File Parser (Hyde\Framework\Testing\Feature\MarkdownFileParser)::Can parse markdown file" class="Hyde\Framework\Testing\Feature\MarkdownFileParserTest" classname="Hyde.Framework.Testing.Feature.MarkdownFileParserTest" assertions="2" time="0.025721"/>
+        <testcase name="Can parse markdown file with front matter" file="Markdown File Parser (Hyde\Framework\Testing\Feature\MarkdownFileParser)::Can parse markdown file with front matter" class="Hyde\Framework\Testing\Feature\MarkdownFileParserTest" classname="Hyde.Framework.Testing.Feature.MarkdownFileParserTest" assertions="3" time="0.003298"/>
+        <testcase name="Parsed markdown post contains valid front matter" file="Markdown File Parser (Hyde\Framework\Testing\Feature\MarkdownFileParser)::Parsed markdown post contains valid front matter" class="Hyde\Framework\Testing\Feature\MarkdownFileParserTest" classname="Hyde.Framework.Testing.Feature.MarkdownFileParserTest" assertions="3" time="0.003234"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\MarkdownPostTest" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)" tests="9" assertions="22" errors="0" failures="0" skipped="0" time="0.198775">
+        <testcase name="Constructor can create a new author instance from username string" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)::Constructor can create a new author instance from username string" class="Hyde\Framework\Testing\Feature\MarkdownPostTest" classname="Hyde.Framework.Testing.Feature.MarkdownPostTest" assertions="4" time="0.025704"/>
+        <testcase name="Constructor can create a new author instance from user array" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)::Constructor can create a new author instance from user array" class="Hyde\Framework\Testing\Feature\MarkdownPostTest" classname="Hyde.Framework.Testing.Feature.MarkdownPostTest" assertions="4" time="0.021008"/>
+        <testcase name="Constructor can create a new image instance from a string" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)::Constructor can create a new image instance from a string" class="Hyde\Framework\Testing\Feature\MarkdownPostTest" classname="Hyde.Framework.Testing.Feature.MarkdownPostTest" assertions="2" time="0.020892"/>
+        <testcase name="Constructor can create a new image instance from an array" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)::Constructor can create a new image instance from an array" class="Hyde\Framework\Testing\Feature\MarkdownPostTest" classname="Hyde.Framework.Testing.Feature.MarkdownPostTest" assertions="2" time="0.021015"/>
+        <testcase name="Constructor can create a new date string instance from matter" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)::Constructor can create a new date string instance from matter" class="Hyde\Framework\Testing\Feature\MarkdownPostTest" classname="Hyde.Framework.Testing.Feature.MarkdownPostTest" assertions="2" time="0.020668"/>
+        <testcase name="Featured image can be constructed returns null when no image is set in the page matter" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)::Featured image can be constructed returns null when no image is set in the page matter" class="Hyde\Framework\Testing\Feature\MarkdownPostTest" classname="Hyde.Framework.Testing.Feature.MarkdownPostTest" assertions="1" time="0.020514"/>
+        <testcase name="Featured image can be constructed returns image object with local path when matter is string" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)::Featured image can be constructed returns image object with local path when matter is string" class="Hyde\Framework\Testing\Feature\MarkdownPostTest" classname="Hyde.Framework.Testing.Feature.MarkdownPostTest" assertions="2" time="0.026531"/>
+        <testcase name="Featured image can be constructed returns image object with remote path when matter is string" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)::Featured image can be constructed returns image object with remote path when matter is string" class="Hyde\Framework\Testing\Feature\MarkdownPostTest" classname="Hyde.Framework.Testing.Feature.MarkdownPostTest" assertions="2" time="0.021179"/>
+        <testcase name="Featured image can be constructed returns image object with supplied data when matter is array" file="Markdown Post (Hyde\Framework\Testing\Feature\MarkdownPost)::Featured image can be constructed returns image object with supplied data when matter is array" class="Hyde\Framework\Testing\Feature\MarkdownPostTest" classname="Hyde.Framework.Testing.Feature.MarkdownPostTest" assertions="3" time="0.021265"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\MarkdownServiceTest" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)" tests="31" assertions="38" errors="0" failures="0" skipped="0" time="0.693056">
+        <testcase name="Service can parse markdown to html" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Service can parse markdown to html" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="2" time="0.033503"/>
+        <testcase name="Service can parse markdown to html with permalinks" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Service can parse markdown to html with permalinks" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="2" time="0.021765"/>
+        <testcase name="Torchlight extension is not enabled by default" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Torchlight extension is not enabled by default" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.021295"/>
+        <testcase name="Torchlight extension is enabled automatically when has torchlight feature" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Torchlight extension is enabled automatically when has torchlight feature" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.035354"/>
+        <testcase name="Torchlight integration injects attribution" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Torchlight integration injects attribution" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.024053"/>
+        <testcase name="Bladedown is not enabled by default" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Bladedown is not enabled by default" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.022702"/>
+        <testcase name="Bladedown can be enabled" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Bladedown can be enabled" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.037339"/>
+        <testcase name="Raw html tags are stripped by default" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Raw html tags are stripped by default" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.021856"/>
+        <testcase name="Raw html tags are not stripped when explicitly enabled" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Raw html tags are not stripped when explicitly enabled" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.021620"/>
+        <testcase name="Has features array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Has features array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.019611"/>
+        <testcase name="The features array is empty by default" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::The features array is empty by default" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.019583"/>
+        <testcase name="Features can be added to the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Features can be added to the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.019584"/>
+        <testcase name="Features can be removed from the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Features can be removed from the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.019659"/>
+        <testcase name="Method chaining can be used to programmatically add features to the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Method chaining can be used to programmatically add features to the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="2" time="0.019886"/>
+        <testcase name="Method chaining can be used to programmatically remove features from the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Method chaining can be used to programmatically remove features from the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="2" time="0.020235"/>
+        <testcase name="Method with table of contents method chain adds the table of contents feature" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Method with table of contents method chain adds the table of contents feature" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.019809"/>
+        <testcase name="Method with permalinks method chain adds the permalinks feature" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Method with permalinks method chain adds the permalinks feature" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.020228"/>
+        <testcase name="Has feature returns true if the feature is in the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Has feature returns true if the feature is in the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.021145"/>
+        <testcase name="Has feature returns false if the feature is not in the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Has feature returns false if the feature is not in the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.021605"/>
+        <testcase name="Method can enable permalinks returns true if the permalinks feature is in the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Method can enable permalinks returns true if the permalinks feature is in the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.020242"/>
+        <testcase name="Method can enable permalinks is automatically for documentation pages" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Method can enable permalinks is automatically for documentation pages" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.019745"/>
+        <testcase name="Method can enable permalinks returns false if the permalinks feature is not in the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Method can enable permalinks returns false if the permalinks feature is not in the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.019666"/>
+        <testcase name="Method can enable torchlight returns true if the torchlight feature is in the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Method can enable torchlight returns true if the torchlight feature is in the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.019918"/>
+        <testcase name="Method can enable torchlight returns false if the torchlight feature is not in the array" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Method can enable torchlight returns false if the torchlight feature is not in the array" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.020002"/>
+        <testcase name="Strip indentation method with unindented markdown" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Strip indentation method with unindented markdown" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.019747"/>
+        <testcase name="Strip indentation method with indented markdown" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Strip indentation method with indented markdown" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="3" time="0.019924"/>
+        <testcase name="Strip indentation method with tab indented markdown" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Strip indentation method with tab indented markdown" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.019780"/>
+        <testcase name="Strip indentation method with carriage return line feed" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Strip indentation method with carriage return line feed" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.019780"/>
+        <testcase name="Strip indentation method with code indentation" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Strip indentation method with code indentation" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.019733"/>
+        <testcase name="Strip indentation method with empty newlines" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Strip indentation method with empty newlines" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="2" time="0.033107"/>
+        <testcase name="Strip indentation method with trailing newline" file="Markdown Service (Hyde\Framework\Testing\Feature\MarkdownService)::Strip indentation method with trailing newline" class="Hyde\Framework\Testing\Feature\MarkdownServiceTest" classname="Hyde.Framework.Testing.Feature.MarkdownServiceTest" assertions="1" time="0.020580"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\MetadataHelperTest" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)" tests="9" assertions="9" errors="0" failures="0" skipped="0" time="0.222010">
+        <testcase name="Name method returns a valid html meta string" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)::Name method returns a valid html meta string" class="Hyde\Framework\Testing\Feature\MetadataHelperTest" classname="Hyde.Framework.Testing.Feature.MetadataHelperTest" assertions="1" time="0.059393"/>
+        <testcase name="Property method returns a valid html meta string" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)::Property method returns a valid html meta string" class="Hyde\Framework\Testing\Feature\MetadataHelperTest" classname="Hyde.Framework.Testing.Feature.MetadataHelperTest" assertions="1" time="0.019397"/>
+        <testcase name="Property method accepts property with og prefix" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)::Property method accepts property with og prefix" class="Hyde\Framework\Testing\Feature\MetadataHelperTest" classname="Hyde.Framework.Testing.Feature.MetadataHelperTest" assertions="1" time="0.019437"/>
+        <testcase name="Property method accepts property without og prefix" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)::Property method accepts property without og prefix" class="Hyde\Framework\Testing\Feature\MetadataHelperTest" classname="Hyde.Framework.Testing.Feature.MetadataHelperTest" assertions="1" time="0.019618"/>
+        <testcase name="Link method returns a valid html link string" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)::Link method returns a valid html link string" class="Hyde\Framework\Testing\Feature\MetadataHelperTest" classname="Hyde.Framework.Testing.Feature.MetadataHelperTest" assertions="1" time="0.019793"/>
+        <testcase name="Link method returns a valid html link string with attributes" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)::Link method returns a valid html link string with attributes" class="Hyde\Framework\Testing\Feature\MetadataHelperTest" classname="Hyde.Framework.Testing.Feature.MetadataHelperTest" assertions="1" time="0.019677"/>
+        <testcase name="Link method returns a valid html link string with multiple attributes" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)::Link method returns a valid html link string with multiple attributes" class="Hyde\Framework\Testing\Feature\MetadataHelperTest" classname="Hyde.Framework.Testing.Feature.MetadataHelperTest" assertions="1" time="0.019739"/>
+        <testcase name="Get method returns global metadata bag" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)::Get method returns global metadata bag" class="Hyde\Framework\Testing\Feature\MetadataHelperTest" classname="Hyde.Framework.Testing.Feature.MetadataHelperTest" assertions="1" time="0.019970"/>
+        <testcase name="Render method renders global metadata bag" file="Metadata Helper (Hyde\Framework\Testing\Feature\MetadataHelper)::Render method renders global metadata bag" class="Hyde\Framework\Testing\Feature\MetadataHelperTest" classname="Hyde.Framework.Testing.Feature.MetadataHelperTest" assertions="1" time="0.024986"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\MetadataTest" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)" tests="48" assertions="55" errors="0" failures="0" skipped="0" time="1.082050">
+        <testcase name="Metadata object is generated automatically" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Metadata object is generated automatically" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="3" time="0.033300"/>
+        <testcase name="Link item model" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Link item model" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="3" time="0.019982"/>
+        <testcase name="Metadata item model" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Metadata item model" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="2" time="0.019875"/>
+        <testcase name="Open graph item model" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Open graph item model" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="3" time="0.019960"/>
+        <testcase name="Link item can be added" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Link item can be added" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021050"/>
+        <testcase name="Metadata item can be added" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Metadata item can be added" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.020666"/>
+        <testcase name="Open graph item can be added" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Open graph item can be added" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021139"/>
+        <testcase name="Generic item can be added" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Generic item can be added" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021100"/>
+        <testcase name="Multiple items can be accessed with get method" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Multiple items can be accessed with get method" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021210"/>
+        <testcase name="Multiple items of same key and type only keeps latest" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Multiple items of same key and type only keeps latest" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021382"/>
+        <testcase name="Render returns html string of imploded metadata arrays" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Render returns html string of imploded metadata arrays" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021276"/>
+        <testcase name="Custom metadata overrides config defined metadata" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Custom metadata overrides config defined metadata" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.020966"/>
+        <testcase name="Dynamic metadata overrides config defined metadata" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic metadata overrides config defined metadata" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021659"/>
+        <testcase name="Does not add canonical link when base url is not set" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add canonical link when base url is not set" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021800"/>
+        <testcase name="Does not add canonical link when identifier is not set" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add canonical link when identifier is not set" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021199"/>
+        <testcase name="Adds canonical link when base url and identifier is set" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds canonical link when base url and identifier is set" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.034658"/>
+        <testcase name="Canonical link uses clean url setting" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Canonical link uses clean url setting" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.022176"/>
+        <testcase name="Can override canonical link with front matter" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Can override canonical link with front matter" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021272"/>
+        <testcase name="Adds twitter and open graph title when title is set" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds twitter and open graph title when title is set" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.020932"/>
+        <testcase name="Does not add twitter and open graph title when no title is set" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add twitter and open graph title when no title is set" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021029"/>
+        <testcase name="Adds description when description is set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds description when description is set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021255"/>
+        <testcase name="Does not add description when description is not set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add description when description is not set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021289"/>
+        <testcase name="Adds author when author is set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds author when author is set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021405"/>
+        <testcase name="Does not add author when author is not set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add author when author is not set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021265"/>
+        <testcase name="Adds keywords when category is set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds keywords when category is set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021256"/>
+        <testcase name="Does not add keywords when category is not set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add keywords when category is not set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021118"/>
+        <testcase name="Adds url property when canonical url is set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds url property when canonical url is set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021142"/>
+        <testcase name="Does not add url property when canonical url is not set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add url property when canonical url is not set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021118"/>
+        <testcase name="Does not add url property when canonical url is null" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add url property when canonical url is null" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021178"/>
+        <testcase name="Adds title property when title is set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds title property when title is set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021296"/>
+        <testcase name="Does not add title property when title is not set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add title property when title is not set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021404"/>
+        <testcase name="Adds published time property when date is set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds published time property when date is set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021295"/>
+        <testcase name="Does not add published time property when date is not set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add published time property when date is not set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021388"/>
+        <testcase name="Adds image property when image is set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds image property when image is set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.023284"/>
+        <testcase name="Does not add image property when image is not set in post" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Does not add image property when image is not set in post" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.022568"/>
+        <testcase name="Adds type property automatically" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Adds type property automatically" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.022842"/>
+        <testcase name="Dynamic post meta properties returns base array when initialized with empty front matter" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post meta properties returns base array when initialized with empty front matter" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.022747"/>
+        <testcase name="Dynamic post meta properties contains image metadata when featured image set to string" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post meta properties contains image metadata when featured image set to string" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.022787"/>
+        <testcase name="Dynamic post meta properties contains image link that is always relative" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post meta properties contains image link that is always relative" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.030975"/>
+        <testcase name="Dynamic post meta properties contains image link that is always relative for nested posts" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post meta properties contains image link that is always relative for nested posts" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.030137"/>
+        <testcase name="Dynamic post meta properties contains image link that is always relative for nested output directories" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post meta properties contains image link that is always relative for nested output directories" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024090"/>
+        <testcase name="Dynamic post meta properties contains image link that is always relative for nested posts and nested output directories" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post meta properties contains image link that is always relative for nested posts and nested output directories" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.029121"/>
+        <testcase name="Dynamic post meta properties contains image link that uses the configured media directory" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post meta properties contains image link that uses the configured media directory" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.024405"/>
+        <testcase name="Dynamic post meta properties contains image metadata when featured image set to array with path" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post meta properties contains image metadata when featured image set to array with path" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021775"/>
+        <testcase name="Dynamic post meta properties contains image metadata when featured image set to array with url" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post meta properties contains image metadata when featured image set to array with url" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021188"/>
+        <testcase name="Dynamic post author returns author name when author set to array using username" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post author returns author name when author set to array using username" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021029"/>
+        <testcase name="Dynamic post author returns author name when author set to array using name" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::Dynamic post author returns author name when author set to array using name" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021033"/>
+        <testcase name="No author is set when author set to array without name or username" file="Metadata (Hyde\Framework\Testing\Feature\Metadata)::No author is set when author set to array without name or username" class="Hyde\Framework\Testing\Feature\MetadataTest" classname="Hyde.Framework.Testing.Feature.MetadataTest" assertions="1" time="0.021029"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\NavigationDataTest" file="Navigation Data (Hyde\Framework\Testing\Feature\NavigationData)" tests="5" assertions="8" errors="0" failures="0" skipped="0" time="0.086029">
+        <testcase name="Class matches schema" file="Navigation Data (Hyde\Framework\Testing\Feature\NavigationData)::Class matches schema" class="Hyde\Framework\Testing\Feature\NavigationDataTest" classname="Hyde.Framework.Testing.Feature.NavigationDataTest" assertions="1" time="0.077803"/>
+        <testcase name="Construct" file="Navigation Data (Hyde\Framework\Testing\Feature\NavigationData)::Construct" class="Hyde\Framework\Testing\Feature\NavigationDataTest" classname="Hyde.Framework.Testing.Feature.NavigationDataTest" assertions="4" time="0.002150"/>
+        <testcase name="Make" file="Navigation Data (Hyde\Framework\Testing\Feature\NavigationData)::Make" class="Hyde\Framework\Testing\Feature\NavigationDataTest" classname="Hyde.Framework.Testing.Feature.NavigationDataTest" assertions="1" time="0.002004"/>
+        <testcase name="To array" file="Navigation Data (Hyde\Framework\Testing\Feature\NavigationData)::To array" class="Hyde\Framework\Testing\Feature\NavigationDataTest" classname="Hyde.Framework.Testing.Feature.NavigationDataTest" assertions="1" time="0.001947"/>
+        <testcase name="Json serialize" file="Navigation Data (Hyde\Framework\Testing\Feature\NavigationData)::Json serialize" class="Hyde\Framework\Testing\Feature\NavigationDataTest" classname="Hyde.Framework.Testing.Feature.NavigationDataTest" assertions="1" time="0.002125"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\NavigationMenuTest" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)" tests="29" assertions="48" errors="0" failures="0" skipped="0" time="0.774487">
+        <testcase name="Constructor" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Constructor" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.030802"/>
+        <testcase name="Generate method creates collection of nav items" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Generate method creates collection of nav items" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.023745"/>
+        <testcase name="Get items returns items" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Get items returns items" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.024315"/>
+        <testcase name="Items are sorted by priority" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Items are sorted by priority" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.025890"/>
+        <testcase name="Items with hidden property set to true are not added" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Items with hidden property set to true are not added" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.025198"/>
+        <testcase name="Created collection is sorted by navigation menu priority" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Created collection is sorted by navigation menu priority" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.027586"/>
+        <testcase name="Is sorted automatically when using navigation menu create" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Is sorted automatically when using navigation menu create" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.026418"/>
+        <testcase name="Collection only contains nav items" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Collection only contains nav items" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.024106"/>
+        <testcase name="External link can be added in config" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::External link can be added in config" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.024679"/>
+        <testcase name="Path link can be added in config" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Path link can be added in config" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.024632"/>
+        <testcase name="Duplicates are removed when adding in config" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Duplicates are removed when adding in config" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.024651"/>
+        <testcase name="Duplicates are removed when adding in config regardless of destination" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Duplicates are removed when adding in config regardless of destination" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.024733"/>
+        <testcase name="Config items take precedence over generated items" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Config items take precedence over generated items" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.026164"/>
+        <testcase name="Documentation pages that are not index are not added to the menu" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Documentation pages that are not index are not added to the menu" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.027882"/>
+        <testcase name="Pages in subdirectories are not added to the navigation menu" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Pages in subdirectories are not added to the navigation menu" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.026468"/>
+        <testcase name="Pages in subdirectories can be added to the navigation menu with config flat setting" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Pages in subdirectories can be added to the navigation menu with config flat setting" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.027136"/>
+        <testcase name="Pages in subdirectories are not added to the navigation menu with config dropdown setting" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Pages in subdirectories are not added to the navigation menu with config dropdown setting" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.027819"/>
+        <testcase name="Has dropdowns returns false when there are no dropdowns" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Has dropdowns returns false when there are no dropdowns" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.024424"/>
+        <testcase name="Has dropdowns returns true when there are dropdowns" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Has dropdowns returns true when there are dropdowns" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.025231"/>
+        <testcase name="Has dropdowns always returns false when dropdowns are disabled" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Has dropdowns always returns false when dropdowns are disabled" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.024769"/>
+        <testcase name="Get dropdowns returns empty array there are no dropdowns" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Get dropdowns returns empty array there are no dropdowns" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.024237"/>
+        <testcase name="Get dropdowns returns correct array when there are dropdowns" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Get dropdowns returns correct array when there are dropdowns" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.026654"/>
+        <testcase name="Get dropdowns with multiple items" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Get dropdowns with multiple items" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.029014"/>
+        <testcase name="Get dropdowns with multiple dropdowns" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Get dropdowns with multiple dropdowns" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.029646"/>
+        <testcase name="Get dropdowns throws exception when disabled" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Get dropdowns throws exception when disabled" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.037546"/>
+        <testcase name="Documentation pages do not get added to dropdowns" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Documentation pages do not get added to dropdowns" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.027307"/>
+        <testcase name="Blog posts do not get added to dropdowns" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Blog posts do not get added to dropdowns" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.027693"/>
+        <testcase name="Pages in dropdowns do not get added to the main navigation" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Pages in dropdowns do not get added to the main navigation" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="2" time="0.029128"/>
+        <testcase name="Dropdown menu items are sorted by priority" file="Navigation Menu (Hyde\Framework\Testing\Feature\NavigationMenu)::Dropdown menu items are sorted by priority" class="Hyde\Framework\Testing\Feature\NavigationMenuTest" classname="Hyde.Framework.Testing.Feature.NavigationMenuTest" assertions="1" time="0.026611"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\PageCollectionTest" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)" tests="12" assertions="38" errors="0" failures="0" skipped="0" time="0.387636">
+        <testcase name="Boot method creates new page collection and discovers pages automatically" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Boot method creates new page collection and discovers pages automatically" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="3" time="0.065422"/>
+        <testcase name="Blade pages are discovered" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Blade pages are discovered" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="2" time="0.028098"/>
+        <testcase name="Markdown pages are discovered" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Markdown pages are discovered" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="2" time="0.029210"/>
+        <testcase name="Markdown posts are discovered" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Markdown posts are discovered" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="2" time="0.030473"/>
+        <testcase name="Documentation pages are discovered" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Documentation pages are discovered" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="2" time="0.029671"/>
+        <testcase name="Get page returns parsed page object for given source path" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Get page returns parsed page object for given source path" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="1" time="0.026328"/>
+        <testcase name="Get pages returns collection of pages of given class" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Get pages returns collection of pages of given class" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="11" time="0.041009"/>
+        <testcase name="Get pages returns all pages when not supplied with class string" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Get pages returns all pages when not supplied with class string" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="6" time="0.035672"/>
+        <testcase name="Get pages returns empty collection when no pages are discovered" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Get pages returns empty collection when no pages are discovered" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="1" time="0.022570"/>
+        <testcase name="Pages are not discovered for disabled features" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Pages are not discovered for disabled features" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="1" time="0.020634"/>
+        <testcase name="Pages with custom source directories are discovered properly" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Pages with custom source directories are discovered properly" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="5" time="0.034732"/>
+        <testcase name="Get file throws exception when file is not found" file="Page Collection (Hyde\Framework\Testing\Feature\PageCollection)::Get file throws exception when file is not found" class="Hyde\Framework\Testing\Feature\PageCollectionTest" classname="Hyde.Framework.Testing.Feature.PageCollectionTest" assertions="2" time="0.023819"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\PageModelConstructorsTest" file="Page Model Constructors (Hyde\Framework\Testing\Feature\PageModelConstructors)" tests="5" assertions="5" errors="0" failures="0" skipped="0" time="0.125740">
+        <testcase name="Dynamic data constructor can find title from front matter" file="Page Model Constructors (Hyde\Framework\Testing\Feature\PageModelConstructors)::Dynamic data constructor can find title from front matter" class="Hyde\Framework\Testing\Feature\PageModelConstructorsTest" classname="Hyde.Framework.Testing.Feature.PageModelConstructorsTest" assertions="1" time="0.037936"/>
+        <testcase name="Dynamic data constructor can find title from h 1 tag" file="Page Model Constructors (Hyde\Framework\Testing\Feature\PageModelConstructors)::Dynamic data constructor can find title from h 1 tag" class="Hyde\Framework\Testing\Feature\PageModelConstructorsTest" classname="Hyde.Framework.Testing.Feature.PageModelConstructorsTest" assertions="1" time="0.021751"/>
+        <testcase name="Dynamic data constructor can find title from slug" file="Page Model Constructors (Hyde\Framework\Testing\Feature\PageModelConstructors)::Dynamic data constructor can find title from slug" class="Hyde\Framework\Testing\Feature\PageModelConstructorsTest" classname="Hyde.Framework.Testing.Feature.PageModelConstructorsTest" assertions="1" time="0.021841"/>
+        <testcase name="Documentation page parser can get group from front matter" file="Page Model Constructors (Hyde\Framework\Testing\Feature\PageModelConstructors)::Documentation page parser can get group from front matter" class="Hyde\Framework\Testing\Feature\PageModelConstructorsTest" classname="Hyde.Framework.Testing.Feature.PageModelConstructorsTest" assertions="1" time="0.022108"/>
+        <testcase name="Documentation page parser can get group automatically from nested page" file="Page Model Constructors (Hyde\Framework\Testing\Feature\PageModelConstructors)::Documentation page parser can get group automatically from nested page" class="Hyde\Framework\Testing\Feature\PageModelConstructorsTest" classname="Hyde.Framework.Testing.Feature.PageModelConstructorsTest" assertions="1" time="0.022103"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\PaginatorTest" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)" tests="32" assertions="60" errors="0" failures="0" skipped="0" time="0.708713">
+        <testcase name="It can be instantiated" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::It can be instantiated" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.053162"/>
+        <testcase name="Get paginated page collection" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Get paginated page collection" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.019900"/>
+        <testcase name="Get paginated page collection with pages" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Get paginated page collection with pages" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="4" time="0.020977"/>
+        <testcase name="Collection is chunked by specified setting value" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Collection is chunked by specified setting value" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="3" time="0.019829"/>
+        <testcase name="Get items for page returns the correct chunk" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Get items for page returns the correct chunk" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="10" time="0.021577"/>
+        <testcase name="Can get current page number" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Can get current page number" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.019931"/>
+        <testcase name="Can set current page number" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Can set current page number" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.019804"/>
+        <testcase name="Set current page number requires integer to be greater than nought" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Set current page number requires integer to be greater than nought" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.019659"/>
+        <testcase name="Set current page number requires integer to be greater than nought" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Set current page number requires integer to be greater than nought" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.019602"/>
+        <testcase name="Set current page number requires integer to be less than total pages" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Set current page number requires integer to be less than total pages" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="2" time="0.020027"/>
+        <testcase name="Cannot set invalid current page number in constructor" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Cannot set invalid current page number in constructor" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.019734"/>
+        <testcase name="Last page returns the last page number" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Last page returns the last page number" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.019792"/>
+        <testcase name="Total pages returns the total number of pages" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Total pages returns the total number of pages" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.019754"/>
+        <testcase name="Per page returns the number of items to be shown per page" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Per page returns the number of items to be shown per page" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020088"/>
+        <testcase name="Has multiple pages returns true if there are enough items to split into multiple pages" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Has multiple pages returns true if there are enough items to split into multiple pages" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020027"/>
+        <testcase name="Has pages returns false if there are not enough items to split into multiple pages" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Has pages returns false if there are not enough items to split into multiple pages" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020036"/>
+        <testcase name="Has more pages returns true if cursor can navigate forward" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Has more pages returns true if cursor can navigate forward" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.026968"/>
+        <testcase name="Has more pages returns false if cursor cannot navigate forward" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Has more pages returns false if cursor cannot navigate forward" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020250"/>
+        <testcase name="Has fewer pages returns true if cursor can navigate back" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Has fewer pages returns true if cursor can navigate back" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.019795"/>
+        <testcase name="Has fewer pages returns false if cursor cannot navigate back" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Has fewer pages returns false if cursor cannot navigate back" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.019743"/>
+        <testcase name="Previous method without fewer pages returns false" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Previous method without fewer pages returns false" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.019853"/>
+        <testcase name="Next method without more pages returns false" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Next method without more pages returns false" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.019815"/>
+        <testcase name="Previous method returns previous page link when no base route is set" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Previous method returns previous page link when no base route is set" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.019877"/>
+        <testcase name="Next method returns next page link when no base route is set" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Next method returns next page link when no base route is set" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.019804"/>
+        <testcase name="Previous and next methods with base route set" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Previous and next methods with base route set" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="6" time="0.027685"/>
+        <testcase name="Previous number without fewer pages returns false" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Previous number without fewer pages returns false" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.032766"/>
+        <testcase name="Next number without more pages returns false" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Next number without more pages returns false" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.021197"/>
+        <testcase name="Previous number returns the previous page number when there is one" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Previous number returns the previous page number when there is one" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020203"/>
+        <testcase name="Next number returns the next page number when there is one" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Next number returns the next page number when there is one" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.019836"/>
+        <testcase name="Get page links" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Get page links" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.020030"/>
+        <testcase name="Get page links with base route" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::Get page links with base route" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="1" time="0.026777"/>
+        <testcase name="First item number on page" file="Paginator (Hyde\Framework\Testing\Feature\Paginator)::First item number on page" class="Hyde\Framework\Testing\Feature\PaginatorTest" classname="Hyde.Framework.Testing.Feature.PaginatorTest" assertions="9" time="0.020216"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\PharSupportTest" file="Phar Support (Hyde\Framework\Testing\Feature\PharSupport)" tests="6" assertions="8" errors="0" failures="0" skipped="0" time="0.161901">
+        <testcase name="Active" file="Phar Support (Hyde\Framework\Testing\Feature\PharSupport)::Active" class="Hyde\Framework\Testing\Feature\PharSupportTest" classname="Hyde.Framework.Testing.Feature.PharSupportTest" assertions="1" time="0.064456"/>
+        <testcase name="Mock active" file="Phar Support (Hyde\Framework\Testing\Feature\PharSupport)::Mock active" class="Hyde\Framework\Testing\Feature\PharSupportTest" classname="Hyde.Framework.Testing.Feature.PharSupportTest" assertions="2" time="0.019527"/>
+        <testcase name="Has vendor directory" file="Phar Support (Hyde\Framework\Testing\Feature\PharSupport)::Has vendor directory" class="Hyde\Framework\Testing\Feature\PharSupportTest" classname="Hyde.Framework.Testing.Feature.PharSupportTest" assertions="1" time="0.019374"/>
+        <testcase name="Mock has vendor directory" file="Phar Support (Hyde\Framework\Testing\Feature\PharSupport)::Mock has vendor directory" class="Hyde\Framework\Testing\Feature\PharSupportTest" classname="Hyde.Framework.Testing.Feature.PharSupportTest" assertions="2" time="0.019355"/>
+        <testcase name="Vendor path can run in phar" file="Phar Support (Hyde\Framework\Testing\Feature\PharSupport)::Vendor path can run in phar" class="Hyde\Framework\Testing\Feature\PharSupportTest" classname="Hyde.Framework.Testing.Feature.PharSupportTest" assertions="1" time="0.019543"/>
+        <testcase name="Vendor path can run in phar with path argument" file="Phar Support (Hyde\Framework\Testing\Feature\PharSupport)::Vendor path can run in phar with path argument" class="Hyde\Framework\Testing\Feature\PharSupportTest" classname="Hyde.Framework.Testing.Feature.PharSupportTest" assertions="1" time="0.019647"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\PostsAuthorIntegrationTest" file="Posts Author Integration (Hyde\Framework\Testing\Feature\PostsAuthorIntegration)" tests="3" assertions="15" errors="0" failures="0" skipped="0" time="0.131418">
+        <testcase name="Create post with undefined author" file="Posts Author Integration (Hyde\Framework\Testing\Feature\PostsAuthorIntegration)::Create post with undefined author" class="Hyde\Framework\Testing\Feature\PostsAuthorIntegrationTest" classname="Hyde.Framework.Testing.Feature.PostsAuthorIntegrationTest" assertions="4" time="0.050156"/>
+        <testcase name="Create post with defined author with name" file="Posts Author Integration (Hyde\Framework\Testing\Feature\PostsAuthorIntegration)::Create post with defined author with name" class="Hyde\Framework\Testing\Feature\PostsAuthorIntegrationTest" classname="Hyde.Framework.Testing.Feature.PostsAuthorIntegrationTest" assertions="5" time="0.040576"/>
+        <testcase name="Create post with defined author with website" file="Posts Author Integration (Hyde\Framework\Testing\Feature\PostsAuthorIntegration)::Create post with defined author with website" class="Hyde\Framework\Testing\Feature\PostsAuthorIntegrationTest" classname="Hyde.Framework.Testing.Feature.PostsAuthorIntegrationTest" assertions="6" time="0.040686"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\ReadingTimeTest" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)" tests="12" assertions="38" errors="0" failures="0" skipped="0" time="0.042981">
+        <testcase name="Construct" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::Construct" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="1" time="0.018062"/>
+        <testcase name="To string" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::To string" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="1" time="0.002052"/>
+        <testcase name="Get word count" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::Get word count" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="4" time="0.002228"/>
+        <testcase name="Get minutes" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::Get minutes" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="4" time="0.002211"/>
+        <testcase name="Get seconds" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::Get seconds" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="4" time="0.002166"/>
+        <testcase name="Get seconds over" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::Get seconds over" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="4" time="0.002216"/>
+        <testcase name="Get formatted" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::Get formatted" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="4" time="0.002200"/>
+        <testcase name="Get formatted with custom formatting" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::Get formatted with custom formatting" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="4" time="0.002235"/>
+        <testcase name="Get formatted formats up to one minute when round up is set" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::Get formatted formats up to one minute when round up is set" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="4" time="0.002228"/>
+        <testcase name="Format using closure" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::Format using closure" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="4" time="0.002234"/>
+        <testcase name="From string" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::From string" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="2" time="0.002085"/>
+        <testcase name="From file" file="Reading Time (Hyde\Framework\Testing\Feature\ReadingTime)::From file" class="Hyde\Framework\Testing\Feature\ReadingTimeTest" classname="Hyde.Framework.Testing.Feature.ReadingTimeTest" assertions="2" time="0.003064"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\RedirectTest" file="Redirect (Hyde\Framework\Testing\Feature\Redirect)" tests="4" assertions="12" errors="0" failures="0" skipped="0" time="0.116168">
+        <testcase name="Can create a redirect" file="Redirect (Hyde\Framework\Testing\Feature\Redirect)::Can create a redirect" class="Hyde\Framework\Testing\Feature\RedirectTest" classname="Hyde.Framework.Testing.Feature.RedirectTest" assertions="7" time="0.045080"/>
+        <testcase name="Path parameter is normalized" file="Redirect (Hyde\Framework\Testing\Feature\Redirect)::Path parameter is normalized" class="Hyde\Framework\Testing\Feature\RedirectTest" classname="Hyde.Framework.Testing.Feature.RedirectTest" assertions="1" time="0.021792"/>
+        <testcase name="Text can be disabled" file="Redirect (Hyde\Framework\Testing\Feature\Redirect)::Text can be disabled" class="Hyde\Framework\Testing\Feature\RedirectTest" classname="Hyde.Framework.Testing.Feature.RedirectTest" assertions="2" time="0.022970"/>
+        <testcase name="Redirect pages can be compilable by static site though manual discovery" file="Redirect (Hyde\Framework\Testing\Feature\Redirect)::Redirect pages can be compilable by static site though manual discovery" class="Hyde\Framework\Testing\Feature\RedirectTest" classname="Hyde.Framework.Testing.Feature.RedirectTest" assertions="2" time="0.026325"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\RenderHelperTest" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)" tests="14" assertions="36" errors="0" failures="0" skipped="0" time="0.329335">
+        <testcase name="Set and get page" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Set and get page" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.030819"/>
+        <testcase name="Set page shares data to view automatically" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Set page shares data to view automatically" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.024393"/>
+        <testcase name="Get route" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Get route" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.024385"/>
+        <testcase name="Get route key" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Get route key" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.024267"/>
+        <testcase name="Share to view" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Share to view" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="6" time="0.024757"/>
+        <testcase name="Share" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Share" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.021453"/>
+        <testcase name="Share invalid property" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Share invalid property" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.020083"/>
+        <testcase name="Share cascades data to view" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Share cascades data to view" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.020249"/>
+        <testcase name="Clear data" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Clear data" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.024687"/>
+        <testcase name="Clear data on facade" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Clear data on facade" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.024434"/>
+        <testcase name="Clear data cascades to clear its view data" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Clear data cascades to clear its view data" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="6" time="0.024668"/>
+        <testcase name="Clear data does not clear other view data" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Clear data does not clear other view data" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.019955"/>
+        <testcase name="Clear data does not clear render instance from view data" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::Clear data does not clear render instance from view data" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.020289"/>
+        <testcase name="To array" file="Render Helper (Hyde\Framework\Testing\Feature\RenderHelper)::To array" class="Hyde\Framework\Testing\Feature\RenderHelperTest" classname="Hyde.Framework.Testing.Feature.RenderHelperTest" assertions="2" time="0.024895"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\RouteCollectionTest" file="Route Collection (Hyde\Framework\Testing\Feature\RouteCollection)" tests="7" assertions="19" errors="0" failures="0" skipped="0" time="0.237909">
+        <testcase name="Boot method discovers all pages" file="Route Collection (Hyde\Framework\Testing\Feature\RouteCollection)::Boot method discovers all pages" class="Hyde\Framework\Testing\Feature\RouteCollectionTest" classname="Hyde.Framework.Testing.Feature.RouteCollectionTest" assertions="3" time="0.047759"/>
+        <testcase name="Boot method discovers all page types" file="Route Collection (Hyde\Framework\Testing\Feature\RouteCollection)::Boot method discovers all page types" class="Hyde\Framework\Testing\Feature\RouteCollectionTest" classname="Hyde.Framework.Testing.Feature.RouteCollectionTest" assertions="3" time="0.035840"/>
+        <testcase name="Get routes returns all routes" file="Route Collection (Hyde\Framework\Testing\Feature\RouteCollection)::Get routes returns all routes" class="Hyde\Framework\Testing\Feature\RouteCollectionTest" classname="Hyde.Framework.Testing.Feature.RouteCollectionTest" assertions="1" time="0.029933"/>
+        <testcase name="Get routes for model returns collection of routes of given class" file="Route Collection (Hyde\Framework\Testing\Feature\RouteCollection)::Get routes for model returns collection of routes of given class" class="Hyde\Framework\Testing\Feature\RouteCollectionTest" classname="Hyde.Framework.Testing.Feature.RouteCollectionTest" assertions="6" time="0.049569"/>
+        <testcase name="Add route adds new route" file="Route Collection (Hyde\Framework\Testing\Feature\RouteCollection)::Add route adds new route" class="Hyde\Framework\Testing\Feature\RouteCollectionTest" classname="Hyde.Framework.Testing.Feature.RouteCollectionTest" assertions="3" time="0.026116"/>
+        <testcase name="Get route" file="Route Collection (Hyde\Framework\Testing\Feature\RouteCollection)::Get route" class="Hyde\Framework\Testing\Feature\RouteCollectionTest" classname="Hyde.Framework.Testing.Feature.RouteCollectionTest" assertions="1" time="0.024737"/>
+        <testcase name="Get route with non existing route" file="Route Collection (Hyde\Framework\Testing\Feature\RouteCollection)::Get route with non existing route" class="Hyde\Framework\Testing\Feature\RouteCollectionTest" classname="Hyde.Framework.Testing.Feature.RouteCollectionTest" assertions="2" time="0.023956"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\RouteListTest" file="Route List (Hyde\Framework\Testing\Feature\RouteList)" tests="3" assertions="3" errors="0" failures="0" skipped="0" time="0.083799">
+        <testcase name="Route list" file="Route List (Hyde\Framework\Testing\Feature\RouteList)::Route list" class="Hyde\Framework\Testing\Feature\RouteListTest" classname="Hyde.Framework.Testing.Feature.RouteListTest" assertions="1" time="0.035672"/>
+        <testcase name="Headers" file="Route List (Hyde\Framework\Testing\Feature\RouteList)::Headers" class="Hyde\Framework\Testing\Feature\RouteListTest" classname="Hyde.Framework.Testing.Feature.RouteListTest" assertions="1" time="0.023714"/>
+        <testcase name="With dynamic pages" file="Route List (Hyde\Framework\Testing\Feature\RouteList)::With dynamic pages" class="Hyde\Framework\Testing\Feature\RouteListTest" classname="Hyde.Framework.Testing.Feature.RouteListTest" assertions="1" time="0.024413"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)" tests="9" assertions="9" errors="0" failures="0" skipped="0" time="0.189964">
+        <testcase name="It renders blade echo syntax" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)::It renders blade echo syntax" class="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.BladeDownProcessorTest" assertions="1" time="0.024981"/>
+        <testcase name="It renders blade within multiline markdown" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)::It renders blade within multiline markdown" class="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.BladeDownProcessorTest" assertions="1" time="0.020609"/>
+        <testcase name="It renders blade views" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)::It renders blade views" class="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.BladeDownProcessorTest" assertions="1" time="0.021216"/>
+        <testcase name="Directive is case insensitive" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)::Directive is case insensitive" class="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.BladeDownProcessorTest" assertions="1" time="0.020500"/>
+        <testcase name="Directive is ignored if it is not at the start of a line" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)::Directive is ignored if it is not at the start of a line" class="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.BladeDownProcessorTest" assertions="1" time="0.019761"/>
+        <testcase name="It renders blade echo syntax with variables" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)::It renders blade echo syntax with variables" class="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.BladeDownProcessorTest" assertions="1" time="0.020802"/>
+        <testcase name="It renders blade views with variables" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)::It renders blade views with variables" class="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.BladeDownProcessorTest" assertions="1" time="0.021441"/>
+        <testcase name="Preprocess method expands shortcode" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)::Preprocess method expands shortcode" class="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.BladeDownProcessorTest" assertions="1" time="0.020202"/>
+        <testcase name="Process method renders shortcode" file="Blade Down Processor (Hyde\Framework\Testing\Feature\Services\BladeDownProcessor)::Process method renders shortcode" class="Hyde\Framework\Testing\Feature\Services\BladeDownProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.BladeDownProcessorTest" assertions="1" time="0.020452"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Services\BuildTaskServiceTest" file="Build Task Service (Hyde\Framework\Testing\Feature\Services\BuildTaskService)" tests="8" assertions="11" errors="0" failures="0" skipped="0" time="0.227121">
+        <testcase name="Build command can run build tasks" file="Build Task Service (Hyde\Framework\Testing\Feature\Services\BuildTaskService)::Build command can run build tasks" class="Hyde\Framework\Testing\Feature\Services\BuildTaskServiceTest" classname="Hyde.Framework.Testing.Feature.Services.BuildTaskServiceTest" assertions="4" time="0.052151"/>
+        <testcase name="Run post build tasks runs configured tasks does nothing if no tasks are configured" file="Build Task Service (Hyde\Framework\Testing\Feature\Services\BuildTaskService)::Run post build tasks runs configured tasks does nothing if no tasks are configured" class="Hyde\Framework\Testing\Feature\Services\BuildTaskServiceTest" classname="Hyde.Framework.Testing.Feature.Services.BuildTaskServiceTest" assertions="1" time="0.025732"/>
+        <testcase name="Get post build tasks returns array merged with config" file="Build Task Service (Hyde\Framework\Testing\Feature\Services\BuildTaskService)::Get post build tasks returns array merged with config" class="Hyde\Framework\Testing\Feature\Services\BuildTaskServiceTest" classname="Hyde.Framework.Testing.Feature.Services.BuildTaskServiceTest" assertions="1" time="0.024547"/>
+        <testcase name="Get post build tasks merges duplicate keys" file="Build Task Service (Hyde\Framework\Testing\Feature\Services\BuildTaskService)::Get post build tasks merges duplicate keys" class="Hyde\Framework\Testing\Feature\Services\BuildTaskServiceTest" classname="Hyde.Framework.Testing.Feature.Services.BuildTaskServiceTest" assertions="1" time="0.024633"/>
+        <testcase name="Run post build tasks runs configured tasks" file="Build Task Service (Hyde\Framework\Testing\Feature\Services\BuildTaskService)::Run post build tasks runs configured tasks" class="Hyde\Framework\Testing\Feature\Services\BuildTaskServiceTest" classname="Hyde.Framework.Testing.Feature.Services.BuildTaskServiceTest" assertions="1" time="0.026834"/>
+        <testcase name="Exception handler shows error message and exits with code 1 without throwing exception" file="Build Task Service (Hyde\Framework\Testing\Feature\Services\BuildTaskService)::Exception handler shows error message and exits with code 1 without throwing exception" class="Hyde\Framework\Testing\Feature\Services\BuildTaskServiceTest" classname="Hyde.Framework.Testing.Feature.Services.BuildTaskServiceTest" assertions="1" time="0.020342"/>
+        <testcase name="Find tasks in app directory method discovers tasks in app directory" file="Build Task Service (Hyde\Framework\Testing\Feature\Services\BuildTaskService)::Find tasks in app directory method discovers tasks in app directory" class="Hyde\Framework\Testing\Feature\Services\BuildTaskServiceTest" classname="Hyde.Framework.Testing.Feature.Services.BuildTaskServiceTest" assertions="1" time="0.025979"/>
+        <testcase name="Automatically discovered tasks can be executed" file="Build Task Service (Hyde\Framework\Testing\Feature\Services\BuildTaskService)::Automatically discovered tasks can be executed" class="Hyde\Framework\Testing\Feature\Services\BuildTaskServiceTest" classname="Hyde.Framework.Testing.Feature.Services.BuildTaskServiceTest" assertions="1" time="0.026903"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)" tests="10" assertions="10" errors="0" failures="0" skipped="0" time="0.097981">
+        <testcase name="It generates a json file with a search index" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::It generates a json file with a search index" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.023411"/>
+        <testcase name="It adds all files to search index" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::It adds all files to search index" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.010639"/>
+        <testcase name="It handles generation even when there are no pages" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::It handles generation even when there are no pages" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.006659"/>
+        <testcase name="Save method saves the file to the correct location" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::Save method saves the file to the correct location" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.006586"/>
+        <testcase name="It generates a valid j s o n" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::It generates a valid j s o n" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.009342"/>
+        <testcase name="It strips markdown" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::It strips markdown" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.008151"/>
+        <testcase name="Get destination for slug returns empty string for index when pretty url is enabled" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::Get destination for slug returns empty string for index when pretty url is enabled" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.008189"/>
+        <testcase name="Get destination for slug returns pretty url when enabled" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::Get destination for slug returns pretty url when enabled" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.008304"/>
+        <testcase name="Excluded pages are not present in the search index" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::Excluded pages are not present in the search index" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.008022"/>
+        <testcase name="Nested source files do not retain directory name in search index" file="Documentation Search Service (Hyde\Framework\Testing\Feature\Services\DocumentationSearchService)::Nested source files do not retain directory name in search index" class="Hyde\Framework\Testing\Feature\Services\DocumentationSearchServiceTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSearchServiceTest" assertions="1" time="0.008678"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)" tests="36" assertions="51" errors="0" failures="0" skipped="0" time="1.032245">
+        <testcase name="Sidebar can be created" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Sidebar can be created" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.039105"/>
+        <testcase name="Sidebar items are added automatically" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Sidebar items are added automatically" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.031291"/>
+        <testcase name="Index page is removed from sidebar" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Index page is removed from sidebar" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.032605"/>
+        <testcase name="Files with front matter hidden set to true are removed from sidebar" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Files with front matter hidden set to true are removed from sidebar" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.032582"/>
+        <testcase name="Sidebar is ordered alphabetically when no order is set in config" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Sidebar is ordered alphabetically when no order is set in config" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.029878"/>
+        <testcase name="Sidebar is ordered by priority when priority is set in config" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Sidebar is ordered by priority when priority is set in config" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.029381"/>
+        <testcase name="Sidebar item priority can be set in front matter" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Sidebar item priority can be set in front matter" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.026573"/>
+        <testcase name="Sidebar item priority set in config overrides front matter" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Sidebar item priority set in config overrides front matter" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.026081"/>
+        <testcase name="Sidebar priorities can be set in both front matter and config" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Sidebar priorities can be set in both front matter and config" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.029266"/>
+        <testcase name="Group can be set in front matter" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Group can be set in front matter" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.025946"/>
+        <testcase name="Has groups returns false when there are no groups" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Has groups returns false when there are no groups" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.024012"/>
+        <testcase name="Has groups returns true when there are groups" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Has groups returns true when there are groups" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.025981"/>
+        <testcase name="Has groups returns true when there are multiple groups" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Has groups returns true when there are multiple groups" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.027354"/>
+        <testcase name="Has groups returns true when there are multiple groups mixed with defaults" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Has groups returns true when there are multiple groups mixed with defaults" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.028568"/>
+        <testcase name="Get groups returns empty array when there are no groups" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Get groups returns empty array when there are no groups" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.024383"/>
+        <testcase name="Get groups returns array of groups when there are groups" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Get groups returns array of groups when there are groups" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.026211"/>
+        <testcase name="Get groups returns array with no duplicates" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Get groups returns array with no duplicates" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.028862"/>
+        <testcase name="Groups are sorted by lowest found priority in each group" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Groups are sorted by lowest found priority in each group" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.028864"/>
+        <testcase name="Get items in group returns empty collection when there are no items" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Get items in group returns empty collection when there are no items" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.024526"/>
+        <testcase name="Get items in group returns collection of items in group" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Get items in group returns collection of items in group" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="2" time="0.030486"/>
+        <testcase name="Get items in group normalizes group name to slug format" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Get items in group normalizes group name to slug format" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.029831"/>
+        <testcase name="Get items in group does not include items with hidden front matter" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Get items in group does not include items with hidden front matter" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.027388"/>
+        <testcase name="Get items in group does not include docs index" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Get items in group does not include docs index" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.026984"/>
+        <testcase name="Is group active returns false when supplied group is not active" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Is group active returns false when supplied group is not active" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.025008"/>
+        <testcase name="Is group active returns true when supplied group is active" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Is group active returns true when supplied group is active" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.025022"/>
+        <testcase name="Is group active returns true for differing casing" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Is group active returns true for differing casing" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.025278"/>
+        <testcase name="Is group active returns true first group of index page" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Is group active returns true first group of index page" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="3" time="0.032152"/>
+        <testcase name="Is group active returns true first sorted group of index page" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Is group active returns true first sorted group of index page" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="3" time="0.047039"/>
+        <testcase name="Automatic index page group expansion respects custom navigation menu settings" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Automatic index page group expansion respects custom navigation menu settings" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="3" time="0.033667"/>
+        <testcase name="Make group title turns group key into title" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Make group title turns group key into title" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="4" time="0.026601"/>
+        <testcase name="Make group title uses configured sidebar group labels when available" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Make group title uses configured sidebar group labels when available" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="2" time="0.024554"/>
+        <testcase name="Can have multiple grouped pages with the same name labels" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Can have multiple grouped pages with the same name labels" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="2" time="0.028609"/>
+        <testcase name="Duplicate labels within the same group is removed" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Duplicate labels within the same group is removed" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="2" time="0.027996"/>
+        <testcase name="Is group active for index page with no groups" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Is group active for index page with no groups" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="1" time="0.026275"/>
+        <testcase name="Index page added to sidebar when it is the only page" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Index page added to sidebar when it is the only page" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="2" time="0.026155"/>
+        <testcase name="Index page not added to sidebar when other pages exist" file="Documentation Sidebar (Hyde\Framework\Testing\Feature\Services\DocumentationSidebar)::Index page not added to sidebar when other pages exist" class="Hyde\Framework\Testing\Feature\Services\DocumentationSidebarTest" classname="Hyde.Framework.Testing.Feature.Services.DocumentationSidebarTest" assertions="2" time="0.027730"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)" tests="18" assertions="30" errors="0" failures="0" skipped="0" time="0.526109">
+        <testcase name="Class tokenizes document" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Class tokenizes document" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="2" time="0.074433"/>
+        <testcase name="Class can handle document with no header" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Class can handle document with no header" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="2" time="0.024059"/>
+        <testcase name="Class can handle document with only header" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Class can handle document with only header" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="2" time="0.024114"/>
+        <testcase name="Class can handle empty document" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Class can handle empty document" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="2" time="0.023895"/>
+        <testcase name="Create helper creates new instance and processes it" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Create helper creates new instance and processes it" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="2" time="0.024451"/>
+        <testcase name="Render header returns the extracted header" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Render header returns the extracted header" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="1" time="0.024242"/>
+        <testcase name="Render header returns the extracted header with varying newlines" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Render header returns the extracted header with varying newlines" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="3" time="0.031465"/>
+        <testcase name="Render body returns the extracted body" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Render body returns the extracted body" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="1" time="0.024265"/>
+        <testcase name="Render body returns the extracted body with varying newlines" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Render body returns the extracted body with varying newlines" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="3" time="0.045272"/>
+        <testcase name="Render footer is empty by default" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Render footer is empty by default" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="1" time="0.025079"/>
+        <testcase name="Add dynamic header content adds source link when conditions are met" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Add dynamic header content adds source link when conditions are met" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="1" time="0.026380"/>
+        <testcase name="Edit source link is added to footer when conditions are met" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Edit source link is added to footer when conditions are met" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="1" time="0.025178"/>
+        <testcase name="Edit source link can be added to both header and footer" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Edit source link can be added to both header and footer" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="2" time="0.025379"/>
+        <testcase name="Edit source link text can be customized in header" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Edit source link text can be customized in header" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="1" time="0.025439"/>
+        <testcase name="Edit source link text can be customized in footer" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Edit source link text can be customized in footer" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="1" time="0.025350"/>
+        <testcase name="Add dynamic footer content adds torchlight attribution when conditions are met" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::Add dynamic footer content adds torchlight attribution when conditions are met" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="1" time="0.026155"/>
+        <testcase name="The documentation article view" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::The documentation article view" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="2" time="0.025352"/>
+        <testcase name="The documentation article view with existing variable" file="Hyde Smart Docs (Hyde\Framework\Testing\Feature\Services\HydeSmartDocs)::The documentation article view with existing variable" class="Hyde\Framework\Testing\Feature\Services\HydeSmartDocsTest" classname="Hyde.Framework.Testing.Feature.Services.HydeSmartDocsTest" assertions="2" time="0.025600"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)" tests="11" assertions="26" errors="0" failures="0" skipped="0" time="0.260748">
+        <testcase name="Preprocess expands filepath" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Preprocess expands filepath" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="1" time="0.043307"/>
+        <testcase name="Preprocess accepts multiple filepath formats" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Preprocess accepts multiple filepath formats" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="8" time="0.020180"/>
+        <testcase name="Filepath pattern is case insensitive" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Filepath pattern is case insensitive" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="4" time="0.019789"/>
+        <testcase name="Preprocess accepts multiple languages" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Preprocess accepts multiple languages" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="6" time="0.020094"/>
+        <testcase name="Preprocess accepts multiple input blocks" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Preprocess accepts multiple input blocks" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="1" time="0.019617"/>
+        <testcase name="Preprocess accepts multi line codeblocks" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Preprocess accepts multi line codeblocks" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="1" time="0.019552"/>
+        <testcase name="Space after filepath is optional" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Space after filepath is optional" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="1" time="0.019678"/>
+        <testcase name="Processor expands filepath directive in standard codeblock" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Processor expands filepath directive in standard codeblock" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="1" time="0.020607"/>
+        <testcase name="Processor expands filepath directive in torchlight codeblock" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Processor expands filepath directive in torchlight codeblock" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="1" time="0.033351"/>
+        <testcase name="Processor escapes html by default" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Processor escapes html by default" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="1" time="0.020694"/>
+        <testcase name="Processor does not escape html if configured" file="Codeblock Filepath Processor (Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessor)::Processor does not escape html if configured" class="Hyde\Framework\Testing\Feature\Services\Markdown\CodeblockFilepathProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.CodeblockFilepathProcessorTest" assertions="1" time="0.023878"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessorTest" file="Shortcode Processor (Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessor)" tests="6" assertions="9" errors="0" failures="0" skipped="0" time="0.028784">
+        <testcase name="Constructor discovers default shortcodes" file="Shortcode Processor (Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessor)::Constructor discovers default shortcodes" class="Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.ShortcodeProcessorTest" assertions="2" time="0.016654"/>
+        <testcase name="Discovered shortcodes are used to process input" file="Shortcode Processor (Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessor)::Discovered shortcodes are used to process input" class="Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.ShortcodeProcessorTest" assertions="1" time="0.003086"/>
+        <testcase name="String without shortcode is not modified" file="Shortcode Processor (Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessor)::String without shortcode is not modified" class="Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.ShortcodeProcessorTest" assertions="1" time="0.002002"/>
+        <testcase name="Process static shorthand" file="Shortcode Processor (Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessor)::Process static shorthand" class="Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.ShortcodeProcessorTest" assertions="1" time="0.002868"/>
+        <testcase name="Shortcodes can be added to processor" file="Shortcode Processor (Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessor)::Shortcodes can be added to processor" class="Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.ShortcodeProcessorTest" assertions="2" time="0.002104"/>
+        <testcase name="Shortcodes can be added to processor using array" file="Shortcode Processor (Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessor)::Shortcodes can be added to processor using array" class="Hyde\Framework\Testing\Feature\Services\Markdown\ShortcodeProcessorTest" classname="Hyde.Framework.Testing.Feature.Services.Markdown.ShortcodeProcessorTest" assertions="2" time="0.002070"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)" tests="12" assertions="35" errors="0" failures="0" skipped="0" time="0.268380">
+        <testcase name="Service instantiates xml element" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Service instantiates xml element" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="1" time="0.027334"/>
+        <testcase name="Xml root element is set to rss 20" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Xml root element is set to rss 20" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="2" time="0.020005"/>
+        <testcase name="Xml element has channel element" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Xml element has channel element" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="1" time="0.019842"/>
+        <testcase name="Xml channel element has required elements" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Xml channel element has required elements" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="6" time="0.020384"/>
+        <testcase name="Xml channel element has additional elements" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Xml channel element has additional elements" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="6" time="0.020676"/>
+        <testcase name="Xml channel data can be customized" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Xml channel data can be customized" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="3" time="0.020662"/>
+        <testcase name="Markdown blog posts are added to rss feed through autodiscovery" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Markdown blog posts are added to rss feed through autodiscovery" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="11" time="0.029102"/>
+        <testcase name="Get xml method returns xml string" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Get xml method returns xml string" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="1" time="0.020144"/>
+        <testcase name="Generate feed helper returns xml string" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Generate feed helper returns xml string" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="1" time="0.024092"/>
+        <testcase name="Can generate feed helper returns true if hyde has base url" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Can generate feed helper returns true if hyde has base url" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="1" time="0.025654"/>
+        <testcase name="Can generate feed helper returns false if hyde does not have base url" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Can generate feed helper returns false if hyde does not have base url" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="1" time="0.020346"/>
+        <testcase name="Can generate feed helper returns false if feeds are disabled in config" file="Rss Feed Service (Hyde\Framework\Testing\Feature\Services\RssFeedService)::Can generate feed helper returns false if feeds are disabled in config" class="Hyde\Framework\Testing\Feature\Services\RssFeedServiceTest" classname="Hyde.Framework.Testing.Feature.Services.RssFeedServiceTest" assertions="1" time="0.020138"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)" tests="12" assertions="23" errors="0" failures="0" skipped="0" time="0.338012">
+        <testcase name="Service instantiates xml element" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Service instantiates xml element" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="1" time="0.037968"/>
+        <testcase name="Generate adds default pages to xml" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Generate adds default pages to xml" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="1" time="0.025531"/>
+        <testcase name="Generate adds markdown pages to xml" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Generate adds markdown pages to xml" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="1" time="0.026071"/>
+        <testcase name="Generate adds markdown posts to xml" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Generate adds markdown posts to xml" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="1" time="0.026460"/>
+        <testcase name="Generate adds documentation pages to xml" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Generate adds documentation pages to xml" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="1" time="0.026233"/>
+        <testcase name="Get xml returns xml string" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Get xml returns xml string" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="2" time="0.024911"/>
+        <testcase name="Generate sitemap shorthand method returns xml string" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Generate sitemap shorthand method returns xml string" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="2" time="0.024850"/>
+        <testcase name="Url item is generated correctly" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Url item is generated correctly" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="3" time="0.025989"/>
+        <testcase name="Url item is generated with pretty urls if enabled" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Url item is generated with pretty urls if enabled" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="1" time="0.025774"/>
+        <testcase name="All route types are discovered" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::All route types are discovered" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="6" time="0.029693"/>
+        <testcase name="Links fallback to relative links when a site url is not set" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Links fallback to relative links when a site url is not set" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="2" time="0.038950"/>
+        <testcase name="Links fallback to relative links when site url is localhost" file="Sitemap Service (Hyde\Framework\Testing\Feature\Services\SitemapService)::Links fallback to relative links when site url is localhost" class="Hyde\Framework\Testing\Feature\Services\SitemapServiceTest" classname="Hyde.Framework.Testing.Feature.Services.SitemapServiceTest" assertions="2" time="0.025581"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)" tests="24" assertions="63" errors="0" failures="0" skipped="0" time="0.529317">
+        <testcase name="Checks returns an array of validation check methods" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Checks returns an array of validation check methods" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="17" time="0.039120"/>
+        <testcase name="Check validators can run" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check validators can run" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.019699"/>
+        <testcase name="Check site has a 404 page can pass" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check site has a 404 page can pass" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.019876"/>
+        <testcase name="Check site has a 404 page can fail" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check site has a 404 page can fail" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.020046"/>
+        <testcase name="Check documentation site has an index page can pass" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check documentation site has an index page can pass" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.025571"/>
+        <testcase name="Check documentation site has an index page can pass with warning when only finding readme" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check documentation site has an index page can pass with warning when only finding readme" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="3" time="0.025471"/>
+        <testcase name="Check documentation site has an index page can fail" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check documentation site has an index page can fail" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.025746"/>
+        <testcase name="Check documentation site has an index page be skipped" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check documentation site has an index page be skipped" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.024213"/>
+        <testcase name="Check site has an index page can pass" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check site has an index page can pass" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.019727"/>
+        <testcase name="Check site has an index page can fail" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check site has an index page can fail" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.019963"/>
+        <testcase name="Check site has an app css stylesheet can pass" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check site has an app css stylesheet can pass" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.020083"/>
+        <testcase name="Check site has an app css stylesheet can fail" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check site has an app css stylesheet can fail" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.020113"/>
+        <testcase name="Check site has a base url set can pass" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check site has a base url set can pass" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.020825"/>
+        <testcase name="Check site has a base url set can fail" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check site has a base url set can fail" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.020594"/>
+        <testcase name="Check a torchlight api token is set can skip" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check a torchlight api token is set can skip" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.019915"/>
+        <testcase name="Check a torchlight api token is set can pass" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check a torchlight api token is set can pass" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.019909"/>
+        <testcase name="Check a torchlight api token is set can fail" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check a torchlight api token is set can fail" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.019869"/>
+        <testcase name="Check for conflicts between blade and markdown pages can pass" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check for conflicts between blade and markdown pages can pass" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.023999"/>
+        <testcase name="Check for conflicts between blade and markdown pages can fail" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Check for conflicts between blade and markdown pages can fail" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.024856"/>
+        <testcase name="Validation result message returns message" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Validation result message returns message" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="1" time="0.019770"/>
+        <testcase name="Validation result passed returns true when passed is true" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Validation result passed returns true when passed is true" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.020502"/>
+        <testcase name="Validation result failed returns true when passed is false" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Validation result failed returns true when passed is false" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.019872"/>
+        <testcase name="Validation result skipped returns true when skipped is true" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Validation result skipped returns true when skipped is true" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.019782"/>
+        <testcase name="Validation result tip returns message when set" file="Validation Service (Hyde\Framework\Testing\Feature\Services\ValidationService)::Validation result tip returns message when set" class="Hyde\Framework\Testing\Feature\Services\ValidationServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ValidationServiceTest" assertions="2" time="0.019795"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Services\ViewDiffServiceTest" file="View Diff Service (Hyde\Framework\Testing\Feature\Services\ViewDiffService)" tests="4" assertions="8" errors="0" failures="0" skipped="0" time="0.143457">
+        <testcase name="Get filecache" file="View Diff Service (Hyde\Framework\Testing\Feature\Services\ViewDiffService)::Get filecache" class="Hyde\Framework\Testing\Feature\Services\ViewDiffServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ViewDiffServiceTest" assertions="4" time="0.072529"/>
+        <testcase name="Get checksums" file="View Diff Service (Hyde\Framework\Testing\Feature\Services\ViewDiffService)::Get checksums" class="Hyde\Framework\Testing\Feature\Services\ViewDiffServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ViewDiffServiceTest" assertions="2" time="0.024074"/>
+        <testcase name="Checksum matches any" file="View Diff Service (Hyde\Framework\Testing\Feature\Services\ViewDiffService)::Checksum matches any" class="Hyde\Framework\Testing\Feature\Services\ViewDiffServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ViewDiffServiceTest" assertions="1" time="0.023452"/>
+        <testcase name="Checksum matches any false" file="View Diff Service (Hyde\Framework\Testing\Feature\Services\ViewDiffService)::Checksum matches any false" class="Hyde\Framework\Testing\Feature\Services\ViewDiffServiceTest" classname="Hyde.Framework.Testing.Feature.Services.ViewDiffServiceTest" assertions="1" time="0.023402"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\SiteTest" file="Site (Hyde\Framework\Testing\Feature\Site)" tests="4" assertions="10" errors="0" failures="0" skipped="0" time="0.089696">
+        <testcase name="Url" file="Site (Hyde\Framework\Testing\Feature\Site)::Url" class="Hyde\Framework\Testing\Feature\SiteTest" classname="Hyde.Framework.Testing.Feature.SiteTest" assertions="3" time="0.025985"/>
+        <testcase name="Name" file="Site (Hyde\Framework\Testing\Feature\Site)::Name" class="Hyde\Framework\Testing\Feature\SiteTest" classname="Hyde.Framework.Testing.Feature.SiteTest" assertions="3" time="0.019520"/>
+        <testcase name="Language" file="Site (Hyde\Framework\Testing\Feature\Site)::Language" class="Hyde\Framework\Testing\Feature\SiteTest" classname="Hyde.Framework.Testing.Feature.SiteTest" assertions="3" time="0.019627"/>
+        <testcase name="Metadata" file="Site (Hyde\Framework\Testing\Feature\Site)::Metadata" class="Hyde\Framework\Testing\Feature\SiteTest" classname="Hyde.Framework.Testing.Feature.SiteTest" assertions="1" time="0.024564"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChangedTest" file="Source Directories Can Be Changed (Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChanged)" tests="6" assertions="18" errors="0" failures="0" skipped="0" time="0.138961">
+        <testcase name="Baselines" file="Source Directories Can Be Changed (Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChanged)::Baselines" class="Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChangedTest" classname="Hyde.Framework.Testing.Feature.SourceDirectoriesCanBeChangedTest" assertions="5" time="0.025166"/>
+        <testcase name="Source directories can be changed programmatically" file="Source Directories Can Be Changed (Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChanged)::Source directories can be changed programmatically" class="Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChangedTest" classname="Hyde.Framework.Testing.Feature.SourceDirectoriesCanBeChangedTest" assertions="5" time="0.019651"/>
+        <testcase name="Source directories can be changed in config" file="Source Directories Can Be Changed (Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChanged)::Source directories can be changed in config" class="Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChangedTest" classname="Hyde.Framework.Testing.Feature.SourceDirectoriesCanBeChangedTest" assertions="5" time="0.021806"/>
+        <testcase name="Build service recognizes changed directory" file="Source Directories Can Be Changed (Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChanged)::Build service recognizes changed directory" class="Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChangedTest" classname="Hyde.Framework.Testing.Feature.SourceDirectoriesCanBeChangedTest" assertions="1" time="0.019546"/>
+        <testcase name="Autodiscovery discovers posts in custom directory" file="Source Directories Can Be Changed (Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChanged)::Autodiscovery discovers posts in custom directory" class="Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChangedTest" classname="Hyde.Framework.Testing.Feature.SourceDirectoriesCanBeChangedTest" assertions="1" time="0.026753"/>
+        <testcase name="Autodiscovery discovers posts in custom subdirectory" file="Source Directories Can Be Changed (Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChanged)::Autodiscovery discovers posts in custom subdirectory" class="Hyde\Framework\Testing\Feature\SourceDirectoriesCanBeChangedTest" classname="Hyde.Framework.Testing.Feature.SourceDirectoriesCanBeChangedTest" assertions="1" time="0.026038"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\SourceFileParserTest" file="Source File Parser (Hyde\Framework\Testing\Feature\SourceFileParser)" tests="8" assertions="20" errors="0" failures="0" skipped="0" time="0.184700">
+        <testcase name="Blade page parser" file="Source File Parser (Hyde\Framework\Testing\Feature\SourceFileParser)::Blade page parser" class="Hyde\Framework\Testing\Feature\SourceFileParserTest" classname="Hyde.Framework.Testing.Feature.SourceFileParserTest" assertions="2" time="0.030516"/>
+        <testcase name="Markdown page parser" file="Source File Parser (Hyde\Framework\Testing\Feature\SourceFileParser)::Markdown page parser" class="Hyde\Framework\Testing\Feature\SourceFileParserTest" classname="Hyde.Framework.Testing.Feature.SourceFileParserTest" assertions="4" time="0.022025"/>
+        <testcase name="Markdown post parser" file="Source File Parser (Hyde\Framework\Testing\Feature\SourceFileParser)::Markdown post parser" class="Hyde\Framework\Testing\Feature\SourceFileParserTest" classname="Hyde.Framework.Testing.Feature.SourceFileParserTest" assertions="4" time="0.022694"/>
+        <testcase name="Documentation page parser" file="Source File Parser (Hyde\Framework\Testing\Feature\SourceFileParser)::Documentation page parser" class="Hyde\Framework\Testing\Feature\SourceFileParserTest" classname="Hyde.Framework.Testing.Feature.SourceFileParserTest" assertions="4" time="0.022265"/>
+        <testcase name="Html page parser" file="Source File Parser (Hyde\Framework\Testing\Feature\SourceFileParser)::Html page parser" class="Hyde\Framework\Testing\Feature\SourceFileParserTest" classname="Hyde.Framework.Testing.Feature.SourceFileParserTest" assertions="3" time="0.021491"/>
+        <testcase name="Parsed page is run through dynamic constructor" file="Source File Parser (Hyde\Framework\Testing\Feature\SourceFileParser)::Parsed page is run through dynamic constructor" class="Hyde\Framework\Testing\Feature\SourceFileParserTest" classname="Hyde.Framework.Testing.Feature.SourceFileParserTest" assertions="1" time="0.022155"/>
+        <testcase name="Blade page data is parsed to front matter" file="Source File Parser (Hyde\Framework\Testing\Feature\SourceFileParser)::Blade page data is parsed to front matter" class="Hyde\Framework\Testing\Feature\SourceFileParserTest" classname="Hyde.Framework.Testing.Feature.SourceFileParserTest" assertions="1" time="0.021916"/>
+        <testcase name="Blade page matter is used for the page title" file="Source File Parser (Hyde\Framework\Testing\Feature\SourceFileParser)::Blade page matter is used for the page title" class="Hyde\Framework\Testing\Feature\SourceFileParserTest" classname="Hyde.Framework.Testing.Feature.SourceFileParserTest" assertions="1" time="0.021638"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)" tests="13" assertions="73" errors="0" failures="0" skipped="0" time="0.458178">
+        <testcase name="Can build blade page" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can build blade page" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="3" time="0.039137"/>
+        <testcase name="Can build markdown post" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can build markdown post" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="10" time="0.035768"/>
+        <testcase name="Can build markdown page" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can build markdown page" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="10" time="0.047734"/>
+        <testcase name="Can build documentation page" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can build documentation page" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="10" time="0.043864"/>
+        <testcase name="Can build html page" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can build html page" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="3" time="0.027245"/>
+        <testcase name="Can build nested html page" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can build nested html page" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="3" time="0.027028"/>
+        <testcase name="Creates custom documentation directory" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Creates custom documentation directory" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="10" time="0.036468"/>
+        <testcase name="Site directory can be customized" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Site directory can be customized" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="10" time="0.034177"/>
+        <testcase name="Site directory can be customized with nested pages" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Site directory can be customized with nested pages" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="10" time="0.036348"/>
+        <testcase name="Can rebuild blade page" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can rebuild blade page" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="1" time="0.026503"/>
+        <testcase name="Can rebuild markdown page" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can rebuild markdown page" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="1" time="0.034576"/>
+        <testcase name="Can rebuild markdown post" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can rebuild markdown post" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="1" time="0.035105"/>
+        <testcase name="Can rebuild documentation page" file="Static Page Builder (Hyde\Framework\Testing\Feature\StaticPageBuilder)::Can rebuild documentation page" class="Hyde\Framework\Testing\Feature\StaticPageBuilderTest" classname="Hyde.Framework.Testing.Feature.StaticPageBuilderTest" assertions="1" time="0.034224"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\StaticSiteBuilderDocumentationModuleTest" file="Static Site Builder Documentation Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderDocumentationModule)" tests="3" assertions="7" errors="0" failures="0" skipped="0" time="0.140204">
+        <testcase name="Can create page" file="Static Site Builder Documentation Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderDocumentationModule)::Can create page" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderDocumentationModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderDocumentationModuleTest" assertions="1" time="0.053114"/>
+        <testcase name="Page contains expected content" file="Static Site Builder Documentation Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderDocumentationModule)::Page contains expected content" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderDocumentationModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderDocumentationModuleTest" assertions="3" time="0.035472"/>
+        <testcase name="Can compile page to root output directory" file="Static Site Builder Documentation Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderDocumentationModule)::Can compile page to root output directory" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderDocumentationModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderDocumentationModuleTest" assertions="3" time="0.051617"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModuleTest" file="Static Site Builder Post Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModule)" tests="7" assertions="38" errors="0" failures="0" skipped="0" time="0.260071">
+        <testcase name="Can create post" file="Static Site Builder Post Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModule)::Can create post" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderPostModuleTest" assertions="1" time="0.041703"/>
+        <testcase name="Post contains expected content" file="Static Site Builder Post Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModule)::Post contains expected content" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderPostModuleTest" assertions="6" time="0.036292"/>
+        <testcase name="Post contains expected elements" file="Static Site Builder Post Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModule)::Post contains expected elements" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderPostModuleTest" assertions="11" time="0.037086"/>
+        <testcase name="Post contains expected meta tags" file="Static Site Builder Post Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModule)::Post contains expected meta tags" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderPostModuleTest" assertions="6" time="0.035913"/>
+        <testcase name="Post contains expected itemprops" file="Static Site Builder Post Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModule)::Post contains expected itemprops" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderPostModuleTest" assertions="8" time="0.036512"/>
+        <testcase name="Post contains expected aria support" file="Static Site Builder Post Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModule)::Post contains expected aria support" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderPostModuleTest" assertions="3" time="0.035855"/>
+        <testcase name="Post image is resolved relatively" file="Static Site Builder Post Module (Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModule)::Post image is resolved relatively" class="Hyde\Framework\Testing\Feature\StaticSiteBuilderPostModuleTest" classname="Hyde.Framework.Testing.Feature.StaticSiteBuilderPostModuleTest" assertions="3" time="0.036711"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)" tests="23" assertions="79" errors="0" failures="0" skipped="0" time="1.054164">
+        <testcase name="Build command contains expected output" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Build command contains expected output" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="4" time="0.049677"/>
+        <testcase name="Build command creates html files" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Build command creates html files" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="3" time="0.050649"/>
+        <testcase name="Build command transfers media asset files" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Build command transfers media asset files" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="3" time="0.039792"/>
+        <testcase name="Build command transfers media asset files recursively" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Build command transfers media asset files recursively" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="4" time="0.039757"/>
+        <testcase name="All page types can be compiled" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::All page types can be compiled" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="12" time="0.119054"/>
+        <testcase name="Only progress bars for types with pages are shown" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Only progress bars for types with pages are shown" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="9" time="0.053228"/>
+        <testcase name="Print initial information allows api to be disabled" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Print initial information allows api to be disabled" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="2" time="0.038034"/>
+        <testcase name="Node action outputs" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Node action outputs" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="4" time="0.042488"/>
+        <testcase name="Pretty urls option output" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Pretty urls option output" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="2" time="0.038107"/>
+        <testcase name="Sitemap is not generated when conditions are not met" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Sitemap is not generated when conditions are not met" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="2" time="0.037250"/>
+        <testcase name="Sitemap is generated when conditions are met" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Sitemap is generated when conditions are met" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="1" time="0.038129"/>
+        <testcase name="Rss feed is not generated when conditions are not met" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Rss feed is not generated when conditions are not met" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="2" time="0.035927"/>
+        <testcase name="Rss feed is generated when conditions are met" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Rss feed is generated when conditions are met" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="1" time="0.050995"/>
+        <testcase name="Does not generate search files when conditions are not met" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Does not generate search files when conditions are not met" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="3" time="0.037122"/>
+        <testcase name="Generates search files when conditions are met" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Generates search files when conditions are met" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="1" time="0.061050"/>
+        <testcase name="Site directory is emptied before build" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Site directory is emptied before build" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="3" time="0.037280"/>
+        <testcase name="Output directory is not emptied if disabled in config" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Output directory is not emptied if disabled in config" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="3" time="0.036742"/>
+        <testcase name="Aborts when non standard directory is emptied" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Aborts when non standard directory is emptied" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="5" time="0.038181"/>
+        <testcase name="Without warnings" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::Without warnings" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="2" time="0.037188"/>
+        <testcase name="With warnings" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::With warnings" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="3" time="0.038010"/>
+        <testcase name="With warnings and verbose" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::With warnings and verbose" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="4" time="0.053405"/>
+        <testcase name="With warnings but warnings are disabled" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::With warnings but warnings are disabled" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="2" time="0.037919"/>
+        <testcase name="With warnings converted to exceptions" file="Static Site Service (Hyde\Framework\Testing\Feature\StaticSiteService)::With warnings converted to exceptions" class="Hyde\Framework\Testing\Feature\StaticSiteServiceTest" classname="Hyde.Framework.Testing.Feature.StaticSiteServiceTest" assertions="4" time="0.044181"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Support\MediaFileTest" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)" tests="25" assertions="32" errors="0" failures="0" skipped="0" time="0.558465">
+        <testcase name="Can construct" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Can construct" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="2" time="0.050286"/>
+        <testcase name="Can construct with nested paths" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Can construct with nested paths" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.019707"/>
+        <testcase name="Absolute path is normalized to relative" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Absolute path is normalized to relative" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.019622"/>
+        <testcase name="Get name returns name of file" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get name returns name of file" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="2" time="0.019654"/>
+        <testcase name="Get path returns path of file" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get path returns path of file" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="2" time="0.019620"/>
+        <testcase name="Get absolute path returns absolute path of file" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get absolute path returns absolute path of file" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="2" time="0.019831"/>
+        <testcase name="Get contents returns contents of file" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get contents returns contents of file" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.028361"/>
+        <testcase name="Get extension returns extension of file" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get extension returns extension of file" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="2" time="0.021329"/>
+        <testcase name="To array returns array of file properties" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::To array returns array of file properties" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.020506"/>
+        <testcase name="To array with empty file with no extension" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::To array with empty file with no extension" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.021823"/>
+        <testcase name="To array with file in subdirectory" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::To array with file in subdirectory" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.020240"/>
+        <testcase name="Get content length" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get content length" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.020252"/>
+        <testcase name="Get content length with empty file" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get content length with empty file" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.020478"/>
+        <testcase name="Get content length with directory" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get content length with directory" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="2" time="0.020643"/>
+        <testcase name="Get content length with non existent file" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get content length with non existent file" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="2" time="0.020090"/>
+        <testcase name="Get mime type" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get mime type" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.020286"/>
+        <testcase name="Get mime type without extension" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get mime type without extension" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.020961"/>
+        <testcase name="Get mime type with empty file" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get mime type with empty file" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.020300"/>
+        <testcase name="Get mime type with directory" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get mime type with directory" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.020458"/>
+        <testcase name="Get mime type with non existent file" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get mime type with non existent file" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.019638"/>
+        <testcase name="All helper returns all media files" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::All helper returns all media files" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.019984"/>
+        <testcase name="All helper does not include non media files" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::All helper does not include non media files" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.020389"/>
+        <testcase name="Files helper" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Files helper" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.019948"/>
+        <testcase name="Get identifier" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get identifier" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.019573"/>
+        <testcase name="Get identifier with subdirectory" file="Media File (Hyde\Framework\Testing\Feature\Support\MediaFile)::Get identifier with subdirectory" class="Hyde\Framework\Testing\Feature\Support\MediaFileTest" classname="Hyde.Framework.Testing.Feature.Support.MediaFileTest" assertions="1" time="0.034486"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)" tests="11" assertions="16" errors="0" failures="0" skipped="0" time="0.251848">
+        <testcase name="Can construct" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::Can construct" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="2" time="0.052722"/>
+        <testcase name="Can construct with nested paths" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::Can construct with nested paths" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="1" time="0.019454"/>
+        <testcase name="Absolute path is normalized to relative" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::Absolute path is normalized to relative" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="1" time="0.019405"/>
+        <testcase name="Get name returns name of file" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::Get name returns name of file" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="2" time="0.019727"/>
+        <testcase name="Get path returns path of file" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::Get path returns path of file" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="2" time="0.019500"/>
+        <testcase name="Get absolute path returns absolute path of file" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::Get absolute path returns absolute path of file" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="2" time="0.019593"/>
+        <testcase name="Get contents returns contents of file" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::Get contents returns contents of file" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="1" time="0.020203"/>
+        <testcase name="Get extension returns extension of file" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::Get extension returns extension of file" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="2" time="0.020652"/>
+        <testcase name="To array returns array of file properties" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::To array returns array of file properties" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="1" time="0.020340"/>
+        <testcase name="To array with empty file with no extension" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::To array with empty file with no extension" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="1" time="0.020220"/>
+        <testcase name="To array with file in subdirectory" file="Project File (Hyde\Framework\Testing\Feature\Support\ProjectFile)::To array with file in subdirectory" class="Hyde\Framework\Testing\Feature\Support\ProjectFileTest" classname="Hyde.Framework.Testing.Feature.Support.ProjectFileTest" assertions="1" time="0.020031"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Support\SourceFileTest" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)" tests="13" assertions="21" errors="0" failures="0" skipped="0" time="0.274283">
+        <testcase name="Can construct" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Can construct" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="3" time="0.034591"/>
+        <testcase name="Can construct with model class" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Can construct with model class" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="3" time="0.019849"/>
+        <testcase name="Can make with model class" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Can make with model class" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="1" time="0.019592"/>
+        <testcase name="Can construct with nested paths" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Can construct with nested paths" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="1" time="0.019443"/>
+        <testcase name="Absolute path is normalized to relative" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Absolute path is normalized to relative" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="1" time="0.019455"/>
+        <testcase name="Get name returns name of file" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Get name returns name of file" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="2" time="0.019731"/>
+        <testcase name="Get path returns path of file" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Get path returns path of file" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="2" time="0.019570"/>
+        <testcase name="Get absolute path returns absolute path of file" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Get absolute path returns absolute path of file" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="2" time="0.019663"/>
+        <testcase name="Get contents returns contents of file" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Get contents returns contents of file" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="1" time="0.020223"/>
+        <testcase name="Get extension returns extension of file" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::Get extension returns extension of file" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="2" time="0.020982"/>
+        <testcase name="To array returns array of file properties" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::To array returns array of file properties" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="1" time="0.020194"/>
+        <testcase name="To array with empty file with no extension" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::To array with empty file with no extension" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="1" time="0.020289"/>
+        <testcase name="To array with file in subdirectory" file="Source File (Hyde\Framework\Testing\Feature\Support\SourceFile)::To array with file in subdirectory" class="Hyde\Framework\Testing\Feature\Support\SourceFileTest" classname="Hyde.Framework.Testing.Feature.Support.SourceFileTest" assertions="1" time="0.020702"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)" tests="27" assertions="29" errors="0" failures="0" skipped="0" time="0.565189">
+        <testcase name="Get array" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get array" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.051803"/>
+        <testcase name="Get string" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get string" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.020122"/>
+        <testcase name="Get bool" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get bool" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019541"/>
+        <testcase name="Get int" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get int" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019984"/>
+        <testcase name="Get float" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get float" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019656"/>
+        <testcase name="Get array with default value" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get array with default value" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019630"/>
+        <testcase name="Get string with default value" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get string with default value" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019676"/>
+        <testcase name="Get bool with default value" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get bool with default value" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019622"/>
+        <testcase name="Get int with default value" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get int with default value" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019562"/>
+        <testcase name="Get float with default value" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get float with default value" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019631"/>
+        <testcase name="Get array with strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get array with strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019575"/>
+        <testcase name="Get string with strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get string with strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.020584"/>
+        <testcase name="Get bool with strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get bool with strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.020140"/>
+        <testcase name="Get int with strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get int with strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019669"/>
+        <testcase name="Get float with strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get float with strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019560"/>
+        <testcase name="Get array with failing strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get array with failing strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019719"/>
+        <testcase name="Get string with failing strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get string with failing strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019683"/>
+        <testcase name="Get bool with failing strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get bool with failing strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019678"/>
+        <testcase name="Get int with failing strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get int with failing strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019620"/>
+        <testcase name="Get float with failing strict mode" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get float with failing strict mode" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019607"/>
+        <testcase name="Get array with array" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get array with array" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019593"/>
+        <testcase name="Get string with string" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get string with string" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019659"/>
+        <testcase name="Get bool with bool" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get bool with bool" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019753"/>
+        <testcase name="Get int with int" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get int with int" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019597"/>
+        <testcase name="Get float with float" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get float with float" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="1" time="0.019602"/>
+        <testcase name="Get nullable string" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Get nullable string" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="2" time="0.019942"/>
+        <testcase name="Invalid type message" file="Typed Config Facade (Hyde\Framework\Testing\Feature\TypedConfigFacade)::Invalid type message" class="Hyde\Framework\Testing\Feature\TypedConfigFacadeTest" classname="Hyde.Framework.Testing.Feature.TypedConfigFacadeTest" assertions="2" time="0.019981"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Views\MetadataViewTest" file="Metadata View (Hyde\Framework\Testing\Feature\Views\MetadataView)" tests="5" assertions="84" errors="0" failures="0" skipped="0" time="0.256907">
+        <testcase name="Metadata tags in empty blade page" file="Metadata View (Hyde\Framework\Testing\Feature\Views\MetadataView)::Metadata tags in empty blade page" class="Hyde\Framework\Testing\Feature\Views\MetadataViewTest" classname="Hyde.Framework.Testing.Feature.Views.MetadataViewTest" assertions="13" time="0.088706"/>
+        <testcase name="Metadata tags in empty markdown page" file="Metadata View (Hyde\Framework\Testing\Feature\Views\MetadataView)::Metadata tags in empty markdown page" class="Hyde\Framework\Testing\Feature\Views\MetadataViewTest" classname="Hyde.Framework.Testing.Feature.Views.MetadataViewTest" assertions="13" time="0.039633"/>
+        <testcase name="Metadata tags in empty documentation page" file="Metadata View (Hyde\Framework\Testing\Feature\Views\MetadataView)::Metadata tags in empty documentation page" class="Hyde\Framework\Testing\Feature\Views\MetadataViewTest" classname="Hyde.Framework.Testing.Feature.Views.MetadataViewTest" assertions="13" time="0.043034"/>
+        <testcase name="Metadata tags in empty markdown post" file="Metadata View (Hyde\Framework\Testing\Feature\Views\MetadataView)::Metadata tags in empty markdown post" class="Hyde\Framework\Testing\Feature\Views\MetadataViewTest" classname="Hyde.Framework.Testing.Feature.Views.MetadataViewTest" assertions="19" time="0.040715"/>
+        <testcase name="Metadata tags in markdown post with flat front matter" file="Metadata View (Hyde\Framework\Testing\Feature\Views\MetadataView)::Metadata tags in markdown post with flat front matter" class="Hyde\Framework\Testing\Feature\Views\MetadataViewTest" classname="Hyde.Framework.Testing.Feature.Views.MetadataViewTest" assertions="26" time="0.044820"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Views\SidebarBrandViewTest" file="Sidebar Brand View (Hyde\Framework\Testing\Feature\Views\SidebarBrandView)" tests="5" assertions="13" errors="0" failures="0" skipped="0" time="0.136511">
+        <testcase name="Sidebar brand view" file="Sidebar Brand View (Hyde\Framework\Testing\Feature\Views\SidebarBrandView)::Sidebar brand view" class="Hyde\Framework\Testing\Feature\Views\SidebarBrandViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarBrandViewTest" assertions="3" time="0.033430"/>
+        <testcase name="Sidebar brand view with home route" file="Sidebar Brand View (Hyde\Framework\Testing\Feature\Views\SidebarBrandView)::Sidebar brand view with home route" class="Hyde\Framework\Testing\Feature\Views\SidebarBrandViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarBrandViewTest" assertions="3" time="0.027782"/>
+        <testcase name="Sidebar brand view with default header text" file="Sidebar Brand View (Hyde\Framework\Testing\Feature\Views\SidebarBrandView)::Sidebar brand view with default header text" class="Hyde\Framework\Testing\Feature\Views\SidebarBrandViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarBrandViewTest" assertions="2" time="0.025246"/>
+        <testcase name="Sidebar brand view with default header text and home route" file="Sidebar Brand View (Hyde\Framework\Testing\Feature\Views\SidebarBrandView)::Sidebar brand view with default header text and home route" class="Hyde\Framework\Testing\Feature\Views\SidebarBrandViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarBrandViewTest" assertions="3" time="0.025799"/>
+        <testcase name="Sidebar brand view without darkmode feature" file="Sidebar Brand View (Hyde\Framework\Testing\Feature\Views\SidebarBrandView)::Sidebar brand view without darkmode feature" class="Hyde\Framework\Testing\Feature\Views\SidebarBrandViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarBrandViewTest" assertions="2" time="0.024254"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Views\SidebarFooterTextViewTest" file="Sidebar Footer Text View (Hyde\Framework\Testing\Feature\Views\SidebarFooterTextView)" tests="4" assertions="4" errors="0" failures="0" skipped="0" time="0.096546">
+        <testcase name="Sidebar footer text view with default config" file="Sidebar Footer Text View (Hyde\Framework\Testing\Feature\Views\SidebarFooterTextView)::Sidebar footer text view with default config" class="Hyde\Framework\Testing\Feature\Views\SidebarFooterTextViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarFooterTextViewTest" assertions="1" time="0.033097"/>
+        <testcase name="Sidebar footer text view when config option is true" file="Sidebar Footer Text View (Hyde\Framework\Testing\Feature\Views\SidebarFooterTextView)::Sidebar footer text view when config option is true" class="Hyde\Framework\Testing\Feature\Views\SidebarFooterTextViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarFooterTextViewTest" assertions="1" time="0.020463"/>
+        <testcase name="Sidebar footer text view when config option is markdown string" file="Sidebar Footer Text View (Hyde\Framework\Testing\Feature\Views\SidebarFooterTextView)::Sidebar footer text view when config option is markdown string" class="Hyde\Framework\Testing\Feature\Views\SidebarFooterTextViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarFooterTextViewTest" assertions="1" time="0.022103"/>
+        <testcase name="Sidebar footer text view when config option is false" file="Sidebar Footer Text View (Hyde\Framework\Testing\Feature\Views\SidebarFooterTextView)::Sidebar footer text view when config option is false" class="Hyde\Framework\Testing\Feature\Views\SidebarFooterTextViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarFooterTextViewTest" assertions="1" time="0.020882"/>
+      </testsuite>
+      <testsuite name="Hyde\Framework\Testing\Feature\Views\SidebarViewTest" file="Sidebar View (Hyde\Framework\Testing\Feature\Views\SidebarView)" tests="7" assertions="60" errors="0" failures="0" skipped="0" time="0.227728">
+        <testcase name="Base sidebar" file="Sidebar View (Hyde\Framework\Testing\Feature\Views\SidebarView)::Base sidebar" class="Hyde\Framework\Testing\Feature\Views\SidebarViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarViewTest" assertions="12" time="0.034884"/>
+        <testcase name="Base sidebar without footer" file="Sidebar View (Hyde\Framework\Testing\Feature\Views\SidebarView)::Base sidebar without footer" class="Hyde\Framework\Testing\Feature\Views\SidebarViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarViewTest" assertions="2" time="0.025851"/>
+        <testcase name="Base sidebar with custom footer text" file="Sidebar View (Hyde\Framework\Testing\Feature\Views\SidebarView)::Base sidebar with custom footer text" class="Hyde\Framework\Testing\Feature\Views\SidebarViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarViewTest" assertions="4" time="0.027056"/>
+        <testcase name="Base sidebar custom header brand" file="Sidebar View (Hyde\Framework\Testing\Feature\Views\SidebarView)::Base sidebar custom header brand" class="Hyde\Framework\Testing\Feature\Views\SidebarViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarViewTest" assertions="4" time="0.026130"/>
+        <testcase name="Base sidebar with items" file="Sidebar View (Hyde\Framework\Testing\Feature\Views\SidebarView)::Base sidebar with items" class="Hyde\Framework\Testing\Feature\Views\SidebarViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarViewTest" assertions="6" time="0.030646"/>
+        <testcase name="Sidebar with grouped items" file="Sidebar View (Hyde\Framework\Testing\Feature\Views\SidebarView)::Sidebar with grouped items" class="Hyde\Framework\Testing\Feature\Views\SidebarViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarViewTest" assertions="16" time="0.049312"/>
+        <testcase name="Sidebar with non collapsible grouped items" file="Sidebar View (Hyde\Framework\Testing\Feature\Views\SidebarView)::Sidebar with non collapsible grouped items" class="Hyde\Framework\Testing\Feature\Views\SidebarViewTest" classname="Hyde.Framework.Testing.Feature.Views.SidebarViewTest" assertions="16" time="0.033849"/>
       </testsuite>
     </testsuite>
-    <testsuite name="Publications" tests="358" assertions="933" errors="0" failures="0" skipped="0" time="10.537464">
-      <testsuite name="Hyde\Publications\Testing\Feature\CreateActionTest" file="Create Action (Hyde\Publications\Testing\Feature\CreateAction)" tests="7" assertions="15" errors="0" failures="0" skipped="0" time="0.155631">
-        <testcase name="Create" file="Create Action (Hyde\Publications\Testing\Feature\CreateAction)::Create" class="Hyde\Publications\Testing\Feature\CreateActionTest" classname="Hyde.Publications.Testing.Feature.CreateActionTest" assertions="2" time="0.032002"/>
-        <testcase name="With conflict" file="Create Action (Hyde\Publications\Testing\Feature\CreateAction)::With conflict" class="Hyde\Publications\Testing\Feature\CreateActionTest" classname="Hyde.Publications.Testing.Feature.CreateActionTest" assertions="1" time="0.020913"/>
-        <testcase name="With conflict force" file="Create Action (Hyde\Publications\Testing\Feature\CreateAction)::With conflict force" class="Hyde\Publications\Testing\Feature\CreateActionTest" classname="Hyde.Publications.Testing.Feature.CreateActionTest" assertions="1" time="0.021044"/>
-        <testcase name="Output path helpers" file="Create Action (Hyde\Publications\Testing\Feature\CreateAction)::Output path helpers" class="Hyde\Publications\Testing\Feature\CreateActionTest" classname="Hyde.Publications.Testing.Feature.CreateActionTest" assertions="2" time="0.020138"/>
-        <testcase name="Conflict prediction helpers" file="Create Action (Hyde\Publications\Testing\Feature\CreateAction)::Conflict prediction helpers" class="Hyde\Publications\Testing\Feature\CreateActionTest" classname="Hyde.Publications.Testing.Feature.CreateActionTest" assertions="6" time="0.020673"/>
-        <testcase name="Can save to subdirectory" file="Create Action (Hyde\Publications\Testing\Feature\CreateAction)::Can save to subdirectory" class="Hyde\Publications\Testing\Feature\CreateActionTest" classname="Hyde.Publications.Testing.Feature.CreateActionTest" assertions="2" time="0.020719"/>
-        <testcase name="Format string for storage" file="Create Action (Hyde\Publications\Testing\Feature\CreateAction)::Format string for storage" class="Hyde\Publications\Testing\Feature\CreateActionTest" classname="Hyde.Publications.Testing.Feature.CreateActionTest" assertions="1" time="0.020142"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\CreatesNewPublicationPageTest" file="Creates New Publication Page (Hyde\Publications\Testing\Feature\CreatesNewPublicationPage)" tests="6" assertions="13" errors="0" failures="0" skipped="0" time="0.239408">
-        <testcase name="Create" file="Creates New Publication Page (Hyde\Publications\Testing\Feature\CreatesNewPublicationPage)::Create" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationPageTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationPageTest" assertions="2" time="0.126661"/>
-        <testcase name="With text type" file="Creates New Publication Page (Hyde\Publications\Testing\Feature\CreatesNewPublicationPage)::With text type" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationPageTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationPageTest" assertions="2" time="0.024845"/>
-        <testcase name="With array type" file="Creates New Publication Page (Hyde\Publications\Testing\Feature\CreatesNewPublicationPage)::With array type" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationPageTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationPageTest" assertions="2" time="0.022388"/>
-        <testcase name="Create without supplying canonical field" file="Creates New Publication Page (Hyde\Publications\Testing\Feature\CreatesNewPublicationPage)::Create without supplying canonical field" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationPageTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationPageTest" assertions="2" time="0.021405"/>
-        <testcase name="Create without supplying required field" file="Creates New Publication Page (Hyde\Publications\Testing\Feature\CreatesNewPublicationPage)::Create without supplying required field" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationPageTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationPageTest" assertions="2" time="0.021465"/>
-        <testcase name="It creates valid yaml" file="Creates New Publication Page (Hyde\Publications\Testing\Feature\CreatesNewPublicationPage)::It creates valid yaml" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationPageTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationPageTest" assertions="3" time="0.022644"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\CreatesNewPublicationTypeTest" file="Creates New Publication Type (Hyde\Publications\Testing\Feature\CreatesNewPublicationType)" tests="4" assertions="20" errors="0" failures="0" skipped="0" time="0.124119">
-        <testcase name="It creates a new publication type" file="Creates New Publication Type (Hyde\Publications\Testing\Feature\CreatesNewPublicationType)::It creates a new publication type" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationTypeTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationTypeTest" assertions="2" time="0.040828"/>
-        <testcase name="Create with default parameters" file="Creates New Publication Type (Hyde\Publications\Testing\Feature\CreatesNewPublicationType)::Create with default parameters" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationTypeTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationTypeTest" assertions="2" time="0.023729"/>
-        <testcase name="It creates list and detail pages" file="Creates New Publication Type (Hyde\Publications\Testing\Feature\CreatesNewPublicationType)::It creates list and detail pages" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationTypeTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationTypeTest" assertions="8" time="0.036270"/>
-        <testcase name="It uses the paginated list view when pagination is enabled" file="Creates New Publication Type (Hyde\Publications\Testing\Feature\CreatesNewPublicationType)::It uses the paginated list view when pagination is enabled" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationTypeTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationTypeTest" assertions="8" time="0.023292"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\GeneratesPublicationTagPagesTest" file="Generates Publication Tag Pages (Hyde\Publications\Testing\Feature\GeneratesPublicationTagPages)" tests="7" assertions="18" errors="0" failures="0" skipped="0" time="0.299143">
-        <testcase name="Tags index page is generated when tags are used" file="Generates Publication Tag Pages (Hyde\Publications\Testing\Feature\GeneratesPublicationTagPages)::Tags index page is generated when tags are used" class="Hyde\Publications\Testing\Feature\GeneratesPublicationTagPagesTest" classname="Hyde.Publications.Testing.Feature.GeneratesPublicationTagPagesTest" assertions="2" time="0.057643"/>
-        <testcase name="Tags index page is not generated when tags are not used" file="Generates Publication Tag Pages (Hyde\Publications\Testing\Feature\GeneratesPublicationTagPages)::Tags index page is not generated when tags are not used" class="Hyde\Publications\Testing\Feature\GeneratesPublicationTagPagesTest" classname="Hyde.Publications.Testing.Feature.GeneratesPublicationTagPagesTest" assertions="1" time="0.027969"/>
-        <testcase name="Tags pages for publications are generated for used tag" file="Generates Publication Tag Pages (Hyde\Publications\Testing\Feature\GeneratesPublicationTagPages)::Tags pages for publications are generated for used tag" class="Hyde\Publications\Testing\Feature\GeneratesPublicationTagPagesTest" classname="Hyde.Publications.Testing.Feature.GeneratesPublicationTagPagesTest" assertions="1" time="0.038812"/>
-        <testcase name="Tags pages for publications are generated for used tags with publication tags array" file="Generates Publication Tag Pages (Hyde\Publications\Testing\Feature\GeneratesPublicationTagPages)::Tags pages for publications are generated for used tags with publication tags array" class="Hyde\Publications\Testing\Feature\GeneratesPublicationTagPagesTest" classname="Hyde.Publications.Testing.Feature.GeneratesPublicationTagPagesTest" assertions="1" time="0.039367"/>
-        <testcase name="Tags pages for publications are not generated when no tags are used" file="Generates Publication Tag Pages (Hyde\Publications\Testing\Feature\GeneratesPublicationTagPages)::Tags pages for publications are not generated when no tags are used" class="Hyde\Publications\Testing\Feature\GeneratesPublicationTagPagesTest" classname="Hyde.Publications.Testing.Feature.GeneratesPublicationTagPagesTest" assertions="1" time="0.035178"/>
-        <testcase name="Generated index page" file="Generates Publication Tag Pages (Hyde\Publications\Testing\Feature\GeneratesPublicationTagPages)::Generated index page" class="Hyde\Publications\Testing\Feature\GeneratesPublicationTagPagesTest" classname="Hyde.Publications.Testing.Feature.GeneratesPublicationTagPagesTest" assertions="6" time="0.049825"/>
-        <testcase name="Generated detail page" file="Generates Publication Tag Pages (Hyde\Publications\Testing\Feature\GeneratesPublicationTagPages)::Generated detail page" class="Hyde\Publications\Testing\Feature\GeneratesPublicationTagPagesTest" classname="Hyde.Publications.Testing.Feature.GeneratesPublicationTagPagesTest" assertions="6" time="0.050348"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)" tests="10" assertions="17" errors="0" failures="0" skipped="0" time="0.221821">
-        <testcase name="Can collect input" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::Can collect input" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="2" time="0.041192"/>
-        <testcase name="Can terminate with here sequence" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::Can terminate with here sequence" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="2" time="0.020511"/>
-        <testcase name="Can terminate with here sequence after carriage returns" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::Can terminate with here sequence after carriage returns" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="2" time="0.020263"/>
-        <testcase name="Can terminate with end of transmission sequence" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::Can terminate with end of transmission sequence" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="2" time="0.020090"/>
-        <testcase name="Can collect multiple input lines" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::Can collect multiple input lines" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="2" time="0.020024"/>
-        <testcase name="Can enter multiple carriage returns" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::Can enter multiple carriage returns" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="2" time="0.020089"/>
-        <testcase name="Can enter multiple unix endings" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::Can enter multiple unix endings" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="2" time="0.020254"/>
-        <testcase name="Termination message" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::Termination message" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="1" time="0.019724"/>
-        <testcase name="Termination sequence constant" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::Termination sequence constant" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="1" time="0.019821"/>
-        <testcase name="End of transmission constant" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::End of transmission constant" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="1" time="0.019854"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)" tests="23" assertions="121" errors="0" failures="0" skipped="0" time="0.722110">
-        <testcase name="Command creates publication" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command creates publication" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="9" time="0.063232"/>
-        <testcase name="Command with no publication types" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with no publication types" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="3" time="0.024429"/>
-        <testcase name="Command selects the right publication using the names" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command selects the right publication using the names" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="12" time="0.030884"/>
-        <testcase name="Command with existing publication" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with existing publication" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="10" time="0.027684"/>
-        <testcase name="Command with existing publication and overwrite" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with existing publication and overwrite" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="8" time="0.028415"/>
-        <testcase name="Can overwrite existing publication by passing force flag" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Can overwrite existing publication by passing force flag" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="6" time="0.028817"/>
-        <testcase name="Command with publication type passed as argument" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with publication type passed as argument" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="6" time="0.029491"/>
-        <testcase name="Command with invalid publication type passed as argument" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with invalid publication type passed as argument" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="2" time="0.026358"/>
-        <testcase name="Command with schema using canonical meta field" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with schema using canonical meta field" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="3" time="0.027901"/>
-        <testcase name="Command does not ask user to fill in meta fields" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command does not ask user to fill in meta fields" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="4" time="0.028855"/>
-        <testcase name="Command with text input" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with text input" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="3" time="0.029317"/>
-        <testcase name="Command with boolean input" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with boolean input" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="4" time="0.029127"/>
-        <testcase name="Command with array input" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with array input" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="3" time="0.027758"/>
-        <testcase name="Command with media input" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with media input" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="4" time="0.029085"/>
-        <testcase name="Media input selects the right file" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Media input selects the right file" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="4" time="0.029611"/>
-        <testcase name="Command with single tag input" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with single tag input" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="5" time="0.038390"/>
-        <testcase name="Command with multiple tag inputs" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with multiple tag inputs" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="5" time="0.041230"/>
-        <testcase name="Media input with no images" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Media input with no images" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="5" time="0.028809"/>
-        <testcase name="Media input with no files but skips" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Media input with no files but skips" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="6" time="0.030100"/>
-        <testcase name="Tag input with no tags" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Tag input with no tags" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="3" time="0.033204"/>
-        <testcase name="Handle empty options collection for required field" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Handle empty options collection for required field" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="3" time="0.027686"/>
-        <testcase name="With custom validation rules" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::With custom validation rules" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="8" time="0.032765"/>
-        <testcase name="With skipping inputs" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::With skipping inputs" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="5" time="0.028961"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\MakePublicationTypeCommandTest" file="Make Publication Type Command (Hyde\Publications\Testing\Feature\MakePublicationTypeCommand)" tests="6" assertions="63" errors="0" failures="0" skipped="0" time="0.198794">
-        <testcase name="Command creates publication type" file="Make Publication Type Command (Hyde\Publications\Testing\Feature\MakePublicationTypeCommand)::Command creates publication type" class="Hyde\Publications\Testing\Feature\MakePublicationTypeCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationTypeCommandTest" assertions="21" time="0.060734"/>
-        <testcase name="With default values" file="Make Publication Type Command (Hyde\Publications\Testing\Feature\MakePublicationTypeCommand)::With default values" class="Hyde\Publications\Testing\Feature\MakePublicationTypeCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationTypeCommandTest" assertions="6" time="0.027960"/>
-        <testcase name="With multiple fields of the same name" file="Make Publication Type Command (Hyde\Publications\Testing\Feature\MakePublicationTypeCommand)::With multiple fields of the same name" class="Hyde\Publications\Testing\Feature\MakePublicationTypeCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationTypeCommandTest" assertions="18" time="0.031076"/>
-        <testcase name="With existing file of the same name" file="Make Publication Type Command (Hyde\Publications\Testing\Feature\MakePublicationTypeCommand)::With existing file of the same name" class="Hyde\Publications\Testing\Feature\MakePublicationTypeCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationTypeCommandTest" assertions="2" time="0.025072"/>
-        <testcase name="With existing publication of the same name" file="Make Publication Type Command (Hyde\Publications\Testing\Feature\MakePublicationTypeCommand)::With existing publication of the same name" class="Hyde\Publications\Testing\Feature\MakePublicationTypeCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationTypeCommandTest" assertions="2" time="0.025189"/>
-        <testcase name="With tag field input" file="Make Publication Type Command (Hyde\Publications\Testing\Feature\MakePublicationTypeCommand)::With tag field input" class="Hyde\Publications\Testing\Feature\MakePublicationTypeCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationTypeCommandTest" assertions="14" time="0.028765"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)" tests="12" assertions="18" errors="0" failures="0" skipped="0" time="0.264722">
-        <testcase name="Can instantiate class" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Can instantiate class" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="3" time="0.029517"/>
-        <testcase name="From array method" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::From array method" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="3" time="0.020892"/>
-        <testcase name="Can get field as array" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Can get field as array" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="1" time="0.021665"/>
-        <testcase name="Can get field with optional properties as array" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Can get field with optional properties as array" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="1" time="0.021517"/>
-        <testcase name="Can encode field as json" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Can encode field as json" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="1" time="0.021214"/>
-        <testcase name="Can get field with optional properties as json" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Can get field with optional properties as json" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="1" time="0.020093"/>
-        <testcase name="Can construct type using enum case" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Can construct type using enum case" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="3" time="0.020834"/>
-        <testcase name="Type must be valid" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Type must be valid" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="1" time="0.020676"/>
-        <testcase name="Type input is case insensitive" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Type input is case insensitive" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="1" time="0.020077"/>
-        <testcase name="Name gets stored as kebab case" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Name gets stored as kebab case" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="1" time="0.026607"/>
-        <testcase name="Get rules" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Get rules" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="1" time="0.020470"/>
-        <testcase name="Get rules with custom type rules" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Get rules with custom type rules" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="1" time="0.021160"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)" tests="9" assertions="32" errors="0" failures="0" skipped="0" time="0.218796">
-        <testcase name="Cases" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)::Cases" class="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldTypesEnumTest" assertions="11" time="0.038007"/>
-        <testcase name="Get rules" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)::Get rules" class="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldTypesEnumTest" assertions="10" time="0.021572"/>
-        <testcase name="Collect creates collection of cases" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)::Collect creates collection of cases" class="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldTypesEnumTest" assertions="1" time="0.020356"/>
-        <testcase name="Values returns array of case values" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)::Values returns array of case values" class="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldTypesEnumTest" assertions="1" time="0.021128"/>
-        <testcase name="Names returns array of case names" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)::Names returns array of case names" class="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldTypesEnumTest" assertions="1" time="0.036114"/>
-        <testcase name="Canonicable" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)::Canonicable" class="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldTypesEnumTest" assertions="1" time="0.020566"/>
-        <testcase name="Arrayable" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)::Arrayable" class="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldTypesEnumTest" assertions="1" time="0.020347"/>
-        <testcase name="Is canonicable" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)::Is canonicable" class="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldTypesEnumTest" assertions="4" time="0.020415"/>
-        <testcase name="Is arrayable" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)::Is arrayable" class="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldTypesEnumTest" assertions="2" time="0.020291"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)" tests="18" assertions="24" errors="0" failures="0" skipped="0" time="0.426079">
-        <testcase name="Construct" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.045502"/>
-        <testcase name="Validate" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Validate" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="3" time="0.022828"/>
-        <testcase name="Validate with custom type rules" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Validate with custom type rules" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="3" time="0.022708"/>
-        <testcase name="Get rules" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.021024"/>
-        <testcase name="Get rules with custom type rules" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules with custom type rules" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.021264"/>
-        <testcase name="Get rules for array" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules for array" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.021140"/>
-        <testcase name="Validate array passes" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Validate array passes" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.021701"/>
-        <testcase name="Validate array fails" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Validate array fails" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="2" time="0.022927"/>
-        <testcase name="Get rules for datetime" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules for datetime" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.021344"/>
-        <testcase name="Validate datetime passes" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Validate datetime passes" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.021571"/>
-        <testcase name="Validate datetime fails for invalid type" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Validate datetime fails for invalid type" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="2" time="0.022841"/>
-        <testcase name="Get rules for float" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules for float" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.021262"/>
-        <testcase name="Get rules for integer" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules for integer" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.023063"/>
-        <testcase name="Get rules for string" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules for string" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.023113"/>
-        <testcase name="Get rules for text" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules for text" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.021842"/>
-        <testcase name="Get rules for media" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules for media" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.023715"/>
-        <testcase name="Get rules for tag" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules for tag" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.026410"/>
-        <testcase name="Get rules for url" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules for url" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.021825"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)" tests="50" assertions="125" errors="0" failures="0" skipped="0" time="1.075481">
-        <testcase name="Construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.044773"/>
-        <testcase name="Get type" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Get type" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.034607"/>
-        <testcase name="Get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.020386"/>
-        <testcase name="Type" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Type" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.019975"/>
-        <testcase name="String field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::String field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.019907"/>
-        <testcase name="String field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::String field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019645"/>
-        <testcase name="String field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::String field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.020084"/>
-        <testcase name="String field parsing options" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::String field parsing options" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="8" time="0.020355"/>
-        <testcase name="Datetime field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Datetime field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.020268"/>
-        <testcase name="Datetime field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Datetime field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.020778"/>
-        <testcase name="Datetime field with invalid input" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Datetime field with invalid input" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.021535"/>
-        <testcase name="Datetime field with dynamic input" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Datetime field with dynamic input" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019997"/>
-        <testcase name="Datetime field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Datetime field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019809"/>
-        <testcase name="Boolean field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Boolean field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.020011"/>
-        <testcase name="Boolean field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Boolean field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.020670"/>
-        <testcase name="Boolean field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Boolean field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.020137"/>
-        <testcase name="Boolean field with invalid input" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Boolean field with invalid input" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.021766"/>
-        <testcase name="Boolean field parsing options" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Boolean field parsing options" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="4" time="0.021250"/>
-        <testcase name="Integer field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Integer field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.020506"/>
-        <testcase name="Integer field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Integer field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.020008"/>
-        <testcase name="Integer field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Integer field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.020083"/>
-        <testcase name="Integer field with invalid input" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Integer field with invalid input" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.020467"/>
-        <testcase name="Integer field parsing options" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Integer field parsing options" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="8" time="0.020888"/>
-        <testcase name="Float field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Float field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.020201"/>
-        <testcase name="Float field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Float field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019975"/>
-        <testcase name="Float field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Float field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.020469"/>
-        <testcase name="Float field with invalid input" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Float field with invalid input" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.020611"/>
-        <testcase name="Float field parsing options" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Float field parsing options" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="8" time="0.020827"/>
-        <testcase name="Array field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Array field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.020232"/>
-        <testcase name="Array field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Array field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.020163"/>
-        <testcase name="Array field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Array field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019977"/>
-        <testcase name="Array field with array input" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Array field with array input" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019939"/>
-        <testcase name="Array field parsing options" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Array field parsing options" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="8" time="0.020922"/>
-        <testcase name="Text field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Text field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.020218"/>
-        <testcase name="Text field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Text field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019892"/>
-        <testcase name="Text field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Text field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019893"/>
-        <testcase name="Text field parsing options" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Text field parsing options" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="13" time="0.020944"/>
-        <testcase name="Url field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Url field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.036569"/>
-        <testcase name="Url field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Url field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.021600"/>
-        <testcase name="Url field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Url field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.022096"/>
-        <testcase name="Url field with invalid input" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Url field with invalid input" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.022117"/>
-        <testcase name="Media field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Media field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.020752"/>
-        <testcase name="Media field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Media field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019845"/>
-        <testcase name="Media field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Media field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019691"/>
-        <testcase name="Tag field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Tag field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.019654"/>
-        <testcase name="Tag field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Tag field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019685"/>
-        <testcase name="Tag field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Tag field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019710"/>
-        <testcase name="Tag field with array input" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Tag field with array input" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019830"/>
-        <testcase name="Tag field parsing options" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Tag field parsing options" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="8" time="0.020769"/>
-        <testcase name="Default validation rules" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Default validation rules" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="10" time="0.020997"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\PublicationListPageTest" file="Publication List Page (Hyde\Publications\Testing\Feature\PublicationListPage)" tests="4" assertions="7" errors="0" failures="0" skipped="0" time="0.170833">
-        <testcase name="Source path mappings" file="Publication List Page (Hyde\Publications\Testing\Feature\PublicationListPage)::Source path mappings" class="Hyde\Publications\Testing\Feature\PublicationListPageTest" classname="Hyde.Publications.Testing.Feature.PublicationListPageTest" assertions="4" time="0.085809"/>
-        <testcase name="Listing page can be compiled" file="Publication List Page (Hyde\Publications\Testing\Feature\PublicationListPage)::Listing page can be compiled" class="Hyde\Publications\Testing\Feature\PublicationListPageTest" classname="Hyde.Publications.Testing.Feature.PublicationListPageTest" assertions="1" time="0.040842"/>
-        <testcase name="List page can show up in navigation" file="Publication List Page (Hyde\Publications\Testing\Feature\PublicationListPage)::List page can show up in navigation" class="Hyde\Publications\Testing\Feature\PublicationListPageTest" classname="Hyde.Publications.Testing.Feature.PublicationListPageTest" assertions="1" time="0.022378"/>
-        <testcase name="List page is not added to navigation when publication identifier is set in config" file="Publication List Page (Hyde\Publications\Testing\Feature\PublicationListPage)::List page is not added to navigation when publication identifier is set in config" class="Hyde\Publications\Testing\Feature\PublicationListPageTest" classname="Hyde.Publications.Testing.Feature.PublicationListPageTest" assertions="1" time="0.021805"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\PublicationPageCompilerTest" file="Publication Page Compiler (Hyde\Publications\Testing\Feature\PublicationPageCompiler)" tests="8" assertions="10" errors="0" failures="0" skipped="0" time="0.236575">
-        <testcase name="Can compile publication pages" file="Publication Page Compiler (Hyde\Publications\Testing\Feature\PublicationPageCompiler)::Can compile publication pages" class="Hyde\Publications\Testing\Feature\PublicationPageCompilerTest" classname="Hyde.Publications.Testing.Feature.PublicationPageCompilerTest" assertions="1" time="0.030511"/>
-        <testcase name="Can compile list pages" file="Publication Page Compiler (Hyde\Publications\Testing\Feature\PublicationPageCompiler)::Can compile list pages" class="Hyde\Publications\Testing\Feature\PublicationPageCompilerTest" classname="Hyde.Publications.Testing.Feature.PublicationPageCompilerTest" assertions="1" time="0.030986"/>
-        <testcase name="Can compile publication pages with registered view" file="Publication Page Compiler (Hyde\Publications\Testing\Feature\PublicationPageCompiler)::Can compile publication pages with registered view" class="Hyde\Publications\Testing\Feature\PublicationPageCompilerTest" classname="Hyde.Publications.Testing.Feature.PublicationPageCompilerTest" assertions="1" time="0.029874"/>
-        <testcase name="Can compile list pages with registered view" file="Publication Page Compiler (Hyde\Publications\Testing\Feature\PublicationPageCompiler)::Can compile list pages with registered view" class="Hyde\Publications\Testing\Feature\PublicationPageCompilerTest" classname="Hyde.Publications.Testing.Feature.PublicationPageCompilerTest" assertions="1" time="0.038904"/>
-        <testcase name="Can compile publication pages with registered namespaced view" file="Publication Page Compiler (Hyde\Publications\Testing\Feature\PublicationPageCompiler)::Can compile publication pages with registered namespaced view" class="Hyde\Publications\Testing\Feature\PublicationPageCompilerTest" classname="Hyde.Publications.Testing.Feature.PublicationPageCompilerTest" assertions="1" time="0.037441"/>
-        <testcase name="Can compile list pages with registered namespaced view" file="Publication Page Compiler (Hyde\Publications\Testing\Feature\PublicationPageCompiler)::Can compile list pages with registered namespaced view" class="Hyde\Publications\Testing\Feature\PublicationPageCompilerTest" classname="Hyde.Publications.Testing.Feature.PublicationPageCompilerTest" assertions="1" time="0.023813"/>
-        <testcase name="With missing detail blade view" file="Publication Page Compiler (Hyde\Publications\Testing\Feature\PublicationPageCompiler)::With missing detail blade view" class="Hyde\Publications\Testing\Feature\PublicationPageCompilerTest" classname="Hyde.Publications.Testing.Feature.PublicationPageCompilerTest" assertions="2" time="0.022780"/>
-        <testcase name="With missing list blade view" file="Publication Page Compiler (Hyde\Publications\Testing\Feature\PublicationPageCompiler)::With missing list blade view" class="Hyde\Publications\Testing\Feature\PublicationPageCompilerTest" classname="Hyde.Publications.Testing.Feature.PublicationPageCompilerTest" assertions="2" time="0.022266"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\PublicationPageTest" file="Publication Page (Hyde\Publications\Testing\Feature\PublicationPage)" tests="8" assertions="27" errors="0" failures="0" skipped="0" time="0.224786">
-        <testcase name="Source path mappings" file="Publication Page (Hyde\Publications\Testing\Feature\PublicationPage)::Source path mappings" class="Hyde\Publications\Testing\Feature\PublicationPageTest" classname="Hyde.Publications.Testing.Feature.PublicationPageTest" assertions="4" time="0.033645"/>
-        <testcase name="Publication pages are routable" file="Publication Page (Hyde\Publications\Testing\Feature\PublicationPage)::Publication pages are routable" class="Hyde\Publications\Testing\Feature\PublicationPageTest" classname="Hyde.Publications.Testing.Feature.PublicationPageTest" assertions="5" time="0.030202"/>
-        <testcase name="Publication pages are discoverable" file="Publication Page (Hyde\Publications\Testing\Feature\PublicationPage)::Publication pages are discoverable" class="Hyde\Publications\Testing\Feature\PublicationPageTest" classname="Hyde.Publications.Testing.Feature.PublicationPageTest" assertions="1" time="0.030338"/>
-        <testcase name="Publication pages are properly parsed" file="Publication Page (Hyde\Publications\Testing\Feature\PublicationPage)::Publication pages are properly parsed" class="Hyde\Publications\Testing\Feature\PublicationPageTest" classname="Hyde.Publications.Testing.Feature.PublicationPageTest" assertions="6" time="0.029555"/>
-        <testcase name="Publication pages are parsable" file="Publication Page (Hyde\Publications\Testing\Feature\PublicationPage)::Publication pages are parsable" class="Hyde\Publications\Testing\Feature\PublicationPageTest" classname="Hyde.Publications.Testing.Feature.PublicationPageTest" assertions="6" time="0.023713"/>
-        <testcase name="Publication pages are compilable" file="Publication Page (Hyde\Publications\Testing\Feature\PublicationPage)::Publication pages are compilable" class="Hyde\Publications\Testing\Feature\PublicationPageTest" classname="Hyde.Publications.Testing.Feature.PublicationPageTest" assertions="1" time="0.030718"/>
-        <testcase name="Identifier passed constructor is normalized" file="Publication Page (Hyde\Publications\Testing\Feature\PublicationPage)::Identifier passed constructor is normalized" class="Hyde\Publications\Testing\Feature\PublicationPageTest" classname="Hyde.Publications.Testing.Feature.PublicationPageTest" assertions="3" time="0.023956"/>
-        <testcase name="Identifier normalizer does not affect directory with same name as identifier" file="Publication Page (Hyde\Publications\Testing\Feature\PublicationPage)::Identifier normalizer does not affect directory with same name as identifier" class="Hyde\Publications\Testing\Feature\PublicationPageTest" classname="Hyde.Publications.Testing.Feature.PublicationPageTest" assertions="1" time="0.022658"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)" tests="34" assertions="36" errors="0" failures="0" skipped="0" time="0.794269">
-        <testcase name="Source directory" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Source directory" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.031025"/>
-        <testcase name="Output directory" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Output directory" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.019706"/>
-        <testcase name="File extension" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::File extension" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.020046"/>
-        <testcase name="Source path" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Source path" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.021527"/>
-        <testcase name="Output path" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Output path" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.020865"/>
-        <testcase name="Path" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Path" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.020385"/>
-        <testcase name="Get source path" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Get source path" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.023310"/>
-        <testcase name="Get output path" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Get output path" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.022781"/>
-        <testcase name="Get link" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Get link" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.023068"/>
-        <testcase name="Make" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Make" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.024223"/>
-        <testcase name="Make with data" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Make with data" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.024057"/>
-        <testcase name="Show in navigation" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Show in navigation" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.022733"/>
-        <testcase name="Navigation menu priority" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Navigation menu priority" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.022142"/>
-        <testcase name="Navigation menu label" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Navigation menu label" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.036864"/>
-        <testcase name="Navigation menu group" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Navigation menu group" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.023050"/>
-        <testcase name="Get blade view" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Get blade view" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.023019"/>
-        <testcase name="Files" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Files" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.024689"/>
-        <testcase name="Data" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Data" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.021271"/>
-        <testcase name="Get" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Get" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.025783"/>
-        <testcase name="Parse" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Parse" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.023050"/>
-        <testcase name="Get route key" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Get route key" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.021837"/>
-        <testcase name="Title" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Title" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.021739"/>
-        <testcase name="All" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::All" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.023949"/>
-        <testcase name="Metadata" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Metadata" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.021544"/>
-        <testcase name="Construct" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Construct" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.022546"/>
-        <testcase name="Get route" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Get route" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.026696"/>
-        <testcase name="Get identifier" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Get identifier" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.022562"/>
-        <testcase name="Has" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Has" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.022531"/>
-        <testcase name="To core data object" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::To core data object" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.021962"/>
-        <testcase name="Compile" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Compile" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.027306"/>
-        <testcase name="Matter" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Matter" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.022355"/>
-        <testcase name="Markdown" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Markdown" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.021550"/>
-        <testcase name="Save" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Save" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="2" time="0.022405"/>
-        <testcase name="Get type" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Get type" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="2" time="0.021694"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\PublicationPageValidatorTest" file="Publication Page Validator (Hyde\Publications\Testing\Feature\PublicationPageValidator)" tests="5" assertions="5" errors="0" failures="0" skipped="0" time="0.187334">
-        <testcase name="Validate page file" file="Publication Page Validator (Hyde\Publications\Testing\Feature\PublicationPageValidator)::Validate page file" class="Hyde\Publications\Testing\Feature\PublicationPageValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationPageValidatorTest" assertions="1" time="0.096532"/>
-        <testcase name="Validate page file with invalid fields" file="Publication Page Validator (Hyde\Publications\Testing\Feature\PublicationPageValidator)::Validate page file with invalid fields" class="Hyde\Publications\Testing\Feature\PublicationPageValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationPageValidatorTest" assertions="1" time="0.023738"/>
-        <testcase name="Validate page file with invalid data buffered" file="Publication Page Validator (Hyde\Publications\Testing\Feature\PublicationPageValidator)::Validate page file with invalid data buffered" class="Hyde\Publications\Testing\Feature\PublicationPageValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationPageValidatorTest" assertions="1" time="0.023169"/>
-        <testcase name="Warnings with warnings" file="Publication Page Validator (Hyde\Publications\Testing\Feature\PublicationPageValidator)::Warnings with warnings" class="Hyde\Publications\Testing\Feature\PublicationPageValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationPageValidatorTest" assertions="1" time="0.022032"/>
-        <testcase name="Warnings without warnings" file="Publication Page Validator (Hyde\Publications\Testing\Feature\PublicationPageValidator)::Warnings without warnings" class="Hyde\Publications\Testing\Feature\PublicationPageValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationPageValidatorTest" assertions="1" time="0.021862"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\PublicationSchemaValidatorTest" file="Publication Schema Validator (Hyde\Publications\Testing\Feature\PublicationSchemaValidator)" tests="4" assertions="4" errors="0" failures="0" skipped="0" time="0.124737">
-        <testcase name="Validate schema file" file="Publication Schema Validator (Hyde\Publications\Testing\Feature\PublicationSchemaValidator)::Validate schema file" class="Hyde\Publications\Testing\Feature\PublicationSchemaValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationSchemaValidatorTest" assertions="1" time="0.045714"/>
-        <testcase name="Validate schema file with invalid schema" file="Publication Schema Validator (Hyde\Publications\Testing\Feature\PublicationSchemaValidator)::Validate schema file with invalid schema" class="Hyde\Publications\Testing\Feature\PublicationSchemaValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationSchemaValidatorTest" assertions="1" time="0.026027"/>
-        <testcase name="Validate schema file with invalid fields" file="Publication Schema Validator (Hyde\Publications\Testing\Feature\PublicationSchemaValidator)::Validate schema file with invalid fields" class="Hyde\Publications\Testing\Feature\PublicationSchemaValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationSchemaValidatorTest" assertions="1" time="0.026316"/>
-        <testcase name="Validate schema file with invalid data buffered" file="Publication Schema Validator (Hyde\Publications\Testing\Feature\PublicationSchemaValidator)::Validate schema file with invalid data buffered" class="Hyde\Publications\Testing\Feature\PublicationSchemaValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationSchemaValidatorTest" assertions="1" time="0.026679"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\PublicationServiceTest" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)" tests="21" assertions="24" errors="0" failures="0" skipped="0" time="0.632792">
-        <testcase name="Get publication types" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publication types" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.028650"/>
-        <testcase name="Get publication types with types" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publication types with types" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.028821"/>
-        <testcase name="Get publication types method returns the same instances" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publication types method returns the same instances" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.022831"/>
-        <testcase name="Get publications for pub type" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publications for pub type" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.026954"/>
-        <testcase name="Get publications for pub type with publications" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publications for pub type with publications" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.030977"/>
-        <testcase name="Get publications for pub type only contains instances of publication page" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publications for pub type only contains instances of publication page" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.028482"/>
-        <testcase name="Get publications for pub type sorts publications by sort field" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publications for pub type sorts publications by sort field" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.039550"/>
-        <testcase name="Get publications for pub type sorts publications with specified direction" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publications for pub type sorts publications with specified direction" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.039697"/>
-        <testcase name="Get publications for pub type sorts publications by new sort field" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publications for pub type sorts publications by new sort field" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.048979"/>
-        <testcase name="Get publications for pub type sorts publications by new sort field descending" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publications for pub type sorts publications by new sort field descending" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.040262"/>
-        <testcase name="Get publications for pub type with invalid sort field" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publications for pub type with invalid sort field" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.056366"/>
-        <testcase name="Get media for pub type" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get media for pub type" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.022320"/>
-        <testcase name="Get media for pub type with media" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get media for pub type with media" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.022397"/>
-        <testcase name="Get media for pub type with custom media directory" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get media for pub type with custom media directory" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.022591"/>
-        <testcase name="Parse publication file" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Parse publication file" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="2" time="0.024690"/>
-        <testcase name="Parse publication file with non existent file" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Parse publication file with non existent file" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="2" time="0.023520"/>
-        <testcase name="Publication type exists" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Publication type exists" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="2" time="0.022439"/>
-        <testcase name="Can get tags used in publications" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Can get tags used in publications" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.026421"/>
-        <testcase name="Multiple occurring tags are aggregated uniquely" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Multiple occurring tags are aggregated uniquely" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.026219"/>
-        <testcase name="All tags method finds both array and single tag values" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::All tags method finds both array and single tag values" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.026186"/>
-        <testcase name="All tags method returns empty array when there are no tags used" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::All tags method returns empty array when there are no tags used" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.024439"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\PublicationTypeTest" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)" tests="39" assertions="62" errors="0" failures="0" skipped="0" time="0.967240">
-        <testcase name="Can construct new publication type" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Can construct new publication type" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="8" time="0.050448"/>
-        <testcase name="Construct with default values" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Construct with default values" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="9" time="0.020473"/>
-        <testcase name="Construct with pagination settings" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Construct with pagination settings" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="3" time="0.019862"/>
-        <testcase name="Class is arrayable" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Class is arrayable" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.019927"/>
-        <testcase name="Class is json serializable" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Class is json serializable" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.019742"/>
-        <testcase name="Class is jsonable" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Class is jsonable" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.019691"/>
-        <testcase name="Get directory" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get directory" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.020913"/>
-        <testcase name="Get identifier" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get identifier" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.021193"/>
-        <testcase name="Get identifier with no directory" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get identifier with no directory" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.021124"/>
-        <testcase name="Can save to json file" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Can save to json file" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="2" time="0.022759"/>
-        <testcase name="Can save to json file using custom path" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Can save to json file using custom path" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="2" time="0.022617"/>
-        <testcase name="Can load from json file" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Can load from json file" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.022313"/>
-        <testcase name="Can load fields with validation rules" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Can load fields with validation rules" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.022036"/>
-        <testcase name="Get fields method returns collection of field objects" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get fields method returns collection of field objects" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="4" time="0.021242"/>
-        <testcase name="Get field method parses publication fields from schema file" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get field method parses publication fields from schema file" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.023276"/>
-        <testcase name="Get field method parses publication fields with option properties from schema file" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get field method parses publication fields with option properties from schema file" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.023194"/>
-        <testcase name="Get method can find existing file on disk" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get method can find existing file on disk" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.024000"/>
-        <testcase name="Get method fails if publication type does not exist" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get method fails if publication type does not exist" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="2" time="0.023139"/>
-        <testcase name="Get list page" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get list page" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.039247"/>
-        <testcase name="Get field definition" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get field definition" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.020637"/>
-        <testcase name="Get field definition with missing field" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get field definition with missing field" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.020093"/>
-        <testcase name="Get canonical field definition" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get canonical field definition" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.019943"/>
-        <testcase name="Get canonical field definition with meta field as canonical" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get canonical field definition with meta field as canonical" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.020081"/>
-        <testcase name="Get publications" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get publications" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.024525"/>
-        <testcase name="Get paginator" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get paginator" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.024061"/>
-        <testcase name="Get paginator with custom publication type pagination settings" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get paginator with custom publication type pagination settings" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.025066"/>
-        <testcase name="Get paginator sorts collection by specified pagination settings" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get paginator sorts collection by specified pagination settings" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.047616"/>
-        <testcase name="Get paginator sorts collection by specified pagination settings with descending sort" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get paginator sorts collection by specified pagination settings with descending sort" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.047583"/>
-        <testcase name="Uses pagination returns true when pagination should be enabled" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Uses pagination returns true when pagination should be enabled" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.032276"/>
-        <testcase name="Uses pagination returns false when page size is set to nought" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Uses pagination returns false when page size is set to nought" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.021397"/>
-        <testcase name="Uses pagination returns false when number of pages is less than page size" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Uses pagination returns false when number of pages is less than page size" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.031903"/>
-        <testcase name="Array representation with default values" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Array representation with default values" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.020923"/>
-        <testcase name="Json representation with default values" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Json representation with default values" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.021157"/>
-        <testcase name="Array representation with metadata" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Array representation with metadata" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.020862"/>
-        <testcase name="Json representation with metadata" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Json representation with metadata" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.021772"/>
-        <testcase name="Can parse schema file with metadata" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Can parse schema file with metadata" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.023894"/>
-        <testcase name="Can get metadata" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Can get metadata" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.021925"/>
-        <testcase name="Can set metadata" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Can set metadata" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.020697"/>
-        <testcase name="Validate schema file" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Validate schema file" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.023634"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)" tests="16" assertions="34" errors="0" failures="0" skipped="0" time="0.553343">
-        <testcase name="Get page classes method" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Get page classes method" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="1" time="0.071773"/>
-        <testcase name="Get types method" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Get types method" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="1" time="0.022127"/>
-        <testcase name="Get types method with types" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Get types method with types" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="1" time="0.044493"/>
-        <testcase name="Get types method with multiple types" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Get types method with multiple types" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="1" time="0.031748"/>
-        <testcase name="Publication files are discovered" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Publication files are discovered" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="3" time="0.025461"/>
-        <testcase name="Publication files are discovered for multiple types" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Publication files are discovered for multiple types" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="1" time="0.026781"/>
-        <testcase name="Publication media files are discovered" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Publication media files are discovered" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="2" time="0.023538"/>
-        <testcase name="Base publication pages are discovered" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Base publication pages are discovered" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="1" time="0.031546"/>
-        <testcase name="Publication pages are discovered" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Publication pages are discovered" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="3" time="0.034037"/>
-        <testcase name="Listing pages for publications are generated" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Listing pages for publications are generated" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="3" time="0.033756"/>
-        <testcase name="Paginated listing pages for publications are generated" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Paginated listing pages for publications are generated" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="3" time="0.040492"/>
-        <testcase name="Publication tag list pages are generated" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Publication tag list pages are generated" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="1" time="0.036254"/>
-        <testcase name="Publication tag list routes with tags are generated" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Publication tag list routes with tags are generated" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="3" time="0.038576"/>
-        <testcase name="Publication routes are discovered" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Publication routes are discovered" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="4" time="0.031987"/>
-        <testcase name="Publication tag list routes are discovered" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Publication tag list routes are discovered" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="3" time="0.029225"/>
-        <testcase name="Publication tag list routes with tags are discovered" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Publication tag list routes with tags are discovered" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="3" time="0.031549"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)" tests="12" assertions="12" errors="0" failures="0" skipped="0" time="0.394459">
-        <testcase name="With standard page" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::With standard page" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.062329"/>
-        <testcase name="With blank publication type" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::With blank publication type" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.022725"/>
-        <testcase name="With empty tags" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::With empty tags" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.026126"/>
-        <testcase name="With publication with tag" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::With publication with tag" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.026204"/>
-        <testcase name="With more tagged publications" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::With more tagged publications" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.027795"/>
-        <testcase name="With publications with other tag value" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::With publications with other tag value" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.042716"/>
-        <testcase name="With publications with current one being untagged" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::With publications with current one being untagged" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.028027"/>
-        <testcase name="With multiple related pages" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::With multiple related pages" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.030837"/>
-        <testcase name="With multiple related pages and limit" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::With multiple related pages and limit" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.031184"/>
-        <testcase name="Only publications with the same tag are included" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::Only publications with the same tag are included" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.031175"/>
-        <testcase name="Results are sorted by date with latest first" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::Results are sorted by date with latest first" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.031979"/>
-        <testcase name="The render method" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::The render method" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.033362"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\SeedPublicationCommandTest" file="Seed Publication Command (Hyde\Publications\Testing\Feature\SeedPublicationCommand)" tests="7" assertions="29" errors="0" failures="0" skipped="0" time="0.268275">
-        <testcase name="Can seed publications" file="Seed Publication Command (Hyde\Publications\Testing\Feature\SeedPublicationCommand)::Can seed publications" class="Hyde\Publications\Testing\Feature\SeedPublicationCommandTest" classname="Hyde.Publications.Testing.Feature.SeedPublicationCommandTest" assertions="6" time="0.088349"/>
-        <testcase name="Can seed publications using arguments" file="Seed Publication Command (Hyde\Publications\Testing\Feature\SeedPublicationCommand)::Can seed publications using arguments" class="Hyde\Publications\Testing\Feature\SeedPublicationCommandTest" classname="Hyde.Publications.Testing.Feature.SeedPublicationCommandTest" assertions="3" time="0.029276"/>
-        <testcase name="Can seed multiple publications" file="Seed Publication Command (Hyde\Publications\Testing\Feature\SeedPublicationCommand)::Can seed multiple publications" class="Hyde\Publications\Testing\Feature\SeedPublicationCommandTest" classname="Hyde.Publications.Testing.Feature.SeedPublicationCommandTest" assertions="4" time="0.029912"/>
-        <testcase name="Command asks to confirm before creating many publications" file="Seed Publication Command (Hyde\Publications\Testing\Feature\SeedPublicationCommand)::Command asks to confirm before creating many publications" class="Hyde\Publications\Testing\Feature\SeedPublicationCommandTest" classname="Hyde.Publications.Testing.Feature.SeedPublicationCommandTest" assertions="7" time="0.027028"/>
-        <testcase name="Command asks to confirm before creating many publications when using arguments" file="Seed Publication Command (Hyde\Publications\Testing\Feature\SeedPublicationCommand)::Command asks to confirm before creating many publications when using arguments" class="Hyde\Publications\Testing\Feature\SeedPublicationCommandTest" classname="Hyde.Publications.Testing.Feature.SeedPublicationCommandTest" assertions="5" time="0.026465"/>
-        <testcase name="With invalid publication type" file="Seed Publication Command (Hyde\Publications\Testing\Feature\SeedPublicationCommand)::With invalid publication type" class="Hyde\Publications\Testing\Feature\SeedPublicationCommandTest" classname="Hyde.Publications.Testing.Feature.SeedPublicationCommandTest" assertions="2" time="0.041304"/>
-        <testcase name="With no publication types" file="Seed Publication Command (Hyde\Publications\Testing\Feature\SeedPublicationCommand)::With no publication types" class="Hyde\Publications\Testing\Feature\SeedPublicationCommandTest" classname="Hyde.Publications.Testing.Feature.SeedPublicationCommandTest" assertions="2" time="0.025941"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)" tests="13" assertions="38" errors="0" failures="0" skipped="0" time="0.362089">
-        <testcase name="Create" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::Create" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="3" time="0.035352"/>
-        <testcase name="Create many" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::Create many" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="2" time="0.027283"/>
-        <testcase name="With array type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With array type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="5" time="0.026346"/>
-        <testcase name="With boolean type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With boolean type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="2" time="0.026244"/>
-        <testcase name="With date time type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With date time type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="3" time="0.026433"/>
-        <testcase name="With float type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With float type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="2" time="0.025908"/>
-        <testcase name="With media type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With media type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="3" time="0.026224"/>
-        <testcase name="With integer type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With integer type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="2" time="0.026153"/>
-        <testcase name="With string type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With string type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="2" time="0.025981"/>
-        <testcase name="With tag type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With tag type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="4" time="0.037067"/>
-        <testcase name="With text type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With text type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="4" time="0.026508"/>
-        <testcase name="With url type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With url type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="3" time="0.026333"/>
-        <testcase name="With canonical definition" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With canonical definition" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="3" time="0.026255"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModuleTest" file="Static Site Builder Publication Module (Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModule)" tests="5" assertions="25" errors="0" failures="0" skipped="0" time="0.781586">
-        <testcase name="Compiling with publication type with seeded files containing all field types" file="Static Site Builder Publication Module (Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModule)::Compiling with publication type with seeded files containing all field types" class="Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModuleTest" classname="Hyde.Publications.Testing.Feature.StaticSiteBuilderPublicationModuleTest" assertions="10" time="0.259665"/>
-        <testcase name="Compiling with publication type that uses the published views" file="Static Site Builder Publication Module (Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModule)::Compiling with publication type that uses the published views" class="Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModuleTest" classname="Hyde.Publications.Testing.Feature.StaticSiteBuilderPublicationModuleTest" assertions="3" time="0.109037"/>
-        <testcase name="Compiling with publication type that uses the vendor views" file="Static Site Builder Publication Module (Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModule)::Compiling with publication type that uses the vendor views" class="Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModuleTest" classname="Hyde.Publications.Testing.Feature.StaticSiteBuilderPublicationModuleTest" assertions="2" time="0.103025"/>
-        <testcase name="Compiling with publication type that uses the published paginated views" file="Static Site Builder Publication Module (Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModule)::Compiling with publication type that uses the published paginated views" class="Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModuleTest" classname="Hyde.Publications.Testing.Feature.StaticSiteBuilderPublicationModuleTest" assertions="5" time="0.150766"/>
-        <testcase name="Compiling with publication type that uses the paginated vendor views" file="Static Site Builder Publication Module (Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModule)::Compiling with publication type that uses the paginated vendor views" class="Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModuleTest" classname="Hyde.Publications.Testing.Feature.StaticSiteBuilderPublicationModuleTest" assertions="5" time="0.159094"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\TranslationServiceProviderTest" file="Translation Service Provider (Hyde\Publications\Testing\Feature\TranslationServiceProvider)" tests="3" assertions="4" errors="0" failures="0" skipped="0" time="0.070323">
-        <testcase name="Register" file="Translation Service Provider (Hyde\Publications\Testing\Feature\TranslationServiceProvider)::Register" class="Hyde\Publications\Testing\Feature\TranslationServiceProviderTest" classname="Hyde.Publications.Testing.Feature.TranslationServiceProviderTest" assertions="2" time="0.029153"/>
-        <testcase name="Boot" file="Translation Service Provider (Hyde\Publications\Testing\Feature\TranslationServiceProvider)::Boot" class="Hyde\Publications\Testing\Feature\TranslationServiceProviderTest" classname="Hyde.Publications.Testing.Feature.TranslationServiceProviderTest" assertions="1" time="0.020163"/>
-        <testcase name="Validation" file="Translation Service Provider (Hyde\Publications\Testing\Feature\TranslationServiceProvider)::Validation" class="Hyde\Publications\Testing\Feature\TranslationServiceProviderTest" classname="Hyde.Publications.Testing.Feature.TranslationServiceProviderTest" assertions="1" time="0.021007"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommandTest" file="Validate Publication Types Command (Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommand)" tests="7" assertions="60" errors="0" failures="0" skipped="0" time="0.228709">
-        <testcase name="With no publication types" file="Validate Publication Types Command (Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommand)::With no publication types" class="Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationTypesCommandTest" assertions="3" time="0.030142"/>
-        <testcase name="With valid schema file" file="Validate Publication Types Command (Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommand)::With valid schema file" class="Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationTypesCommandTest" assertions="6" time="0.028354"/>
-        <testcase name="With invalid schema file" file="Validate Publication Types Command (Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommand)::With invalid schema file" class="Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationTypesCommandTest" assertions="19" time="0.044918"/>
-        <testcase name="With multiple publication types" file="Validate Publication Types Command (Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommand)::With multiple publication types" class="Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationTypesCommandTest" assertions="22" time="0.038376"/>
-        <testcase name="With no fields" file="Validate Publication Types Command (Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommand)::With no fields" class="Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationTypesCommandTest" assertions="6" time="0.028984"/>
-        <testcase name="Json output option" file="Validate Publication Types Command (Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommand)::Json output option" class="Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationTypesCommandTest" assertions="2" time="0.026221"/>
-        <testcase name="Multiple types with json output" file="Validate Publication Types Command (Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommand)::Multiple types with json output" class="Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationTypesCommandTest" assertions="2" time="0.031713"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)" tests="13" assertions="66" errors="0" failures="0" skipped="0" time="0.407595">
-        <testcase name="With no publication types" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With no publication types" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="2" time="0.034129"/>
-        <testcase name="With invalid publication type" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With invalid publication type" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="2" time="0.023793"/>
-        <testcase name="With publication type" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With publication type" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="4" time="0.029095"/>
-        <testcase name="With publication type and verbose output" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With publication type and verbose output" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="4" time="0.029405"/>
-        <testcase name="With invalid publication" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With invalid publication" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="4" time="0.029692"/>
-        <testcase name="With warned publication" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With warned publication" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="4" time="0.029812"/>
-        <testcase name="With multiple publication types" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With multiple publication types" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="1" time="0.043744"/>
-        <testcase name="With multiple invalid fields" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With multiple invalid fields" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="4" time="0.030837"/>
-        <testcase name="Only specified type is validated when using argument" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::Only specified type is validated when using argument" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="1" time="0.027130"/>
-        <testcase name="Output" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::Output" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="17" time="0.037404"/>
-        <testcase name="With verbose output" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With verbose output" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="19" time="0.037417"/>
-        <testcase name="With json output" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With json output" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="2" time="0.029931"/>
-        <testcase name="With json output with no publications" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With json output with no publications" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="2" time="0.025205"/>
-      </testsuite>
-      <testsuite name="Hyde\Publications\Testing\Feature\ValidatingCommandTest" file="Validating Command (Hyde\Publications\Testing\Feature\ValidatingCommand)" tests="7" assertions="24" errors="0" failures="0" skipped="0" time="0.186416">
-        <testcase name="Ask with validation captures input" file="Validating Command (Hyde\Publications\Testing\Feature\ValidatingCommand)::Ask with validation captures input" class="Hyde\Publications\Testing\Feature\ValidatingCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatingCommandTest" assertions="2" time="0.039516"/>
-        <testcase name="Ask with validation retries" file="Validating Command (Hyde\Publications\Testing\Feature\ValidatingCommand)::Ask with validation retries" class="Hyde\Publications\Testing\Feature\ValidatingCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatingCommandTest" assertions="3" time="0.021312"/>
-        <testcase name="Ask with validation retries too many times" file="Validating Command (Hyde\Publications\Testing\Feature\ValidatingCommand)::Ask with validation retries too many times" class="Hyde\Publications\Testing\Feature\ValidatingCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatingCommandTest" assertions="4" time="0.034664"/>
-        <testcase name="Ask with validation normalizes boolean input" file="Validating Command (Hyde\Publications\Testing\Feature\ValidatingCommand)::Ask with validation normalizes boolean input" class="Hyde\Publications\Testing\Feature\ValidatingCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatingCommandTest" assertions="3" time="0.020798"/>
-        <testcase name="Validation is called" file="Validating Command (Hyde\Publications\Testing\Feature\ValidatingCommand)::Validation is called" class="Hyde\Publications\Testing\Feature\ValidatingCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatingCommandTest" assertions="4" time="0.023732"/>
-        <testcase name="Reloadable choice helper" file="Validating Command (Hyde\Publications\Testing\Feature\ValidatingCommand)::Reloadable choice helper" class="Hyde\Publications\Testing\Feature\ValidatingCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatingCommandTest" assertions="3" time="0.023513"/>
-        <testcase name="Reloadable choice helper selecting reload" file="Validating Command (Hyde\Publications\Testing\Feature\ValidatingCommand)::Reloadable choice helper selecting reload" class="Hyde\Publications\Testing\Feature\ValidatingCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatingCommandTest" assertions="5" time="0.022880"/>
+    <testsuite name="Publications" tests="358" assertions="933" errors="0" failures="0" skipped="0" time="10.146682">
+      <testsuite name="Hyde\Publications\Testing\Feature\CreateActionTest" file="Create Action (Hyde\Publications\Testing\Feature\CreateAction)" tests="7" assertions="15" errors="0" failures="0" skipped="0" time="0.150914">
+        <testcase name="Create" file="Create Action (Hyde\Publications\Testing\Feature\CreateAction)::Create" class="Hyde\Publications\Testing\Feature\CreateActionTest" classname="Hyde.Publications.Testing.Feature.CreateActionTest" assertions="2" time="0.029840"/>
+        <testcase name="With conflict" file="Create Action (Hyde\Publications\Testing\Feature\CreateAction)::With conflict" class="Hyde\Publications\Testing\Feature\CreateActionTest" classname="Hyde.Publications.Testing.Feature.CreateActionTest" assertions="1" time="0.019850"/>
+        <testcase name="With conflict force" file="Create Action (Hyde\Publications\Testing\Feature\CreateAction)::With conflict force" class="Hyde\Publications\Testing\Feature\CreateActionTest" classname="Hyde.Publications.Testing.Feature.CreateActionTest" assertions="1" time="0.020388"/>
+        <testcase name="Output path helpers" file="Create Action (Hyde\Publications\Testing\Feature\CreateAction)::Output path helpers" class="Hyde\Publications\Testing\Feature\CreateActionTest" classname="Hyde.Publications.Testing.Feature.CreateActionTest" assertions="2" time="0.019886"/>
+        <testcase name="Conflict prediction helpers" file="Create Action (Hyde\Publications\Testing\Feature\CreateAction)::Conflict prediction helpers" class="Hyde\Publications\Testing\Feature\CreateActionTest" classname="Hyde.Publications.Testing.Feature.CreateActionTest" assertions="6" time="0.020753"/>
+        <testcase name="Can save to subdirectory" file="Create Action (Hyde\Publications\Testing\Feature\CreateAction)::Can save to subdirectory" class="Hyde\Publications\Testing\Feature\CreateActionTest" classname="Hyde.Publications.Testing.Feature.CreateActionTest" assertions="2" time="0.020623"/>
+        <testcase name="Format string for storage" file="Create Action (Hyde\Publications\Testing\Feature\CreateAction)::Format string for storage" class="Hyde\Publications\Testing\Feature\CreateActionTest" classname="Hyde.Publications.Testing.Feature.CreateActionTest" assertions="1" time="0.019576"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\CreatesNewPublicationPageTest" file="Creates New Publication Page (Hyde\Publications\Testing\Feature\CreatesNewPublicationPage)" tests="6" assertions="13" errors="0" failures="0" skipped="0" time="0.234771">
+        <testcase name="Create" file="Creates New Publication Page (Hyde\Publications\Testing\Feature\CreatesNewPublicationPage)::Create" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationPageTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationPageTest" assertions="2" time="0.125708"/>
+        <testcase name="With text type" file="Creates New Publication Page (Hyde\Publications\Testing\Feature\CreatesNewPublicationPage)::With text type" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationPageTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationPageTest" assertions="2" time="0.023614"/>
+        <testcase name="With array type" file="Creates New Publication Page (Hyde\Publications\Testing\Feature\CreatesNewPublicationPage)::With array type" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationPageTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationPageTest" assertions="2" time="0.021923"/>
+        <testcase name="Create without supplying canonical field" file="Creates New Publication Page (Hyde\Publications\Testing\Feature\CreatesNewPublicationPage)::Create without supplying canonical field" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationPageTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationPageTest" assertions="2" time="0.020432"/>
+        <testcase name="Create without supplying required field" file="Creates New Publication Page (Hyde\Publications\Testing\Feature\CreatesNewPublicationPage)::Create without supplying required field" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationPageTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationPageTest" assertions="2" time="0.021049"/>
+        <testcase name="It creates valid yaml" file="Creates New Publication Page (Hyde\Publications\Testing\Feature\CreatesNewPublicationPage)::It creates valid yaml" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationPageTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationPageTest" assertions="3" time="0.022046"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\CreatesNewPublicationTypeTest" file="Creates New Publication Type (Hyde\Publications\Testing\Feature\CreatesNewPublicationType)" tests="4" assertions="20" errors="0" failures="0" skipped="0" time="0.104190">
+        <testcase name="It creates a new publication type" file="Creates New Publication Type (Hyde\Publications\Testing\Feature\CreatesNewPublicationType)::It creates a new publication type" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationTypeTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationTypeTest" assertions="2" time="0.039459"/>
+        <testcase name="Create with default parameters" file="Creates New Publication Type (Hyde\Publications\Testing\Feature\CreatesNewPublicationType)::Create with default parameters" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationTypeTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationTypeTest" assertions="2" time="0.021242"/>
+        <testcase name="It creates list and detail pages" file="Creates New Publication Type (Hyde\Publications\Testing\Feature\CreatesNewPublicationType)::It creates list and detail pages" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationTypeTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationTypeTest" assertions="8" time="0.021710"/>
+        <testcase name="It uses the paginated list view when pagination is enabled" file="Creates New Publication Type (Hyde\Publications\Testing\Feature\CreatesNewPublicationType)::It uses the paginated list view when pagination is enabled" class="Hyde\Publications\Testing\Feature\CreatesNewPublicationTypeTest" classname="Hyde.Publications.Testing.Feature.CreatesNewPublicationTypeTest" assertions="8" time="0.021779"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\GeneratesPublicationTagPagesTest" file="Generates Publication Tag Pages (Hyde\Publications\Testing\Feature\GeneratesPublicationTagPages)" tests="7" assertions="18" errors="0" failures="0" skipped="0" time="0.293609">
+        <testcase name="Tags index page is generated when tags are used" file="Generates Publication Tag Pages (Hyde\Publications\Testing\Feature\GeneratesPublicationTagPages)::Tags index page is generated when tags are used" class="Hyde\Publications\Testing\Feature\GeneratesPublicationTagPagesTest" classname="Hyde.Publications.Testing.Feature.GeneratesPublicationTagPagesTest" assertions="2" time="0.055386"/>
+        <testcase name="Tags index page is not generated when tags are not used" file="Generates Publication Tag Pages (Hyde\Publications\Testing\Feature\GeneratesPublicationTagPages)::Tags index page is not generated when tags are not used" class="Hyde\Publications\Testing\Feature\GeneratesPublicationTagPagesTest" classname="Hyde.Publications.Testing.Feature.GeneratesPublicationTagPagesTest" assertions="1" time="0.025184"/>
+        <testcase name="Tags pages for publications are generated for used tag" file="Generates Publication Tag Pages (Hyde\Publications\Testing\Feature\GeneratesPublicationTagPages)::Tags pages for publications are generated for used tag" class="Hyde\Publications\Testing\Feature\GeneratesPublicationTagPagesTest" classname="Hyde.Publications.Testing.Feature.GeneratesPublicationTagPagesTest" assertions="1" time="0.035090"/>
+        <testcase name="Tags pages for publications are generated for used tags with publication tags array" file="Generates Publication Tag Pages (Hyde\Publications\Testing\Feature\GeneratesPublicationTagPages)::Tags pages for publications are generated for used tags with publication tags array" class="Hyde\Publications\Testing\Feature\GeneratesPublicationTagPagesTest" classname="Hyde.Publications.Testing.Feature.GeneratesPublicationTagPagesTest" assertions="1" time="0.047366"/>
+        <testcase name="Tags pages for publications are not generated when no tags are used" file="Generates Publication Tag Pages (Hyde\Publications\Testing\Feature\GeneratesPublicationTagPages)::Tags pages for publications are not generated when no tags are used" class="Hyde\Publications\Testing\Feature\GeneratesPublicationTagPagesTest" classname="Hyde.Publications.Testing.Feature.GeneratesPublicationTagPagesTest" assertions="1" time="0.033818"/>
+        <testcase name="Generated index page" file="Generates Publication Tag Pages (Hyde\Publications\Testing\Feature\GeneratesPublicationTagPages)::Generated index page" class="Hyde\Publications\Testing\Feature\GeneratesPublicationTagPagesTest" classname="Hyde.Publications.Testing.Feature.GeneratesPublicationTagPagesTest" assertions="6" time="0.047989"/>
+        <testcase name="Generated detail page" file="Generates Publication Tag Pages (Hyde\Publications\Testing\Feature\GeneratesPublicationTagPages)::Generated detail page" class="Hyde\Publications\Testing\Feature\GeneratesPublicationTagPagesTest" classname="Hyde.Publications.Testing.Feature.GeneratesPublicationTagPagesTest" assertions="6" time="0.048775"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)" tests="10" assertions="17" errors="0" failures="0" skipped="0" time="0.218739">
+        <testcase name="Can collect input" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::Can collect input" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="2" time="0.040310"/>
+        <testcase name="Can terminate with here sequence" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::Can terminate with here sequence" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="2" time="0.020254"/>
+        <testcase name="Can terminate with here sequence after carriage returns" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::Can terminate with here sequence after carriage returns" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="2" time="0.019928"/>
+        <testcase name="Can terminate with end of transmission sequence" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::Can terminate with end of transmission sequence" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="2" time="0.019916"/>
+        <testcase name="Can collect multiple input lines" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::Can collect multiple input lines" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="2" time="0.019847"/>
+        <testcase name="Can enter multiple carriage returns" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::Can enter multiple carriage returns" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="2" time="0.019926"/>
+        <testcase name="Can enter multiple unix endings" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::Can enter multiple unix endings" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="2" time="0.019899"/>
+        <testcase name="Termination message" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::Termination message" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="1" time="0.019541"/>
+        <testcase name="Termination sequence constant" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::Termination sequence constant" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="1" time="0.019506"/>
+        <testcase name="End of transmission constant" file="Input Stream Handler (Hyde\Publications\Testing\Feature\InputStreamHandler)::End of transmission constant" class="Hyde\Publications\Testing\Feature\InputStreamHandlerTest" classname="Hyde.Publications.Testing.Feature.InputStreamHandlerTest" assertions="1" time="0.019611"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)" tests="23" assertions="121" errors="0" failures="0" skipped="0" time="0.688064">
+        <testcase name="Command creates publication" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command creates publication" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="9" time="0.062921"/>
+        <testcase name="Command with no publication types" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with no publication types" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="3" time="0.024002"/>
+        <testcase name="Command selects the right publication using the names" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command selects the right publication using the names" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="12" time="0.031662"/>
+        <testcase name="Command with existing publication" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with existing publication" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="10" time="0.026853"/>
+        <testcase name="Command with existing publication and overwrite" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with existing publication and overwrite" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="8" time="0.027324"/>
+        <testcase name="Can overwrite existing publication by passing force flag" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Can overwrite existing publication by passing force flag" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="6" time="0.026948"/>
+        <testcase name="Command with publication type passed as argument" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with publication type passed as argument" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="6" time="0.026505"/>
+        <testcase name="Command with invalid publication type passed as argument" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with invalid publication type passed as argument" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="2" time="0.023984"/>
+        <testcase name="Command with schema using canonical meta field" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with schema using canonical meta field" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="3" time="0.025340"/>
+        <testcase name="Command does not ask user to fill in meta fields" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command does not ask user to fill in meta fields" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="4" time="0.025875"/>
+        <testcase name="Command with text input" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with text input" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="3" time="0.025955"/>
+        <testcase name="Command with boolean input" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with boolean input" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="4" time="0.026600"/>
+        <testcase name="Command with array input" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with array input" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="3" time="0.026295"/>
+        <testcase name="Command with media input" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with media input" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="4" time="0.027567"/>
+        <testcase name="Media input selects the right file" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Media input selects the right file" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="4" time="0.027957"/>
+        <testcase name="Command with single tag input" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with single tag input" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="5" time="0.037100"/>
+        <testcase name="Command with multiple tag inputs" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Command with multiple tag inputs" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="5" time="0.036487"/>
+        <testcase name="Media input with no images" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Media input with no images" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="5" time="0.026150"/>
+        <testcase name="Media input with no files but skips" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Media input with no files but skips" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="6" time="0.027707"/>
+        <testcase name="Tag input with no tags" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Tag input with no tags" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="3" time="0.040592"/>
+        <testcase name="Handle empty options collection for required field" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::Handle empty options collection for required field" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="3" time="0.026307"/>
+        <testcase name="With custom validation rules" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::With custom validation rules" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="8" time="0.031266"/>
+        <testcase name="With skipping inputs" file="Make Publication Command (Hyde\Publications\Testing\Feature\MakePublicationCommand)::With skipping inputs" class="Hyde\Publications\Testing\Feature\MakePublicationCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationCommandTest" assertions="5" time="0.026668"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\MakePublicationTypeCommandTest" file="Make Publication Type Command (Hyde\Publications\Testing\Feature\MakePublicationTypeCommand)" tests="6" assertions="63" errors="0" failures="0" skipped="0" time="0.191523">
+        <testcase name="Command creates publication type" file="Make Publication Type Command (Hyde\Publications\Testing\Feature\MakePublicationTypeCommand)::Command creates publication type" class="Hyde\Publications\Testing\Feature\MakePublicationTypeCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationTypeCommandTest" assertions="21" time="0.062384"/>
+        <testcase name="With default values" file="Make Publication Type Command (Hyde\Publications\Testing\Feature\MakePublicationTypeCommand)::With default values" class="Hyde\Publications\Testing\Feature\MakePublicationTypeCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationTypeCommandTest" assertions="6" time="0.025911"/>
+        <testcase name="With multiple fields of the same name" file="Make Publication Type Command (Hyde\Publications\Testing\Feature\MakePublicationTypeCommand)::With multiple fields of the same name" class="Hyde\Publications\Testing\Feature\MakePublicationTypeCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationTypeCommandTest" assertions="18" time="0.029320"/>
+        <testcase name="With existing file of the same name" file="Make Publication Type Command (Hyde\Publications\Testing\Feature\MakePublicationTypeCommand)::With existing file of the same name" class="Hyde\Publications\Testing\Feature\MakePublicationTypeCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationTypeCommandTest" assertions="2" time="0.023082"/>
+        <testcase name="With existing publication of the same name" file="Make Publication Type Command (Hyde\Publications\Testing\Feature\MakePublicationTypeCommand)::With existing publication of the same name" class="Hyde\Publications\Testing\Feature\MakePublicationTypeCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationTypeCommandTest" assertions="2" time="0.023595"/>
+        <testcase name="With tag field input" file="Make Publication Type Command (Hyde\Publications\Testing\Feature\MakePublicationTypeCommand)::With tag field input" class="Hyde\Publications\Testing\Feature\MakePublicationTypeCommandTest" classname="Hyde.Publications.Testing.Feature.MakePublicationTypeCommandTest" assertions="14" time="0.027230"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)" tests="12" assertions="18" errors="0" failures="0" skipped="0" time="0.245888">
+        <testcase name="Can instantiate class" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Can instantiate class" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="3" time="0.028940"/>
+        <testcase name="From array method" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::From array method" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="3" time="0.019927"/>
+        <testcase name="Can get field as array" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Can get field as array" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="1" time="0.019923"/>
+        <testcase name="Can get field with optional properties as array" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Can get field with optional properties as array" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="1" time="0.019874"/>
+        <testcase name="Can encode field as json" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Can encode field as json" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="1" time="0.019605"/>
+        <testcase name="Can get field with optional properties as json" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Can get field with optional properties as json" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="1" time="0.019741"/>
+        <testcase name="Can construct type using enum case" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Can construct type using enum case" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="3" time="0.019937"/>
+        <testcase name="Type must be valid" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Type must be valid" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="1" time="0.019467"/>
+        <testcase name="Type input is case insensitive" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Type input is case insensitive" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="1" time="0.019644"/>
+        <testcase name="Name gets stored as kebab case" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Name gets stored as kebab case" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="1" time="0.019517"/>
+        <testcase name="Get rules" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Get rules" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="1" time="0.019575"/>
+        <testcase name="Get rules with custom type rules" file="Publication Field Definition (Hyde\Publications\Testing\Feature\PublicationFieldDefinition)::Get rules with custom type rules" class="Hyde\Publications\Testing\Feature\PublicationFieldDefinitionTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldDefinitionTest" assertions="1" time="0.019738"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)" tests="9" assertions="32" errors="0" failures="0" skipped="0" time="0.210473">
+        <testcase name="Cases" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)::Cases" class="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldTypesEnumTest" assertions="11" time="0.036464"/>
+        <testcase name="Get rules" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)::Get rules" class="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldTypesEnumTest" assertions="10" time="0.020712"/>
+        <testcase name="Collect creates collection of cases" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)::Collect creates collection of cases" class="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldTypesEnumTest" assertions="1" time="0.019755"/>
+        <testcase name="Values returns array of case values" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)::Values returns array of case values" class="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldTypesEnumTest" assertions="1" time="0.019653"/>
+        <testcase name="Names returns array of case names" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)::Names returns array of case names" class="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldTypesEnumTest" assertions="1" time="0.034476"/>
+        <testcase name="Canonicable" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)::Canonicable" class="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldTypesEnumTest" assertions="1" time="0.020318"/>
+        <testcase name="Arrayable" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)::Arrayable" class="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldTypesEnumTest" assertions="1" time="0.019702"/>
+        <testcase name="Is canonicable" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)::Is canonicable" class="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldTypesEnumTest" assertions="4" time="0.019792"/>
+        <testcase name="Is arrayable" file="Publication Field Types Enum (Hyde\Publications\Testing\Feature\PublicationFieldTypesEnum)::Is arrayable" class="Hyde\Publications\Testing\Feature\PublicationFieldTypesEnumTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldTypesEnumTest" assertions="2" time="0.019600"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)" tests="18" assertions="24" errors="0" failures="0" skipped="0" time="0.403698">
+        <testcase name="Construct" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.043928"/>
+        <testcase name="Validate" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Validate" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="3" time="0.021805"/>
+        <testcase name="Validate with custom type rules" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Validate with custom type rules" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="3" time="0.021559"/>
+        <testcase name="Get rules" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.019695"/>
+        <testcase name="Get rules with custom type rules" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules with custom type rules" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.019727"/>
+        <testcase name="Get rules for array" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules for array" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.019761"/>
+        <testcase name="Validate array passes" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Validate array passes" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.020383"/>
+        <testcase name="Validate array fails" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Validate array fails" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="2" time="0.029450"/>
+        <testcase name="Get rules for datetime" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules for datetime" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.020255"/>
+        <testcase name="Validate datetime passes" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Validate datetime passes" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.020651"/>
+        <testcase name="Validate datetime fails for invalid type" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Validate datetime fails for invalid type" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="2" time="0.021551"/>
+        <testcase name="Get rules for float" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules for float" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.019921"/>
+        <testcase name="Get rules for integer" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules for integer" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.019758"/>
+        <testcase name="Get rules for string" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules for string" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.019874"/>
+        <testcase name="Get rules for text" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules for text" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.019957"/>
+        <testcase name="Get rules for media" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules for media" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.021550"/>
+        <testcase name="Get rules for tag" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules for tag" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.024231"/>
+        <testcase name="Get rules for url" file="Publication Field Validator (Hyde\Publications\Testing\Feature\PublicationFieldValidator)::Get rules for url" class="Hyde\Publications\Testing\Feature\PublicationFieldValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValidatorTest" assertions="1" time="0.019642"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)" tests="50" assertions="125" errors="0" failures="0" skipped="0" time="1.052014">
+        <testcase name="Construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.045052"/>
+        <testcase name="Get type" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Get type" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.033869"/>
+        <testcase name="Get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.020233"/>
+        <testcase name="Type" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Type" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.019798"/>
+        <testcase name="String field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::String field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.019608"/>
+        <testcase name="String field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::String field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019492"/>
+        <testcase name="String field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::String field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019488"/>
+        <testcase name="String field parsing options" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::String field parsing options" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="8" time="0.020148"/>
+        <testcase name="Datetime field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Datetime field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.019674"/>
+        <testcase name="Datetime field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Datetime field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019710"/>
+        <testcase name="Datetime field with invalid input" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Datetime field with invalid input" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.019717"/>
+        <testcase name="Datetime field with dynamic input" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Datetime field with dynamic input" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019619"/>
+        <testcase name="Datetime field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Datetime field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019599"/>
+        <testcase name="Boolean field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Boolean field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.019718"/>
+        <testcase name="Boolean field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Boolean field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019587"/>
+        <testcase name="Boolean field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Boolean field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019584"/>
+        <testcase name="Boolean field with invalid input" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Boolean field with invalid input" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.019531"/>
+        <testcase name="Boolean field parsing options" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Boolean field parsing options" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="4" time="0.019704"/>
+        <testcase name="Integer field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Integer field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.019773"/>
+        <testcase name="Integer field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Integer field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019834"/>
+        <testcase name="Integer field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Integer field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019693"/>
+        <testcase name="Integer field with invalid input" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Integer field with invalid input" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.019737"/>
+        <testcase name="Integer field parsing options" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Integer field parsing options" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="8" time="0.020218"/>
+        <testcase name="Float field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Float field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.019652"/>
+        <testcase name="Float field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Float field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.020418"/>
+        <testcase name="Float field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Float field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019933"/>
+        <testcase name="Float field with invalid input" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Float field with invalid input" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.019669"/>
+        <testcase name="Float field parsing options" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Float field parsing options" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="8" time="0.020253"/>
+        <testcase name="Array field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Array field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.019584"/>
+        <testcase name="Array field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Array field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019583"/>
+        <testcase name="Array field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Array field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019539"/>
+        <testcase name="Array field with array input" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Array field with array input" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019514"/>
+        <testcase name="Array field parsing options" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Array field parsing options" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="8" time="0.020371"/>
+        <testcase name="Text field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Text field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.019655"/>
+        <testcase name="Text field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Text field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019394"/>
+        <testcase name="Text field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Text field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.026386"/>
+        <testcase name="Text field parsing options" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Text field parsing options" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="13" time="0.020641"/>
+        <testcase name="Url field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Url field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.034915"/>
+        <testcase name="Url field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Url field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.020193"/>
+        <testcase name="Url field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Url field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019714"/>
+        <testcase name="Url field with invalid input" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Url field with invalid input" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.020037"/>
+        <testcase name="Media field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Media field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.019641"/>
+        <testcase name="Media field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Media field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019561"/>
+        <testcase name="Media field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Media field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019510"/>
+        <testcase name="Tag field construct" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Tag field construct" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="2" time="0.020166"/>
+        <testcase name="Tag field get value" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Tag field get value" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019741"/>
+        <testcase name="Tag field to yaml" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Tag field to yaml" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019562"/>
+        <testcase name="Tag field with array input" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Tag field with array input" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="1" time="0.019661"/>
+        <testcase name="Tag field parsing options" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Tag field parsing options" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="8" time="0.020548"/>
+        <testcase name="Default validation rules" file="Publication Field Value (Hyde\Publications\Testing\Feature\PublicationFieldValue)::Default validation rules" class="Hyde\Publications\Testing\Feature\PublicationFieldValueTest" classname="Hyde.Publications.Testing.Feature.PublicationFieldValueTest" assertions="10" time="0.020788"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\PublicationListPageTest" file="Publication List Page (Hyde\Publications\Testing\Feature\PublicationListPage)" tests="4" assertions="7" errors="0" failures="0" skipped="0" time="0.167936">
+        <testcase name="Source path mappings" file="Publication List Page (Hyde\Publications\Testing\Feature\PublicationListPage)::Source path mappings" class="Hyde\Publications\Testing\Feature\PublicationListPageTest" classname="Hyde.Publications.Testing.Feature.PublicationListPageTest" assertions="4" time="0.086540"/>
+        <testcase name="Listing page can be compiled" file="Publication List Page (Hyde\Publications\Testing\Feature\PublicationListPage)::Listing page can be compiled" class="Hyde\Publications\Testing\Feature\PublicationListPageTest" classname="Hyde.Publications.Testing.Feature.PublicationListPageTest" assertions="1" time="0.039104"/>
+        <testcase name="List page can show up in navigation" file="Publication List Page (Hyde\Publications\Testing\Feature\PublicationListPage)::List page can show up in navigation" class="Hyde\Publications\Testing\Feature\PublicationListPageTest" classname="Hyde.Publications.Testing.Feature.PublicationListPageTest" assertions="1" time="0.021078"/>
+        <testcase name="List page is not added to navigation when publication identifier is set in config" file="Publication List Page (Hyde\Publications\Testing\Feature\PublicationListPage)::List page is not added to navigation when publication identifier is set in config" class="Hyde\Publications\Testing\Feature\PublicationListPageTest" classname="Hyde.Publications.Testing.Feature.PublicationListPageTest" assertions="1" time="0.021214"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\PublicationPageCompilerTest" file="Publication Page Compiler (Hyde\Publications\Testing\Feature\PublicationPageCompiler)" tests="8" assertions="10" errors="0" failures="0" skipped="0" time="0.229759">
+        <testcase name="Can compile publication pages" file="Publication Page Compiler (Hyde\Publications\Testing\Feature\PublicationPageCompiler)::Can compile publication pages" class="Hyde\Publications\Testing\Feature\PublicationPageCompilerTest" classname="Hyde.Publications.Testing.Feature.PublicationPageCompilerTest" assertions="1" time="0.028983"/>
+        <testcase name="Can compile list pages" file="Publication Page Compiler (Hyde\Publications\Testing\Feature\PublicationPageCompiler)::Can compile list pages" class="Hyde\Publications\Testing\Feature\PublicationPageCompilerTest" classname="Hyde.Publications.Testing.Feature.PublicationPageCompilerTest" assertions="1" time="0.029481"/>
+        <testcase name="Can compile publication pages with registered view" file="Publication Page Compiler (Hyde\Publications\Testing\Feature\PublicationPageCompiler)::Can compile publication pages with registered view" class="Hyde\Publications\Testing\Feature\PublicationPageCompilerTest" classname="Hyde.Publications.Testing.Feature.PublicationPageCompilerTest" assertions="1" time="0.028312"/>
+        <testcase name="Can compile list pages with registered view" file="Publication Page Compiler (Hyde\Publications\Testing\Feature\PublicationPageCompiler)::Can compile list pages with registered view" class="Hyde\Publications\Testing\Feature\PublicationPageCompilerTest" classname="Hyde.Publications.Testing.Feature.PublicationPageCompilerTest" assertions="1" time="0.039044"/>
+        <testcase name="Can compile publication pages with registered namespaced view" file="Publication Page Compiler (Hyde\Publications\Testing\Feature\PublicationPageCompiler)::Can compile publication pages with registered namespaced view" class="Hyde\Publications\Testing\Feature\PublicationPageCompilerTest" classname="Hyde.Publications.Testing.Feature.PublicationPageCompilerTest" assertions="1" time="0.036082"/>
+        <testcase name="Can compile list pages with registered namespaced view" file="Publication Page Compiler (Hyde\Publications\Testing\Feature\PublicationPageCompiler)::Can compile list pages with registered namespaced view" class="Hyde\Publications\Testing\Feature\PublicationPageCompilerTest" classname="Hyde.Publications.Testing.Feature.PublicationPageCompilerTest" assertions="1" time="0.023273"/>
+        <testcase name="With missing detail blade view" file="Publication Page Compiler (Hyde\Publications\Testing\Feature\PublicationPageCompiler)::With missing detail blade view" class="Hyde\Publications\Testing\Feature\PublicationPageCompilerTest" classname="Hyde.Publications.Testing.Feature.PublicationPageCompilerTest" assertions="2" time="0.022288"/>
+        <testcase name="With missing list blade view" file="Publication Page Compiler (Hyde\Publications\Testing\Feature\PublicationPageCompiler)::With missing list blade view" class="Hyde\Publications\Testing\Feature\PublicationPageCompilerTest" classname="Hyde.Publications.Testing.Feature.PublicationPageCompilerTest" assertions="2" time="0.022297"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\PublicationPageTest" file="Publication Page (Hyde\Publications\Testing\Feature\PublicationPage)" tests="8" assertions="27" errors="0" failures="0" skipped="0" time="0.216741">
+        <testcase name="Source path mappings" file="Publication Page (Hyde\Publications\Testing\Feature\PublicationPage)::Source path mappings" class="Hyde\Publications\Testing\Feature\PublicationPageTest" classname="Hyde.Publications.Testing.Feature.PublicationPageTest" assertions="4" time="0.034296"/>
+        <testcase name="Publication pages are routable" file="Publication Page (Hyde\Publications\Testing\Feature\PublicationPage)::Publication pages are routable" class="Hyde\Publications\Testing\Feature\PublicationPageTest" classname="Hyde.Publications.Testing.Feature.PublicationPageTest" assertions="5" time="0.028625"/>
+        <testcase name="Publication pages are discoverable" file="Publication Page (Hyde\Publications\Testing\Feature\PublicationPage)::Publication pages are discoverable" class="Hyde\Publications\Testing\Feature\PublicationPageTest" classname="Hyde.Publications.Testing.Feature.PublicationPageTest" assertions="1" time="0.027881"/>
+        <testcase name="Publication pages are properly parsed" file="Publication Page (Hyde\Publications\Testing\Feature\PublicationPage)::Publication pages are properly parsed" class="Hyde\Publications\Testing\Feature\PublicationPageTest" classname="Hyde.Publications.Testing.Feature.PublicationPageTest" assertions="6" time="0.028160"/>
+        <testcase name="Publication pages are parsable" file="Publication Page (Hyde\Publications\Testing\Feature\PublicationPage)::Publication pages are parsable" class="Hyde\Publications\Testing\Feature\PublicationPageTest" classname="Hyde.Publications.Testing.Feature.PublicationPageTest" assertions="6" time="0.023002"/>
+        <testcase name="Publication pages are compilable" file="Publication Page (Hyde\Publications\Testing\Feature\PublicationPage)::Publication pages are compilable" class="Hyde\Publications\Testing\Feature\PublicationPageTest" classname="Hyde.Publications.Testing.Feature.PublicationPageTest" assertions="1" time="0.029440"/>
+        <testcase name="Identifier passed constructor is normalized" file="Publication Page (Hyde\Publications\Testing\Feature\PublicationPage)::Identifier passed constructor is normalized" class="Hyde\Publications\Testing\Feature\PublicationPageTest" classname="Hyde.Publications.Testing.Feature.PublicationPageTest" assertions="3" time="0.023285"/>
+        <testcase name="Identifier normalizer does not affect directory with same name as identifier" file="Publication Page (Hyde\Publications\Testing\Feature\PublicationPage)::Identifier normalizer does not affect directory with same name as identifier" class="Hyde\Publications\Testing\Feature\PublicationPageTest" classname="Hyde.Publications.Testing.Feature.PublicationPageTest" assertions="1" time="0.022052"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)" tests="34" assertions="36" errors="0" failures="0" skipped="0" time="0.761144">
+        <testcase name="Source directory" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Source directory" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.037596"/>
+        <testcase name="Output directory" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Output directory" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.019820"/>
+        <testcase name="File extension" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::File extension" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.019793"/>
+        <testcase name="Source path" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Source path" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.019696"/>
+        <testcase name="Output path" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Output path" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.019578"/>
+        <testcase name="Path" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Path" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.019534"/>
+        <testcase name="Get source path" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Get source path" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.021272"/>
+        <testcase name="Get output path" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Get output path" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.020819"/>
+        <testcase name="Get link" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Get link" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.020884"/>
+        <testcase name="Make" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Make" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.022658"/>
+        <testcase name="Make with data" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Make with data" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.022361"/>
+        <testcase name="Show in navigation" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Show in navigation" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.020789"/>
+        <testcase name="Navigation menu priority" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Navigation menu priority" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.020704"/>
+        <testcase name="Navigation menu label" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Navigation menu label" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.035555"/>
+        <testcase name="Navigation menu group" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Navigation menu group" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.021861"/>
+        <testcase name="Get blade view" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Get blade view" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.021162"/>
+        <testcase name="Files" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Files" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.023810"/>
+        <testcase name="Data" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Data" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.020856"/>
+        <testcase name="Get" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Get" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.024285"/>
+        <testcase name="Parse" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Parse" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.022339"/>
+        <testcase name="Get route key" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Get route key" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.021036"/>
+        <testcase name="Title" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Title" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.021017"/>
+        <testcase name="All" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::All" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.023676"/>
+        <testcase name="Metadata" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Metadata" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.020858"/>
+        <testcase name="Construct" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Construct" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.020840"/>
+        <testcase name="Get route" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Get route" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.024315"/>
+        <testcase name="Get identifier" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Get identifier" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.020680"/>
+        <testcase name="Has" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Has" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.020923"/>
+        <testcase name="To core data object" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::To core data object" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.020843"/>
+        <testcase name="Compile" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Compile" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.026208"/>
+        <testcase name="Matter" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Matter" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.020754"/>
+        <testcase name="Markdown" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Markdown" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="1" time="0.020735"/>
+        <testcase name="Save" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Save" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="2" time="0.022039"/>
+        <testcase name="Get type" file="Publication Page Unit (Hyde\Publications\Testing\Feature\PublicationPageUnit)::Get type" class="Hyde\Publications\Testing\Feature\PublicationPageUnitTest" classname="Hyde.Publications.Testing.Feature.PublicationPageUnitTest" assertions="2" time="0.021848"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\PublicationPageValidatorTest" file="Publication Page Validator (Hyde\Publications\Testing\Feature\PublicationPageValidator)" tests="5" assertions="5" errors="0" failures="0" skipped="0" time="0.188537">
+        <testcase name="Validate page file" file="Publication Page Validator (Hyde\Publications\Testing\Feature\PublicationPageValidator)::Validate page file" class="Hyde\Publications\Testing\Feature\PublicationPageValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationPageValidatorTest" assertions="1" time="0.099040"/>
+        <testcase name="Validate page file with invalid fields" file="Publication Page Validator (Hyde\Publications\Testing\Feature\PublicationPageValidator)::Validate page file with invalid fields" class="Hyde\Publications\Testing\Feature\PublicationPageValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationPageValidatorTest" assertions="1" time="0.023610"/>
+        <testcase name="Validate page file with invalid data buffered" file="Publication Page Validator (Hyde\Publications\Testing\Feature\PublicationPageValidator)::Validate page file with invalid data buffered" class="Hyde\Publications\Testing\Feature\PublicationPageValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationPageValidatorTest" assertions="1" time="0.022742"/>
+        <testcase name="Warnings with warnings" file="Publication Page Validator (Hyde\Publications\Testing\Feature\PublicationPageValidator)::Warnings with warnings" class="Hyde\Publications\Testing\Feature\PublicationPageValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationPageValidatorTest" assertions="1" time="0.021640"/>
+        <testcase name="Warnings without warnings" file="Publication Page Validator (Hyde\Publications\Testing\Feature\PublicationPageValidator)::Warnings without warnings" class="Hyde\Publications\Testing\Feature\PublicationPageValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationPageValidatorTest" assertions="1" time="0.021505"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\PublicationSchemaValidatorTest" file="Publication Schema Validator (Hyde\Publications\Testing\Feature\PublicationSchemaValidator)" tests="4" assertions="4" errors="0" failures="0" skipped="0" time="0.119917">
+        <testcase name="Validate schema file" file="Publication Schema Validator (Hyde\Publications\Testing\Feature\PublicationSchemaValidator)::Validate schema file" class="Hyde\Publications\Testing\Feature\PublicationSchemaValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationSchemaValidatorTest" assertions="1" time="0.045195"/>
+        <testcase name="Validate schema file with invalid schema" file="Publication Schema Validator (Hyde\Publications\Testing\Feature\PublicationSchemaValidator)::Validate schema file with invalid schema" class="Hyde\Publications\Testing\Feature\PublicationSchemaValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationSchemaValidatorTest" assertions="1" time="0.025055"/>
+        <testcase name="Validate schema file with invalid fields" file="Publication Schema Validator (Hyde\Publications\Testing\Feature\PublicationSchemaValidator)::Validate schema file with invalid fields" class="Hyde\Publications\Testing\Feature\PublicationSchemaValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationSchemaValidatorTest" assertions="1" time="0.024241"/>
+        <testcase name="Validate schema file with invalid data buffered" file="Publication Schema Validator (Hyde\Publications\Testing\Feature\PublicationSchemaValidator)::Validate schema file with invalid data buffered" class="Hyde\Publications\Testing\Feature\PublicationSchemaValidatorTest" classname="Hyde.Publications.Testing.Feature.PublicationSchemaValidatorTest" assertions="1" time="0.025426"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\PublicationServiceTest" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)" tests="21" assertions="24" errors="0" failures="0" skipped="0" time="0.608074">
+        <testcase name="Get publication types" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publication types" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.027247"/>
+        <testcase name="Get publication types with types" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publication types with types" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.026867"/>
+        <testcase name="Get publication types method returns the same instances" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publication types method returns the same instances" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.021200"/>
+        <testcase name="Get publications for pub type" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publications for pub type" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.025969"/>
+        <testcase name="Get publications for pub type with publications" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publications for pub type with publications" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.030381"/>
+        <testcase name="Get publications for pub type only contains instances of publication page" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publications for pub type only contains instances of publication page" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.028057"/>
+        <testcase name="Get publications for pub type sorts publications by sort field" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publications for pub type sorts publications by sort field" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.039188"/>
+        <testcase name="Get publications for pub type sorts publications with specified direction" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publications for pub type sorts publications with specified direction" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.039473"/>
+        <testcase name="Get publications for pub type sorts publications by new sort field" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publications for pub type sorts publications by new sort field" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.040028"/>
+        <testcase name="Get publications for pub type sorts publications by new sort field descending" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publications for pub type sorts publications by new sort field descending" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.040678"/>
+        <testcase name="Get publications for pub type with invalid sort field" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get publications for pub type with invalid sort field" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.054750"/>
+        <testcase name="Get media for pub type" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get media for pub type" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.022121"/>
+        <testcase name="Get media for pub type with media" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get media for pub type with media" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.022517"/>
+        <testcase name="Get media for pub type with custom media directory" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Get media for pub type with custom media directory" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.022260"/>
+        <testcase name="Parse publication file" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Parse publication file" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="2" time="0.023152"/>
+        <testcase name="Parse publication file with non existent file" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Parse publication file with non existent file" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="2" time="0.021048"/>
+        <testcase name="Publication type exists" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Publication type exists" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="2" time="0.021181"/>
+        <testcase name="Can get tags used in publications" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Can get tags used in publications" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.025448"/>
+        <testcase name="Multiple occurring tags are aggregated uniquely" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::Multiple occurring tags are aggregated uniquely" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.025741"/>
+        <testcase name="All tags method finds both array and single tag values" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::All tags method finds both array and single tag values" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.025816"/>
+        <testcase name="All tags method returns empty array when there are no tags used" file="Publication Service (Hyde\Publications\Testing\Feature\PublicationService)::All tags method returns empty array when there are no tags used" class="Hyde\Publications\Testing\Feature\PublicationServiceTest" classname="Hyde.Publications.Testing.Feature.PublicationServiceTest" assertions="1" time="0.024952"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\PublicationTypeTest" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)" tests="39" assertions="62" errors="0" failures="0" skipped="0" time="0.930801">
+        <testcase name="Can construct new publication type" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Can construct new publication type" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="8" time="0.049093"/>
+        <testcase name="Construct with default values" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Construct with default values" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="9" time="0.020289"/>
+        <testcase name="Construct with pagination settings" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Construct with pagination settings" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="3" time="0.019752"/>
+        <testcase name="Class is arrayable" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Class is arrayable" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.019823"/>
+        <testcase name="Class is json serializable" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Class is json serializable" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.019917"/>
+        <testcase name="Class is jsonable" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Class is jsonable" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.020025"/>
+        <testcase name="Get directory" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get directory" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.019593"/>
+        <testcase name="Get identifier" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get identifier" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.019630"/>
+        <testcase name="Get identifier with no directory" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get identifier with no directory" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.019597"/>
+        <testcase name="Can save to json file" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Can save to json file" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="2" time="0.020485"/>
+        <testcase name="Can save to json file using custom path" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Can save to json file using custom path" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="2" time="0.020823"/>
+        <testcase name="Can load from json file" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Can load from json file" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.023629"/>
+        <testcase name="Can load fields with validation rules" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Can load fields with validation rules" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.021741"/>
+        <testcase name="Get fields method returns collection of field objects" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get fields method returns collection of field objects" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="4" time="0.020604"/>
+        <testcase name="Get field method parses publication fields from schema file" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get field method parses publication fields from schema file" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.021288"/>
+        <testcase name="Get field method parses publication fields with option properties from schema file" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get field method parses publication fields with option properties from schema file" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.021259"/>
+        <testcase name="Get method can find existing file on disk" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get method can find existing file on disk" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.021474"/>
+        <testcase name="Get method fails if publication type does not exist" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get method fails if publication type does not exist" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="2" time="0.020036"/>
+        <testcase name="Get list page" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get list page" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.037547"/>
+        <testcase name="Get field definition" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get field definition" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.020180"/>
+        <testcase name="Get field definition with missing field" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get field definition with missing field" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.019955"/>
+        <testcase name="Get canonical field definition" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get canonical field definition" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.019800"/>
+        <testcase name="Get canonical field definition with meta field as canonical" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get canonical field definition with meta field as canonical" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.019762"/>
+        <testcase name="Get publications" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get publications" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.023905"/>
+        <testcase name="Get paginator" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get paginator" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.024058"/>
+        <testcase name="Get paginator with custom publication type pagination settings" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get paginator with custom publication type pagination settings" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.023801"/>
+        <testcase name="Get paginator sorts collection by specified pagination settings" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get paginator sorts collection by specified pagination settings" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.047230"/>
+        <testcase name="Get paginator sorts collection by specified pagination settings with descending sort" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Get paginator sorts collection by specified pagination settings with descending sort" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.047727"/>
+        <testcase name="Uses pagination returns true when pagination should be enabled" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Uses pagination returns true when pagination should be enabled" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.032065"/>
+        <testcase name="Uses pagination returns false when page size is set to nought" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Uses pagination returns false when page size is set to nought" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.021176"/>
+        <testcase name="Uses pagination returns false when number of pages is less than page size" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Uses pagination returns false when number of pages is less than page size" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.030722"/>
+        <testcase name="Array representation with default values" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Array representation with default values" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.019735"/>
+        <testcase name="Json representation with default values" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Json representation with default values" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.019589"/>
+        <testcase name="Array representation with metadata" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Array representation with metadata" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.020113"/>
+        <testcase name="Json representation with metadata" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Json representation with metadata" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.019878"/>
+        <testcase name="Can parse schema file with metadata" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Can parse schema file with metadata" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.021064"/>
+        <testcase name="Can get metadata" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Can get metadata" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.020075"/>
+        <testcase name="Can set metadata" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Can set metadata" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.020330"/>
+        <testcase name="Validate schema file" file="Publication Type (Hyde\Publications\Testing\Feature\PublicationType)::Validate schema file" class="Hyde\Publications\Testing\Feature\PublicationTypeTest" classname="Hyde.Publications.Testing.Feature.PublicationTypeTest" assertions="1" time="0.023031"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)" tests="16" assertions="34" errors="0" failures="0" skipped="0" time="0.546739">
+        <testcase name="Get page classes method" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Get page classes method" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="1" time="0.075237"/>
+        <testcase name="Get types method" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Get types method" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="1" time="0.021601"/>
+        <testcase name="Get types method with types" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Get types method with types" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="1" time="0.042866"/>
+        <testcase name="Get types method with multiple types" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Get types method with multiple types" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="1" time="0.030875"/>
+        <testcase name="Publication files are discovered" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Publication files are discovered" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="3" time="0.024529"/>
+        <testcase name="Publication files are discovered for multiple types" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Publication files are discovered for multiple types" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="1" time="0.025581"/>
+        <testcase name="Publication media files are discovered" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Publication media files are discovered" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="2" time="0.022339"/>
+        <testcase name="Base publication pages are discovered" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Base publication pages are discovered" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="1" time="0.030141"/>
+        <testcase name="Publication pages are discovered" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Publication pages are discovered" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="3" time="0.042819"/>
+        <testcase name="Listing pages for publications are generated" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Listing pages for publications are generated" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="3" time="0.032710"/>
+        <testcase name="Paginated listing pages for publications are generated" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Paginated listing pages for publications are generated" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="3" time="0.038085"/>
+        <testcase name="Publication tag list pages are generated" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Publication tag list pages are generated" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="1" time="0.034235"/>
+        <testcase name="Publication tag list routes with tags are generated" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Publication tag list routes with tags are generated" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="3" time="0.035325"/>
+        <testcase name="Publication routes are discovered" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Publication routes are discovered" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="4" time="0.030636"/>
+        <testcase name="Publication tag list routes are discovered" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Publication tag list routes are discovered" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="3" time="0.028516"/>
+        <testcase name="Publication tag list routes with tags are discovered" file="Publications Extension (Hyde\Publications\Testing\Feature\PublicationsExtension)::Publication tag list routes with tags are discovered" class="Hyde\Publications\Testing\Feature\PublicationsExtensionTest" classname="Hyde.Publications.Testing.Feature.PublicationsExtensionTest" assertions="3" time="0.031245"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)" tests="12" assertions="12" errors="0" failures="0" skipped="0" time="0.372135">
+        <testcase name="With standard page" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::With standard page" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.060375"/>
+        <testcase name="With blank publication type" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::With blank publication type" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.021606"/>
+        <testcase name="With empty tags" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::With empty tags" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.025229"/>
+        <testcase name="With publication with tag" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::With publication with tag" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.024784"/>
+        <testcase name="With more tagged publications" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::With more tagged publications" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.025672"/>
+        <testcase name="With publications with other tag value" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::With publications with other tag value" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.040669"/>
+        <testcase name="With publications with current one being untagged" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::With publications with current one being untagged" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.026262"/>
+        <testcase name="With multiple related pages" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::With multiple related pages" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.028987"/>
+        <testcase name="With multiple related pages and limit" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::With multiple related pages and limit" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.028579"/>
+        <testcase name="Only publications with the same tag are included" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::Only publications with the same tag are included" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.029020"/>
+        <testcase name="Results are sorted by date with latest first" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::Results are sorted by date with latest first" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.029499"/>
+        <testcase name="The render method" file="Related Publications Component (Hyde\Publications\Testing\Feature\RelatedPublicationsComponent)::The render method" class="Hyde\Publications\Testing\Feature\RelatedPublicationsComponentTest" classname="Hyde.Publications.Testing.Feature.RelatedPublicationsComponentTest" assertions="1" time="0.031452"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\SeedPublicationCommandTest" file="Seed Publication Command (Hyde\Publications\Testing\Feature\SeedPublicationCommand)" tests="7" assertions="29" errors="0" failures="0" skipped="0" time="0.253350">
+        <testcase name="Can seed publications" file="Seed Publication Command (Hyde\Publications\Testing\Feature\SeedPublicationCommand)::Can seed publications" class="Hyde\Publications\Testing\Feature\SeedPublicationCommandTest" classname="Hyde.Publications.Testing.Feature.SeedPublicationCommandTest" assertions="6" time="0.083782"/>
+        <testcase name="Can seed publications using arguments" file="Seed Publication Command (Hyde\Publications\Testing\Feature\SeedPublicationCommand)::Can seed publications using arguments" class="Hyde\Publications\Testing\Feature\SeedPublicationCommandTest" classname="Hyde.Publications.Testing.Feature.SeedPublicationCommandTest" assertions="3" time="0.027718"/>
+        <testcase name="Can seed multiple publications" file="Seed Publication Command (Hyde\Publications\Testing\Feature\SeedPublicationCommand)::Can seed multiple publications" class="Hyde\Publications\Testing\Feature\SeedPublicationCommandTest" classname="Hyde.Publications.Testing.Feature.SeedPublicationCommandTest" assertions="4" time="0.028096"/>
+        <testcase name="Command asks to confirm before creating many publications" file="Seed Publication Command (Hyde\Publications\Testing\Feature\SeedPublicationCommand)::Command asks to confirm before creating many publications" class="Hyde\Publications\Testing\Feature\SeedPublicationCommandTest" classname="Hyde.Publications.Testing.Feature.SeedPublicationCommandTest" assertions="7" time="0.025468"/>
+        <testcase name="Command asks to confirm before creating many publications when using arguments" file="Seed Publication Command (Hyde\Publications\Testing\Feature\SeedPublicationCommand)::Command asks to confirm before creating many publications when using arguments" class="Hyde\Publications\Testing\Feature\SeedPublicationCommandTest" classname="Hyde.Publications.Testing.Feature.SeedPublicationCommandTest" assertions="5" time="0.024884"/>
+        <testcase name="With invalid publication type" file="Seed Publication Command (Hyde\Publications\Testing\Feature\SeedPublicationCommand)::With invalid publication type" class="Hyde\Publications\Testing\Feature\SeedPublicationCommandTest" classname="Hyde.Publications.Testing.Feature.SeedPublicationCommandTest" assertions="2" time="0.039000"/>
+        <testcase name="With no publication types" file="Seed Publication Command (Hyde\Publications\Testing\Feature\SeedPublicationCommand)::With no publication types" class="Hyde\Publications\Testing\Feature\SeedPublicationCommandTest" classname="Hyde.Publications.Testing.Feature.SeedPublicationCommandTest" assertions="2" time="0.024401"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)" tests="13" assertions="38" errors="0" failures="0" skipped="0" time="0.346639">
+        <testcase name="Create" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::Create" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="3" time="0.032635"/>
+        <testcase name="Create many" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::Create many" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="2" time="0.025101"/>
+        <testcase name="With array type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With array type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="5" time="0.034810"/>
+        <testcase name="With boolean type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With boolean type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="2" time="0.024354"/>
+        <testcase name="With date time type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With date time type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="3" time="0.024467"/>
+        <testcase name="With float type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With float type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="2" time="0.024817"/>
+        <testcase name="With media type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With media type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="3" time="0.025269"/>
+        <testcase name="With integer type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With integer type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="2" time="0.023705"/>
+        <testcase name="With string type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With string type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="2" time="0.024420"/>
+        <testcase name="With tag type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With tag type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="4" time="0.034842"/>
+        <testcase name="With text type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With text type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="4" time="0.024823"/>
+        <testcase name="With url type" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With url type" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="3" time="0.023480"/>
+        <testcase name="With canonical definition" file="Seeds Publication Files (Hyde\Publications\Testing\Feature\SeedsPublicationFiles)::With canonical definition" class="Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest" classname="Hyde.Publications.Testing.Feature.SeedsPublicationFilesTest" assertions="3" time="0.023915"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModuleTest" file="Static Site Builder Publication Module (Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModule)" tests="5" assertions="25" errors="0" failures="0" skipped="0" time="0.777835">
+        <testcase name="Compiling with publication type with seeded files containing all field types" file="Static Site Builder Publication Module (Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModule)::Compiling with publication type with seeded files containing all field types" class="Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModuleTest" classname="Hyde.Publications.Testing.Feature.StaticSiteBuilderPublicationModuleTest" assertions="10" time="0.251534"/>
+        <testcase name="Compiling with publication type that uses the published views" file="Static Site Builder Publication Module (Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModule)::Compiling with publication type that uses the published views" class="Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModuleTest" classname="Hyde.Publications.Testing.Feature.StaticSiteBuilderPublicationModuleTest" assertions="3" time="0.104810"/>
+        <testcase name="Compiling with publication type that uses the vendor views" file="Static Site Builder Publication Module (Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModule)::Compiling with publication type that uses the vendor views" class="Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModuleTest" classname="Hyde.Publications.Testing.Feature.StaticSiteBuilderPublicationModuleTest" assertions="2" time="0.101473"/>
+        <testcase name="Compiling with publication type that uses the published paginated views" file="Static Site Builder Publication Module (Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModule)::Compiling with publication type that uses the published paginated views" class="Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModuleTest" classname="Hyde.Publications.Testing.Feature.StaticSiteBuilderPublicationModuleTest" assertions="5" time="0.150653"/>
+        <testcase name="Compiling with publication type that uses the paginated vendor views" file="Static Site Builder Publication Module (Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModule)::Compiling with publication type that uses the paginated vendor views" class="Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModuleTest" classname="Hyde.Publications.Testing.Feature.StaticSiteBuilderPublicationModuleTest" assertions="5" time="0.169365"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\TranslationServiceProviderTest" file="Translation Service Provider (Hyde\Publications\Testing\Feature\TranslationServiceProvider)" tests="3" assertions="4" errors="0" failures="0" skipped="0" time="0.067434">
+        <testcase name="Register" file="Translation Service Provider (Hyde\Publications\Testing\Feature\TranslationServiceProvider)::Register" class="Hyde\Publications\Testing\Feature\TranslationServiceProviderTest" classname="Hyde.Publications.Testing.Feature.TranslationServiceProviderTest" assertions="2" time="0.027724"/>
+        <testcase name="Boot" file="Translation Service Provider (Hyde\Publications\Testing\Feature\TranslationServiceProvider)::Boot" class="Hyde\Publications\Testing\Feature\TranslationServiceProviderTest" classname="Hyde.Publications.Testing.Feature.TranslationServiceProviderTest" assertions="1" time="0.019773"/>
+        <testcase name="Validation" file="Translation Service Provider (Hyde\Publications\Testing\Feature\TranslationServiceProvider)::Validation" class="Hyde\Publications\Testing\Feature\TranslationServiceProviderTest" classname="Hyde.Publications.Testing.Feature.TranslationServiceProviderTest" assertions="1" time="0.019936"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommandTest" file="Validate Publication Types Command (Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommand)" tests="7" assertions="60" errors="0" failures="0" skipped="0" time="0.204209">
+        <testcase name="With no publication types" file="Validate Publication Types Command (Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommand)::With no publication types" class="Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationTypesCommandTest" assertions="3" time="0.027592"/>
+        <testcase name="With valid schema file" file="Validate Publication Types Command (Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommand)::With valid schema file" class="Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationTypesCommandTest" assertions="6" time="0.026545"/>
+        <testcase name="With invalid schema file" file="Validate Publication Types Command (Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommand)::With invalid schema file" class="Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationTypesCommandTest" assertions="19" time="0.033343"/>
+        <testcase name="With multiple publication types" file="Validate Publication Types Command (Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommand)::With multiple publication types" class="Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationTypesCommandTest" assertions="22" time="0.036662"/>
+        <testcase name="With no fields" file="Validate Publication Types Command (Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommand)::With no fields" class="Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationTypesCommandTest" assertions="6" time="0.026434"/>
+        <testcase name="Json output option" file="Validate Publication Types Command (Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommand)::Json output option" class="Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationTypesCommandTest" assertions="2" time="0.024285"/>
+        <testcase name="Multiple types with json output" file="Validate Publication Types Command (Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommand)::Multiple types with json output" class="Hyde\Publications\Testing\Feature\ValidatePublicationTypesCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationTypesCommandTest" assertions="2" time="0.029348"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)" tests="13" assertions="66" errors="0" failures="0" skipped="0" time="0.384215">
+        <testcase name="With no publication types" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With no publication types" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="2" time="0.033096"/>
+        <testcase name="With invalid publication type" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With invalid publication type" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="2" time="0.022646"/>
+        <testcase name="With publication type" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With publication type" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="4" time="0.026946"/>
+        <testcase name="With publication type and verbose output" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With publication type and verbose output" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="4" time="0.026752"/>
+        <testcase name="With invalid publication" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With invalid publication" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="4" time="0.027096"/>
+        <testcase name="With warned publication" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With warned publication" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="4" time="0.027000"/>
+        <testcase name="With multiple publication types" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With multiple publication types" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="1" time="0.041576"/>
+        <testcase name="With multiple invalid fields" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With multiple invalid fields" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="4" time="0.029247"/>
+        <testcase name="Only specified type is validated when using argument" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::Only specified type is validated when using argument" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="1" time="0.025750"/>
+        <testcase name="Output" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::Output" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="17" time="0.035918"/>
+        <testcase name="With verbose output" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With verbose output" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="19" time="0.035620"/>
+        <testcase name="With json output" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With json output" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="2" time="0.028993"/>
+        <testcase name="With json output with no publications" file="Validate Publications Command (Hyde\Publications\Testing\Feature\ValidatePublicationsCommand)::With json output with no publications" class="Hyde\Publications\Testing\Feature\ValidatePublicationsCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatePublicationsCommandTest" assertions="2" time="0.023574"/>
+      </testsuite>
+      <testsuite name="Hyde\Publications\Testing\Feature\ValidatingCommandTest" file="Validating Command (Hyde\Publications\Testing\Feature\ValidatingCommand)" tests="7" assertions="24" errors="0" failures="0" skipped="0" time="0.177333">
+        <testcase name="Ask with validation captures input" file="Validating Command (Hyde\Publications\Testing\Feature\ValidatingCommand)::Ask with validation captures input" class="Hyde\Publications\Testing\Feature\ValidatingCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatingCommandTest" assertions="2" time="0.037692"/>
+        <testcase name="Ask with validation retries" file="Validating Command (Hyde\Publications\Testing\Feature\ValidatingCommand)::Ask with validation retries" class="Hyde\Publications\Testing\Feature\ValidatingCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatingCommandTest" assertions="3" time="0.020980"/>
+        <testcase name="Ask with validation retries too many times" file="Validating Command (Hyde\Publications\Testing\Feature\ValidatingCommand)::Ask with validation retries too many times" class="Hyde\Publications\Testing\Feature\ValidatingCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatingCommandTest" assertions="4" time="0.034249"/>
+        <testcase name="Ask with validation normalizes boolean input" file="Validating Command (Hyde\Publications\Testing\Feature\ValidatingCommand)::Ask with validation normalizes boolean input" class="Hyde\Publications\Testing\Feature\ValidatingCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatingCommandTest" assertions="3" time="0.020545"/>
+        <testcase name="Validation is called" file="Validating Command (Hyde\Publications\Testing\Feature\ValidatingCommand)::Validation is called" class="Hyde\Publications\Testing\Feature\ValidatingCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatingCommandTest" assertions="4" time="0.022390"/>
+        <testcase name="Reloadable choice helper" file="Validating Command (Hyde\Publications\Testing\Feature\ValidatingCommand)::Reloadable choice helper" class="Hyde\Publications\Testing\Feature\ValidatingCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatingCommandTest" assertions="3" time="0.020446"/>
+        <testcase name="Reloadable choice helper selecting reload" file="Validating Command (Hyde\Publications\Testing\Feature\ValidatingCommand)::Reloadable choice helper selecting reload" class="Hyde\Publications\Testing\Feature\ValidatingCommandTest" classname="Hyde.Publications.Testing.Feature.ValidatingCommandTest" assertions="5" time="0.021030"/>
       </testsuite>
     </testsuite>
-    <testsuite name="Realtime Compiler" tests="12" assertions="42" errors="0" failures="0" skipped="0" time="0.458177">
-      <testsuite name="Packages\realtimecompiler\tests\ConsoleOutputTest" file="packages/realtime-compiler/tests/ConsoleOutputTest.php" tests="1" assertions="1" errors="0" failures="0" skipped="0" time="0.018031">
-        <testcase name="printStartMessage method" file="packages/realtime-compiler/tests/ConsoleOutputTest.php::printStartMessage method" class="Packages\realtimecompiler\tests\ConsoleOutputTest" classname="Packages.realtimecompiler.tests.ConsoleOutputTest" assertions="1" time="0.018031"/>
-      </testsuite>
-      <testsuite name="Packages\realtimecompiler\tests\RealtimeCompilerTest" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php" tests="11" assertions="41" errors="0" failures="0" skipped="0" time="0.440146">
-        <testcase name="handle routes index page" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::handle routes index page" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="6" time="0.032560"/>
-        <testcase name="handle routes custom pages" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::handle routes custom pages" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="4" time="0.045059"/>
-        <testcase name="handle routes pages with .html extension" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::handle routes pages with .html extension" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="4" time="0.052978"/>
-        <testcase name="handle routes static assets" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::handle routes static assets" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="4" time="0.004884"/>
-        <testcase name="handle throws route not found exception for missing route" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::handle throws route not found exception for missing route" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="2" time="0.065100"/>
-        <testcase name="handle sends 404 error response for missing asset" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::handle sends 404 error response for missing asset" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="3" time="0.003943"/>
-        <testcase name="trailing slashes are normalized from route" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::trailing slashes are normalized from route" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="4" time="0.066819"/>
-        <testcase name="docs uri path is rerouted to docs/index" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::docs uri path is rerouted to docs/index" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="4" time="0.078496"/>
-        <testcase name="docs/search renders search page" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::docs/search renders search page" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="4" time="0.079420"/>
-        <testcase name="ping route returns ping response" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::ping route returns ping response" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="3" time="0.003913"/>
-        <testcase name="exception handling" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::exception handling" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="3" time="0.006975"/>
+    <testsuite name="Realtime Compiler" tests="12" assertions="42" errors="0" failures="0" skipped="0" time="0.440870">
+      <testsuite name="Packages\realtimecompiler\tests\ConsoleOutputTest" file="packages/realtime-compiler/tests/ConsoleOutputTest.php" tests="1" assertions="1" errors="0" failures="0" skipped="0" time="0.016908">
+        <testcase name="printStartMessage method" file="packages/realtime-compiler/tests/ConsoleOutputTest.php::printStartMessage method" class="Packages\realtimecompiler\tests\ConsoleOutputTest" classname="Packages.realtimecompiler.tests.ConsoleOutputTest" assertions="1" time="0.016908"/>
+      </testsuite>
+      <testsuite name="Packages\realtimecompiler\tests\RealtimeCompilerTest" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php" tests="11" assertions="41" errors="0" failures="0" skipped="0" time="0.423961">
+        <testcase name="handle routes index page" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::handle routes index page" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="6" time="0.031338"/>
+        <testcase name="handle routes custom pages" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::handle routes custom pages" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="4" time="0.043818"/>
+        <testcase name="handle routes pages with .html extension" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::handle routes pages with .html extension" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="4" time="0.050329"/>
+        <testcase name="handle routes static assets" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::handle routes static assets" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="4" time="0.004526"/>
+        <testcase name="handle throws route not found exception for missing route" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::handle throws route not found exception for missing route" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="2" time="0.059331"/>
+        <testcase name="handle sends 404 error response for missing asset" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::handle sends 404 error response for missing asset" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="3" time="0.003789"/>
+        <testcase name="trailing slashes are normalized from route" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::trailing slashes are normalized from route" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="4" time="0.065158"/>
+        <testcase name="docs uri path is rerouted to docs/index" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::docs uri path is rerouted to docs/index" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="4" time="0.076436"/>
+        <testcase name="docs/search renders search page" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::docs/search renders search page" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="4" time="0.078215"/>
+        <testcase name="ping route returns ping response" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::ping route returns ping response" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="3" time="0.003872"/>
+        <testcase name="exception handling" file="packages/realtime-compiler/tests/RealtimeCompilerTest.php::exception handling" class="Packages\realtimecompiler\tests\RealtimeCompilerTest" classname="Packages.realtimecompiler.tests.RealtimeCompilerTest" assertions="3" time="0.007150"/>
       </testsuite>
     </testsuite>
   </testsuite>
diff --git a/master/coverage/publications/dashboard.html b/master/coverage/publications/dashboard.html
index e6a5b7d80a6..83a5d95713b 100644
--- a/master/coverage/publications/dashboard.html
+++ b/master/coverage/publications/dashboard.html
@@ -136,7 +136,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/index.html b/master/coverage/publications/index.html
index 0f8ffda1e18..fd6ac1446cc 100644
--- a/master/coverage/publications/index.html
+++ b/master/coverage/publications/index.html
@@ -111,7 +111,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/Actions/CreateAction.php.html b/master/coverage/publications/src/Actions/CreateAction.php.html
index 828131056c6..2ecbfcbaad0 100644
--- a/master/coverage/publications/src/Actions/CreateAction.php.html
+++ b/master/coverage/publications/src/Actions/CreateAction.php.html
@@ -435,7 +435,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Actions/CreatesNewPublicationPage.php.html b/master/coverage/publications/src/Actions/CreatesNewPublicationPage.php.html
index 0fb973d86b9..ef32870397b 100644
--- a/master/coverage/publications/src/Actions/CreatesNewPublicationPage.php.html
+++ b/master/coverage/publications/src/Actions/CreatesNewPublicationPage.php.html
@@ -366,7 +366,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Actions/CreatesNewPublicationType.php.html b/master/coverage/publications/src/Actions/CreatesNewPublicationType.php.html
index f32bd110ea7..490c67764cb 100644
--- a/master/coverage/publications/src/Actions/CreatesNewPublicationType.php.html
+++ b/master/coverage/publications/src/Actions/CreatesNewPublicationType.php.html
@@ -321,7 +321,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Actions/GeneratesPublicationTagPages.php.html b/master/coverage/publications/src/Actions/GeneratesPublicationTagPages.php.html
index be44f933782..208815ab9d4 100644
--- a/master/coverage/publications/src/Actions/GeneratesPublicationTagPages.php.html
+++ b/master/coverage/publications/src/Actions/GeneratesPublicationTagPages.php.html
@@ -215,7 +215,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Actions/PublicationFieldValidator.php.html b/master/coverage/publications/src/Actions/PublicationFieldValidator.php.html
index f96753bf322..c2e5cbe9014 100644
--- a/master/coverage/publications/src/Actions/PublicationFieldValidator.php.html
+++ b/master/coverage/publications/src/Actions/PublicationFieldValidator.php.html
@@ -298,7 +298,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Actions/PublicationPageCompiler.php.html b/master/coverage/publications/src/Actions/PublicationPageCompiler.php.html
index dc7eb6ed9e0..ba7d45fbd21 100644
--- a/master/coverage/publications/src/Actions/PublicationPageCompiler.php.html
+++ b/master/coverage/publications/src/Actions/PublicationPageCompiler.php.html
@@ -338,7 +338,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Actions/PublicationPageValidator.php.html b/master/coverage/publications/src/Actions/PublicationPageValidator.php.html
index 4312d0c8990..0f8fd286fce 100644
--- a/master/coverage/publications/src/Actions/PublicationPageValidator.php.html
+++ b/master/coverage/publications/src/Actions/PublicationPageValidator.php.html
@@ -433,7 +433,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Actions/PublicationSchemaValidator.php.html b/master/coverage/publications/src/Actions/PublicationSchemaValidator.php.html
index 13b773cea2f..e61f96b50be 100644
--- a/master/coverage/publications/src/Actions/PublicationSchemaValidator.php.html
+++ b/master/coverage/publications/src/Actions/PublicationSchemaValidator.php.html
@@ -479,7 +479,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Actions/SeedsPublicationFiles.php.html b/master/coverage/publications/src/Actions/SeedsPublicationFiles.php.html
index dad99daac66..368f778712c 100644
--- a/master/coverage/publications/src/Actions/SeedsPublicationFiles.php.html
+++ b/master/coverage/publications/src/Actions/SeedsPublicationFiles.php.html
@@ -629,7 +629,7 @@
     <tr class=" d-flex"><td  class="col-1 text-right"><a id="211" href="#211">211</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
     <tr class="covered-by-large-tests popin d-flex"><td  data-title="17 tests cover line 212" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedPublicationCommandTest::testCanSeedPublications&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedPublicationCommandTest::testCanSeedPublicationsUsingArguments&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedPublicationCommandTest::testCanSeedMultiplePublications&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testCreate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testCreateMany&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithArrayType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithBooleanType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithDateTimeType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithFloatType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithMediaType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithIntegerType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithStringType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithTagType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithTextType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithUrlType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithCanonicalDefinition&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModuleTest::testCompilingWithPublicationTypeWithSeededFilesContainingAllFieldTypes&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="212" href="#212">212</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$lines</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="keyword">[</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
     <tr class="covered-by-large-tests popin d-flex"><td  data-title="17 tests cover line 213" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedPublicationCommandTest::testCanSeedPublications&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedPublicationCommandTest::testCanSeedPublicationsUsingArguments&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedPublicationCommandTest::testCanSeedMultiplePublications&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testCreate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testCreateMany&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithArrayType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithBooleanType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithDateTimeType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithFloatType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithMediaType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithIntegerType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithStringType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithTagType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithTextType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithUrlType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithCanonicalDefinition&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModuleTest::testCompilingWithPublicationTypeWithSeededFilesContainingAllFieldTypes&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="213" href="#213">213</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$i</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">0</span><span class="keyword">;</span><span class="default">&nbsp;</span><span class="default">$i</span><span class="default">&nbsp;</span><span class="keyword">&lt;</span><span class="default">&nbsp;</span><span class="default">$count</span><span class="keyword">;</span><span class="default">&nbsp;</span><span class="default">$i</span><span class="default">++</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
-    <tr class="covered-by-large-tests popin d-flex"><td  data-title="16 tests cover line 214" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedPublicationCommandTest::testCanSeedPublications&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedPublicationCommandTest::testCanSeedPublicationsUsingArguments&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedPublicationCommandTest::testCanSeedMultiplePublications&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testCreate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testCreateMany&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithArrayType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithBooleanType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithDateTimeType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithMediaType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithIntegerType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithStringType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithTagType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithTextType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithUrlType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithCanonicalDefinition&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModuleTest::testCompilingWithPublicationTypeWithSeededFilesContainingAllFieldTypes&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="214" href="#214">214</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$lines</span><span class="keyword">[</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">fakeSentence</span><span class="keyword">(</span><span class="default">rand</span><span class="keyword">(</span><span class="default">1</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">15</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
+    <tr class="covered-by-large-tests popin d-flex"><td  data-title="17 tests cover line 214" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedPublicationCommandTest::testCanSeedPublications&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedPublicationCommandTest::testCanSeedPublicationsUsingArguments&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedPublicationCommandTest::testCanSeedMultiplePublications&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testCreate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testCreateMany&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithArrayType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithBooleanType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithDateTimeType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithFloatType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithMediaType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithIntegerType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithStringType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithTagType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithTextType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithUrlType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithCanonicalDefinition&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModuleTest::testCompilingWithPublicationTypeWithSeededFilesContainingAllFieldTypes&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="214" href="#214">214</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$lines</span><span class="keyword">[</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">fakeSentence</span><span class="keyword">(</span><span class="default">rand</span><span class="keyword">(</span><span class="default">1</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">15</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
     <tr class=" d-flex"><td  class="col-1 text-right"><a id="215" href="#215">215</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
     <tr class=" d-flex"><td  class="col-1 text-right"><a id="216" href="#216">216</a></td><td class="col-11 codeLine"></td></tr>
     <tr class="covered-by-large-tests popin d-flex"><td  data-title="17 tests cover line 217" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedPublicationCommandTest::testCanSeedPublications&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedPublicationCommandTest::testCanSeedPublicationsUsingArguments&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedPublicationCommandTest::testCanSeedMultiplePublications&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testCreate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testCreateMany&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithArrayType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithBooleanType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithDateTimeType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithFloatType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithMediaType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithIntegerType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithStringType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithTagType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithTextType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithUrlType&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\SeedsPublicationFilesTest::testWithCanonicalDefinition&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Hyde\Publications\Testing\Feature\StaticSiteBuilderPublicationModuleTest::testCompilingWithPublicationTypeWithSeededFilesContainingAllFieldTypes&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="217" href="#217">217</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">implode</span><span class="keyword">(</span><span class="default">&quot;\n&quot;</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$lines</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
@@ -645,7 +645,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Actions/dashboard.html b/master/coverage/publications/src/Actions/dashboard.html
index bf5412f7ee0..5a38b4a4d09 100644
--- a/master/coverage/publications/src/Actions/dashboard.html
+++ b/master/coverage/publications/src/Actions/dashboard.html
@@ -138,7 +138,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/Actions/index.html b/master/coverage/publications/src/Actions/index.html
index dee643b5ab9..a08db91f7ce 100644
--- a/master/coverage/publications/src/Actions/index.html
+++ b/master/coverage/publications/src/Actions/index.html
@@ -337,7 +337,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/Commands/Helpers/InputStreamHandler.php.html b/master/coverage/publications/src/Commands/Helpers/InputStreamHandler.php.html
index 7b2ee7c717d..678720111cf 100644
--- a/master/coverage/publications/src/Commands/Helpers/InputStreamHandler.php.html
+++ b/master/coverage/publications/src/Commands/Helpers/InputStreamHandler.php.html
@@ -371,7 +371,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Commands/Helpers/dashboard.html b/master/coverage/publications/src/Commands/Helpers/dashboard.html
index 57cc894351e..57997e3d28a 100644
--- a/master/coverage/publications/src/Commands/Helpers/dashboard.html
+++ b/master/coverage/publications/src/Commands/Helpers/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/Commands/Helpers/index.html b/master/coverage/publications/src/Commands/Helpers/index.html
index 39b7e1517e2..37ecbe8bddd 100644
--- a/master/coverage/publications/src/Commands/Helpers/index.html
+++ b/master/coverage/publications/src/Commands/Helpers/index.html
@@ -114,7 +114,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/Commands/MakePublicationCommand.php.html b/master/coverage/publications/src/Commands/MakePublicationCommand.php.html
index b1f5946891d..abf54120aad 100644
--- a/master/coverage/publications/src/Commands/MakePublicationCommand.php.html
+++ b/master/coverage/publications/src/Commands/MakePublicationCommand.php.html
@@ -608,7 +608,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Commands/MakePublicationTypeCommand.php.html b/master/coverage/publications/src/Commands/MakePublicationTypeCommand.php.html
index 73f9cb4b6b1..4185e617a2d 100644
--- a/master/coverage/publications/src/Commands/MakePublicationTypeCommand.php.html
+++ b/master/coverage/publications/src/Commands/MakePublicationTypeCommand.php.html
@@ -612,7 +612,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Commands/SeedPublicationCommand.php.html b/master/coverage/publications/src/Commands/SeedPublicationCommand.php.html
index cd1b3d9d9e8..b81c896988f 100644
--- a/master/coverage/publications/src/Commands/SeedPublicationCommand.php.html
+++ b/master/coverage/publications/src/Commands/SeedPublicationCommand.php.html
@@ -314,7 +314,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Commands/ValidatePublicationTypesCommand.php.html b/master/coverage/publications/src/Commands/ValidatePublicationTypesCommand.php.html
index f64cd7ea6f5..e285e7619a8 100644
--- a/master/coverage/publications/src/Commands/ValidatePublicationTypesCommand.php.html
+++ b/master/coverage/publications/src/Commands/ValidatePublicationTypesCommand.php.html
@@ -447,7 +447,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Commands/ValidatePublicationsCommand.php.html b/master/coverage/publications/src/Commands/ValidatePublicationsCommand.php.html
index 14302edf04c..c55675e0426 100644
--- a/master/coverage/publications/src/Commands/ValidatePublicationsCommand.php.html
+++ b/master/coverage/publications/src/Commands/ValidatePublicationsCommand.php.html
@@ -591,7 +591,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Commands/ValidatingCommand.php.html b/master/coverage/publications/src/Commands/ValidatingCommand.php.html
index 4f0f67434b3..0174368e27e 100644
--- a/master/coverage/publications/src/Commands/ValidatingCommand.php.html
+++ b/master/coverage/publications/src/Commands/ValidatingCommand.php.html
@@ -302,7 +302,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Commands/dashboard.html b/master/coverage/publications/src/Commands/dashboard.html
index e071f482bfb..78f72592047 100644
--- a/master/coverage/publications/src/Commands/dashboard.html
+++ b/master/coverage/publications/src/Commands/dashboard.html
@@ -138,7 +138,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/Commands/index.html b/master/coverage/publications/src/Commands/index.html
index 5298b7d9f2e..c73069c30b0 100644
--- a/master/coverage/publications/src/Commands/index.html
+++ b/master/coverage/publications/src/Commands/index.html
@@ -281,7 +281,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/Concerns/ParsesPublicationFieldInputs.php.html b/master/coverage/publications/src/Concerns/ParsesPublicationFieldInputs.php.html
index 78219aa536f..5468b9b7e9c 100644
--- a/master/coverage/publications/src/Concerns/ParsesPublicationFieldInputs.php.html
+++ b/master/coverage/publications/src/Concerns/ParsesPublicationFieldInputs.php.html
@@ -459,7 +459,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Concerns/PublicationFieldTypes.php.html b/master/coverage/publications/src/Concerns/PublicationFieldTypes.php.html
index 458bb8dddd0..49b1f3f383f 100644
--- a/master/coverage/publications/src/Concerns/PublicationFieldTypes.php.html
+++ b/master/coverage/publications/src/Concerns/PublicationFieldTypes.php.html
@@ -431,7 +431,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Concerns/dashboard.html b/master/coverage/publications/src/Concerns/dashboard.html
index 5d288477780..1caef4b8fab 100644
--- a/master/coverage/publications/src/Concerns/dashboard.html
+++ b/master/coverage/publications/src/Concerns/dashboard.html
@@ -138,7 +138,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/Concerns/index.html b/master/coverage/publications/src/Concerns/index.html
index b0f9164bfba..1807713e395 100644
--- a/master/coverage/publications/src/Concerns/index.html
+++ b/master/coverage/publications/src/Concerns/index.html
@@ -141,7 +141,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/Models/PublicationFieldDefinition.php.html b/master/coverage/publications/src/Models/PublicationFieldDefinition.php.html
index 5f361344883..2a816902683 100644
--- a/master/coverage/publications/src/Models/PublicationFieldDefinition.php.html
+++ b/master/coverage/publications/src/Models/PublicationFieldDefinition.php.html
@@ -268,7 +268,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Models/PublicationFieldValue.php.html b/master/coverage/publications/src/Models/PublicationFieldValue.php.html
index 71a0b540259..306d6956e1e 100644
--- a/master/coverage/publications/src/Models/PublicationFieldValue.php.html
+++ b/master/coverage/publications/src/Models/PublicationFieldValue.php.html
@@ -265,7 +265,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Models/PublicationType.php.html b/master/coverage/publications/src/Models/PublicationType.php.html
index e4f331221e2..abffd1bd67a 100644
--- a/master/coverage/publications/src/Models/PublicationType.php.html
+++ b/master/coverage/publications/src/Models/PublicationType.php.html
@@ -881,7 +881,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Models/dashboard.html b/master/coverage/publications/src/Models/dashboard.html
index 9dbeffe28ff..1fe4702747b 100644
--- a/master/coverage/publications/src/Models/dashboard.html
+++ b/master/coverage/publications/src/Models/dashboard.html
@@ -138,7 +138,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/Models/index.html b/master/coverage/publications/src/Models/index.html
index 4ed03d55508..cfb73726b2a 100644
--- a/master/coverage/publications/src/Models/index.html
+++ b/master/coverage/publications/src/Models/index.html
@@ -169,7 +169,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/Pages/PublicationListPage.php.html b/master/coverage/publications/src/Pages/PublicationListPage.php.html
index 6933ccf4bc8..7e3e7e37ffb 100644
--- a/master/coverage/publications/src/Pages/PublicationListPage.php.html
+++ b/master/coverage/publications/src/Pages/PublicationListPage.php.html
@@ -224,7 +224,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Pages/PublicationPage.php.html b/master/coverage/publications/src/Pages/PublicationPage.php.html
index 59d0aa8a24d..2d0bd57a949 100644
--- a/master/coverage/publications/src/Pages/PublicationPage.php.html
+++ b/master/coverage/publications/src/Pages/PublicationPage.php.html
@@ -357,7 +357,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Pages/dashboard.html b/master/coverage/publications/src/Pages/dashboard.html
index 988fe5aacf0..d2c1ff9c397 100644
--- a/master/coverage/publications/src/Pages/dashboard.html
+++ b/master/coverage/publications/src/Pages/dashboard.html
@@ -138,7 +138,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/Pages/index.html b/master/coverage/publications/src/Pages/index.html
index 904c2eef1aa..0c33de2f07b 100644
--- a/master/coverage/publications/src/Pages/index.html
+++ b/master/coverage/publications/src/Pages/index.html
@@ -141,7 +141,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/Providers/TranslationServiceProvider.php.html b/master/coverage/publications/src/Providers/TranslationServiceProvider.php.html
index f40be22d5d9..c2c9d557c5c 100644
--- a/master/coverage/publications/src/Providers/TranslationServiceProvider.php.html
+++ b/master/coverage/publications/src/Providers/TranslationServiceProvider.php.html
@@ -195,7 +195,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Providers/dashboard.html b/master/coverage/publications/src/Providers/dashboard.html
index c5e8c23b089..0776279f837 100644
--- a/master/coverage/publications/src/Providers/dashboard.html
+++ b/master/coverage/publications/src/Providers/dashboard.html
@@ -138,7 +138,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/Providers/index.html b/master/coverage/publications/src/Providers/index.html
index 60b81254512..0a3d44a61ad 100644
--- a/master/coverage/publications/src/Providers/index.html
+++ b/master/coverage/publications/src/Providers/index.html
@@ -113,7 +113,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/Publications.php.html b/master/coverage/publications/src/Publications.php.html
index 8fe0621bef7..6a75d65a3ee 100644
--- a/master/coverage/publications/src/Publications.php.html
+++ b/master/coverage/publications/src/Publications.php.html
@@ -381,7 +381,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/PublicationsExtension.php.html b/master/coverage/publications/src/PublicationsExtension.php.html
index 8112271dd81..e3d7812d5c6 100644
--- a/master/coverage/publications/src/PublicationsExtension.php.html
+++ b/master/coverage/publications/src/PublicationsExtension.php.html
@@ -548,7 +548,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/PublicationsServiceProvider.php.html b/master/coverage/publications/src/PublicationsServiceProvider.php.html
index a2a2cfd2a07..2ec3e1220a0 100644
--- a/master/coverage/publications/src/PublicationsServiceProvider.php.html
+++ b/master/coverage/publications/src/PublicationsServiceProvider.php.html
@@ -242,7 +242,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Views/Components/RelatedPublicationsComponent.php.html b/master/coverage/publications/src/Views/Components/RelatedPublicationsComponent.php.html
index 87ae3ce0f97..4909b31d1c9 100644
--- a/master/coverage/publications/src/Views/Components/RelatedPublicationsComponent.php.html
+++ b/master/coverage/publications/src/Views/Components/RelatedPublicationsComponent.php.html
@@ -393,7 +393,7 @@
     <h4>Legend</h4>
     <p><span class="legend covered-by-small-tests">Covered by small (and larger) tests</span><span class="legend covered-by-medium-tests">Covered by medium (and large) tests</span><span class="legend covered-by-large-tests">Covered by large tests (and tests of unknown size)</span><span class="legend not-covered">Not covered</span><span class="legend not-coverable">Not coverable</span></p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
     <a title="Back to the top" id="toplink" href="#">
         <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
diff --git a/master/coverage/publications/src/Views/Components/dashboard.html b/master/coverage/publications/src/Views/Components/dashboard.html
index ee2d1df0115..17495cacbb9 100644
--- a/master/coverage/publications/src/Views/Components/dashboard.html
+++ b/master/coverage/publications/src/Views/Components/dashboard.html
@@ -139,7 +139,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/Views/Components/index.html b/master/coverage/publications/src/Views/Components/index.html
index 231d57c788e..b61646cb736 100644
--- a/master/coverage/publications/src/Views/Components/index.html
+++ b/master/coverage/publications/src/Views/Components/index.html
@@ -114,7 +114,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/Views/dashboard.html b/master/coverage/publications/src/Views/dashboard.html
index dc55fba01b3..0629ea1dbac 100644
--- a/master/coverage/publications/src/Views/dashboard.html
+++ b/master/coverage/publications/src/Views/dashboard.html
@@ -138,7 +138,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/Views/index.html b/master/coverage/publications/src/Views/index.html
index 8d472da971e..6fb408e1bd0 100644
--- a/master/coverage/publications/src/Views/index.html
+++ b/master/coverage/publications/src/Views/index.html
@@ -113,7 +113,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/dashboard.html b/master/coverage/publications/src/dashboard.html
index 70f260eae68..a0946bc52e0 100644
--- a/master/coverage/publications/src/dashboard.html
+++ b/master/coverage/publications/src/dashboard.html
@@ -137,7 +137,7 @@ <h3>Project Risks</h3>
    <footer>
     <hr/>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/coverage/publications/src/index.html b/master/coverage/publications/src/index.html
index 3f4f0540f44..e1f86465b23 100644
--- a/master/coverage/publications/src/index.html
+++ b/master/coverage/publications/src/index.html
@@ -364,7 +364,7 @@ <h4>Legend</h4>
      <span class="success"><strong>High</strong>: 90% to 100%</span>
     </p>
     <p>
-     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 10:38:02 UTC 2024.</small>
+     <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 10.1.14</a> using <a href="https://www.php.net/" target="_top">PHP 8.1.27</a> and <a href="https://phpunit.de/">PHPUnit 10.5.15</a> at Sun Apr 14 11:50:35 UTC 2024.</small>
     </p>
    </footer>
   </div>
diff --git a/master/dev-docs/README.html b/master/dev-docs/README.html
index 22adbd7e064..174535f1c7f 100644
--- a/master/dev-docs/README.html
+++ b/master/dev-docs/README.html
@@ -341,7 +341,7 @@ <h1>Hyde Documentation</h1>
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -366,8 +366,7 @@ <h1>Hyde Documentation</h1>
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/advanced-customization.html b/master/dev-docs/advanced-customization.html
index 967378743f3..d9363f05436 100644
--- a/master/dev-docs/advanced-customization.html
+++ b/master/dev-docs/advanced-customization.html
@@ -516,7 +516,7 @@ <h2>Custom Output Directory<a id="custom-output-directory" href="#custom-output-
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -541,8 +541,7 @@ <h2>Custom Output Directory<a id="custom-output-directory" href="#custom-output-
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/advanced-features.html b/master/dev-docs/advanced-features.html
index a39d5171e9e..76aed77f199 100644
--- a/master/dev-docs/advanced-features.html
+++ b/master/dev-docs/advanced-features.html
@@ -363,7 +363,7 @@ <h2>Table of Contents<a id="table-of-contents" href="#table-of-contents" class="
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -388,8 +388,7 @@ <h2>Table of Contents<a id="table-of-contents" href="#table-of-contents" class="
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/advanced-markdown.html b/master/dev-docs/advanced-markdown.html
index dde53fc5c52..1479b8318ea 100644
--- a/master/dev-docs/advanced-markdown.html
+++ b/master/dev-docs/advanced-markdown.html
@@ -524,7 +524,7 @@ <h3>Tailwind Typography Prose Classes<a id="tailwind-typography-prose-classes" h
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -549,8 +549,7 @@ <h3>Tailwind Typography Prose Classes<a id="tailwind-typography-prose-classes" h
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/architecture-concepts.html b/master/dev-docs/architecture-concepts.html
index bb19edec2de..bc52f562679 100644
--- a/master/dev-docs/architecture-concepts.html
+++ b/master/dev-docs/architecture-concepts.html
@@ -362,7 +362,7 @@ <h2>Behind the Magic<a id="behind-the-magic" href="#behind-the-magic" class="hea
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -387,8 +387,7 @@ <h2>Behind the Magic<a id="behind-the-magic" href="#behind-the-magic" class="hea
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/autodiscovery.html b/master/dev-docs/autodiscovery.html
index 4385a6b283e..41e834df58b 100644
--- a/master/dev-docs/autodiscovery.html
+++ b/master/dev-docs/autodiscovery.html
@@ -462,7 +462,7 @@ <h4>Deep dive into lazy-booting<a id="deep-dive-into-lazy-booting" href="#deep-d
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -487,8 +487,7 @@ <h4>Deep dive into lazy-booting<a id="deep-dive-into-lazy-booting" href="#deep-d
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/automatic-routing.html b/master/dev-docs/automatic-routing.html
index 2f8de84933a..e8a2f22f355 100644
--- a/master/dev-docs/automatic-routing.html
+++ b/master/dev-docs/automatic-routing.html
@@ -399,7 +399,7 @@ <h3>Using the <code>x-link</code> component<a id="using-the-x-link-component" hr
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -424,8 +424,7 @@ <h3>Using the <code>x-link</code> component<a id="using-the-x-link-component" hr
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/blog-posts.html b/master/dev-docs/blog-posts.html
index 55496e18248..f2e7beb62e3 100644
--- a/master/dev-docs/blog-posts.html
+++ b/master/dev-docs/blog-posts.html
@@ -578,7 +578,7 @@ <h2>Using Images in Posts<a id="using-images-in-posts" href="#using-images-in-po
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -603,8 +603,7 @@ <h2>Using Images in Posts<a id="using-images-in-posts" href="#using-images-in-po
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/build-tasks.html b/master/dev-docs/build-tasks.html
index f4c6eeda051..a7a86f62376 100644
--- a/master/dev-docs/build-tasks.html
+++ b/master/dev-docs/build-tasks.html
@@ -531,7 +531,7 @@ <h3>Skipping tasks<a id="skipping-tasks" href="#skipping-tasks" class="heading-p
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -556,8 +556,7 @@ <h3>Skipping tasks<a id="skipping-tasks" href="#skipping-tasks" class="heading-p
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/collections.html b/master/dev-docs/collections.html
index 39cb0f498e4..c3cdca98298 100644
--- a/master/dev-docs/collections.html
+++ b/master/dev-docs/collections.html
@@ -579,7 +579,7 @@ <h4>Implementing it in a Blade view<a id="implementing-it-in-a-blade-view" href=
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -604,8 +604,7 @@ <h4>Implementing it in a Blade view<a id="implementing-it-in-a-blade-view" href=
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/compile-and-deploy.html b/master/dev-docs/compile-and-deploy.html
index b915d9d8b30..a40c63dc9f8 100644
--- a/master/dev-docs/compile-and-deploy.html
+++ b/master/dev-docs/compile-and-deploy.html
@@ -429,7 +429,7 @@ <h3>GitHub Pages - CI/CD<a id="github-pages---cicd" href="#github-pages---cicd"
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -454,8 +454,7 @@ <h3>GitHub Pages - CI/CD<a id="github-pages---cicd" href="#github-pages---cicd"
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/configuration.html b/master/dev-docs/configuration.html
index c981c0750b5..96246766c2a 100644
--- a/master/dev-docs/configuration.html
+++ b/master/dev-docs/configuration.html
@@ -342,7 +342,7 @@ <h4 class="sidebar-group-heading text-base font-semibold  cursor-pointer dark:gr
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -367,8 +367,7 @@ <h4 class="sidebar-group-heading text-base font-semibold  cursor-pointer dark:gr
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/console-commands.html b/master/dev-docs/console-commands.html
index afc60426dfd..268e8202200 100644
--- a/master/dev-docs/console-commands.html
+++ b/master/dev-docs/console-commands.html
@@ -795,7 +795,7 @@ <h4>Options<a id="options-2" href="#options-2" class="heading-permalink" aria-hi
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -820,8 +820,7 @@ <h4>Options<a id="options-2" href="#options-2" class="heading-permalink" aria-hi
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/core-concepts.html b/master/dev-docs/core-concepts.html
index f9a95063d4f..8ac0798b957 100644
--- a/master/dev-docs/core-concepts.html
+++ b/master/dev-docs/core-concepts.html
@@ -787,7 +787,7 @@ <h3>Route Keys<a id="route-keys" href="#route-keys" class="heading-permalink" ar
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -812,8 +812,7 @@ <h3>Route Keys<a id="route-keys" href="#route-keys" class="heading-permalink" ar
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/customization.html b/master/dev-docs/customization.html
index 28d381143b8..9454bff2b91 100644
--- a/master/dev-docs/customization.html
+++ b/master/dev-docs/customization.html
@@ -778,7 +778,7 @@ <h3>Namespaced YAML Configuration<a id="namespaced-yaml-configuration" href="#na
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -803,8 +803,7 @@ <h3>Namespaced YAML Configuration<a id="namespaced-yaml-configuration" href="#na
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/directory-structure.html b/master/dev-docs/directory-structure.html
index ee449f1e387..14f50815600 100644
--- a/master/dev-docs/directory-structure.html
+++ b/master/dev-docs/directory-structure.html
@@ -342,7 +342,7 @@ <h4 class="sidebar-group-heading text-base font-semibold  cursor-pointer dark:gr
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -367,8 +367,7 @@ <h4 class="sidebar-group-heading text-base font-semibold  cursor-pointer dark:gr
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/documentation-pages.html b/master/dev-docs/documentation-pages.html
index 35f73fe24e7..ed4e35358c6 100644
--- a/master/dev-docs/documentation-pages.html
+++ b/master/dev-docs/documentation-pages.html
@@ -727,7 +727,7 @@ <h4>Changing the Blade view<a id="changing-the-blade-view" href="#changing-the-b
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -752,8 +752,7 @@ <h4>Changing the Blade view<a id="changing-the-blade-view" href="#changing-the-b
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/dynamic-data-discovery.html b/master/dev-docs/dynamic-data-discovery.html
index 4500230c6c8..de46f3c72c8 100644
--- a/master/dev-docs/dynamic-data-discovery.html
+++ b/master/dev-docs/dynamic-data-discovery.html
@@ -432,7 +432,7 @@ <h3>Injecting the data into the page<a id="injecting-the-data-into-the-page" hre
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -457,8 +457,7 @@ <h3>Injecting the data into the page<a id="injecting-the-data-into-the-page" hre
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/extensions-api.html b/master/dev-docs/extensions-api.html
index 7e61bdfcab2..d1b5fbb0a80 100644
--- a/master/dev-docs/extensions-api.html
+++ b/master/dev-docs/extensions-api.html
@@ -499,7 +499,7 @@ <h3>Telling the world about your extension<a id="telling-the-world-about-your-ex
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -524,8 +524,7 @@ <h3>Telling the world about your extension<a id="telling-the-world-about-your-ex
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/extensions.html b/master/dev-docs/extensions.html
index d5a0cc8acaf..c611a44621e 100644
--- a/master/dev-docs/extensions.html
+++ b/master/dev-docs/extensions.html
@@ -404,7 +404,7 @@ <h2>Contribute<a id="contribute" href="#contribute" class="heading-permalink" ar
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -429,8 +429,7 @@ <h2>Contribute<a id="contribute" href="#contribute" class="heading-permalink" ar
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/front-matter.html b/master/dev-docs/front-matter.html
index f2da1e527ca..d9f0809dbd5 100644
--- a/master/dev-docs/front-matter.html
+++ b/master/dev-docs/front-matter.html
@@ -403,7 +403,7 @@ <h3>Front Matter in Blade<a id="front-matter-in-blade" href="#front-matter-in-bl
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -428,8 +428,7 @@ <h3>Front Matter in Blade<a id="front-matter-in-blade" href="#front-matter-in-bl
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/getting-started.html b/master/dev-docs/getting-started.html
index fee3dc623f8..4732e1272dc 100644
--- a/master/dev-docs/getting-started.html
+++ b/master/dev-docs/getting-started.html
@@ -342,7 +342,7 @@ <h4 class="sidebar-group-heading text-base font-semibold  cursor-pointer dark:gr
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -367,8 +367,7 @@ <h4 class="sidebar-group-heading text-base font-semibold  cursor-pointer dark:gr
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/helpers.html b/master/dev-docs/helpers.html
index 6a14304fc35..62f466f6ab9 100644
--- a/master/dev-docs/helpers.html
+++ b/master/dev-docs/helpers.html
@@ -759,7 +759,7 @@ <h4>Conclusion<a id="conclusion" href="#conclusion" class="heading-permalink" ar
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -784,8 +784,7 @@ <h4>Conclusion<a id="conclusion" href="#conclusion" class="heading-permalink" ar
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/hyde-pages.html b/master/dev-docs/hyde-pages.html
index 2206f08eaea..2192b817298 100644
--- a/master/dev-docs/hyde-pages.html
+++ b/master/dev-docs/hyde-pages.html
@@ -1254,7 +1254,7 @@ <h4><code>getBladeView()</code><a id="getbladeview" href="#getbladeview" class="
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -1279,8 +1279,7 @@ <h4><code>getBladeView()</code><a id="getbladeview" href="#getbladeview" class="
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/in-memory-pages.html b/master/dev-docs/in-memory-pages.html
index 5470085cec8..0707d4e2768 100644
--- a/master/dev-docs/in-memory-pages.html
+++ b/master/dev-docs/in-memory-pages.html
@@ -388,7 +388,7 @@ <h2>API Reference<a id="api-reference" href="#api-reference" class="heading-perm
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -413,8 +413,7 @@ <h2>API Reference<a id="api-reference" href="#api-reference" class="heading-perm
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/index.html b/master/dev-docs/index.html
index 521dcb9d137..136e563aefe 100644
--- a/master/dev-docs/index.html
+++ b/master/dev-docs/index.html
@@ -380,7 +380,7 @@ <h3>To learn more, head over to the <a href="quickstart">quickstart page</a>.<a
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -405,8 +405,7 @@ <h3>To learn more, head over to the <a href="quickstart">quickstart page</a>.<a
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/installation.html b/master/dev-docs/installation.html
index dceeb147fb6..cf354c05002 100644
--- a/master/dev-docs/installation.html
+++ b/master/dev-docs/installation.html
@@ -342,7 +342,7 @@ <h4 class="sidebar-group-heading text-base font-semibold  cursor-pointer dark:gr
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -367,8 +367,7 @@ <h4 class="sidebar-group-heading text-base font-semibold  cursor-pointer dark:gr
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/managing-assets.html b/master/dev-docs/managing-assets.html
index c12163da64b..dcc38b7f577 100644
--- a/master/dev-docs/managing-assets.html
+++ b/master/dev-docs/managing-assets.html
@@ -506,7 +506,7 @@ <h3>Setting a featured image for blog posts<a id="setting-a-featured-image-for-b
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -531,8 +531,7 @@ <h3>Setting a featured image for blog posts<a id="setting-a-featured-image-for-b
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/navigation.html b/master/dev-docs/navigation.html
index eef948c1d19..e89c351b0eb 100644
--- a/master/dev-docs/navigation.html
+++ b/master/dev-docs/navigation.html
@@ -626,7 +626,7 @@ <h2>Digging Deeper into the internals<a id="digging-deeper-into-the-internals" h
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -651,8 +651,7 @@ <h2>Digging Deeper into the internals<a id="digging-deeper-into-the-internals" h
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/page-models.html b/master/dev-docs/page-models.html
index 6ddcefb5935..98be2c6b76c 100644
--- a/master/dev-docs/page-models.html
+++ b/master/dev-docs/page-models.html
@@ -450,7 +450,7 @@ <h2>Page Models as Data Containers<a id="page-models-as-data-containers" href="#
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -475,8 +475,7 @@ <h2>Page Models as Data Containers<a id="page-models-as-data-containers" href="#
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/quickstart.html b/master/dev-docs/quickstart.html
index 2e33333ecfa..a9590446885 100644
--- a/master/dev-docs/quickstart.html
+++ b/master/dev-docs/quickstart.html
@@ -435,7 +435,7 @@ <h2>Further Reading<a id="further-reading" href="#further-reading" class="headin
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -460,8 +460,7 @@ <h2>Further Reading<a id="further-reading" href="#further-reading" class="headin
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/realtime-compiler.html b/master/dev-docs/realtime-compiler.html
index e4bb0c1edc5..f3f17512eb0 100644
--- a/master/dev-docs/realtime-compiler.html
+++ b/master/dev-docs/realtime-compiler.html
@@ -442,7 +442,7 @@ <h3>Source code<a id="source-code" href="#source-code" class="heading-permalink"
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -467,8 +467,7 @@ <h3>Source code<a id="source-code" href="#source-code" class="heading-permalink"
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/search.html b/master/dev-docs/search.html
index 2bf2309bedd..bb998c61f51 100644
--- a/master/dev-docs/search.html
+++ b/master/dev-docs/search.html
@@ -298,13 +298,15 @@ <h4 class="sidebar-group-heading text-base font-semibold  cursor-pointer dark:gr
     <main id="content" class="dark:bg-gray-900 min-h-screen bg-gray-50 md:bg-white absolute top-16 md:top-0 w-screen md:left-64 md:w-[calc(100vw_-_16rem)]">
         <article id="document" itemscope itemtype="https://schema.org/Article" class="mx-auto lg:ml-8 max-w-3xl p-12 md:px-16 max-w-[1000px] min-h-[calc(100vh_-_4rem)] prose dark:prose-invert">
         <h1>Search the documentation site</h1>
-    <style>#searchMenuButton, .edit-page-link {
+    <style>
+        #searchMenuButton, .edit-page-link {
             display: none !important;
         }
 
         #search-results {
             max-height: unset !important;
-        }</style>
+        }
+    </style>
     <div id="hyde-search">
     <noscript>
         The search feature requires JavaScript to be enabled in your browser.
@@ -353,7 +355,7 @@ <h1>Search the documentation site</h1>
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -378,8 +380,7 @@ <h1>Search the documentation site</h1>
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/static-pages.html b/master/dev-docs/static-pages.html
index acacd5c6afa..9ba14fa4326 100644
--- a/master/dev-docs/static-pages.html
+++ b/master/dev-docs/static-pages.html
@@ -533,7 +533,7 @@ <h2>Bonus: Creating HTML Pages<a id="bonus-creating-html-pages" href="#bonus-cre
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -558,8 +558,7 @@ <h2>Bonus: Creating HTML Pages<a id="bonus-creating-html-pages" href="#bonus-cre
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/the-hydekernel.html b/master/dev-docs/the-hydekernel.html
index 6f831601ce9..06b27f6e36e 100644
--- a/master/dev-docs/the-hydekernel.html
+++ b/master/dev-docs/the-hydekernel.html
@@ -686,7 +686,7 @@ <h4><code>booted()</code><a id="booted" href="#booted" class="heading-permalink"
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -711,8 +711,7 @@ <h4><code>booted()</code><a id="booted" href="#booted" class="heading-permalink"
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/third-party-integrations.html b/master/dev-docs/third-party-integrations.html
index c55364ed41a..075d631bbae 100644
--- a/master/dev-docs/third-party-integrations.html
+++ b/master/dev-docs/third-party-integrations.html
@@ -375,7 +375,7 @@ <h3>Attribution and configuration<a id="attribution-and-configuration" href="#at
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -400,8 +400,7 @@ <h3>Attribution and configuration<a id="attribution-and-configuration" href="#at
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/troubleshooting.html b/master/dev-docs/troubleshooting.html
index ea7291e2039..6161a8625b9 100644
--- a/master/dev-docs/troubleshooting.html
+++ b/master/dev-docs/troubleshooting.html
@@ -561,7 +561,7 @@ <h4>Fixing a broken config<a id="fixing-a-broken-config" href="#fixing-a-broken-
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -586,8 +586,7 @@ <h4>Fixing a broken config<a id="fixing-a-broken-config" href="#fixing-a-broken-
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/ui-kit.html b/master/dev-docs/ui-kit.html
index 050fec05e19..0a95aa64775 100644
--- a/master/dev-docs/ui-kit.html
+++ b/master/dev-docs/ui-kit.html
@@ -501,7 +501,7 @@ <h2>GitHub Repository<a id="github-repository" href="#github-repository" class="
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -526,8 +526,7 @@ <h2>GitHub Repository<a id="github-repository" href="#github-repository" class="
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/dev-docs/updating-hyde.html b/master/dev-docs/updating-hyde.html
index 99ff0c37689..ad52c692e17 100644
--- a/master/dev-docs/updating-hyde.html
+++ b/master/dev-docs/updating-hyde.html
@@ -462,7 +462,7 @@ <h2>Post-update instructions<a id="post-update-instructions" href="#post-update-
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -487,8 +487,7 @@ <h2>Post-update instructions<a id="post-update-instructions" href="#post-update-
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/index.html b/master/index.html
index 9782c6fae8a..438997fa552 100644
--- a/master/index.html
+++ b/master/index.html
@@ -7,16 +7,16 @@ <h1>Index of hydephp/develop/master
     <thead><tr><th valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAKEAAP///8z//wAAAAAAACH+TlRoaXMgYXJ0IGlzIGluIHRoZSBwdWJsaWMgZG9tYWluLiBLZXZpbiBIdWdoZXMsIGtldmluaEBlaXQuY29tLCBTZXB0ZW1iZXIgMTk5NQAh+QQBAAABACwAAAAAFAAWAAACE4yPqcvtD6OctNqLs968+w+GSQEAOw==" alt="[ICO]"><th>Name</th><th>Last modified</th><th>Size</th><th>Description</th></tr><tr><th colspan="5"><hr></th></tr></thead>
     <tbody>
         <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAPYAABkLC7y8vHFxccwAAJkAAEVBQfVBQWYAAKejo97e3pkzM4yMjDUfH9MzM6hzc2EoKGZmZkIDA7YAANbW1uVRUebm5tcbG5ZQULUfH+94eMzMzE9PT5mZmfYoKP9aWrW1tTswMDgWFndra40AALoPD+F3dykcHI59fe/v73g4ON8LC+kjI8hJSZWPj4IAACMPD/g4OGNBQeNKSug8PGBTU00kJPBtbcXFxaeMjK2trXwBAZlmZrNERK4AADMAAIN8fP9UVMEJCU47O14AAJ50dMcYGI1hYfIpKfIaGv5LS+AREU4/P/8zM1dXV3IAAPRMTOUwMLR0dFEBAYg2NnRTU/9mZnt7e/QkJKQAAP1CQjsrK/V1dVEsLFUxMYeHh6kFBWYzM7IqKsQQEIyGhmFNTVJMTCgPD8AAANsXF0I1NXxtbekLC/89PekODvE6OllQUK6KisMICNQMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAHMALAAAAAAUABYAAAf/gHOCg4SFhoYcHDcVjCiHhhMFMWUtEwmMj4MoGlRhD0s5lo6Zmx9CKxhdlZeZc4xjKVckL6ujh4ycDUhfDAiWpAkaHBdHKgdlixWFlyi4H0YwShIhvgmanAuXljkOBtJSEIuCFTc7U1Y36dwlT2hnOmkfE67PFApNImpqURlV7RIutMgjB2cLEAM8WMg46MHDDDE9DoAIhYCIDX9Z2GjcCKXIFwIRwuXKmLGDSVQQsYxwQivAhBZgmJxUIadmD5UrAYgM9oOLhTUDJAjFOcSHCQEIXOLqGUcHgBdQn4KAkEhpM54AwC3wsjVpDqWsXE244cVMk68fXKYTZUusMEUaC+Jqw2ToKlu6hgIBADs=" alt="[PARENTDIR]"></td><td><a href="../">Parent Directory</a></td><td>&nbsp;</td><td align="right"> - </td><td>&nbsp;</td></tr>
-        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAMQAAFxcXNbW1q2trZmZmf///8TExO/v73Nzc+bm5rW1tXl5eaWlpb29vWZmZszMzPf3993d3YWFhWZmZoyMjP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUABQALAAAAAAUABYAAAXFYMIwSSmcy7AkAUK9L0PMNPEYgSo4LizXMwMip1rwYAlgcDgoFI+UJGFArUIcAwdjsRAEXgIlQYitqgqu8NQ8GBYSp8GBkRbfho63YF5fs6sBb3wUanY3VwkHaIQzf2ZDDIoGjGI1Q4kFk2qOVZeSlJUzCA6YmkCOo6WglQ+je5mrfmYQBa+TCzYPN0IIvQiICw2wC7pCEAEBDsp5cAPCkwMGx3kkJSYpEQAO0BMREQoH4eIHDeUADRAvVwXs7e7tDhCTFCEAOw==" alt="[TXT]"></td><td><a href="README.md">README.md</a></td><td align="right"><time datetime="2024-04-14T10:41:01+00:00">2024-04-14 10:41</time></td><td align="right">157 B</td><td>&nbsp;</td></tr>
-        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAPYAAFw+H/HDlMOkhbaSbZh6W8LCwqKioubm5n9lS5mZmf/evf/Tpt+zhr29vbGLZL2betfX17e3t3JMJ6CAYO/Kpue6jfnWssWyoKV5TNesgZdrP7+UaWdEIs6lfO/v797e3uG1iXxTKr+Zc4R6b6N2SszMzLKLZPXFla2DWo1xVf/Wre3Ak//bttW0lKurq//hw/jLn/3RpVtDLMOZbrWPaal+UdG1mYRYLOXCnfXIm8mrjKuHY7SUc9uwheW4jK+Macaed6h8UWNCIf/ZtLyWcWtIJOy9jsSddqWEY//jx5p7XLqPY5VvSMWljIBmTPHPrPLHnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAFEALAAAAAAUABYAAAf/gFGCg4SFhoeIiB6Li4mDix+REJORBx6HBzZENA4oNZ9EJZSWl4I2Ok9DqioLFSQ7DQWio1EDFKwxuTkrM0ybJp5BF5EiOFAryCA9HTw6LQqqUBsaog9ND9icNCICz6sBPTcRJQ9J5tDo6bk+HSEuBUQv8uqrC7sZR+7w9Li4RvgDJCRoQANdP3v2wDH7IZAgi4f9YEg8UQHgjoYo6u2imIzBQiRFBmZM2HEZPiADkCjhIHJdxZMdgKBMqSSFkIEkjimLKWLTL5UpEAAwUADDkpMpf+xYCjSoDBnvLmi4EaKqhKtFsmoFIGPEuA8lIrgwkKCs2bMG3ok6AFZWrLdwBN+uDQQAOw==" alt="[DIR]"></td><td><a href="api-docs/">api-docs/</a></td><td align="right"><time datetime="2024-04-14T10:40:01+00:00">2024-04-14 10:40</time></td><td align="right"> - </td><td>&nbsp;</td></tr>
-        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAPYAAFw+H/HDlMOkhbaSbZh6W8LCwqKioubm5n9lS5mZmf/evf/Tpt+zhr29vbGLZL2betfX17e3t3JMJ6CAYO/Kpue6jfnWssWyoKV5TNesgZdrP7+UaWdEIs6lfO/v797e3uG1iXxTKr+Zc4R6b6N2SszMzLKLZPXFla2DWo1xVf/Wre3Ak//bttW0lKurq//hw/jLn/3RpVtDLMOZbrWPaal+UdG1mYRYLOXCnfXIm8mrjKuHY7SUc9uwheW4jK+Macaed6h8UWNCIf/ZtLyWcWtIJOy9jsSddqWEY//jx5p7XLqPY5VvSMWljIBmTPHPrPLHnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAFEALAAAAAAUABYAAAf/gFGCg4SFhoeIiB6Li4mDix+REJORBx6HBzZENA4oNZ9EJZSWl4I2Ok9DqioLFSQ7DQWio1EDFKwxuTkrM0ybJp5BF5EiOFAryCA9HTw6LQqqUBsaog9ND9icNCICz6sBPTcRJQ9J5tDo6bk+HSEuBUQv8uqrC7sZR+7w9Li4RvgDJCRoQANdP3v2wDH7IZAgi4f9YEg8UQHgjoYo6u2imIzBQiRFBmZM2HEZPiADkCjhIHJdxZMdgKBMqSSFkIEkjimLKWLTL5UpEAAwUADDkpMpf+xYCjSoDBnvLmi4EaKqhKtFsmoFIGPEuA8lIrgwkKCs2bMG3ok6AFZWrLdwBN+uDQQAOw==" alt="[DIR]"></td><td><a href="coverage/">coverage/</a></td><td align="right"><time datetime="2024-04-14T10:39:06+00:00">2024-04-14 10:39</time></td><td align="right"> - </td><td>&nbsp;</td></tr>
-        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAPYAAFw+H/HDlMOkhbaSbZh6W8LCwqKioubm5n9lS5mZmf/evf/Tpt+zhr29vbGLZL2betfX17e3t3JMJ6CAYO/Kpue6jfnWssWyoKV5TNesgZdrP7+UaWdEIs6lfO/v797e3uG1iXxTKr+Zc4R6b6N2SszMzLKLZPXFla2DWo1xVf/Wre3Ak//bttW0lKurq//hw/jLn/3RpVtDLMOZbrWPaal+UdG1mYRYLOXCnfXIm8mrjKuHY7SUc9uwheW4jK+Macaed6h8UWNCIf/ZtLyWcWtIJOy9jsSddqWEY//jx5p7XLqPY5VvSMWljIBmTPHPrPLHnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAFEALAAAAAAUABYAAAf/gFGCg4SFhoeIiB6Li4mDix+REJORBx6HBzZENA4oNZ9EJZSWl4I2Ok9DqioLFSQ7DQWio1EDFKwxuTkrM0ybJp5BF5EiOFAryCA9HTw6LQqqUBsaog9ND9icNCICz6sBPTcRJQ9J5tDo6bk+HSEuBUQv8uqrC7sZR+7w9Li4RvgDJCRoQANdP3v2wDH7IZAgi4f9YEg8UQHgjoYo6u2imIzBQiRFBmZM2HEZPiADkCjhIHJdxZMdgKBMqSSFkIEkjimLKWLTL5UpEAAwUADDkpMpf+xYCjSoDBnvLmi4EaKqhKtFsmoFIGPEuA8lIrgwkKCs2bMG3ok6AFZWrLdwBN+uDQQAOw==" alt="[DIR]"></td><td><a href="dev-docs/">dev-docs/</a></td><td align="right"><time datetime="2024-04-14T10:40:00+00:00">2024-04-14 10:40</time></td><td align="right"> - </td><td>&nbsp;</td></tr>
-        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAMQAAFxcXNbW1q2trZmZmf///8TExO/v73Nzc+bm5rW1tXl5eaWlpb29vWZmZszMzPf3993d3YWFhWZmZoyMjP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUABQALAAAAAAUABYAAAXFYMIwSSmcy7AkAUK9L0PMNPEYgSo4LizXMwMip1rwYAlgcDgoFI+UJGFArUIcAwdjsRAEXgIlQYitqgqu8NQ8GBYSp8GBkRbfho63YF5fs6sBb3wUanY3VwkHaIQzf2ZDDIoGjGI1Q4kFk2qOVZeSlJUzCA6YmkCOo6WglQ+je5mrfmYQBa+TCzYPN0IIvQiICw2wC7pCEAEBDsp5cAPCkwMGx3kkJSYpEQAO0BMREQoH4eIHDeUADRAvVwXs7e7tDhCTFCEAOw==" alt="[TXT]"></td><td><a href="index.html">index.html</a></td><td align="right"><time datetime="2024-04-14T10:39:05+00:00">2024-04-14 10:39</time></td><td align="right">10.18 kB</td><td>&nbsp;</td></tr>
-        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAPYAAFw+H/HDlMOkhbaSbZh6W8LCwqKioubm5n9lS5mZmf/evf/Tpt+zhr29vbGLZL2betfX17e3t3JMJ6CAYO/Kpue6jfnWssWyoKV5TNesgZdrP7+UaWdEIs6lfO/v797e3uG1iXxTKr+Zc4R6b6N2SszMzLKLZPXFla2DWo1xVf/Wre3Ak//bttW0lKurq//hw/jLn/3RpVtDLMOZbrWPaal+UdG1mYRYLOXCnfXIm8mrjKuHY7SUc9uwheW4jK+Macaed6h8UWNCIf/ZtLyWcWtIJOy9jsSddqWEY//jx5p7XLqPY5VvSMWljIBmTPHPrPLHnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAFEALAAAAAAUABYAAAf/gFGCg4SFhoeIiB6Li4mDix+REJORBx6HBzZENA4oNZ9EJZSWl4I2Ok9DqioLFSQ7DQWio1EDFKwxuTkrM0ybJp5BF5EiOFAryCA9HTw6LQqqUBsaog9ND9icNCICz6sBPTcRJQ9J5tDo6bk+HSEuBUQv8uqrC7sZR+7w9Li4RvgDJCRoQANdP3v2wDH7IZAgi4f9YEg8UQHgjoYo6u2imIzBQiRFBmZM2HEZPiADkCjhIHJdxZMdgKBMqSSFkIEkjimLKWLTL5UpEAAwUADDkpMpf+xYCjSoDBnvLmi4EaKqhKtFsmoFIGPEuA8lIrgwkKCs2bMG3ok6AFZWrLdwBN+uDQQAOw==" alt="[DIR]"></td><td><a href="media/">media/</a></td><td align="right"><time datetime="2024-04-14T10:39:05+00:00">2024-04-14 10:39</time></td><td align="right"> - </td><td>&nbsp;</td></tr>
-        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAPYAAFw+H/HDlMOkhbaSbZh6W8LCwqKioubm5n9lS5mZmf/evf/Tpt+zhr29vbGLZL2betfX17e3t3JMJ6CAYO/Kpue6jfnWssWyoKV5TNesgZdrP7+UaWdEIs6lfO/v797e3uG1iXxTKr+Zc4R6b6N2SszMzLKLZPXFla2DWo1xVf/Wre3Ak//bttW0lKurq//hw/jLn/3RpVtDLMOZbrWPaal+UdG1mYRYLOXCnfXIm8mrjKuHY7SUc9uwheW4jK+Macaed6h8UWNCIf/ZtLyWcWtIJOy9jsSddqWEY//jx5p7XLqPY5VvSMWljIBmTPHPrPLHnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAFEALAAAAAAUABYAAAf/gFGCg4SFhoeIiB6Li4mDix+REJORBx6HBzZENA4oNZ9EJZSWl4I2Ok9DqioLFSQ7DQWio1EDFKwxuTkrM0ybJp5BF5EiOFAryCA9HTw6LQqqUBsaog9ND9icNCICz6sBPTcRJQ9J5tDo6bk+HSEuBUQv8uqrC7sZR+7w9Li4RvgDJCRoQANdP3v2wDH7IZAgi4f9YEg8UQHgjoYo6u2imIzBQiRFBmZM2HEZPiADkCjhIHJdxZMdgKBMqSSFkIEkjimLKWLTL5UpEAAwUADDkpMpf+xYCjSoDBnvLmi4EaKqhKtFsmoFIGPEuA8lIrgwkKCs2bMG3ok6AFZWrLdwBN+uDQQAOw==" alt="[DIR]"></td><td><a href="preview/">preview/</a></td><td align="right"><time datetime="2024-04-14T10:40:55+00:00">2024-04-14 10:40</time></td><td align="right"> - </td><td>&nbsp;</td></tr>
-        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAPYAAFw+H/HDlMOkhbaSbZh6W8LCwqKioubm5n9lS5mZmf/evf/Tpt+zhr29vbGLZL2betfX17e3t3JMJ6CAYO/Kpue6jfnWssWyoKV5TNesgZdrP7+UaWdEIs6lfO/v797e3uG1iXxTKr+Zc4R6b6N2SszMzLKLZPXFla2DWo1xVf/Wre3Ak//bttW0lKurq//hw/jLn/3RpVtDLMOZbrWPaal+UdG1mYRYLOXCnfXIm8mrjKuHY7SUc9uwheW4jK+Macaed6h8UWNCIf/ZtLyWcWtIJOy9jsSddqWEY//jx5p7XLqPY5VvSMWljIBmTPHPrPLHnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAFEALAAAAAAUABYAAAf/gFGCg4SFhoeIiB6Li4mDix+REJORBx6HBzZENA4oNZ9EJZSWl4I2Ok9DqioLFSQ7DQWio1EDFKwxuTkrM0ybJp5BF5EiOFAryCA9HTw6LQqqUBsaog9ND9icNCICz6sBPTcRJQ9J5tDo6bk+HSEuBUQv8uqrC7sZR+7w9Li4RvgDJCRoQANdP3v2wDH7IZAgi4f9YEg8UQHgjoYo6u2imIzBQiRFBmZM2HEZPiADkCjhIHJdxZMdgKBMqSSFkIEkjimLKWLTL5UpEAAwUADDkpMpf+xYCjSoDBnvLmi4EaKqhKtFsmoFIGPEuA8lIrgwkKCs2bMG3ok6AFZWrLdwBN+uDQQAOw==" alt="[DIR]"></td><td><a href="test-fixtures/">test-fixtures/</a></td><td align="right"><time datetime="2024-04-14T10:40:58+00:00">2024-04-14 10:40</time></td><td align="right"> - </td><td>&nbsp;</td></tr>
+        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAMQAAFxcXNbW1q2trZmZmf///8TExO/v73Nzc+bm5rW1tXl5eaWlpb29vWZmZszMzPf3993d3YWFhWZmZoyMjP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUABQALAAAAAAUABYAAAXFYMIwSSmcy7AkAUK9L0PMNPEYgSo4LizXMwMip1rwYAlgcDgoFI+UJGFArUIcAwdjsRAEXgIlQYitqgqu8NQ8GBYSp8GBkRbfho63YF5fs6sBb3wUanY3VwkHaIQzf2ZDDIoGjGI1Q4kFk2qOVZeSlJUzCA6YmkCOo6WglQ+je5mrfmYQBa+TCzYPN0IIvQiICw2wC7pCEAEBDsp5cAPCkwMGx3kkJSYpEQAO0BMREQoH4eIHDeUADRAvVwXs7e7tDhCTFCEAOw==" alt="[TXT]"></td><td><a href="README.md">README.md</a></td><td align="right"><time datetime="2024-04-14T11:52:22+00:00">2024-04-14 11:52</time></td><td align="right">157 B</td><td>&nbsp;</td></tr>
+        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAPYAAFw+H/HDlMOkhbaSbZh6W8LCwqKioubm5n9lS5mZmf/evf/Tpt+zhr29vbGLZL2betfX17e3t3JMJ6CAYO/Kpue6jfnWssWyoKV5TNesgZdrP7+UaWdEIs6lfO/v797e3uG1iXxTKr+Zc4R6b6N2SszMzLKLZPXFla2DWo1xVf/Wre3Ak//bttW0lKurq//hw/jLn/3RpVtDLMOZbrWPaal+UdG1mYRYLOXCnfXIm8mrjKuHY7SUc9uwheW4jK+Macaed6h8UWNCIf/ZtLyWcWtIJOy9jsSddqWEY//jx5p7XLqPY5VvSMWljIBmTPHPrPLHnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAFEALAAAAAAUABYAAAf/gFGCg4SFhoeIiB6Li4mDix+REJORBx6HBzZENA4oNZ9EJZSWl4I2Ok9DqioLFSQ7DQWio1EDFKwxuTkrM0ybJp5BF5EiOFAryCA9HTw6LQqqUBsaog9ND9icNCICz6sBPTcRJQ9J5tDo6bk+HSEuBUQv8uqrC7sZR+7w9Li4RvgDJCRoQANdP3v2wDH7IZAgi4f9YEg8UQHgjoYo6u2imIzBQiRFBmZM2HEZPiADkCjhIHJdxZMdgKBMqSSFkIEkjimLKWLTL5UpEAAwUADDkpMpf+xYCjSoDBnvLmi4EaKqhKtFsmoFIGPEuA8lIrgwkKCs2bMG3ok6AFZWrLdwBN+uDQQAOw==" alt="[DIR]"></td><td><a href="api-docs/">api-docs/</a></td><td align="right"><time datetime="2024-04-14T11:52:14+00:00">2024-04-14 11:52</time></td><td align="right"> - </td><td>&nbsp;</td></tr>
+        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAPYAAFw+H/HDlMOkhbaSbZh6W8LCwqKioubm5n9lS5mZmf/evf/Tpt+zhr29vbGLZL2betfX17e3t3JMJ6CAYO/Kpue6jfnWssWyoKV5TNesgZdrP7+UaWdEIs6lfO/v797e3uG1iXxTKr+Zc4R6b6N2SszMzLKLZPXFla2DWo1xVf/Wre3Ak//bttW0lKurq//hw/jLn/3RpVtDLMOZbrWPaal+UdG1mYRYLOXCnfXIm8mrjKuHY7SUc9uwheW4jK+Macaed6h8UWNCIf/ZtLyWcWtIJOy9jsSddqWEY//jx5p7XLqPY5VvSMWljIBmTPHPrPLHnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAFEALAAAAAAUABYAAAf/gFGCg4SFhoeIiB6Li4mDix+REJORBx6HBzZENA4oNZ9EJZSWl4I2Ok9DqioLFSQ7DQWio1EDFKwxuTkrM0ybJp5BF5EiOFAryCA9HTw6LQqqUBsaog9ND9icNCICz6sBPTcRJQ9J5tDo6bk+HSEuBUQv8uqrC7sZR+7w9Li4RvgDJCRoQANdP3v2wDH7IZAgi4f9YEg8UQHgjoYo6u2imIzBQiRFBmZM2HEZPiADkCjhIHJdxZMdgKBMqSSFkIEkjimLKWLTL5UpEAAwUADDkpMpf+xYCjSoDBnvLmi4EaKqhKtFsmoFIGPEuA8lIrgwkKCs2bMG3ok6AFZWrLdwBN+uDQQAOw==" alt="[DIR]"></td><td><a href="coverage/">coverage/</a></td><td align="right"><time datetime="2024-04-14T11:52:07+00:00">2024-04-14 11:52</time></td><td align="right"> - </td><td>&nbsp;</td></tr>
+        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAPYAAFw+H/HDlMOkhbaSbZh6W8LCwqKioubm5n9lS5mZmf/evf/Tpt+zhr29vbGLZL2betfX17e3t3JMJ6CAYO/Kpue6jfnWssWyoKV5TNesgZdrP7+UaWdEIs6lfO/v797e3uG1iXxTKr+Zc4R6b6N2SszMzLKLZPXFla2DWo1xVf/Wre3Ak//bttW0lKurq//hw/jLn/3RpVtDLMOZbrWPaal+UdG1mYRYLOXCnfXIm8mrjKuHY7SUc9uwheW4jK+Macaed6h8UWNCIf/ZtLyWcWtIJOy9jsSddqWEY//jx5p7XLqPY5VvSMWljIBmTPHPrPLHnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAFEALAAAAAAUABYAAAf/gFGCg4SFhoeIiB6Li4mDix+REJORBx6HBzZENA4oNZ9EJZSWl4I2Ok9DqioLFSQ7DQWio1EDFKwxuTkrM0ybJp5BF5EiOFAryCA9HTw6LQqqUBsaog9ND9icNCICz6sBPTcRJQ9J5tDo6bk+HSEuBUQv8uqrC7sZR+7w9Li4RvgDJCRoQANdP3v2wDH7IZAgi4f9YEg8UQHgjoYo6u2imIzBQiRFBmZM2HEZPiADkCjhIHJdxZMdgKBMqSSFkIEkjimLKWLTL5UpEAAwUADDkpMpf+xYCjSoDBnvLmi4EaKqhKtFsmoFIGPEuA8lIrgwkKCs2bMG3ok6AFZWrLdwBN+uDQQAOw==" alt="[DIR]"></td><td><a href="dev-docs/">dev-docs/</a></td><td align="right"><time datetime="2024-04-14T11:52:14+00:00">2024-04-14 11:52</time></td><td align="right"> - </td><td>&nbsp;</td></tr>
+        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAMQAAFxcXNbW1q2trZmZmf///8TExO/v73Nzc+bm5rW1tXl5eaWlpb29vWZmZszMzPf3993d3YWFhWZmZoyMjP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUABQALAAAAAAUABYAAAXFYMIwSSmcy7AkAUK9L0PMNPEYgSo4LizXMwMip1rwYAlgcDgoFI+UJGFArUIcAwdjsRAEXgIlQYitqgqu8NQ8GBYSp8GBkRbfho63YF5fs6sBb3wUanY3VwkHaIQzf2ZDDIoGjGI1Q4kFk2qOVZeSlJUzCA6YmkCOo6WglQ+je5mrfmYQBa+TCzYPN0IIvQiICw2wC7pCEAEBDsp5cAPCkwMGx3kkJSYpEQAO0BMREQoH4eIHDeUADRAvVwXs7e7tDhCTFCEAOw==" alt="[TXT]"></td><td><a href="index.html">index.html</a></td><td align="right"><time datetime="2024-04-14T11:52:06+00:00">2024-04-14 11:52</time></td><td align="right">10.18 kB</td><td>&nbsp;</td></tr>
+        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAPYAAFw+H/HDlMOkhbaSbZh6W8LCwqKioubm5n9lS5mZmf/evf/Tpt+zhr29vbGLZL2betfX17e3t3JMJ6CAYO/Kpue6jfnWssWyoKV5TNesgZdrP7+UaWdEIs6lfO/v797e3uG1iXxTKr+Zc4R6b6N2SszMzLKLZPXFla2DWo1xVf/Wre3Ak//bttW0lKurq//hw/jLn/3RpVtDLMOZbrWPaal+UdG1mYRYLOXCnfXIm8mrjKuHY7SUc9uwheW4jK+Macaed6h8UWNCIf/ZtLyWcWtIJOy9jsSddqWEY//jx5p7XLqPY5VvSMWljIBmTPHPrPLHnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAFEALAAAAAAUABYAAAf/gFGCg4SFhoeIiB6Li4mDix+REJORBx6HBzZENA4oNZ9EJZSWl4I2Ok9DqioLFSQ7DQWio1EDFKwxuTkrM0ybJp5BF5EiOFAryCA9HTw6LQqqUBsaog9ND9icNCICz6sBPTcRJQ9J5tDo6bk+HSEuBUQv8uqrC7sZR+7w9Li4RvgDJCRoQANdP3v2wDH7IZAgi4f9YEg8UQHgjoYo6u2imIzBQiRFBmZM2HEZPiADkCjhIHJdxZMdgKBMqSSFkIEkjimLKWLTL5UpEAAwUADDkpMpf+xYCjSoDBnvLmi4EaKqhKtFsmoFIGPEuA8lIrgwkKCs2bMG3ok6AFZWrLdwBN+uDQQAOw==" alt="[DIR]"></td><td><a href="media/">media/</a></td><td align="right"><time datetime="2024-04-14T11:52:06+00:00">2024-04-14 11:52</time></td><td align="right"> - </td><td>&nbsp;</td></tr>
+        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAPYAAFw+H/HDlMOkhbaSbZh6W8LCwqKioubm5n9lS5mZmf/evf/Tpt+zhr29vbGLZL2betfX17e3t3JMJ6CAYO/Kpue6jfnWssWyoKV5TNesgZdrP7+UaWdEIs6lfO/v797e3uG1iXxTKr+Zc4R6b6N2SszMzLKLZPXFla2DWo1xVf/Wre3Ak//bttW0lKurq//hw/jLn/3RpVtDLMOZbrWPaal+UdG1mYRYLOXCnfXIm8mrjKuHY7SUc9uwheW4jK+Macaed6h8UWNCIf/ZtLyWcWtIJOy9jsSddqWEY//jx5p7XLqPY5VvSMWljIBmTPHPrPLHnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAFEALAAAAAAUABYAAAf/gFGCg4SFhoeIiB6Li4mDix+REJORBx6HBzZENA4oNZ9EJZSWl4I2Ok9DqioLFSQ7DQWio1EDFKwxuTkrM0ybJp5BF5EiOFAryCA9HTw6LQqqUBsaog9ND9icNCICz6sBPTcRJQ9J5tDo6bk+HSEuBUQv8uqrC7sZR+7w9Li4RvgDJCRoQANdP3v2wDH7IZAgi4f9YEg8UQHgjoYo6u2imIzBQiRFBmZM2HEZPiADkCjhIHJdxZMdgKBMqSSFkIEkjimLKWLTL5UpEAAwUADDkpMpf+xYCjSoDBnvLmi4EaKqhKtFsmoFIGPEuA8lIrgwkKCs2bMG3ok6AFZWrLdwBN+uDQQAOw==" alt="[DIR]"></td><td><a href="preview/">preview/</a></td><td align="right"><time datetime="2024-04-14T11:52:21+00:00">2024-04-14 11:52</time></td><td align="right"> - </td><td>&nbsp;</td></tr>
+        <tr><td valign="top"><img src="data:image/gif;base64,R0lGODlhFAAWAPYAAFw+H/HDlMOkhbaSbZh6W8LCwqKioubm5n9lS5mZmf/evf/Tpt+zhr29vbGLZL2betfX17e3t3JMJ6CAYO/Kpue6jfnWssWyoKV5TNesgZdrP7+UaWdEIs6lfO/v797e3uG1iXxTKr+Zc4R6b6N2SszMzLKLZPXFla2DWo1xVf/Wre3Ak//bttW0lKurq//hw/jLn/3RpVtDLMOZbrWPaal+UdG1mYRYLOXCnfXIm8mrjKuHY7SUc9uwheW4jK+Macaed6h8UWNCIf/ZtLyWcWtIJOy9jsSddqWEY//jx5p7XLqPY5VvSMWljIBmTPHPrPLHnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAFEALAAAAAAUABYAAAf/gFGCg4SFhoeIiB6Li4mDix+REJORBx6HBzZENA4oNZ9EJZSWl4I2Ok9DqioLFSQ7DQWio1EDFKwxuTkrM0ybJp5BF5EiOFAryCA9HTw6LQqqUBsaog9ND9icNCICz6sBPTcRJQ9J5tDo6bk+HSEuBUQv8uqrC7sZR+7w9Li4RvgDJCRoQANdP3v2wDH7IZAgi4f9YEg8UQHgjoYo6u2imIzBQiRFBmZM2HEZPiADkCjhIHJdxZMdgKBMqSSFkIEkjimLKWLTL5UpEAAwUADDkpMpf+xYCjSoDBnvLmi4EaKqhKtFsmoFIGPEuA8lIrgwkKCs2bMG3ok6AFZWrLdwBN+uDQQAOw==" alt="[DIR]"></td><td><a href="test-fixtures/">test-fixtures/</a></td><td align="right"><time datetime="2024-04-14T11:52:22+00:00">2024-04-14 11:52</time></td><td align="right"> - </td><td>&nbsp;</td></tr>
     </tbody>
     <tfoot><tr><th colspan="5"><hr></th></tr></tfoot>
 </table>
-<address>directory-listing.php/v1.0.0-rc.4 <small>(Linux) PHP/8.1.2-1ubuntu2.14 compiled at <time datetime="2024-04-14T10:41:01+00:00">2024-04-14 10:41:01 UTC</time> in 2.48ms</small></address>
+<address>directory-listing.php/v1.0.0-rc.4 <small>(Linux) PHP/8.1.2-1ubuntu2.14 compiled at <time datetime="2024-04-14T11:52:23+00:00">2024-04-14 11:52:23 UTC</time> in 2.75ms</small></address>
 </body></html>
diff --git a/master/preview/404.html b/master/preview/404.html
index fa53d6e2da5..ee8a2787321 100644
--- a/master/preview/404.html
+++ b/master/preview/404.html
@@ -18,34 +18,31 @@
 <!-- Error page and illustration by LaravelCollective: https://github.com/LaravelCollective/errors (License MIT) --->
 
 <body class="antialiased font-sans">
-<div class="md:flex min-h-screen">
-    <div class="w-full md:w-1/2 bg-white flex items-center justify-center">
-        <div class="max-w-sm m-8">
-            <div class="text-black text-5xl md:text-15xl font-black">
-                404
+    <div class="md:flex min-h-screen">
+        <div class="w-full md:w-1/2 bg-white flex items-center justify-center">
+            <div class="max-w-sm m-8">
+                <div class="text-black text-5xl md:text-15xl font-black">
+                    404
+                </div>
+
+                <div class="w-16 h-1 bg-purple-light my-3 md:my-6"></div>
+
+                <p class="text-grey-darker text-2xl md:text-3xl font-light mb-8 leading-normal">
+                    Sorry, the page you are looking for could not be found.
+                </p>
+
+                <a href="index.html">
+                    <button class="bg-transparent text-grey-darkest font-bold uppercase tracking-wide py-3 px-6 border-2 border-grey-light hover:border-grey rounded-lg">
+                        Go Home
+                    </button>
+                </a>
             </div>
 
-            <div class="w-16 h-1 bg-purple-light my-3 md:my-6"></div>
-
-            <p class="text-grey-darker text-2xl md:text-3xl font-light mb-8 leading-normal">
-                Sorry, the page you are looking for could not be found.
-            </p>
-
-            <a href="index.html">
-                <button
-                    class="bg-transparent text-grey-darkest font-bold uppercase tracking-wide py-3 px-6 border-2 border-grey-light hover:border-grey rounded-lg">
-                    Go Home
-                </button>
-            </a>
         </div>
 
-    </div>
-
-    <div class="relative pb-full md:flex md:pb-0 md:min-h-screen w-full md:w-1/2">
-        <div style="background-image: url('https://cdn.jsdelivr.net/gh/LaravelCollective/errors@1.0/src/publish/svg/404.svg');"
-             class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
+        <div class="relative pb-full md:flex md:pb-0 md:min-h-screen w-full md:w-1/2">
+            <div class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center" style="background-image: url('https://cdn.jsdelivr.net/gh/LaravelCollective/errors@1.0/src/publish/svg/404.svg');"></div>
         </div>
     </div>
-</div>
 </body>
 </html>
diff --git a/master/preview/blade.html b/master/preview/blade.html
index 58383ca231c..952cbd0333f 100644
--- a/master/preview/blade.html
+++ b/master/preview/blade.html
@@ -58,16 +58,17 @@
     <div class="block md:hidden">
         <button id="navigation-toggle-button" class="flex items-center px-3 py-1 hover:text-gray-700 dark:text-gray-200"
                 aria-label="Toggle navigation menu" @click="navigationOpen = ! navigationOpen">
-            <svg x-show="! navigationOpen" title="Open Navigation Menu" class="dark:fill-gray-200"
-                 style="display: block;"
-                 id="open-main-navigation-menu-icon" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24"
-                 width="24"><title>Open Menu</title>
+            <svg id="open-main-navigation-menu-icon" title="Open Navigation Menu" class="dark:fill-gray-200"
+                 xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"
+                 x-show="! navigationOpen" style="display: block;"
+            ><title>Open Menu</title>
                 <path d="M0 0h24v24H0z" fill="none"/>
                 <path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/>
             </svg>
-            <svg x-show="navigationOpen" title="Close Navigation Menu" class="dark:fill-gray-200" style="display: none;"
-                 id="close-main-navigation-menu-icon" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24"
-                 width="24"><title>Close Menu</title>
+            <svg id="close-main-navigation-menu-icon" title="Close Navigation Menu" class="dark:fill-gray-200"
+                 xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"
+                 x-show="navigationOpen" style="display: none;"
+            ><title>Close Menu</title>
                 <path d="M0 0h24v24H0z" fill="none"></path>
                 <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path>
             </svg>
@@ -98,7 +99,7 @@ <h4 class="text-center text-2xl">You can even use arbitrary PHP.</h4>
 
 	<figure class="w-fit mx-auto mt-12 mb-4 rounded-lg overflow-hidden"><div style="padding: 1rem; color: rgb(191, 199, 213); background-color: rgb(41, 45, 62); font-family: &quot;Fira Code Regular&quot;, Consolas, &quot;Courier New&quot;, monospace; font-size: 14px; line-height: 20px; white-space: pre; overflow-x: auto; max-width: 90vw;"><div><span style="color: #89ddff;">&lt;</span><span style="color: #ff5572;">div</span><span style="color: #89ddff;"> </span><span style="color: #ffcb6b;">class</span><span style="color: #89ddff;">=</span><span style="color: #d9f5dd;">"</span><span style="color: #c3e88d;">text-center</span><span style="color: #d9f5dd;">"</span><span style="color: #89ddff;">&gt;</span></div><div>&nbsp; &nbsp; <span style="color: #d3423e;">&commat;php</span> </div><div>&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #89ddff;">echo</span> <span style="color: #d9f5dd;">"</span><span style="color: #c3e88d;">Hello World! </span><span style="color: #d9f5dd;">"</span>;</div><br><div>&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #89ddff;">echo</span> <span style="color: #d9f5dd;">"</span><span style="color: #c3e88d;">This PHP was executed at </span><span style="color: #d9f5dd;">"</span> <span style="color: #89ddff;">.</span> <span style="color: #89ddff;">date</span>(<span style="color: #d9f5dd;">"</span><span style="color: #c3e88d;">Y-m-d H:i:s</span><span style="color: #d9f5dd;">"</span>);</div><div>&nbsp; &nbsp; <span style="color: #d3423e;">&commat;endphp</span> </div><div><span style="color: #89ddff;">&lt;/</span><span style="color: #ff5572;">div</span><span style="color: #89ddff;">&gt;</span></div></div></figure>
 	<div class="text-center">
-		Hello World! This PHP was executed at 2024-04-14 10:37:04 
+		Hello World! This PHP was executed at 2024-04-14 11:49:41 
 	</div>
 </main>
 
@@ -106,15 +107,14 @@ <h4 class="text-center text-2xl">You can even use arbitrary PHP.</h4>
 
     <footer aria-label="Page footer" class="flex py-4 px-6 w-full text-center mt-auto bg-slate-100 dark:bg-gray-800">
         <div class="prose dark:prose-invert text-center mx-auto">
-            <p>HydePHP Monorepo 1.5.0-<a href="https://github.com/caendesilva/hyde-monorepo/commit/11d8848a9a106ca79e6fda071d3ce6caa18139f7
-">11d8848</a> (compiled 2024-04-14 10:37:04 UTC - <a href="build-information.html">Build Information</a>)</p>
+            <p>HydePHP Monorepo 1.5.0-<a href="https://github.com/caendesilva/hyde-monorepo/commit/bf136ff1ebf322a4bdca54649934f873481ec490
+">bf136ff</a> (compiled 2024-04-14 11:49:41 UTC - <a href="build-information.html">Build Information</a>)</p>
 
         </div>
         <a href="#app" aria-label="Go to top of page" class="float-right">
             <button title="Scroll to top">
-                <svg width="1.5rem" height="1.5rem" role="presentation" class="fill-current text-gray-500 h-6 w-6"
-                     xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
-                    <path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"/>
+                <svg width="1.5rem" height="1.5rem" role="presentation" class="fill-current text-gray-500 h-6 w-6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
+                    <path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z" />
                 </svg>
             </button>
         </a>
diff --git a/master/preview/build-information.html b/master/preview/build-information.html
index 654a3ecc2e9..168cafa8b28 100644
--- a/master/preview/build-information.html
+++ b/master/preview/build-information.html
@@ -58,16 +58,17 @@
     <div class="block md:hidden">
         <button id="navigation-toggle-button" class="flex items-center px-3 py-1 hover:text-gray-700 dark:text-gray-200"
                 aria-label="Toggle navigation menu" @click="navigationOpen = ! navigationOpen">
-            <svg x-show="! navigationOpen" title="Open Navigation Menu" class="dark:fill-gray-200"
-                 style="display: block;"
-                 id="open-main-navigation-menu-icon" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24"
-                 width="24"><title>Open Menu</title>
+            <svg id="open-main-navigation-menu-icon" title="Open Navigation Menu" class="dark:fill-gray-200"
+                 xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"
+                 x-show="! navigationOpen" style="display: block;"
+            ><title>Open Menu</title>
                 <path d="M0 0h24v24H0z" fill="none"/>
                 <path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/>
             </svg>
-            <svg x-show="navigationOpen" title="Close Navigation Menu" class="dark:fill-gray-200" style="display: none;"
-                 id="close-main-navigation-menu-icon" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24"
-                 width="24"><title>Close Menu</title>
+            <svg id="close-main-navigation-menu-icon" title="Close Navigation Menu" class="dark:fill-gray-200"
+                 xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"
+                 x-show="navigationOpen" style="display: none;"
+            ><title>Close Menu</title>
                 <path d="M0 0h24v24H0z" fill="none"></path>
                 <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path>
             </svg>
@@ -126,16 +127,16 @@ <h1 class="text-center text-3xl font-bold">Build Information</h1>
 Additional information:
 
 PHP Version: 8.1.27 (cli)
-Runner OS: Linux fv-az1146-361 6.5.0-1017-azure #17~22.04.1-Ubuntu SMP Sat Mar  9 04:50:38 UTC 2024 x86_64 (Linux)
-Current Timestamp: 2024-04-14 10:37:04 UTC (UNIX: 1713091024)
+Runner OS: Linux fv-az1040-457 6.5.0-1017-azure #17~22.04.1-Ubuntu SMP Sat Mar  9 04:50:38 UTC 2024 x86_64 (Linux)
+Current Timestamp: 2024-04-14 11:49:41 UTC (UNIX: 1713095381)
 
 Hyde app.css SHA1: a91cb70b5abcadce8a6a9e65b3ab7ffdd1106b85
 
 Current runner git branch: master
-Current runner git commit: 11d8848a9a106ca79e6fda071d3ce6caa18139f7
-Current runner git commit date: 2024-04-14 12:35:43 +0200
+Current runner git commit: bf136ff1ebf322a4bdca54649934f873481ec490
+Current runner git commit date: 2024-04-14 13:48:17 +0200
 
-Commit reference provided by CI (if any): 11d8848a9a106ca79e6fda071d3ce6caa18139f7
+Commit reference provided by CI (if any): bf136ff1ebf322a4bdca54649934f873481ec490
 </code></pre>
 	</article>
 </main>
@@ -144,15 +145,14 @@ <h1 class="text-center text-3xl font-bold">Build Information</h1>
 
     <footer aria-label="Page footer" class="flex py-4 px-6 w-full text-center mt-auto bg-slate-100 dark:bg-gray-800">
         <div class="prose dark:prose-invert text-center mx-auto">
-            <p>HydePHP Monorepo 1.5.0-<a href="https://github.com/caendesilva/hyde-monorepo/commit/11d8848a9a106ca79e6fda071d3ce6caa18139f7
-">11d8848</a> (compiled 2024-04-14 10:37:04 UTC - <a href="build-information.html">Build Information</a>)</p>
+            <p>HydePHP Monorepo 1.5.0-<a href="https://github.com/caendesilva/hyde-monorepo/commit/bf136ff1ebf322a4bdca54649934f873481ec490
+">bf136ff</a> (compiled 2024-04-14 11:49:41 UTC - <a href="build-information.html">Build Information</a>)</p>
 
         </div>
         <a href="#app" aria-label="Go to top of page" class="float-right">
             <button title="Scroll to top">
-                <svg width="1.5rem" height="1.5rem" role="presentation" class="fill-current text-gray-500 h-6 w-6"
-                     xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
-                    <path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"/>
+                <svg width="1.5rem" height="1.5rem" role="presentation" class="fill-current text-gray-500 h-6 w-6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
+                    <path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z" />
                 </svg>
             </button>
         </a>
diff --git a/master/preview/docs/headings.html b/master/preview/docs/headings.html
index e9750f06eee..a2541193fa2 100644
--- a/master/preview/docs/headings.html
+++ b/master/preview/docs/headings.html
@@ -175,7 +175,7 @@ <h6>Level 6 heading<a id="level-6-heading" href="#level-6-heading" class="headin
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -200,8 +200,7 @@ <h6>Level 6 heading<a id="level-6-heading" href="#level-6-heading" class="headin
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/preview/docs/index.html b/master/preview/docs/index.html
index f0420399506..37fc4bec37c 100644
--- a/master/preview/docs/index.html
+++ b/master/preview/docs/index.html
@@ -179,7 +179,7 @@ <h2>Headings show up in the sidebar<a id="headings-show-up-in-the-sidebar" href=
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -204,8 +204,7 @@ <h2>Headings show up in the sidebar<a id="headings-show-up-in-the-sidebar" href=
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/preview/docs/page-1.html b/master/preview/docs/page-1.html
index 24b9b503e9c..67b1173f691 100644
--- a/master/preview/docs/page-1.html
+++ b/master/preview/docs/page-1.html
@@ -156,7 +156,7 @@ <h1>Page 1</h1>
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -181,8 +181,7 @@ <h1>Page 1</h1>
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/preview/docs/page-2.html b/master/preview/docs/page-2.html
index 78c3c038d67..2f4f0883a9d 100644
--- a/master/preview/docs/page-2.html
+++ b/master/preview/docs/page-2.html
@@ -156,7 +156,7 @@ <h1>Page 2</h1>
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -181,8 +181,7 @@ <h1>Page 2</h1>
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/preview/docs/page-3.html b/master/preview/docs/page-3.html
index 326015b72fd..8f37c113ee7 100644
--- a/master/preview/docs/page-3.html
+++ b/master/preview/docs/page-3.html
@@ -156,7 +156,7 @@ <h1>Page 3</h1>
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -181,8 +181,7 @@ <h1>Page 3</h1>
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/preview/docs/readme.html b/master/preview/docs/readme.html
index fc0c7f76213..88821220a11 100644
--- a/master/preview/docs/readme.html
+++ b/master/preview/docs/readme.html
@@ -190,7 +190,7 @@ <h2>Headings show up in the sidebar<a id="headings-show-up-in-the-sidebar" href=
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -215,8 +215,7 @@ <h2>Headings show up in the sidebar<a id="headings-show-up-in-the-sidebar" href=
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/preview/docs/search.html b/master/preview/docs/search.html
index ec02d3ac056..4e5c46463d6 100644
--- a/master/preview/docs/search.html
+++ b/master/preview/docs/search.html
@@ -111,13 +111,15 @@
     <main id="content" class="dark:bg-gray-900 min-h-screen bg-gray-50 md:bg-white absolute top-16 md:top-0 w-screen md:left-64 md:w-[calc(100vw_-_16rem)]">
         <article id="document" itemscope itemtype="https://schema.org/Article" class="mx-auto lg:ml-8 max-w-3xl p-12 md:px-16 max-w-[1000px] min-h-[calc(100vh_-_4rem)] prose dark:prose-invert">
         <h1>Search the documentation site</h1>
-    <style>#searchMenuButton, .edit-page-link {
+    <style>
+        #searchMenuButton, .edit-page-link {
             display: none !important;
         }
 
         #search-results {
             max-height: unset !important;
-        }</style>
+        }
+    </style>
     <div id="hyde-search">
     <noscript>
         The search feature requires JavaScript to be enabled in your browser.
@@ -166,7 +168,7 @@ <h1>Search the documentation site</h1>
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -191,8 +193,7 @@ <h1>Search the documentation site</h1>
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/preview/feed.xml b/master/preview/feed.xml
index 4a2b0299779..2c2660c4c4b 100644
--- a/master/preview/feed.xml
+++ b/master/preview/feed.xml
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>HydePHP Canary Preview</title><link>http://localhost</link><description>HydePHP RSS Feed</description><language>en</language><generator>HydePHP 1.5.0</generator><lastBuildDate>Sun, 14 Apr 2024 10:37:04 +0000</lastBuildDate><atom:link href="http://localhost/feed.xml" rel="self" type="application/rss+xml"/><item><title>What is this site?</title><description>Wondering what this site is for? Read this!</description><link>http://localhost/posts/what-is-this-site.html</link><guid>http://localhost/posts/what-is-this-site.html</guid><pubDate>Wed, 08 Jun 2022 18:34:00 +0000</pubDate><dc:creator>Mr Hyde</dc:creator><category>information</category><enclosure url="http://localhost/../media/cover.png" type="image/png" length="49548"/></item></channel></rss>
+<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>HydePHP Canary Preview</title><link>http://localhost</link><description>HydePHP RSS Feed</description><language>en</language><generator>HydePHP 1.5.0</generator><lastBuildDate>Sun, 14 Apr 2024 11:49:41 +0000</lastBuildDate><atom:link href="http://localhost/feed.xml" rel="self" type="application/rss+xml"/><item><title>What is this site?</title><description>Wondering what this site is for? Read this!</description><link>http://localhost/posts/what-is-this-site.html</link><guid>http://localhost/posts/what-is-this-site.html</guid><pubDate>Wed, 08 Jun 2022 18:34:00 +0000</pubDate><dc:creator>Mr Hyde</dc:creator><category>information</category><enclosure url="http://localhost/../media/cover.png" type="image/png" length="49548"/></item></channel></rss>
diff --git a/master/preview/index.html b/master/preview/index.html
index e99a3bc41d6..720ee79ac40 100644
--- a/master/preview/index.html
+++ b/master/preview/index.html
@@ -58,16 +58,17 @@
     <div class="block md:hidden">
         <button id="navigation-toggle-button" class="flex items-center px-3 py-1 hover:text-gray-700 dark:text-gray-200"
                 aria-label="Toggle navigation menu" @click="navigationOpen = ! navigationOpen">
-            <svg x-show="! navigationOpen" title="Open Navigation Menu" class="dark:fill-gray-200"
-                 style="display: block;"
-                 id="open-main-navigation-menu-icon" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24"
-                 width="24"><title>Open Menu</title>
+            <svg id="open-main-navigation-menu-icon" title="Open Navigation Menu" class="dark:fill-gray-200"
+                 xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"
+                 x-show="! navigationOpen" style="display: block;"
+            ><title>Open Menu</title>
                 <path d="M0 0h24v24H0z" fill="none"/>
                 <path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/>
             </svg>
-            <svg x-show="navigationOpen" title="Close Navigation Menu" class="dark:fill-gray-200" style="display: none;"
-                 id="close-main-navigation-menu-icon" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24"
-                 width="24"><title>Close Menu</title>
+            <svg id="close-main-navigation-menu-icon" title="Close Navigation Menu" class="dark:fill-gray-200"
+                 xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"
+                 x-show="navigationOpen" style="display: none;"
+            ><title>Close Menu</title>
                 <path d="M0 0h24v24H0z" fill="none"></path>
                 <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path>
             </svg>
@@ -114,9 +115,8 @@ <h2 class="text-2xl font-bold text-gray-700 hover:text-gray-900 dark:text-gray-2
 
     <footer>
                     <span class="opacity-75">
-            <span itemprop="dateCreated datePublished">
-                Jun 8th, 2022</span>,
-        </span>
+                <span itemprop="dateCreated datePublished">Jun 8th, 2022</span>,
+            </span>
                             <span itemprop="author" itemscope itemtype="https://schema.org/Person">
             <span class="opacity-75">by</span>
             <span itemprop="name">
@@ -132,9 +132,9 @@ <h2 class="text-2xl font-bold text-gray-700 hover:text-gray-900 dark:text-gray-2
         </section>
     
     <footer>
-        <a href="posts/what-is-this-site.html"
-           class="text-indigo-500 hover:underline font-medium">
-            Read post</a>
+        <a href="posts/what-is-this-site.html" class="text-indigo-500 hover:underline font-medium">
+            Read post
+        </a>
     </footer>
 </article>        </div>
     </main>
@@ -143,15 +143,14 @@ <h2 class="text-2xl font-bold text-gray-700 hover:text-gray-900 dark:text-gray-2
 
     <footer aria-label="Page footer" class="flex py-4 px-6 w-full text-center mt-auto bg-slate-100 dark:bg-gray-800">
         <div class="prose dark:prose-invert text-center mx-auto">
-            <p>HydePHP Monorepo 1.5.0-<a href="https://github.com/caendesilva/hyde-monorepo/commit/11d8848a9a106ca79e6fda071d3ce6caa18139f7
-">11d8848</a> (compiled 2024-04-14 10:37:04 UTC - <a href="build-information.html">Build Information</a>)</p>
+            <p>HydePHP Monorepo 1.5.0-<a href="https://github.com/caendesilva/hyde-monorepo/commit/bf136ff1ebf322a4bdca54649934f873481ec490
+">bf136ff</a> (compiled 2024-04-14 11:49:41 UTC - <a href="build-information.html">Build Information</a>)</p>
 
         </div>
         <a href="#app" aria-label="Go to top of page" class="float-right">
             <button title="Scroll to top">
-                <svg width="1.5rem" height="1.5rem" role="presentation" class="fill-current text-gray-500 h-6 w-6"
-                     xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
-                    <path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"/>
+                <svg width="1.5rem" height="1.5rem" role="presentation" class="fill-current text-gray-500 h-6 w-6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
+                    <path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z" />
                 </svg>
             </button>
         </a>
diff --git a/master/preview/markdown-page.html b/master/preview/markdown-page.html
index 29f51c8af99..21f8a3cfb98 100644
--- a/master/preview/markdown-page.html
+++ b/master/preview/markdown-page.html
@@ -58,16 +58,17 @@
     <div class="block md:hidden">
         <button id="navigation-toggle-button" class="flex items-center px-3 py-1 hover:text-gray-700 dark:text-gray-200"
                 aria-label="Toggle navigation menu" @click="navigationOpen = ! navigationOpen">
-            <svg x-show="! navigationOpen" title="Open Navigation Menu" class="dark:fill-gray-200"
-                 style="display: block;"
-                 id="open-main-navigation-menu-icon" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24"
-                 width="24"><title>Open Menu</title>
+            <svg id="open-main-navigation-menu-icon" title="Open Navigation Menu" class="dark:fill-gray-200"
+                 xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"
+                 x-show="! navigationOpen" style="display: block;"
+            ><title>Open Menu</title>
                 <path d="M0 0h24v24H0z" fill="none"/>
                 <path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/>
             </svg>
-            <svg x-show="navigationOpen" title="Close Navigation Menu" class="dark:fill-gray-200" style="display: none;"
-                 id="close-main-navigation-menu-icon" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24"
-                 width="24"><title>Close Menu</title>
+            <svg id="close-main-navigation-menu-icon" title="Close Navigation Menu" class="dark:fill-gray-200"
+                 xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"
+                 x-show="navigationOpen" style="display: none;"
+            ><title>Close Menu</title>
                 <path d="M0 0h24v24H0z" fill="none"></path>
                 <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path>
             </svg>
@@ -155,15 +156,14 @@ <h3>Task List</h3>
 
     <footer aria-label="Page footer" class="flex py-4 px-6 w-full text-center mt-auto bg-slate-100 dark:bg-gray-800">
         <div class="prose dark:prose-invert text-center mx-auto">
-            <p>HydePHP Monorepo 1.5.0-<a href="https://github.com/caendesilva/hyde-monorepo/commit/11d8848a9a106ca79e6fda071d3ce6caa18139f7
-">11d8848</a> (compiled 2024-04-14 10:37:04 UTC - <a href="build-information.html">Build Information</a>)</p>
+            <p>HydePHP Monorepo 1.5.0-<a href="https://github.com/caendesilva/hyde-monorepo/commit/bf136ff1ebf322a4bdca54649934f873481ec490
+">bf136ff</a> (compiled 2024-04-14 11:49:41 UTC - <a href="build-information.html">Build Information</a>)</p>
 
         </div>
         <a href="#app" aria-label="Go to top of page" class="float-right">
             <button title="Scroll to top">
-                <svg width="1.5rem" height="1.5rem" role="presentation" class="fill-current text-gray-500 h-6 w-6"
-                     xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
-                    <path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"/>
+                <svg width="1.5rem" height="1.5rem" role="presentation" class="fill-current text-gray-500 h-6 w-6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
+                    <path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z" />
                 </svg>
             </button>
         </a>
diff --git a/master/preview/posts/what-is-this-site.html b/master/preview/posts/what-is-this-site.html
index 1377a50ab76..3deed440296 100644
--- a/master/preview/posts/what-is-this-site.html
+++ b/master/preview/posts/what-is-this-site.html
@@ -66,16 +66,17 @@
     <div class="block md:hidden">
         <button id="navigation-toggle-button" class="flex items-center px-3 py-1 hover:text-gray-700 dark:text-gray-200"
                 aria-label="Toggle navigation menu" @click="navigationOpen = ! navigationOpen">
-            <svg x-show="! navigationOpen" title="Open Navigation Menu" class="dark:fill-gray-200"
-                 style="display: block;"
-                 id="open-main-navigation-menu-icon" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24"
-                 width="24"><title>Open Menu</title>
+            <svg id="open-main-navigation-menu-icon" title="Open Navigation Menu" class="dark:fill-gray-200"
+                 xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"
+                 x-show="! navigationOpen" style="display: block;"
+            ><title>Open Menu</title>
                 <path d="M0 0h24v24H0z" fill="none"/>
                 <path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/>
             </svg>
-            <svg x-show="navigationOpen" title="Close Navigation Menu" class="dark:fill-gray-200" style="display: none;"
-                 id="close-main-navigation-menu-icon" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24"
-                 width="24"><title>Close Menu</title>
+            <svg id="close-main-navigation-menu-icon" title="Close Navigation Menu" class="dark:fill-gray-200"
+                 xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"
+                 x-show="navigationOpen" style="display: none;"
+            ><title>Close Menu</title>
                 <path d="M0 0h24v24H0z" fill="none"></path>
                 <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path>
             </svg>
@@ -101,8 +102,7 @@
     <section>
         
     <main id="content" class="mx-auto max-w-7xl py-16 px-8">
-        <article aria-label="Article" id="what-is-this-site" itemscope
-         itemtype="https://schema.org/Article"
+        <article aria-label="Article" id="what-is-this-site" itemscope itemtype="https://schema.org/Article"
     class="post-article mx-auto prose dark:prose-invert">
     <meta itemprop="identifier" content="what-is-this-site">
             <meta itemprop="url" content="http://localhost/posts/what-is-this-site.html">
@@ -116,8 +116,7 @@ <h1 itemprop="headline" class="mb-4">What is this site?</h1>
             </address>            in the category "information"        </div>
     </header>
     <figure aria-label="Cover image" itemprop="image" itemscope itemtype="https://schema.org/ImageObject" role="doc-cover">
-    <img src="../media/cover.png" alt="" title=""
-         itemprop="image" class="mb-0">
+    <img src="../media/cover.png" alt="" title="" itemprop="image" class="mb-0">
     <figcaption aria-label="Image caption" itemprop="caption">
         
         
@@ -140,15 +139,14 @@ <h2>About this site</h2>
 
     <footer aria-label="Page footer" class="flex py-4 px-6 w-full text-center mt-auto bg-slate-100 dark:bg-gray-800">
         <div class="prose dark:prose-invert text-center mx-auto">
-            <p>HydePHP Monorepo 1.5.0-<a href="https://github.com/caendesilva/hyde-monorepo/commit/11d8848a9a106ca79e6fda071d3ce6caa18139f7
-">11d8848</a> (compiled 2024-04-14 10:37:04 UTC - <a href="build-information.html">Build Information</a>)</p>
+            <p>HydePHP Monorepo 1.5.0-<a href="https://github.com/caendesilva/hyde-monorepo/commit/bf136ff1ebf322a4bdca54649934f873481ec490
+">bf136ff</a> (compiled 2024-04-14 11:49:41 UTC - <a href="build-information.html">Build Information</a>)</p>
 
         </div>
         <a href="#app" aria-label="Go to top of page" class="float-right">
             <button title="Scroll to top">
-                <svg width="1.5rem" height="1.5rem" role="presentation" class="fill-current text-gray-500 h-6 w-6"
-                     xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
-                    <path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"/>
+                <svg width="1.5rem" height="1.5rem" role="presentation" class="fill-current text-gray-500 h-6 w-6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
+                    <path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z" />
                 </svg>
             </button>
         </a>
diff --git a/master/test-fixtures/docs/docs/a-caucusrace-and-a-long-tale.html b/master/test-fixtures/docs/docs/a-caucusrace-and-a-long-tale.html
index ded64b3ff8d..1a4992074ea 100644
--- a/master/test-fixtures/docs/docs/a-caucusrace-and-a-long-tale.html
+++ b/master/test-fixtures/docs/docs/a-caucusrace-and-a-long-tale.html
@@ -436,7 +436,7 @@ <h1>Chapter III - A Caucus-Race and a Long Tale</h1>
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -461,8 +461,7 @@ <h1>Chapter III - A Caucus-Race and a Long Tale</h1>
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/test-fixtures/docs/docs/a-mad-teaparty.html b/master/test-fixtures/docs/docs/a-mad-teaparty.html
index 3756ac823ef..df5ec302c72 100644
--- a/master/test-fixtures/docs/docs/a-mad-teaparty.html
+++ b/master/test-fixtures/docs/docs/a-mad-teaparty.html
@@ -480,7 +480,7 @@ <h1>Chapter VII - A Mad Tea-Party</h1>
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -505,8 +505,7 @@ <h1>Chapter VII - A Mad Tea-Party</h1>
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/test-fixtures/docs/docs/advice-from-a-caterpillar.html b/master/test-fixtures/docs/docs/advice-from-a-caterpillar.html
index 617c4f225ef..0d4d9cc0d50 100644
--- a/master/test-fixtures/docs/docs/advice-from-a-caterpillar.html
+++ b/master/test-fixtures/docs/docs/advice-from-a-caterpillar.html
@@ -467,7 +467,7 @@ <h1>Chapter V - Advice from a Caterpillar</h1>
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -492,8 +492,7 @@ <h1>Chapter V - Advice from a Caterpillar</h1>
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/test-fixtures/docs/docs/alices-evidence.html b/master/test-fixtures/docs/docs/alices-evidence.html
index bc31ceacba6..b43d4604200 100644
--- a/master/test-fixtures/docs/docs/alices-evidence.html
+++ b/master/test-fixtures/docs/docs/alices-evidence.html
@@ -463,7 +463,7 @@ <h1>Chapter XII - Alice's Evidence</h1>
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -488,8 +488,7 @@ <h1>Chapter XII - Alice's Evidence</h1>
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/test-fixtures/docs/docs/cover.html b/master/test-fixtures/docs/docs/cover.html
index a60e0fdb82f..b3e6ae2a464 100644
--- a/master/test-fixtures/docs/docs/cover.html
+++ b/master/test-fixtures/docs/docs/cover.html
@@ -244,7 +244,7 @@ <h3 align="center" class="mx-auto">This is a <a href="https://hydephp.com/">Hyde
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -269,8 +269,7 @@ <h3 align="center" class="mx-auto">This is a <a href="https://hydephp.com/">Hyde
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/test-fixtures/docs/docs/down-the-rabbithole.html b/master/test-fixtures/docs/docs/down-the-rabbithole.html
index 9d5ad27a5eb..625d984d81d 100644
--- a/master/test-fixtures/docs/docs/down-the-rabbithole.html
+++ b/master/test-fixtures/docs/docs/down-the-rabbithole.html
@@ -434,7 +434,7 @@ <h1>Chapter I - Down the Rabbit-Hole</h1>
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -459,8 +459,7 @@ <h1>Chapter I - Down the Rabbit-Hole</h1>
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/test-fixtures/docs/docs/extra-information.html b/master/test-fixtures/docs/docs/extra-information.html
index 6af08efb1a0..ce3247703e6 100644
--- a/master/test-fixtures/docs/docs/extra-information.html
+++ b/master/test-fixtures/docs/docs/extra-information.html
@@ -242,7 +242,7 @@ <h2>Attributions<a id="attributions" href="#attributions" class="heading-permali
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -267,8 +267,7 @@ <h2>Attributions<a id="attributions" href="#attributions" class="heading-permali
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/test-fixtures/docs/docs/index.html b/master/test-fixtures/docs/docs/index.html
index e3ff487c6bd..71bd8769742 100644
--- a/master/test-fixtures/docs/docs/index.html
+++ b/master/test-fixtures/docs/docs/index.html
@@ -241,7 +241,7 @@ <h3 align="center" class="mx-auto">This is a <a href="https://hydephp.com/">Hyde
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -266,8 +266,7 @@ <h3 align="center" class="mx-auto">This is a <a href="https://hydephp.com/">Hyde
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/test-fixtures/docs/docs/pig-and-pepper.html b/master/test-fixtures/docs/docs/pig-and-pepper.html
index 6f8fde19dbe..bdf511bd198 100644
--- a/master/test-fixtures/docs/docs/pig-and-pepper.html
+++ b/master/test-fixtures/docs/docs/pig-and-pepper.html
@@ -492,7 +492,7 @@ <h1>Chapter VI - Pig and Pepper</h1>
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -517,8 +517,7 @@ <h1>Chapter VI - Pig and Pepper</h1>
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/test-fixtures/docs/docs/search.html b/master/test-fixtures/docs/docs/search.html
index e10b1ce5e78..757225f109d 100644
--- a/master/test-fixtures/docs/docs/search.html
+++ b/master/test-fixtures/docs/docs/search.html
@@ -187,13 +187,15 @@ <h4 class="sidebar-group-heading text-base font-semibold  cursor-pointer dark:gr
     <main id="content" class="dark:bg-gray-900 min-h-screen bg-gray-50 md:bg-white absolute top-16 md:top-0 w-screen md:left-64 md:w-[calc(100vw_-_16rem)]">
         <article id="document" itemscope itemtype="https://schema.org/Article" class="mx-auto lg:ml-8 max-w-3xl p-12 md:px-16 max-w-[1000px] min-h-[calc(100vh_-_4rem)] prose dark:prose-invert">
         <h1>Search the documentation site</h1>
-    <style>#searchMenuButton, .edit-page-link {
+    <style>
+        #searchMenuButton, .edit-page-link {
             display: none !important;
         }
 
         #search-results {
             max-height: unset !important;
-        }</style>
+        }
+    </style>
     <div id="hyde-search">
     <noscript>
         The search feature requires JavaScript to be enabled in your browser.
@@ -242,7 +244,7 @@ <h1>Search the documentation site</h1>
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -267,8 +269,7 @@ <h1>Search the documentation site</h1>
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/test-fixtures/docs/docs/the-lobster-quadrille.html b/master/test-fixtures/docs/docs/the-lobster-quadrille.html
index 1ebf54f42a8..f5be5418aa6 100644
--- a/master/test-fixtures/docs/docs/the-lobster-quadrille.html
+++ b/master/test-fixtures/docs/docs/the-lobster-quadrille.html
@@ -473,7 +473,7 @@ <h1>Chapter X - The Lobster Quadrille</h1>
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -498,8 +498,7 @@ <h1>Chapter X - The Lobster Quadrille</h1>
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/test-fixtures/docs/docs/the-mock-turtles-story.html b/master/test-fixtures/docs/docs/the-mock-turtles-story.html
index 818fcd7702a..f2cc7faf0f3 100644
--- a/master/test-fixtures/docs/docs/the-mock-turtles-story.html
+++ b/master/test-fixtures/docs/docs/the-mock-turtles-story.html
@@ -471,7 +471,7 @@ <h1>Chapter IX - The Mock Turtle's Story</h1>
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -496,8 +496,7 @@ <h1>Chapter IX - The Mock Turtle's Story</h1>
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/test-fixtures/docs/docs/the-pool-of-tears.html b/master/test-fixtures/docs/docs/the-pool-of-tears.html
index c1b0e1e79ac..05275e21cd9 100644
--- a/master/test-fixtures/docs/docs/the-pool-of-tears.html
+++ b/master/test-fixtures/docs/docs/the-pool-of-tears.html
@@ -425,7 +425,7 @@ <h1>Chapter II - The Pool of Tears</h1>
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -450,8 +450,7 @@ <h1>Chapter II - The Pool of Tears</h1>
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/test-fixtures/docs/docs/the-queens-croquetground.html b/master/test-fixtures/docs/docs/the-queens-croquetground.html
index 0be10b6d831..2ea67a7b90b 100644
--- a/master/test-fixtures/docs/docs/the-queens-croquetground.html
+++ b/master/test-fixtures/docs/docs/the-queens-croquetground.html
@@ -477,7 +477,7 @@ <h1>Chapter VIII - The Queen's Croquet-Ground</h1>
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -502,8 +502,7 @@ <h1>Chapter VIII - The Queen's Croquet-Ground</h1>
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/test-fixtures/docs/docs/the-rabbit-sends-in-a-little-bill.html b/master/test-fixtures/docs/docs/the-rabbit-sends-in-a-little-bill.html
index fffa2088f31..bde60038fd9 100644
--- a/master/test-fixtures/docs/docs/the-rabbit-sends-in-a-little-bill.html
+++ b/master/test-fixtures/docs/docs/the-rabbit-sends-in-a-little-bill.html
@@ -468,7 +468,7 @@ <h1>Chapter IV - The Rabbit Sends in a Little Bill</h1>
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -493,8 +493,7 @@ <h1>Chapter IV - The Rabbit Sends in a Little Bill</h1>
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {
diff --git a/master/test-fixtures/docs/docs/who-stole-the-tarts.html b/master/test-fixtures/docs/docs/who-stole-the-tarts.html
index c6b22be2250..fc3c8560070 100644
--- a/master/test-fixtures/docs/docs/who-stole-the-tarts.html
+++ b/master/test-fixtures/docs/docs/who-stole-the-tarts.html
@@ -430,7 +430,7 @@ <h1>Chapter XI - Who Stole the Tarts?</h1>
 <div id="search-window-container" x-show="searchWindowOpen" x-cloak role="dialog"
      class="z-30 fixed top-0 left-0 w-screen h-screen flex flex-col items-center px-8 py-24 md:py-16">
     <aside x-on:click.away="searchWindowOpen = false" id="searchMenu"
-           class="prose dark:prose-invert bg-white dark:bg-gray-800  z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
+           class="prose dark:prose-invert bg-white dark:bg-gray-800 z-50 p-4 rounded-lg overflow-y-hidden min-h-[300px] max-h-[75vh] w-[70ch] max-w-full cursor-auto ">
         <header class="flex justify-between pb-3 mb-3 border-b dark:border-gray-700 md:hidden">
             <strong>Search the documentation site</strong>
             <button @click="searchWindowOpen = false" title="Close search window" class="opacity-75 hover:opacity-100"
@@ -455,8 +455,7 @@ <h1>Chapter XI - Who Stole the Tarts?</h1>
         </footer>
     </aside>
 
-    <div id="search-window-backdrop" title="Click to close search window"
-         class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0"></div>
+    <div id="search-window-backdrop" class="w-screen h-screen cursor-pointer z-40 bg-black/50 absolute top-0" title="Click to close search window"></div>
 </div>            <script src="https://cdn.jsdelivr.net/npm/hydesearch@0.2.1/dist/HydeSearch.min.js" defer></script>
 <script>
     window.addEventListener('load', function () {