coolify/tests/Unit/GithubRunnerStatusTest.php
Andras Bacsai 576f38da1c feat(github): add self-hosted Actions runner orchestration
Implement end-to-end GitHub Actions runner support with provisioning,
tracking, and cleanup flows.

- handle `workflow_job` webhooks to provision and tear down runners
- add runner config/execution models, enum states, and relationships
- create jobs for provisioning, cleanup, and stale-runner reaping
- schedule periodic stale runner cleanup in the console kernel
- add Livewire server UI to manage runner configuration and executions
- store GitHub App runner permissions and runner group metadata
- add migrations for runner permissions, configs, executions, and group id
- update GitHub permissions URL generation for organization app settings
- include feature/unit tests for runner behavior and permission paths
2026-03-03 14:27:19 +01:00

23 lines
1 KiB
PHP

<?php
use App\Enums\GithubRunnerStatus;
it('identifies active statuses correctly', function () {
expect(GithubRunnerStatus::Queued->isActive())->toBeTrue();
expect(GithubRunnerStatus::Provisioning->isActive())->toBeTrue();
expect(GithubRunnerStatus::Running->isActive())->toBeTrue();
expect(GithubRunnerStatus::Cleaning->isActive())->toBeTrue();
});
it('identifies inactive statuses correctly', function () {
expect(GithubRunnerStatus::Completed->isActive())->toBeFalse();
expect(GithubRunnerStatus::Failed->isActive())->toBeFalse();
expect(GithubRunnerStatus::TimedOut->isActive())->toBeFalse();
});
it('creates from string values', function () {
expect(GithubRunnerStatus::from('queued'))->toBe(GithubRunnerStatus::Queued);
expect(GithubRunnerStatus::from('running'))->toBe(GithubRunnerStatus::Running);
expect(GithubRunnerStatus::from('completed'))->toBe(GithubRunnerStatus::Completed);
expect(GithubRunnerStatus::from('timed_out'))->toBe(GithubRunnerStatus::TimedOut);
});