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

Performance Extension Laravel Package

friends-of-behat/performance-extension

FriendsOfBehat PerformanceExtension adds performance monitoring to Behat, measuring scenario runtimes and enforcing time limits so slow tests or regressions fail early. Useful for PHP teams wanting performance checks alongside behavioral tests.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Developer feedback loop as a roadmap item. Behat acceptance suites are often the slowest gate in a Laravel pipeline. This package targets per-run bootstrap overhead (recompiling/rebuilding the Behat container and extension graph on every invocation), which is exactly the fixed cost that makes a 10-second smoke suite take 90 seconds. A PM can use it to frame "test cycle time" as a measurable product metric rather than a vague engineering complaint.
  • CI spend and build-minutes optimization. If Behat runs on every push and every PR, bootstrap overhead is multiplied by concurrency and branch count. A before/after measurement gives a defensible cost-reduction line item for platform/DevEx investment.
  • Build vs. buy vs. fork. This is a small, MIT-licensed, single-purpose layer over Behat. It is the cheapest possible "buy," but it is archived with no dependents, so the real decision is adopt, fork-and-vendor, or solve differently (parallel execution, selective suite runs, container warm-up, or migrating to Pest/PHPUnit feature tests).
  • Legacy migration sequencing. Because it only pays off on newer PHP runtimes, it interacts with the PHP upgrade roadmap: is the team upgrading PHP to make Behat tolerable, or deprecating Behat so the PHP upgrade stands alone? That ordering decision belongs on the roadmap.
  • Acceptance-test strategy for Laravel. Most Laravel product teams standardize on Pest/PHPUnit + HTTP tests or Dusk; Behat implies a BDD commitment with its own maintenance cost. This package is a useful forcing function to ask whether that commitment is still earning its keep.
  • Risk register entry. Archived since 2016, zero dependents, low package-health score — adopting it creates an ownership obligation even though the code footprint is tiny.

When to Consider This Package

Consider it only when all of the following hold:

  • You already run Behat (not PHPUnit/Pest) as a meaningful part of your Laravel test strategy.
  • You are on PHP 7+, the runtime the extension was built for; older PHP is out of scope.
  • Profiling shows the bottleneck is per-run bootstrap/container construction, not scenario execution, DB setup, or browser driving. Measure first — if bootstrap is 5% of runtime, this cannot help.
  • You accept that you are adopting unmaintained code and are prepared to pin and vendor it, or fork it into your own namespace with a named owner.

Look elsewhere when:

  • You are starting fresh on Laravel. Use Pest/PHPUnit feature tests or Dusk; the Behat ecosystem's momentum has moved on.
  • Your pain is scenario count, not startup. Parallelization, sharding, tagged suite selection, or reducing browser-driven scenarios are the higher-leverage levers.
  • You need supported, patched dependencies — security and compatibility review on an archived 2016 package will fail most procurement or audit gates.
  • You want an "official" solution: Behat's own configuration, a maintained container-caching approach, or Opcache/preloading wins are more durable.
  • The team cannot absorb the upgrade cliff: the extension's assumptions about PHP internals are a decade old, and compatibility with current Behat/ Symfony versions is unverified.

How to Pitch It (Stakeholders)

For executives (one paragraph + ask): We have a recurring drag on delivery speed: our acceptance-test suite has a fixed startup cost that repeats on every CI run. A small, MIT-licensed community extension can cut that startup cost. It is free, tiny, and reversible — but it is also archived, has no downstream users, and has not been touched since 2016, so it comes with an ownership burden we would have to accept ourselves. Recommendation: do not adopt it as a dependency. Instead, spend half a sprint measuring where our test time actually goes, then choose between cheap configuration/parallelization wins and a funded migration of acceptance tests to our standard framework. Ask: approve a two-week measurement spike with a go/no-go on the migration at the end.

For engineering leads (framing):

  • It is a performance shim for Behat's bootstrap path, exploiting newer PHP capabilities. Scope is narrow and the blast radius is small.
  • Verify compatibility against our pinned Behat and Symfony versions before doing anything else; a 2016 package will likely need patching.
  • If we trial it: time behat cold and warm, before and after, on the same hardware and the same suite, three runs each. Report bootstrap time and total wall-clock separately.
  • If it wins, vendor it into app/../support or a private fork with a named maintainer and a removal ticket, so its archived status does not silently become permanent.
  • If it does not win — the likely outcome — we have bought a credible number for the "migrate off Behat" business case, which is a better deliverable than the speedup.

Positioning statement: Low-cost, low-risk experiment with a credible exit; not a strategic dependency and not a substitute for fixing test strategy.

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.
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core