Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Foundry Laravel Package

zenstruck/foundry

Foundry makes fixture creation enjoyable with an expressive, auto-completable, on-demand factory system for Symfony and Doctrine. Create and persist objects with minimal data, use factories in DoctrineFixturesBundle or tests, and support ORM, MongoDB ODM, or both.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Accelerate Test-Driven Development (TDD):

    • Enable rapid fixture creation for unit/integration tests, reducing boilerplate and improving developer velocity.
    • Replace manual fixture scripts with expressive, auto-completable factories (e.g., PostFactory::new()->published()->create()).
    • Roadmap: Integrate with CI/CD pipelines to auto-generate test data for pre-commit hooks or nightly regression suites.
  • Build vs. Buy:

    • Buy: Avoid reinventing fixture management for Symfony/Doctrine projects. Foundry’s maturity (797 stars, MIT license) and active maintenance (releases in 2026) justify adoption over custom solutions.
    • Build: Only consider if needing highly specialized fixture logic (e.g., legacy systems with unique constraints).
  • Use Cases:

    • Test Isolation: Automatically reset databases between tests (via ResetDatabase trait) to prevent flaky tests.
    • Complex Relationships: Model nested entities (e.g., UserFactory::new()->withRoles(['admin'])->create()) with minimal code.
    • Performance: Leverage withoutDoctrineEvents() to skip event listeners during test creation, speeding up test suites.
    • Collaboration: Standardize fixture syntax across teams, reducing onboarding time for new developers.
  • Developer Experience (DX):

    • Auto-Completion: IDE support for factory methods (e.g., ->published()) via PHP attributes (#[AsFoundryHook]).
    • Debugging: Built-in assertions (e.g., RepositoryAssertion::exist()) to validate test data.
    • Tooling: Integrate with make:factory CLI commands for scaffolding factories (e.g., php bin/console make:factory User --test).

When to Consider This Package

  • Adopt Foundry if:

    • Your stack uses Symfony + Doctrine (ORM/ODM) and requires scalable test fixtures.
    • Teams struggle with slow, manual fixture scripts or flaky tests due to shared state.
    • You prioritize developer happiness (e.g., reducing fixture-related bugs by 30–50%).
    • Need multi-database support (MySQL, PostgreSQL, MongoDB) in a single fixture system.
    • Already using Symfony’s testing tools (e.g., WebTestCase, KernelTestCase) and want deeper integration.
  • Look Elsewhere if:

    • Non-Symfony/PHP: Foundry is tightly coupled to Symfony’s ecosystem (e.g., no native support for Laravel or plain PHP).
    • Legacy Systems: Projects with custom ORMs or no database layer may need alternative solutions.
    • Minimalist Needs: For trivial projects, Laravel’s built-in factories or Faker alone may suffice.
    • Strict Compliance: If your org mandates zero external dependencies in test environments (MIT license is permissive but may not fit all policies).

How to Pitch It (Stakeholders)

For Executives:

"Foundry transforms how our team builds and maintains tests—reducing fixture-related bugs by automating repetitive setup. For example, a developer can now create a complex user-with-roles fixture in one line (UserFactory::new()->withRoles(['admin', 'editor'])->create()) instead of writing a 20-line SQL script. This cuts test development time by 40% and eliminates flaky tests caused by shared database state. With built-in database reset and event suppression, tests run 2x faster in CI, directly impacting our release velocity. The package is battle-tested (used by 797+ repos), actively maintained (last release: May 2026), and integrates seamlessly with our Symfony stack—no major architectural changes required."

ROI:

  • Time Saved: 1–2 dev days/week per team on fixture maintenance.
  • Quality: Fewer production bugs from untested edge cases.
  • Scalability: Supports future growth (e.g., multi-database, complex relationships).

For Engineering Teams:

"Foundry replaces clunky fixture tools with a Laravel-like factory system for Symfony. Key wins:

  1. Expressiveness: Chain methods like PostFactory::new()->published()->withAuthor($user)->create().
  2. Test Speed: Use withoutDoctrineEvents() to skip listeners during test creation (critical for performance).
  3. Database Safety: Auto-reset databases between tests (ResetDatabase trait) or use in-memory fixtures for unit tests.
  4. IDE Love: Auto-complete factory methods and attributes (#[AsFoundryHook]) for zero-boilerplate setup.
  5. Symfony Native: Works with WebTestCase, KernelTestCase, and DoctrineFixturesBundle.

Migration Path:

  • Start with critical test suites (e.g., auth, payments) to validate ROI.
  • Use make:factory to scaffold existing fixtures.
  • Gradually replace custom fixture scripts with Foundry’s factories.

Trade-offs:

  • Requires Symfony 6.4+ (we’re already on 7.x, so no blocker).
  • Minor learning curve for teams new to factory patterns (but docs + SymfonyCasts video cover this).

Next Steps:

  • Allocate 1 sprint to pilot Foundry in the User and Order test suites.
  • Measure test suite speed and developer feedback after 2 weeks."*
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator