TYPO3 extension testing (unit, functional, E2E, architecture, mutation). Use when setting up test infrastructure, writing tests, or configuring CI/CD.
When enhancing an existing test suite (not from scratch), run FIRST:
automated-assessment typo3-testing
Install other skills (e.g.
typo3-conformance,enterprise-readiness) for broader coverage.
Generates a gap report from 73+ checkpoints (PHPUnit, PHPStan, runTests.sh, CaptainHook, architecture, mutation, CI matrix, coverage).
Use the report as the task list. Resolve mechanical failures before manual test writing.
References for TYPO3 extension testing.
| 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 |
Build/Scripts/runTests.sh is mandatory. Must be executable, support -s (suite) and -p (PHP version).
Netresearch default: Build/captainhook.json (declared in composer.json extra.captainhook.config). Verify: ls Build/captainhook.json .git/hooks/pre-commit 2>/dev/null (see references/captainhook-setup.md).
# Setup (from skill dir)
scripts/setup-testing.sh [--with-e2e]
scripts/validate-setup.sh
scripts/generate-test.sh <Type> <Class>
# Run (always via runTests.sh)
Build/Scripts/runTests.sh -s unit|functional|phpstan|cgl|mutation|ci
Verify tests fail before fix, pass after. Bug fixes use the strict TDD loop in references/tdd-discipline.md — no "tested/verified" claims without pasted output.
Unit tests required (70%+ coverage). Functional tests required for DB operations. phpat required for architecture points. PHPStan level 10.
references/, .md implied)unit-testing.md | functional-testing.md | functional-test-patterns.md | integration-testing.md | e2e-testing.md | accessibility-testing.md | ddev-testing.md | test-runners.md | architecture-testing.md | ci-debugging.md | ci-cd.md | quality-tools.md | mutation-testing.md | fuzz-testing.md | performance-testing.md | typo3-v14-final-classes.md | mock-validity.md | javascript-testing.md | captainhook-setup.md | enforcement-rules.md | event-dispatch-testing.md | crypto-testing.md | test-environment-guards.md | sonarcloud.md | typo3-ci-config-patterns.md | tdd-discipline.md | ci-workflows-meta-package.md | synthetic-secret-fixtures.md | release-workflow-validation.md | asset-templates-guide.md | backend-module-render-verification.md | backend-user-access-testing.md
ci-debugging.mdfunctional-testing.mdmock-validity.mdEnvironment::initialize, NormalizedParams TypeError, backupGlobals → test-environment-guards.mdevent-dispatch-testing.mdci-workflows-meta-package.mdsynthetic-secret-fixtures.mdrelease-workflow-validation.mdbackend-module-render-verification.mdbackend-user-access-testing.mdTYPO3 Testing Docs | Tea Extension | phpat | Infection
This skill is based on the excellent work by Netresearch DTT GmbH.
Original repository: https://github.com/netresearch/typo3-testing-skill
Copyright (c) Netresearch DTT GmbH — Methodology and best practices (MIT / CC-BY-SA-4.0)
Special thanks to Netresearch DTT GmbH for their generous open-source contributions to the TYPO3 community, which helped shape this skill collection. Adapted by webconsulting.at for this skill collection
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer