Skip to content

Testen ​

PHPUnit und Playwright brauchen eine lokale October-Installation (src/app im Dev-Monorepo, PHP ≥ 8.4.1); DEV.md im Repository-Root erklärt die Testserver. CI führt nur Typecheck, Vitest, den Build und einen Aktualitäts-Check des committeten assets/dist aus; scripts/qa.sh führt alle Gates aus, auch PHPUnit und e2e.

PHPUnit ​

Aus dem Root der October-Installation (SQLite :memory:, Array-Cache):

bash
php artisan plugin:test Renick.Content

Vitest (Editor) ​

Aus plugins/renick/content:

bash
pnpm install
pnpm test              # vitest run
pnpm run test:coverage # with coverage gates
pnpm run test:unit     # React component tests (jsdom)

Die Coverage-Gates (Statements/Lines 85 %, Functions 80 %, Branches 75 %) gelten nur für die reine Logik; die React-UI deckt Playwright ab.

Playwright (e2e) ​

Gegen einen laufenden Dev-Server (scripts/serve.sh start, Port 25567):

bash
cd tests-e2e
cp .env.example .env    # fill in RC_ADMIN_LOGIN / RC_ADMIN_PASSWORD
pnpm install
pnpm test

Suiten mit eigener Installation (test:flow, test:rainlab, test:compat, test:real-api) laufen nur, wenn ihre Umgebungsvariable gesetzt ist.

Rückwärtskompatibilität (October 4.1 bis 4.3) ​

Tailor-Einsendeformulare brauchen October 4.4; auf 4.1 bis 4.3 muss die Integration ein No-op sein. Die Compat-Suite prüft das an einer älteren Installation:

bash
.claude/skills/fresh-testserver/compat.sh --october 4.2   # -> src/app-oct42, port 25569
(cd src/app-oct42 && PHP_CLI_SERVER_WORKERS=10 php artisan serve --host=127.0.0.1 --port=25569 --no-reload)
(cd tests-e2e && RC_OC43_BASE_URL=http://127.0.0.1:25569 pnpm run test:compat)

PHPUnit-Tests, die 4.4 brauchen, überspringen sich via InteractsWithTailorSubmissions selbst. Fixture-Blueprints mit einem 4.4-only type: gehören in ein eigenes Verzeichnis (tests/fixtures/blueprints-submission/): Eine ungültige Datei lässt BlueprintIndexer auf 4.1 bis 4.3 die ganze Datasource ablehnen.

PHPStan (Level 5) ​

Aus der October-Installation über einen Einstiegspunkt ausführen, der das echte Plugin-Verzeichnis einbindet, nicht den Symlink src/app/plugins (der Symlink erzeugt Phantomfehler return.missing):

yaml
# src/app/phpstan-plugin.neon
includes:
    - vendor/larastan/larastan/extension.neon
    - ../../plugins/renick/content/phpstan.neon
bash
cd src/app
vendor/bin/phpstan analyse -c phpstan-plugin.neon