mirror of
https://github.com/tiennm99/coolify.git
synced 2026-08-21 00:24:36 +00:00
test(browser): expand config coverage and shared helpers
Add BrowserTestHelpers and configuration/deploy browser tests for apps, databases, services, and Livewire toggles. Refactor existing browser suites onto shared seed/login helpers, soft-skip onboarding, and null broadcasting so host-side Pest runs avoid docker DNS.
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
<?php
|
||||
|
||||
use App\Enums\ProxyStatus;
|
||||
use App\Enums\ProxyTypes;
|
||||
use App\Models\Project;
|
||||
use App\Models\Server;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
|
||||
uses(RefreshDatabase::class);
|
||||
|
||||
beforeEach(function () {
|
||||
$this->stack = seedBrowserResourceStack([
|
||||
'projectUuid' => 'project-core-1',
|
||||
'projectName' => 'Core Project Alpha',
|
||||
'projectDescription' => 'Primary browser project',
|
||||
'serverName' => 'localhost',
|
||||
'serverDescription' => 'Local testing host',
|
||||
]);
|
||||
|
||||
Project::create([
|
||||
'uuid' => 'project-core-2',
|
||||
'name' => 'Core Project Beta',
|
||||
'description' => 'Secondary browser project',
|
||||
'team_id' => 0,
|
||||
]);
|
||||
|
||||
Server::create([
|
||||
'uuid' => 'server-core-2',
|
||||
'name' => 'remote-web',
|
||||
'description' => 'Remote web server',
|
||||
'ip' => '10.0.0.50',
|
||||
'team_id' => 0,
|
||||
'private_key_id' => 1,
|
||||
'proxy' => [
|
||||
'type' => ProxyTypes::TRAEFIK->value,
|
||||
'status' => ProxyStatus::EXITED->value,
|
||||
],
|
||||
]);
|
||||
|
||||
$this->application = createBrowserApplication($this->stack, [
|
||||
'uuid' => 'app-core-env',
|
||||
'name' => 'Env Listed App',
|
||||
]);
|
||||
});
|
||||
|
||||
it('shows dashboard with projects and servers after login', function () {
|
||||
$page = loginAndSkipBoarding();
|
||||
|
||||
$page->assertSee('Dashboard')
|
||||
->assertSee('Core Project Alpha')
|
||||
->assertSee('Core Project Beta')
|
||||
->assertSee('localhost')
|
||||
->assertSee('remote-web')
|
||||
->screenshot(filename: 'core-dashboard');
|
||||
});
|
||||
|
||||
it('navigates to project environments page', function () {
|
||||
loginAndSkipBoarding();
|
||||
|
||||
$project = $this->stack['project'];
|
||||
$page = visit("/project/{$project->uuid}");
|
||||
|
||||
$page->assertSee('Core Project Alpha')
|
||||
->assertSee('environment')
|
||||
->screenshot(filename: 'core-project-environments');
|
||||
});
|
||||
|
||||
it('navigates to environment resources listing applications', function () {
|
||||
loginAndSkipBoarding();
|
||||
|
||||
$project = $this->stack['project'];
|
||||
$environment = $this->stack['environment'];
|
||||
|
||||
$page = visit("/project/{$project->uuid}/environment/{$environment->uuid}");
|
||||
|
||||
$page->assertSee('Env Listed App')
|
||||
->screenshot(filename: 'core-environment-resources');
|
||||
});
|
||||
|
||||
it('shows server configuration page for owner', function () {
|
||||
loginAndSkipBoarding();
|
||||
|
||||
$server = $this->stack['server'];
|
||||
$page = visit("/server/{$server->uuid}");
|
||||
|
||||
$page->assertSee('localhost')
|
||||
->assertSee('General')
|
||||
->assertSee('Configuration')
|
||||
->assertSee('Save')
|
||||
->screenshot(filename: 'core-server-configuration');
|
||||
});
|
||||
|
||||
it('shows team general and members pages', function () {
|
||||
loginAndSkipBoarding();
|
||||
|
||||
visit('/team')
|
||||
->assertSee('General')
|
||||
->assertSee('Danger Zone')
|
||||
->screenshot(filename: 'core-team-general');
|
||||
|
||||
visit('/team/members')
|
||||
->assertSee('Members')
|
||||
->assertSee('Invite a member')
|
||||
->screenshot(filename: 'core-team-members');
|
||||
});
|
||||
|
||||
it('shows projects index', function () {
|
||||
loginAndSkipBoarding();
|
||||
|
||||
visit('/projects')
|
||||
->assertSee('Core Project Alpha')
|
||||
->assertSee('Core Project Beta')
|
||||
->screenshot(filename: 'core-projects-index');
|
||||
});
|
||||
|
||||
it('shows servers index', function () {
|
||||
loginAndSkipBoarding();
|
||||
|
||||
visit('/servers')
|
||||
->assertSee('localhost')
|
||||
->assertSee('remote-web')
|
||||
->screenshot(filename: 'core-servers-index');
|
||||
});
|
||||
|
||||
it('protects core routes when unauthenticated', function () {
|
||||
visit('/dashboard')->assertPathIs('/login');
|
||||
visit('/projects')->assertPathIs('/login');
|
||||
visit('/servers')->assertPathIs('/login');
|
||||
visit('/team')->assertPathIs('/login');
|
||||
|
||||
$project = $this->stack['project'];
|
||||
visit("/project/{$project->uuid}")->assertPathIs('/login');
|
||||
|
||||
$server = $this->stack['server'];
|
||||
visit("/server/{$server->uuid}")->assertPathIs('/login')
|
||||
->screenshot(filename: 'core-unauthenticated-redirect');
|
||||
});
|
||||
Reference in New Issue
Block a user