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

Laravel E2E Routes Laravel Package

canvural/laravel-e2e-routes

Expose your Laravel routes to end-to-end test suites. Generates a JSON route manifest so Cypress, Playwright, or Dusk tests can resolve named routes and URLs without hardcoding paths, with an artisan command and configurable filtering to keep sensitive routes out.

View on GitHub
Deep Wiki
Context7

Getting Started

  • Confirm what you actually installed before reading any docs: composer show vendor/package for the version, Laravel/PHP constraints, and whether the tag is a real 1.0.0 or a dev- branch alias. On a "v1.0.0 — Initial release," the tag is a promise, not evidence.
  • Read in this order: README install block → the package's ServiceProvider (what is bound, what is auto-discovered, what is publishable) → config/*.php (the real public API surface) → migrations/routes/views → tests/ (the best documentation a v1.0.0 has).
  • Publish only what you intend to own, and use tags so you don't drag in scaffolding:
php artisan vendor:publish --provider="Vendor\Package\PackageServiceProvider" --tag=config
  • Verify discovery before you debug anything else:
php artisan about
php artisan package:discover --ansi
php artisan config:clear
  • First use case: pick the single smallest thing the package does — one repository call, one facade call, one Blade component — and prove it end-to-end in a feature test. Tinker is for exploring, not for confirming the integration.

Implementation Patterns

  • Resolve from the container, never new the class. At v1.x, the concrete class name is the most likely thing to change:
public function __construct(private Vendor\Package\Contracts\Client $client) {}
  • Keep your binding and package-specific configuration in a dedicated application provider, so an upgrade touches one file:
// app/Providers/PackageServiceProvider.php
public function register(): void
{
    $this->app->when(ReportGenerator::class)
        ->needs(Client::class)
        ->give(fn () => new Client(config('services.package.key')));
}
  • Prefer config/services.php (env-backed) over editing the published package config for credentials, so config:cache in deploy stays predictable. Leave the published file for behavioural defaults you want to override explicitly.
  • Wrap thin: one adapter class per package capability (App\Support\Billing) that your app depends on instead of the vendor namespace. Replacing the dependency then becomes a one-file change.
  • Testing: bind a fake rather than reaching the network. Use the package's own fake if shipped; otherwise bind an interface plus Http::fake():
$this->app->instance(Client::class, new FakeClient());
  • If the package ships jobs or scheduled work, give them their own queue connection via config, so a slow third-party API can't back up your default queue.
  • Put the first production integration behind a feature flag and decorate the client with a logging decorator for the first week — you want a record of calls before you have an opinion about them.

Gotchas and Tips

  • v1.0.0 means "first public contract," not "stable." Pin tightly ("vendor/package": "1.0.*") until you've read a 1.1 changelog; pre-2.0 semver permits renames and signature changes.
  • Auto-discovery caches bite after every composer update: run php artisan package:discover locally, and in deploy run composer install --no-dev then config:cache → route:cache → view:cache in that order.
  • Published config drifts. Treat the published file as yours, diff it against vendor/.../config/*.php before each minor bump, and commit the diff deliberately.
  • Defaults are dev-friendly, not prod-friendly. Grep the source for timeout, retry, debug, log_payload, sandbox, and base URLs — these are the values that fail in production at 3am.
  • Migrations: distinguish loadMigrationsFrom (package-owned, never edit) from published migrations (yours, own them). Mixing the two is the classic v1 upgrade wound.
  • Debugging blind: dump the actual container resolution (app(Vendor\Package\Client::class)) to see the real concrete class, and log inside your decorator. v1 packages rarely log usefully on their own.
  • Check extension points before considering a fork: events dispatched, Macroable, an injectable HTTP client/transport, or an interface resolved from config. If none exist and you need customisation, open an upstream issue early — private forks become maintenance debt fast.
  • If it ships a facade, don't lean on Facade::shouldReceive() to make tests pass — it hides binding errors that will surface in production. Use constructor injection in app code and reserve the facade for views and throwaway scripts.
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.
robertmarney/lara-hierarchial-collections
simonschaufi/rule-doc-generator
emissaoja/emissaoja
blackbricksoftware/gravityforms-civicrm-form-processor
al-rahabi/fancy-crud
jinas/dhivatar-component
mltstephane/laravel-quality
bernskiold/laravel-talentlms
bernskioldmedia/laravel-form-architect
youbar/easy-crud
c-point-labs/laravel-hostyourai
dbravoan/dbcms-admin-theme-dbcms
dbravoan/dbcms-theme-db-cyber
dbravoan/dbcms-blocks-basic
dbravoan/dbcms-module-content-audit
dbravoan/dbcms-module-ai-assistant
paygate-to/paygate-php
padosoft/askmydocs-connector-base
defstudio/supercharged-carbon
bernskioldmedia/laravel-matomo