diff --git a/webapp/tests/Functional/PublicPages/FunctionalTestPublicPageHealthCheckTest.php b/webapp/tests/Functional/PublicPages/FunctionalTestPublicPageHealthCheckTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..f0ce9e97f08c293757a66f5c46c4af7b8e4d34ec
--- /dev/null
+++ b/webapp/tests/Functional/PublicPages/FunctionalTestPublicPageHealthCheckTest.php
@@ -0,0 +1,88 @@
+<?php
+
+/*
+ * This file is part of the Comptoir-du-Libre software.
+ * <https://gitlab.adullact.net/Comptoir/comptoir-du-libre>
+ *
+ * Copyright (c) ADULLACT   <https://adullact.org>
+ *               Association des Développeurs et Utilisateurs de Logiciels Libres
+ *               pour les Administrations et les Collectivités Territoriales
+ *
+ * Comptoir-du-Libre is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this software. If not, see <https://www.gnu.org/licenses/agpl-3.0.en.html>.
+ */
+
+declare(strict_types=1);
+
+namespace App\Tests\Functional\PublicPages;
+
+use App\Tests\Functional\TestHelperTrait;
+use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
+use Symfony\Component\HttpFoundation\Response;
+
+/**
+ * @group allow_mutation_testing_by_infection
+ */
+class FunctionalTestPublicPageHealthCheckTest extends WebTestCase
+{
+    use TestHelperTrait;
+
+    public function testTryHttpPostMethodToHealthCheckRoute(): void
+    {
+        $client = static::createClient();
+        $crawler = $client->request('POST', '/health-check');
+        $this->assertResponseStatusCodeSame(Response::HTTP_METHOD_NOT_ALLOWED); // 405 Method Not Allowed
+        $this->assertResponseNotHasHeader("X-Comptoir-Test-Software-Database-Status");
+    }
+
+    public function testHttpHeadMethodToHealthCheckRoute(): void
+    {
+        $client = static::createClient();
+        $crawler = $client->request('HEAD', '/health-check');
+        $this->assertResponseHasHeader("X-Comptoir-Test-Software-Database-Status");
+        $statusCode = $client->getResponse()->getStatusCode();
+        if ($statusCode !== 200 && $statusCode !== 503) {
+            $this->assertTrue(false, "Bad HTTP status code [ $statusCode ] (Allowed is 503 or 200");
+        }
+    }
+
+    public function testHttpGetMethodToHealthCheckRoute(): void
+    {
+
+        $client = static::createClient();
+        $crawler = $client->request('GET', '/health-check');
+
+        $this->assertResponseHasHeader("X-Comptoir-Test-Software-Database-Status");
+        $this->assertSelectorTextContains('#webapp-database-status', 'DB_CONNECTION_');
+        $this->checkFooter($crawler, false);
+
+        $statusCode = $client->getResponse()->getStatusCode();
+        $dbStatus = $crawler->filter('#webapp-database-status')->innerText();
+        if ($statusCode !== 200 && $statusCode !== 503) {
+            $this->assertTrue(false, "Bad HTTP status code [ $statusCode ] (Allowed is 503 or 200");
+        } elseif ($statusCode === 200) {
+            $this->assertSelectorTextSame('#webapp-database-status', 'DB_CONNECTION_SUCCESSFUL');
+            $this->assertResponseHeaderSame("X-Comptoir-Test-Software-Database-Status", 'DB_CONNECTION_SUCCESSFUL');
+        } elseif (
+            $statusCode === 503 && $dbStatus === 'DB_CONNECTION_FAILED'
+        ) {
+            // Check database status
+            if ($dbStatus === 'DB_CONNECTION_FAILED') {
+                $this->assertResponseHeaderSame("X-Comptoir-Test-Software-Database-Status", 'DB_CONNECTION_FAILED');
+            } elseif ($dbStatus === 'DB_CONNECTION_SUCCESSFUL') {
+                $this->assertResponseHeaderSame("X-Comptoir-Test-Software-Database-Status", 'DB_CONNECTION_SUCCESSFUL');
+            } else {// Bad database status code
+                $this->assertTrue(false, "Bad database status code [ $dbStatus ]");
+            }
+        } else { // HTTP status code 503, but not FAILED database status
+            $msg = "Bad HTTP status code [ $statusCode ] with ";
+            $msg .= "database status code [ $dbStatus ] ";
+            $this->assertTrue(false, "$msg");
+        }
+    }
+}
diff --git a/webapp/tests/Functional/PublicPages/FunctionalTestPublicPageHomepageTest.php b/webapp/tests/Functional/PublicPages/FunctionalTestPublicPageHomepageTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..75a9497302509f7984c25480eb24f21a94bc3f2e
--- /dev/null
+++ b/webapp/tests/Functional/PublicPages/FunctionalTestPublicPageHomepageTest.php
@@ -0,0 +1,107 @@
+<?php
+
+/*
+ * This file is part of the Comptoir-du-Libre software.
+ * <https://gitlab.adullact.net/Comptoir/comptoir-du-libre>
+ *
+ * Copyright (c) ADULLACT   <https://adullact.org>
+ *               Association des Développeurs et Utilisateurs de Logiciels Libres
+ *               pour les Administrations et les Collectivités Territoriales
+ *
+ * Comptoir-du-Libre is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this software. If not, see <https://www.gnu.org/licenses/agpl-3.0.en.html>.
+ */
+
+declare(strict_types=1);
+
+namespace App\Tests\Functional\PublicPages;
+
+use App\Tests\Functional\TestHelperTrait;
+use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
+use Symfony\Component\HttpFoundation\Response;
+
+/**
+ * @group allow_mutation_testing_by_infection
+ */
+class FunctionalTestPublicPageHomepageTest extends WebTestCase
+{
+    use TestHelperTrait;
+
+    // Accessing Internal Objects
+    //////////////////////////////////////////////////////////////////////////////////////////////////////
+    // $crawler = $client->getCrawler();     //  Crawler instance
+    // $history = $client->getHistory();     // client history
+    // $cookieJar = $client->getCookieJar(); // client cookie jar
+    // $requestHttpKernel = $client->getRequest();           // HttpKernel request instance
+    // $requestBrowserKit = $client->getInternalRequest();   // BrowserKit request instance
+    // $responseHttpKernel = $client->getResponse();         // HttpKernel response instance
+    // $responseBrowserKit = $client->getInternalResponse(); // BrowserKit response instance
+    //////////////////////////////////////////////////////////////////////////////////////////////////////
+    // dump($crawler);
+    // dump($history);
+    // dump($cookieJar);
+    // dump($requestHttpKernel);
+    // dump($requestBrowserKit);
+    // dump($responseHttpKernel);
+    // dump($responseBrowserKit);
+    // dump($requestBrowserKit->getCookies());
+    //////////////////////////////////////////////////////////////////////////////////////////////////////
+    public function testHomePageRedirectsToHomePageInDefaultLanguage(): void
+    {
+        $client = static::createClient();
+        $session = $this->createSession($client);
+        $crawler = $client->request('GET', '/');
+        $this->assertRouteSame('app_home');
+        $this->assertResponseStatusCodeSame(Response::HTTP_PERMANENTLY_REDIRECT); // HTTP status code = 308
+        $this->assertResponseHeaderSame("Location", '/en/');
+        $this->assertResponseHeaderSame("X-Comptoir-Test-Software-Webapp", '1');
+    }
+
+
+    public function testEnglishHomePageIsDisplayed(): void
+    {
+        $client = static::createClient();
+        $session = $this->createSession($client);
+        $crawler = $client->request('GET', '/en/');
+
+        // Basic checks
+        $this->assertRouteSame('app_home_i18n');
+        $this->assertResponseStatusCodeSame(Response::HTTP_OK); // HTTP status code = 200
+//      $this->assertResponseIsSuccessful(); // HTTP status code >= 200 and HTTP status code < 300;
+        $this->assertResponseHeaderSame("X-Comptoir-Test-Software-Webapp", '1');
+
+        // HTML content checks
+        $this->assertSelectorTextSame('h1', 'Comptoir du Libre TEST');
+        $this->assertPageTitleSame('Comptoir du Libre TEST');
+        $this->checkFooter($crawler, false);
+
+        // Cookies checks
+        //////////////////////////////////////////////////////////////////////////////////////////////////////
+//      $this->assertBrowserHasCookie('MOCKSESSID');
+//      $this->assertResponseHasCookie('MOCKSESSID'); // ---> FAIL ---> @@@TODO fixme
+
+        // HTTP Header checks
+        // ---> already tested in [ testAnonymousCanBrowsePublicUrls() ] method
+        //      using [ commonSecurityHttpHeadersChecker() ]  method
+        //////////////////////////////////////////////////////////////////////////////////////////////////////
+//      $this->assertResponseHeaderSame("Cache-Control", 'max-age=0, must-revalidate, private');
+//      $this->assertResponseHeaderSame(
+//          "Content-Security-Policy",
+//          'report-uri /csp/report'
+//      );  // see:  NelmioSecurityBundle
+//      $this->assertResponseHeaderSame("Content-Type", 'text/html; charset=UTF-8');
+//      $this->assertResponseHeaderSame(
+//          "Referrer-Policy",
+//          'no-referrer, strict-origin-when-cross-origin'
+//      );
+//      $this->assertResponseHeaderSame("X-Content-Type-Options", 'nosniff');
+//      $this->assertResponseHeaderSame("X-Frame-Options", 'DENY');
+//      $this->assertResponseHeaderSame("X-Robots-Tag", 'noindex');
+//      $this->assertResponseHeaderSame("X-Xss-Protection", '1; mode=block');
+    }
+}