InstanceSettings::query()->create(['id' => 0])); $user = User::factory()->create(); $team = Team::factory()->create(); $user->teams()->attach($team, ['role' => 'owner']); $this->actingAs($user); session(['currentTeam' => $team]); $this->privateKey = PrivateKey::factory()->create(['team_id' => $team->id]); $this->team = $team; }); it('renders a metrics chart only for servers with metrics enabled', function () { $enabledServer = Server::factory()->create([ 'team_id' => $this->team->id, 'private_key_id' => $this->privateKey->id, ]); $enabledServer->settings->update(['is_metrics_enabled' => true]); $disabledServer = Server::factory()->create([ 'team_id' => $this->team->id, 'private_key_id' => $this->privateKey->id, ]); $disabledServer->settings->update(['is_metrics_enabled' => false]); Livewire::test(Dashboard::class) ->assertSeeHtml("dashboard-server-metrics-{$enabledServer->uuid}") ->assertDontSeeHtml("dashboard-server-metrics-{$disabledServer->uuid}"); }); it('renders dashboard metrics charts on the server index grid', function () { $enabledServer = Server::factory()->create([ 'team_id' => $this->team->id, 'private_key_id' => $this->privateKey->id, ]); $enabledServer->settings->update(['is_metrics_enabled' => true]); $disabledServer = Server::factory()->create([ 'team_id' => $this->team->id, 'private_key_id' => $this->privateKey->id, ]); $disabledServer->settings->update(['is_metrics_enabled' => false]); Livewire::test(ServerIndex::class) ->assertSeeHtml("dashboard-server-metrics-{$enabledServer->uuid}") ->assertDontSeeHtml("dashboard-server-metrics-{$disabledServer->uuid}"); }); it('does not run SSH for an unreachable server when loading dashboard metrics', function () { Process::fake(); $server = Server::factory()->create([ 'team_id' => $this->team->id, 'private_key_id' => $this->privateKey->id, ]); $server->settings->update(['is_metrics_enabled' => true, 'is_reachable' => false]); Livewire::test(ServerMetricsChart::class, ['server' => $server->fresh()]) ->call('loadData') ->assertNotDispatched("dashboard-server-metrics-{$server->uuid}"); Process::assertNothingRan(); }); it('loads dashboard metrics over SSH for a reachable server', function () { Process::fake(['*' => Process::result(output: '[{"time":1700000000000,"percent":12.5,"usedPercent":40}]')]); $server = Server::factory()->create([ 'team_id' => $this->team->id, 'private_key_id' => $this->privateKey->id, ]); $server->settings->update(['is_metrics_enabled' => true, 'is_reachable' => true, 'is_usable' => true]); Livewire::test(ServerMetricsChart::class, ['server' => $server->fresh()]) ->call('loadData') ->assertDispatched( "dashboard-server-metrics-{$server->uuid}", fn (string $name, array $params) => $params[0] == [ 'cpu' => [[1700000000000, 12.5]], 'memory' => [[1700000000000, 40]], ], ); Process::assertRan(fn ($process) => str_contains(remoteProcessScript($process), 'coolify-sentinel')); });