0]); $team = Team::factory()->create(); $this->healthcheckMigrationOwner = User::factory()->create(); $team->members()->attach($this->healthcheckMigrationOwner->id, ['role' => 'owner']); $project = Project::factory()->create(['team_id' => $team->id]); $server = Server::factory()->create(['team_id' => $team->id]); $this->healthcheckMigrationEnvironment = $project->environments()->firstOrFail(); $this->healthcheckMigrationDestination = StandaloneDocker::query()->where('server_id', $server->id)->firstOrFail(); }); function keepDockerfileHealthcheckApplication(bool $healthCheckEnabled, bool $customHealthcheckFound): Application { return Application::factory()->create([ 'environment_id' => test()->healthcheckMigrationEnvironment->id, 'destination_id' => test()->healthcheckMigrationDestination->id, 'destination_type' => StandaloneDocker::class, 'build_pack' => 'dockerfile', 'health_check_enabled' => $healthCheckEnabled, 'custom_healthcheck_found' => $customHealthcheckFound, ])->fresh(); } test('disables the Coolify healthcheck only for applications with a Dockerfile HEALTHCHECK', function () { $dockerfileAndCoolify = keepDockerfileHealthcheckApplication(healthCheckEnabled: true, customHealthcheckFound: true); $dockerfileOnly = keepDockerfileHealthcheckApplication(healthCheckEnabled: false, customHealthcheckFound: true); $coolifyOnly = keepDockerfileHealthcheckApplication(healthCheckEnabled: true, customHealthcheckFound: false); $none = keepDockerfileHealthcheckApplication(healthCheckEnabled: false, customHealthcheckFound: false); (require database_path('migrations/2026_10_28_124421_keep_dockerfile_healthcheck_for_existing_applications.php'))->up(); expect($dockerfileAndCoolify->fresh()->health_check_enabled)->toBeFalse() ->and($dockerfileAndCoolify->fresh()->custom_healthcheck_found)->toBeTrue() ->and($dockerfileOnly->fresh()->health_check_enabled)->toBeFalse() ->and($coolifyOnly->fresh()->health_check_enabled)->toBeTrue() ->and($none->fresh()->health_check_enabled)->toBeFalse(); }); test('the healthcheck page says whether the Dockerfile HEALTHCHECK is in use or replaced', function () { $this->actingAs($this->healthcheckMigrationOwner); Livewire::test(HealthChecks::class, ['resource' => keepDockerfileHealthcheckApplication(healthCheckEnabled: false, customHealthcheckFound: true)]) ->assertSee('Dockerfile HEALTHCHECK in use') ->assertDontSee('Dockerfile HEALTHCHECK replaced'); Livewire::test(HealthChecks::class, ['resource' => keepDockerfileHealthcheckApplication(healthCheckEnabled: true, customHealthcheckFound: true)]) ->assertSee('Dockerfile HEALTHCHECK replaced') ->assertDontSee('Dockerfile HEALTHCHECK in use'); Livewire::test(HealthChecks::class, ['resource' => keepDockerfileHealthcheckApplication(healthCheckEnabled: true, customHealthcheckFound: false)]) ->assertDontSee('Dockerfile HEALTHCHECK'); });