diff --git a/Tests/Functional/ViewHelpers/CsvHeaderViewHelperTest.php b/Tests/Functional/ViewHelpers/CsvHeaderViewHelperTest.php
new file mode 100644
index 00000000..fce4bbd8
--- /dev/null
+++ b/Tests/Functional/ViewHelpers/CsvHeaderViewHelperTest.php
@@ -0,0 +1,64 @@
+testExtensionsToLoad[] = 'extcode/cart';
+
+ parent::setUp();
+ }
+
+ #[Test]
+ public function headerExportsToCsvLine(): void
+ {
+ $template = __DIR__ . '/Fixtures/CsvHeader.html';
+ $view = $this->getView($template);
+ $content = $view->render();
+
+ self::assertSame(
+ '"Order Number","Order Date","Invoice Number","Invoice Date","Salutation","Title","FirstName","LastName"' . "\n",
+ $content
+ );
+ }
+
+ #[Test]
+ public function headerExportsToCsvLineWithDifferentDelimAndQuote(): void
+ {
+ $template = __DIR__ . '/Fixtures/CsvHeaderWithDifferentDelimAndQuote.html';
+ $view = $this->getView($template);
+ $content = $view->render();
+
+ self::assertSame(
+ '\'Order Number\'|\'Order Date\'|\'Invoice Number\'|\'Invoice Date\'|\'Salutation\'|\'Title\'|\'FirstName\'|\'LastName\'' . "\n",
+ $content
+ );
+ }
+
+ private function getView(string $template): ViewInterface
+ {
+ $viewFactory = GeneralUtility::makeInstance(ViewFactoryInterface::class);
+ return $viewFactory->create(new ViewFactoryData(null, null, null, $template));
+ }
+}
diff --git a/Tests/Functional/ViewHelpers/Fixtures/CsvHeader.html b/Tests/Functional/ViewHelpers/Fixtures/CsvHeader.html
new file mode 100644
index 00000000..22f568aa
--- /dev/null
+++ b/Tests/Functional/ViewHelpers/Fixtures/CsvHeader.html
@@ -0,0 +1 @@
+
diff --git a/Tests/Functional/ViewHelpers/Fixtures/CsvHeaderWithDifferentDelimAndQuote.html b/Tests/Functional/ViewHelpers/Fixtures/CsvHeaderWithDifferentDelimAndQuote.html
new file mode 100644
index 00000000..f8799d62
--- /dev/null
+++ b/Tests/Functional/ViewHelpers/Fixtures/CsvHeaderWithDifferentDelimAndQuote.html
@@ -0,0 +1 @@
+