A paratest FÁJLONKÉNT osztja szét a munkát, ezért egyetlen 28 tesztes fájlból nem tudott párhuzamosítani: egy processz vitte a teljes 137 mp-et, a másik öt üresjáratban állt. A --parallel emiatt korábban egyenesen lassabb volt (136 -> 143 mp), a teljes suite-on pedig csak 11%-ot hozott. A felosztás témák szerint történt, de mért időkre kalibrálva, hogy egyik fájl se domináljon (a leghosszabb a Builder, ~35 mp): AccessTest 6 teszt ~7 mp jogosultság, feature flag, 403 GitTest 5 teszt ~18 mp GitRepository, ChangeSetAnalyzer BuilderTest 9 teszt ~35 mp csomagépítés, _TEENDOK, _torles.sh, verzió PageTest 4 teszt ~21 mp commitlista, keresés, kiválasztás CreationTest 2 teszt ~32 mp felületről indított csomagolás, kirakottnak jelölés DownloadTest 2 teszt ~25 mp naplóbejegyzés, ZIP letöltés, útvonal-ellenőrzés A két legdrágább teszt (21,7 és 20,4 mp) szándékosan külön fájlba került, együtt hagyva ők adnák a padlót. A közös segédfüggvények a DeploymentTestHelpers.php-ba kerültek. Ez nem *Test.php, ezért a phpunit nem szedi fel teszt-fájlként. A minta-repót takarító afterAll() helyére register_shutdown_function lépett: az afterAll fájlonként futna le, és a következő fájl alól húzná ki a mintát. Mért eredmény (6 mag): ezek a tesztek sorosan 137,00 mp, párhuzamosan 67,88 mp. Teljes suite párhuzamosan 149,78 -> 77,52 mp. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
71 lines
2.3 KiB
PHP
71 lines
2.3 KiB
PHP
<?php
|
|
|
|
use App\Filament\Pages\DeploymentPackage;
|
|
use App\Models\DeploymentPackage as DeploymentPackageRecord;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Illuminate\Support\Facades\File;
|
|
use Illuminate\Support\Facades\Http;
|
|
use Livewire\Livewire;
|
|
use Tests\TestCase;
|
|
|
|
require_once __DIR__.'/DeploymentTestHelpers.php';
|
|
|
|
uses(TestCase::class, RefreshDatabase::class);
|
|
|
|
beforeEach(function () {
|
|
Http::fake();
|
|
});
|
|
|
|
test('a felületről indított csomagolás létrehozza a mappát', function () {
|
|
deploymentAllowEnvironment();
|
|
$repository = deploymentTestRepository();
|
|
[$first, , $third] = $repository['commits'];
|
|
|
|
$this->actingAs(deploymentDeveloper());
|
|
|
|
$component = Livewire::test(DeploymentPackage::class)
|
|
->call('selectFrom', $first)
|
|
->call('selectTo', $third)
|
|
->call('toggleFile', 'app/Elso.php')
|
|
->call('createPackage');
|
|
|
|
$package = $component->get('lastPackage');
|
|
|
|
// Alapértelmezett célkörnyezet a d2d: azt frissítjük sűrűbben.
|
|
expect($package)->not->toBeNull()
|
|
->and($package['name'])->toStartWith('deploy_d2d_')
|
|
->and(File::isDirectory($package['path']))->toBeTrue()
|
|
->and($package['skipped'])->toBe(['app/Elso.php']);
|
|
|
|
deploymentCleanup($repository['path']);
|
|
});
|
|
|
|
test('a kirakottként megjelölt csomag adja a következő tartomány kezdetét', function () {
|
|
deploymentAllowEnvironment();
|
|
$repository = deploymentTestRepository();
|
|
[$first, $second] = $repository['commits'];
|
|
|
|
$this->actingAs(deploymentDeveloper());
|
|
|
|
// Az alapértelmezett célkörnyezetre készül, hogy a második oldalbetöltés is ezt töltse elő.
|
|
$record = DeploymentPackageRecord::create([
|
|
'name' => 'deploy_d2d_teszt',
|
|
'target' => 'd2d',
|
|
'branch' => 'main',
|
|
'from_commit' => $first,
|
|
'to_commit' => $second,
|
|
'folder' => $repository['path'],
|
|
]);
|
|
|
|
Livewire::test(DeploymentPackage::class)
|
|
->call('markDeployed', $record->id)
|
|
->assertSet('fromCommit', $second);
|
|
|
|
expect($record->refresh()->deployed_at)->not->toBeNull();
|
|
|
|
// Új oldalbetöltésnél is a kirakott commitról indul a tartomány.
|
|
Livewire::test(DeploymentPackage::class)->assertSet('fromCommit', $second);
|
|
|
|
deploymentCleanup($repository['path']);
|
|
});
|