About functional-tests
A Symfony testing skill for checking HTTP endpoints, services, repositories, and key URLs. It helps select test classes and lays out authentication, database isolation, and response assertions.
Key features
- 01Choose HTTP, kernel, or unit tests
- 02Test endpoints and rendered DOM
- 03Authenticate with loginUser()
- 04Isolate database tests and fixtures
- 05Add URL smoke tests
Use cases
- 01Checking controller responses and forms
- 02Testing services against a real database
- 03Covering authenticated routes
- 04Adding smoke tests for key URLs
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ dev-toolings/ superpowers-symfony --skill functional-testsAfter installing, type/functional-testsin Claude Code to confirm it loaded.
Bundled filesreference.md
Details
From the project READMEFunctional Tests (Symfony)
Use when
- A controller or HTTP endpoint must be checked through the kernel: status, redirect, rendered DOM, form errors, emails.
- A repository or service must be tested against the real database with
KernelTestCase. - An authenticated or role-restricted route needs coverage via
loginUser(). - Key URLs need cheap smoke tests.
Default workflow
- Choose the base class:
WebTestCasefor HTTP,KernelTestCasefor services, plainTestCasefor pure logic. - Call
static::createClient()directly (neverbootKernel()first) and read private services withstatic::getContainer(). - Authenticate with
$client->loginUser($user)instead of replaying the login form. - Assert the response and the DOM:
assertResponseIsSuccessful(),assertResponseRedirects(),assertSelectorTextContains(),assertEmailCount(). - Isolate tests with the DAMADoctrineTestBundle
PHPUnitExtension, plus Foundry reset for fixtures. - Add smoke tests with a data provider and hardcoded URLs.
Guardrails
- Use the real database and real repositories; do not mock the EntityManager or repositories in data-touching tests.
- Invalid form submissions assert 422 with
assertResponseIsUnprocessable()(Symfony 8.0+ behavior). .env.localis not loaded in the test environment: use.env.testor.env.test.local.assertSessionHasFlashMessage()requires Symfony 8.1+.
Progressive disclosure
- Use this file for execution posture and risk controls.
- Open references when deep implementation details are needed.
Output contract
- Test classes with the base class chosen for each.
- The authentication and database isolation strategy.
- Status codes, DOM assertions and smoke URLs covered.
References
reference.md
Comments
Markdown supported