typo3-testing · git:20260327.4812567 · 2026-03-27 · sha256 cad050c8ec5c48e9

typo3-testing git:20260327.4812567A

Immutable. This exact content never changes and is served at /api/v1/blob/cad050c8ec5c48e9.

---
name: typo3-testing
description: "Use when setting up TYPO3 extension test infrastructure, writing unit/functional/E2E tests, configuring PHPUnit, mutation testing, mocking, CI/CD test pipelines, or debugging CI failures. Also triggers on: ensure proper testing, test matrix, integration testing, e2e testing, coverage, test generation."
---

# TYPO3 Testing Skill

Scripts and references for TYPO3 extension testing.

## Test Type Selection

| Type | Use When | Speed |
|------|----------|-------|
| **Unit** | Pure logic, no DB, validators, utilities | Fast |
| **Functional** | DB interactions, repositories, controllers | Medium |
| **Architecture** | Layer constraints, dependency rules (phpat) | Fast |
| **E2E (Playwright)** | User workflows, browser, accessibility | Slow |
| **Integration** | HTTP client, API mocking, OAuth flows | Medium |
| **Mutation** | Test quality verification, 70%+ coverage | CI/Release |

## runTests.sh - Mandatory

**`Build/Scripts/runTests.sh` is mandatory** for all Netresearch TYPO3 extensions. It must be executable and support `-s` (suite) and `-p` (PHP version) flags. CI and local dev must use this script or the same `.Build/bin/` tool paths.

## Git Hooks

Verify: `ls captainhook.json .git/hooks/pre-commit 2>/dev/null || echo "Run: composer install"` (see `references/captainhook-setup.md`)

## Setup and Running Tests

```bash
# Setup
<skill-dir>/scripts/setup-testing.sh [--with-e2e]   # Initialize testing
<skill-dir>/scripts/validate-setup.sh               # Validate existing setup
<skill-dir>/scripts/generate-test.sh <Type> <Class> # Generate test file

# Run tests (always via runTests.sh)
Build/Scripts/runTests.sh -s unit          # Unit tests
Build/Scripts/runTests.sh -s functional    # Functional tests
Build/Scripts/runTests.sh -s phpstan       # Static analysis
Build/Scripts/runTests.sh -s cgl           # Coding guidelines
Build/Scripts/runTests.sh -s mutation      # Mutation testing
Build/Scripts/runTests.sh -s ci            # Full CI suite
```

After modifying a test, **always verify** it fails before the fix and passes after.

## Scoring Requirements

| Criterion | Requirement |
|-----------|-------------|
| Unit tests | Required, 70%+ coverage |
| Functional tests | Required for DB operations |
| Architecture tests | **phpat required** for full points |
| PHPStan | Level 10 (max) |

## References

| Reference | Topic |
|-----------|-------|
| `unit-testing.md` | UnitTestCase, mocking, FakeClock |
| `functional-testing.md` | FunctionalTestCase, CSV fixtures, **TSFE limitations** |
| `functional-test-patterns.md` | PHPUnit 10+ migration, container reset |
| `integration-testing.md` | PSR-18 mocking, OAuth flows |
| `e2e-testing.md` | Playwright, Page Object Model |
| `ddev-testing.md` | Local multi-version matrix |
| `test-runners.md` | runTests.sh, Docker orchestration |
| `architecture-testing.md` | phpat, layer constraints |
| `ci-debugging.md` | **Multi-version CI failure analysis** |
| `ci-cd.md` | GitHub Actions, GitLab CI |
| `quality-tools.md` | PHPStan, PHP-CS-Fixer, Rector |
| `mutation-testing.md` | Infection, MSI |
| `typo3-v14-final-classes.md` | Interface extraction, mock strategies |
| `javascript-testing.md` | Jest, frontend testing |
| `captainhook-setup.md` | CaptainHook git hooks for TYPO3 |
| `enforcement-rules.md` | E2E CI rules, troubleshooting |

All references in `references/` directory.

### Explicit Content Triggers

For CI test failures across TYPO3 versions, load `references/ci-debugging.md`.

For functional tests with frontend context (parseFunc, typoLink, TSFE), load `references/functional-testing.md`.

## External Resources

- [TYPO3 Testing Documentation](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/Testing/)
- [Tea Extension](https://github.com/TYPO3BestPractices/tea) (reference implementation)
- [phpat documentation](https://github.com/carlosas/phpat)
- [Infection PHP documentation](https://infection.github.io/)
- [DDEV documentation](https://ddev.readthedocs.io/)

---

> **Contributing:** https://github.com/netresearch/typo3-testing-skill