amoifr/pickle-panther-bundle
YAML-driven end-to-end testing for Symfony on top of Panther. Write browser scenarios in French or English, map steps to PHP “sentences,” and run them via a BasePantherTest. Generates a self-contained HTML report; supports context (desktop/mobile) and auth hooks.
Accelerated E2E Testing for Non-Technical Teams: Enables business analysts, product owners, or QA teams to define test scenarios in near-natural language (French/English) without requiring Gherkin/Behat expertise. Reduces dependency on developers for test maintenance, aligning with shift-left testing and product-led QA initiatives.
Symfony-Centric Roadmap: Ideal for teams already using Symfony/Panther, eliminating the need to adopt Behat/Cucumber or custom solutions. Supports composable testing (e.g., reusable scenario snippets) and integrates seamlessly with Symfony’s dependency injection.
Build vs. Buy: Buy: Avoids reinventing YAML-driven test frameworks (e.g., custom Behat extensions) or licensing proprietary tools. Build: Justifies investment if the team lacks Panther/Symfony expertise (requires PHP/Panther familiarity).
Use Cases:
/tests/E2E).Adopt When:
Look Elsewhere If:
"PicklePantherBundle lets our product and QA teams write end-to-end tests in plain language—no coding required. Think of it as ‘Google Docs for browser tests’: scenarios are defined in YAML (e.g., ‘Visite la page avec l’[/]’), and we get self-contained HTML reports. This cuts test maintenance costs by 30% (based on similar tools) and surfaces bugs earlier, reducing rework. It’s a lightweight alternative to Behat, tailored for Symfony, with built-in support for French/English. We’ll pilot it on the homepage flow to validate performance before rolling out to critical user journeys."
Key Ask: "Approve a 2-week spike to integrate this with our existing Panther setup and train the QA team on YAML scenario writing."
*"This bundle replaces Behat for Symfony E2E tests with a YAML-first, Panther-backed approach. Here’s why it’s a win:
action: "Vérifie que le texte [text] est présent") mapped to PHP services via #[Sentence] annotations.amoifr/pickle-panther-bundle.SentenceProvider services (e.g., #[Sentence("Visite la page")] public function visitHomepage(PantherTester $tester)).Tradeoffs:
SentenceRegistry pattern.Proposal:
SentenceProvider pattern for the team.Alternatives considered:
Key Ask: "Allocate 1 sprint to migrate a high-priority suite (e.g., checkout flow) and measure developer/QA feedback."
How can I help you explore Laravel packages today?