# Testing

> Test-Kette: PHP-Standalone, PHPStan und JS (Mocha)

---

Die komplette Kette läuft mit:

```bash
npm test
```

Das führt `test:php` → `analyse:php` → `test:js` aus, wobei jeder Schritt bestehen muss, bevor der nächste läuft.

## JavaScript (Mocha + jsdom)

```bash
npm run test:js
# mocha 'resources/js/tests/**/*.test.js' --require jsdom-global/register
```

## PHP-Standalone-Unit-Tests

```bash
npm run test:php
# führt jedes tests/test-*.php mit dem System-PHP aus — ohne webtrees, ohne DB
```

| Test | Abgedeckt |
| --- | --- |
| <a href="https://codeberg.org/bschwede/linkenhancer/src/branch/main/tests/test-text-tag-collector.php" target="_blank" rel="noopener"><code>test-text-tag-collector.php</code></a>
 | Text-Tag-Collector |
| <a href="https://codeberg.org/bschwede/linkenhancer/src/branch/main/tests/test-link-classifier.php" target="_blank" rel="noopener"><code>test-link-classifier.php</code></a>
 | Link-Klassifizierer (inkl. Ziel-Extraktion) |
| <a href="https://codeberg.org/bschwede/linkenhancer/src/branch/main/tests/test-uid-tag-collector.php" target="_blank" rel="noopener"><code>test-uid-tag-collector.php</code></a>
 | UID-Tag-Collector |
| <a href="https://codeberg.org/bschwede/linkenhancer/src/branch/main/tests/test-uid-index-service.php" target="_blank" rel="noopener"><code>test-uid-index-service.php</code></a>
 | UID-Index-Service |
| <a href="https://codeberg.org/bschwede/linkenhancer/src/branch/main/tests/test-i18n-mark.php" target="_blank" rel="noopener"><code>test-i18n-mark.php</code></a>
 | i18n-Marker |
| <a href="https://codeberg.org/bschwede/linkenhancer/src/branch/main/tests/test-wthb-toc-service.php" target="_blank" rel="noopener"><code>test-wthb-toc-service.php</code></a>
 | WTHB-TOC-Service |

## PHP-Statische Analyse

```bash
npm run analyse:php      # oder: composer analyse
# PHPStan Level 6 — siehe die PHPStan-Seite
```

## Smoke-Tests (brauchen webtrees + DB)

Diese üben eine echte Installation und sind **nicht** Teil von `npm test`:

```bash
php tests/smoke-text-tag-collector.php [limit]
php tests/smoke-migration5.php
php tests/p1-measure.php [--tree=<id>]
```
