mcpField
T
typo3-testing

typo3-testing

github.com/netresearchテスト・品質553 回インストール2 日前に更新
リポジトリ

typo3-testing について

TYPO3 プロジェクトのテストを保守・拡張する開発者向けのスキルです。報告された不具合を失敗するテストにし、実際のレンダリング結果を確認する手順と、複数のテスト種別に関する資料を提供します。

主な機能

  1. 01不具合報告からテストを作成
  2. 02Fluid のレンダリング結果を検証
  3. 03テスト種別の選択ガイド
  4. 04runTests.sh の実行要件
  5. 05TYPO3 テストの参考資料

活用シーン

  1. 01修正前に報告済みの不具合を再現
  2. 02Fluid テンプレートの変更を検証
  3. 03既存テストスイートを評価
  4. 04DB やブラウザー動作に適したテストを選択

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/typo3-testingを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
.php-cs-fixer.dist.php
AGENTS.md
bootstrap.php
codecov.yml
FunctionalTests.xml
FunctionalTestsBootstrap.php
github-actions-e2e.yml
github-actions-tests.yml
infection.json5
Makefile
phpat.neon
assets/Build/playwright/
.nvmrc
package.json
playwright.config.ts
assets/Build/playwright/tests/playwright/
config.ts
assets/Build/playwright/tests/playwright/accessibility/
modules.spec.ts
assets/Build/playwright/tests/playwright/e2e/
backend-module.spec.ts
assets/Build/playwright/tests/playwright/fixtures/
setup-fixtures.ts
assets/Build/playwright/tests/playwright/helper/
login.setup.ts
assets/Build/Scripts/
runTests.sh
assets/docker/
codeception.yml
docker-compose.yml
assets/example-tests/
ExampleAcceptanceCest.php
ExampleFunctionalTest.php
ExampleUnitTest.php
assets/fixtures/
be_users.csv
pages.csv
README.md
sys_category.csv
tt_content.csv

詳細

TYPO3 テストスキル

修正する前に、報告内容を失敗するテストにする

バグ報告は、まだ存在しないテストです。報告に記載された入力と期待される出力を使ってテストを書き、実行して、報告にある理由で失敗することを確認します。修正後に書いたテストで証明できるのは、コードがそのとおりに動作することだけです。

テンプレートを通じて生成される出力は、ユニットテストスイートではカバーされません。 ユニットテストスイートは PHP クラスを読み込みますが、Fluid テンプレートはレンダリングしません。そのため、テンプレートを編集してもテストスイートは成功したまま、ページは壊れていることがあります。このような変更は、レンダリングして検証してください。レンダリング経路を呼び出し、レンダリングされた文字列をアサートする機能テストを使います。

終了コードではなく、レンダリングされた文字列を確認してください。Fluid は解析できないインライン式でエラーを発生させず、その式をそのまま出力します。そのため、記述された属性内に {f:if(...)} が残ったマークアップがブラウザーに渡されます。「何も例外が発生しなかったこと」だけをアサートするテストは成功してしまいます。インライン式で別の呼び出しを入れ子にする必要がある場合は、タグ(<f:if>)として記述するか、PHP で値を計算して渡してください。

評価を最初に行うルール

既存のテストスイートを強化する場合(一から作成する場合ではありません)は、まず次を実行します。

automated-assessment typo3-testing

より広範なカバレッジを得るには、typo3-conformance と enterprise-readiness をインストールしてください。

73 以上のチェックポイント(PHPUnit、PHPStan、runTests.sh、アーキテクチャ、ミューテーション、CI マトリックス、カバレッジ)からギャップレポートを生成します。

レポートをタスクリストとして使用します。 手動でテストを書く前に、機械的に解決できる失敗を解消してください。

適用対象
  • 「テストを強化/改善/堅牢化する」、「カバレッジ/ミューテーションを増やす」
  • 「エンタープライズグレード」、「テストで A+ を目指す」
適用対象外
  • 一から作成する場合、特定のテストを書く場合、失敗をデバッグする場合

テスト種別の選択

種別使用する場面速度
ユニット純粋なロジック、DB なし、バリデーター、ユーティリティ高速
機能DB 操作、リポジトリー、コントローラー中速
アーキテクチャレイヤー制約、依存関係ルール(phpat)高速
E2E(Playwright)ユーザーワークフロー、ブラウザー、アクセシビリティ低速
統合HTTP クライアント、API モック、OAuth フロー中速
ミューテーションテスト品質、70% 以上のカバレッジCI/リリース

runTests.sh - 必須

Build/Scripts/runTests.sh は必須です。実行可能であり、-s(スイート)と -p(PHP バージョン)を指定できるようにしてください。

Git フック

Netresearch のデフォルトは Build/captainhook.json です(composer.json の extra.captainhook.config で宣言されています)。次のコマンドで確認してください:ls Build/captainhook.json .git/hooks/pre-commit(references/captainhook-setup.md を参照)。

コマンド

# 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

修正前にテストが失敗し、修正後に成功することを確認してください。バグ修正では、references/tdd-discipline.md に記載された厳格な TDD サイクルに従います。出力を貼り付けずに「テスト済み」「検証済み」と主張してはいけません。

スコア要件

ユニットテストは必須です(カバレッジ 70% 以上)。DB 操作には機能テストが必須です。アーキテクチャのポイントには phpat が必須 です。PHPStan のレベルは 10 です。

参考資料(references/ 内、拡張子 .md は省略)

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

コンテンツのトリガー
  • TYPO3 のバージョン間で CI が失敗する → ci-debugging.md
  • TSFE コンテキストを使用する機能テスト → functional-testing.md
  • 依存関係のバージョン間でモックが失敗する → mock-validity.md
  • 画像/拡張機能のテスト、Environment::initialize、NormalizedParams の TypeError、backupGlobals → test-environment-guards.md
  • try/catch を使ったイベントディスパッチャーのテスト → event-dispatch-testing.md
  • メタパッケージ、typo3-ci-workflows、no-plugins → ci-workflows-meta-package.md
  • 偽のシークレット、push-protection、cs-fixer の連結 → synthetic-secret-fixtures.md
  • タグを誤って付けた、タグ付け前に検証する → release-workflow-validation.md
  • バックエンドモジュールの 500 エラー/誤った ViewHelper 名前空間/暴走するキャンバス → backend-module-render-verification.md
  • 管理者以外の BE ユーザーのアクセス制御 → backend-user-access-testing.md
  • DataHandler を介したコードの書き込み(エージェントツール、インポーター、API エンドポイント)で、エラーがないまま値が破棄または書き換えられる → datahandler-silent-rewrites.md
  • TYPO3 と一緒にパッケージをインストールできない → framework-compat-gate.md
  • 稼働中のインスタンスで変更を確認する(バックエンドモジュール、コンテンツ要素のプレビュー、フロントエンドページ、受け入れテストのスクリーンショット)、sudo モードのダイアログ、スクリーンショットでモジュールのコンテンツが途切れる → live-instance-verification.md
  • happy-dom を使った Vitest、fast-check、レガシー jQuery プラグインのテスト、単体テストまたは E2E 仕様 → javascript-testing.md、Stryker → mutation-testing.md
  • Playwright を使わない/EXT:form または JavaScript で動作するページを場当たり的にブラウザーで確認する → e2e-testing.md(CDP による代替)

リンク

TYPO3 Testing Docs | Tea Extension | phpat | Infection

コメント