diff --git a/tests/Feature/Settings/ShowSetUpPageTest.php b/tests/Feature/Settings/ShowSetUpPageTest.php
new file mode 100644
index 0000000000..16afae14b4
--- /dev/null
+++ b/tests/Feature/Settings/ShowSetUpPageTest.php
@@ -0,0 +1,141 @@
+get('/setup');
+ }
+
+ public function testView(): void
+ {
+ $this->getSetUpPageResponse()->assertOk()->assertViewIs('setup.index');
+ }
+
+ public function testWillShowErrorMessageWhenDatabaseConnectionCannotBeEstablished(): void
+ {
+ Event::listen(function (QueryExecuted $query) {
+ if ($query->sql === 'select 2 + 2') {
+ throw new PDOException("SQLSTATE[HY000] [1045] Access denied for user ''@'localhost' (using password: NO)");
+ }
+ });
+
+ $this->getSetUpPageResponse()->assertOk();
+
+ $this->assertSeeDatabaseConnectionErrorMessage();
+ }
+
+ protected function assertSeeDatabaseConnectionErrorMessage(bool $shouldSee = true): void
+ {
+ $errorMessage = "D'oh! Looks like we can't connect to your database. Please update your database settings in your .env file.";
+ $successMessage = sprintf('Great work! Connected to %s', DB::connection()->getDatabaseName());
+
+ if ($shouldSee) {
+ self::$latestResponse->assertSee($errorMessage, false)->assertDontSee($successMessage, false);
+ return;
+ }
+
+ self::$latestResponse->assertSee($successMessage, false)->assertDontSee($errorMessage, false);
+ }
+
+ public function testWillNotShowErrorMessageWhenDatabaseIsConnected(): void
+ {
+ $this->getSetUpPageResponse()->assertOk();
+
+ $this->assertSeeDatabaseConnectionErrorMessage(false);
+ }
+
+ public function testWillShowErrorMessageWhenDebugModeIsEnabledAndAppEnvironmentIsSetToProduction(): void
+ {
+ config(['app.debug' => true]);
+
+ $this->app->bind('env', fn () => 'production');
+
+ $this->getSetUpPageResponse()->assertOk();
+
+ $this->assertSeeDebugModeMisconfigurationErrorMessage();
+ }
+
+ protected function assertSeeDebugModeMisconfigurationErrorMessage(bool $shouldSee = true): void
+ {
+ $errorMessage = 'Yikes! You should turn off debug mode unless you encounter any issues. Please update your APP_DEBUG settings in your .env file';
+ $successMessage = "Awesomesauce. Debug is either turned off, or you're running this in a non-production environment. (Don't forget to turn it off when you're ready to go live.)";
+
+ if ($shouldSee) {
+ self::$latestResponse->assertSee($errorMessage, false)->assertDontSee($successMessage, false);
+ return;
+ }
+
+ self::$latestResponse->assertSee($successMessage, false)->assertDontSee($errorMessage, false);
+ }
+
+ public function testWillNotShowErrorWhenDebugModeIsEnabledAndAppEnvironmentIsSetToLocal(): void
+ {
+ config(['app.debug' => true]);
+
+ $this->app->bind('env', fn () => 'local');
+
+ $this->getSetUpPageResponse()->assertOk();
+
+ $this->assertSeeDebugModeMisconfigurationErrorMessage(false);
+ }
+
+ public function testWillNotShowErrorWhenDebugModeIsDisabledAndAppEnvironmentIsSetToProduction(): void
+ {
+ config(['app.debug' => false]);
+
+ $this->app->bind('env', fn () => 'production');
+
+ $this->getSetUpPageResponse()->assertOk();
+
+ $this->assertSeeDebugModeMisconfigurationErrorMessage(false);
+ }
+
+ public function testWillShowErrorWhenEnvironmentIsLocal(): void
+ {
+ $this->app->bind('env', fn () => 'local');
+
+ $this->getSetUpPageResponse()->assertOk();
+
+ $this->assertSeeEnvironmentMisconfigurationErrorMessage();
+ }
+
+ protected function assertSeeEnvironmentMisconfigurationErrorMessage(bool $shouldSee = true): void
+ {
+ $errorMessage = 'Your app is set local instead of production mode.';
+ $successMessage = 'Your app is set to production mode. Rock on!';
+
+ if ($shouldSee) {
+ self::$latestResponse->assertSee($errorMessage, false)->assertDontSee($successMessage, false);
+
+ return;
+ }
+
+ self::$latestResponse->assertSee($successMessage, false)->assertDontSee($errorMessage, false);
+ }
+
+ public function testWillNotShowErrorWhenEnvironmentIsProduction(): void
+ {
+ $this->app->bind('env', fn () => 'production');
+
+ $this->getSetUpPageResponse()->assertOk();
+
+ $this->assertSeeEnvironmentMisconfigurationErrorMessage(false);
+ }
+}