MCPInstall

typo3-testing

Use when a reported defect must be reproduced as a failing test, when a change to a template or rendered output has to be proved, when a change must be confirmed on a running TYPO3 instance, or when setting up TYPO3 extension tests: unit/functional/E2E, PHPUnit 11-13, mutation testing, final-class mocks (v14), CI matrix across TYPO3 12/13/14.3 LTS, typo3-ci-workflows meta-package, CI failures. Also: testing-framework setup, test matrix, integration/e2e testing, coverage, test generation.

Installs
53
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/netresearch/typo3-testing-skill --skill typo3-testing
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads typo3-testing automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

TYPO3 Testing Skill

A Report Becomes a Failing Test Before It Becomes a Fix

A bug report is a test that does not exist yet. Write it from the report's own input and expected output, run it, and see it fail for the reason the report gives. A test written after the fix proves only that the code does what it does.

Output produced through a template is not covered by a unit suite. The unit suite loads PHP classes and never renders a Fluid template, so an edit to a template leaves the suite green while the page is broken. Prove such a change by rendering it: a functional test that calls the rendering path and asserts the rendered string.

Read the rendered string, not the exit code. Fluid does not raise on an inline expression it cannot parse -- it emits the expression verbatim, so the markup reaches the browser with {f:if(...)} sitting inside the attribute it was written into, and a test asserting only that nothing threw will pass. When an inline expression would nest one call inside another, write it as a tag (<f:if>) or compute the value in PHP and pass it in.

Assessment-First Rule

When enhancing an existing test suite (not from scratch), run FIRST:

automated-assessment typo3-testing

Install typo3-conformance and enterprise-readiness for broader coverage.

Generates a gap report from 73+ checkpoints (PHPUnit, PHPStan, runTests.sh, architecture, mutation, CI matrix, coverage).

Use the report as the task list. Resolve mechanical failures before manual test writing.

Applies

  • "enhance/improve/strengthen tests", "increase coverage/mutation"
  • "enterprise grade", "A+ testing"

Does NOT Apply

  • From scratch, writing a specific test, debugging a failure

Test Type Selection

TypeUse WhenSpeed
UnitPure logic, no DB, validators, utilitiesFast
FunctionalDB interactions, repositories, controllersMedium
ArchitectureLayer constraints, dependency rules (phpat)Fast
E2E (Playwright)User workflows, browser, accessibilitySlow
IntegrationHTTP client, API mocking, OAuth flowsMedium
MutationTest quality, 70%+ coverageCI/Release

runTests.sh - Mandatory

Build/Scripts/runTests.sh is mandatory: executable, with -s (suite) and -p (PHP version).

Git Hooks

Netresearch default: Build/captainhook.json (declared in composer.json extra.captainhook.config). Verify: ls Build/captainhook.json .git/hooks/pre-commit (see references/captainhook-setup.md).

Commands

# Setup (run in the extension root; paths are relative to this skill)
scripts/setup-testing.sh [-a]   # -a: Codeception acceptance setup
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.

Scoring Requirements

Unit tests required (70%+ coverage). Functional tests required for DB operations. phpat required for architecture points. PHPStan level 10.

References (in 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 | framework-compat-gate.md | datahandler-silent-rewrites.md | live-instance-verification.md

Content Triggers

  • CI failures across TYPO3 versions → ci-debugging.md
  • Functional tests with TSFE context → functional-testing.md
  • Mock failures across dependency versions → mock-validity.md
  • Image/extension tests, Environment::initialize, NormalizedParams TypeError, backupGlobals → test-environment-guards.md
  • Event dispatcher testing with try/catch → event-dispatch-testing.md
  • Meta-package, typo3-ci-workflows, no-plugins → ci-workflows-meta-package.md
  • Fake secrets, push-protection, cs-fixer concat → synthetic-secret-fixtures.md
  • Burned tag, validate before tagging → release-workflow-validation.md
  • Backend module 500 / wrong ViewHelper namespace / runaway canvas → backend-module-render-verification.md
  • Non-admin BE-user access enforcement → backend-user-access-testing.md
  • Code writing through the DataHandler (agent tools, importers, API endpoints), values dropped or rewritten without an error → datahandler-silent-rewrites.md
  • Package will not install next to TYPO3 → framework-compat-gate.md
  • Confirm a change on a running instance (backend module, content element preview, frontend page, acceptance screenshot), sudo-mode dialog, module content cut off in a screenshot → live-instance-verification.md
  • Vitest with happy-dom, fast-check, legacy jQuery plugin tests, unit test or E2E spec → javascript-testing.md; Stryker → mutation-testing.md
  • No Playwright / ad-hoc browser check of an EXT:form or JS-driven page → e2e-testing.md (CDP fallback)

Links

TYPO3 Testing Docs | Tea Extension | phpat | Infection

FAQ

What does the typo3-testing skill do?

Use when a reported defect must be reproduced as a failing test, when a change to a template or rendered output has to be proved, when a change must be confirmed on a running TYPO3 instance, or when setting up TYPO3 extension tests: unit/functional/E2E, PHPUnit 11-13, mutation testing, final-class mocks (v14), CI matrix across TYPO3 12/13/14.3 LTS, typo3-ci-workflows meta-package, CI failures. Also: testing-framework setup, test matrix, integration/e2e testing, coverage, test generation.

How do I install typo3-testing?

Run npx skills add https://github.com/netresearch/typo3-testing-skill --skill typo3-testing in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/typo3-testing/ (personal) or .claude/skills/typo3-testing/ (project).

Which AI agents can use typo3-testing?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is typo3-testing safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains typo3-testing?

It is published by netresearch in netresearch/typo3-testing-skill. It has 53 recorded installs.

Popular testing & qa skills

View category →

tdd

mattpocock/skills

Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.

Testing & QA1.2M installs

grilling

mattpocock/skills

Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.

Testing & QA996.2K installs

migrate-to-shoehorn

mattpocock/skills

Migrate test files from as type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace as in tests, or needs partial test data.

Testing & QA484.1K installs

run-train

lllllllama/rigorpilot-skills

Rigor Train skill for deep learning research repositories. Use when a documented or selected training command should be run conservatively for startup verification, short-run verification, full kickoff, or resume, with command, config, seed, log, checkpoint, status, and metric evidence written to standardized trainoutputs/. Do not use for environment setup, exploratory sweeps, speculative idea implementation, or end-to-end orchestration.

Testing & QA337.8K installs

test-driven-development

obra/superpowers

Use when implementing any feature or bugfix, before writing implementation code

Testing & QA261.8K installs

Use when implementation is complete, all tests pass, and you need to decide how to integrate the work

Testing & QA216.8K installs