Vier Wuensche und ein Fund beim Nachmessen. - Farbwaehler im Designbereich. Das Textfeld bleibt massgeblich, damit "@akzent" ein Verweis auf die Palette bleibt und nicht beim ersten Klick zu einem festen Hexwert erstarrt (ADR 066). - Die Verwaltung auf dem Telefon: das Menue klappt unter 760 px zu und nennt den Bereich, in dem man steht; Ziele 44 px, kein Skript. - Eigene SVG-Symbole statt Unicode-Zeichen - ein Telefon ersetzt die sonst durch Emoji in fremdem Stil. Zwei Eintraege trugen dabei denselben Pfad; ein Test findet beides (ADR 067). - Update aus dem Releasearchiv: der Weg fuer Installationen ohne Git. Zwei Schritte, weil ein Prozess, der sich selbst ausgetauscht hat, mit dem alten Code weiterarbeitet. var/, .env, hochgeladene Schriften und das erzeugte Buendel bleiben unberuehrt; public/ wird dazu Datei fuer Datei zusammengefuehrt. Geprueft ohne Netz gegen eine Releaseseite im Speicher (ADR 068). Beim Nachmessen der echten Startseite statt einer Testseite: das groesste Element ueber der Falz ist dort kein <img>, sondern der Hintergrund des ersten Abschnitts - und der steht nur im Stylesheet. Drei Vorabverweise mit denselben Geraetegrenzen wie der Compiler holen genau die Variante, die die Regel auch nimmt. LCP 1,3 s -> 1,1 s. Dabei gefunden: dasselbe Bild wurde je Geraeteregel neu abgefragt - Startseite 19 -> 15 Abfragen (ADR 069). Geprueft: 428 Tests auf PHP 8.2 und 8.4, Editor-, Browser- und Linkpruefung, Lighthouse auf drei echten Seiten (alles ausser der Leistung der Startseite 100). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
47 lines
1.5 KiB
PHP
47 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Tests;
|
|
|
|
use App\Ops\Download;
|
|
|
|
/**
|
|
* Eine Releaseseite, die im Dateisystem liegt statt im Netz.
|
|
*
|
|
* Ein Test, der wirklich nach git.kant-it.de greift, prüft die Leitung und nicht den Updater: er
|
|
* schlägt fehl, wenn der Server umzieht, und er ist grün, wenn im Archiv Unsinn steht. Diese
|
|
* Attrappe beantwortet dieselben drei Adressen - Releaseliste, Archiv, Prüfsumme - aus dem
|
|
* Speicher und merkt sich, was abgefragt wurde.
|
|
*/
|
|
final class ReleaseOnDisk extends Download
|
|
{
|
|
/** @var array<string, string> */
|
|
private array $antworten = [];
|
|
|
|
/** @var list<string> */
|
|
public array $abgefragt = [];
|
|
|
|
public function serve(string $url, string $inhalt): void
|
|
{
|
|
$this->antworten[$url] = $inhalt;
|
|
}
|
|
|
|
/** Legt ein vollständiges Release ab: Releaseliste, Archiv und Prüfsumme. */
|
|
public function release(string $base, string $api, string $version, string $archiv, ?string $checksum = null): void
|
|
{
|
|
$this->serve($api.'/releases/latest', json_encode(['tag_name' => 'v'.$version], JSON_THROW_ON_ERROR));
|
|
$this->serve(sprintf('%s/v%s/kantsites-%s.zip', $base, $version, $version), $archiv);
|
|
$this->serve(sprintf('%s/v%s/kantsites-%s.zip.sha256', $base, $version, $version), sprintf(
|
|
"%s kantsites-%s.zip\n",
|
|
$checksum ?? hash('sha256', $archiv),
|
|
$version,
|
|
));
|
|
}
|
|
|
|
public function get(string $url): ?string
|
|
{
|
|
$this->abgefragt[] = $url;
|
|
|
|
return $this->antworten[$url] ?? null;
|
|
}
|
|
}
|