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>
91 lines
3.0 KiB
PHP
91 lines
3.0 KiB
PHP
<?php
|
|
|
|
use App\Filament\Pages\DeploymentPackage;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Illuminate\Http\Client\Factory;
|
|
use Illuminate\Support\Facades\Http;
|
|
use Livewire\Livewire;
|
|
use Tests\TestCase;
|
|
|
|
require_once __DIR__.'/DeploymentTestHelpers.php';
|
|
|
|
uses(TestCase::class, RefreshDatabase::class);
|
|
|
|
// Az oldal betöltéskor lekérdezi a környezetek deploy-version.json-ját - a tesztek
|
|
// nem indíthatnak valódi kimenő kérést.
|
|
beforeEach(function () {
|
|
Http::fake();
|
|
});
|
|
|
|
test('a keresés a commit törzsében is talál, nem csak a tárgysorban', function () {
|
|
deploymentAllowEnvironment();
|
|
$repository = deploymentTestRepository();
|
|
|
|
$this->actingAs(deploymentDeveloper());
|
|
|
|
Livewire::test(DeploymentPackage::class)
|
|
->set('data.search', 'árlista részlet')
|
|
->assertSee('második commit')
|
|
->assertDontSee('harmadik commit');
|
|
|
|
deploymentCleanup($repository['path']);
|
|
});
|
|
|
|
test('az oldal kilistázza a commitokat és a kijelölt tartomány fájljait', function () {
|
|
deploymentAllowEnvironment();
|
|
$repository = deploymentTestRepository();
|
|
[$first, , $third] = $repository['commits'];
|
|
|
|
$this->actingAs(deploymentDeveloper());
|
|
|
|
Livewire::test(DeploymentPackage::class)
|
|
->assertSuccessful()
|
|
->assertSee('harmadik commit')
|
|
->call('selectFrom', $first)
|
|
->call('selectTo', $third)
|
|
->assertSet('fromCommit', $first)
|
|
->assertSet('toCommit', $third)
|
|
->assertSee('app/Atnevezett.php')
|
|
->assertSee('app/Regi.php');
|
|
|
|
deploymentCleanup($repository['path']);
|
|
});
|
|
|
|
test('az oldal alapból a d2d környezetet ajánlja és betöltéskor lekérdezi az élő állapotot', function () {
|
|
deploymentAllowEnvironment();
|
|
$repository = deploymentTestRepository();
|
|
[, , $third] = $repository['commits'];
|
|
|
|
// A beforeEach-ben regisztrált catch-all stub minden URL-re illeszkedik, és a
|
|
// Http factory az ELSŐ találatot adja vissza - ezért itt új factory kell, különben
|
|
// az üres törzsű alapértelmezett válasz nyerne a konkrét stub helyett.
|
|
Http::swap(new Factory);
|
|
Http::fake([
|
|
'*deploy-version.json' => Http::response(['target' => 'd2d', 'commit' => $third, 'branch' => 'main']),
|
|
]);
|
|
|
|
$this->actingAs(deploymentDeveloper());
|
|
|
|
$component = Livewire::test(DeploymentPackage::class);
|
|
|
|
expect($component->get('data')['target'])->toBe('d2d')
|
|
// A lekérdezés gomb nélkül, magától megtörténik.
|
|
->and($component->get('liveVersions')['d2d']['ok'])->toBeTrue()
|
|
->and($component->get('liveVersions')['d2d']['data']['commit'])->toBe($third);
|
|
|
|
deploymentCleanup($repository['path']);
|
|
});
|
|
|
|
test('az oldal nem fogad el kamu commit azonosítót', function () {
|
|
deploymentAllowEnvironment();
|
|
$repository = deploymentTestRepository();
|
|
|
|
$this->actingAs(deploymentDeveloper());
|
|
|
|
Livewire::test(DeploymentPackage::class)
|
|
->call('selectFrom', '../../etc/passwd')
|
|
->assertSet('fromCommit', null);
|
|
|
|
deploymentCleanup($repository['path']);
|
|
});
|