set('admin_access.app_host', 'app.clupilot.com'); config()->set('provisioning.dns.platform_zone', 'clupilot.com'); }); function guidePage(string $component): \Livewire\Features\SupportTesting\Testable { return Livewire::actingAs(Operator::factory()->role('Owner')->create(), 'operator')->test($component); } /** * Der eigentliche Fund, der diese Datei nötig gemacht hat. * * Die erste Fassung zeigte die Anleitung ERST NACH dem Anlegen. Ihre Schritte 1 * und 2 passieren aber beim Anbieter — Server bestellen, Rettungssystem starten * —, und wer sie dort zum ersten Mal liest, hat den Einmal-Code schon in der * Zwischenablage und dessen 24-Stunden-Frist läuft bereits. */ it('explains the whole procedure before anything is created', function () { $page = guidePage(HostCreate::class); // Alle sechs, als Schiene — kurze Beschriftungen, damit die Seite eine // Seite bleibt und keine Textwand wird. Das war der zweite Fund: sechs // Absätze übereinander beantworteten alles und zeigten nichts. foreach (range(1, 6) as $step) { $page->assertSee(__("hosts.takeover.s{$step}_label")); } // Die zwei beim Anbieter ausführlich, weil sie VOR dem Speichern erledigt // sein müssen und nur hier erklärt werden. $page->assertSee(__('hosts.takeover.s1_body')) ->assertSee(__('hosts.takeover.s2_body')); }); /** * Und schon auf der Liste, nicht erst hinter „Host hinzufügen": wer dort steht, * hat den Server womöglich noch gar nicht bestellt — und genau das ist Schritt 1. */ it('offers the same procedure on the hosts list', function () { guidePage(Hosts::class) ->assertSee(__('hosts.takeover.how_title')) ->assertSee(__('hosts.takeover.s1_title')) ->assertSee(__('hosts.takeover.s2_title')); }); /** * Die zwei Schritte beim Anbieter sind als solche gekennzeichnet. Ohne die * Markierung liest sich die Liste, als könne man oben anfangen und sich * durcharbeiten — und Schritt 2 ist dann eine halbe Stunde Wartezeit mitten * in einem laufenden Code. */ it('marks the two provider steps as things to do first', function () { guidePage(HostCreate::class)->assertSee(__('hosts.takeover.badge_before')); }); /** * Die Anleitung nennt die Adresse, von der geladen wird, und es muss dieselbe * sein, die später in der Zeile steht. Zwei Fassungen davon liefen auseinander, * und der Unterschied fiele auf einem Server auf, der schon bestellt ist. */ it('names the same archive address the command will use', function () { // Auf der Liste, wo die Anleitung Auskunft gibt. Auf der Anlegen-Seite // steht die Adresse erst NACH dem Speichern: dort ist sie Teil der // Befehlszeile und keine Angabe für sich, und vorher wäre sie eine // Einzelheit mehr auf einer Seite, die vier Felder ausgefüllt haben will. guidePage(Hosts::class)->assertSee('files.clupilot.test/bootstrap.tar.gz'); }); /** * Vor dem Anlegen gibt es keine Befehlszeile — sonst stünde dort eine, die zu * keinem Host gehört. */ it('shows no command until a host exists', function () { guidePage(HostCreate::class)->assertDontSee('--wg-private'); });