misaf/vendra-testing
Testing toolkit for Vendra-powered Laravel applications. It supplies helper traits, model factories, and custom assertions for feature and unit tests, so you can cover marketplace and e-commerce flows with less boilerplate and more readable suites.
Architecture fit
misaf/vendra monorepo, which changes the governance model entirely: issues, PRs, CI, and release tagging all live upstream. A TPM must treat misaf/vendra-testing as a published artifact, not a project with its own backlog. Any contribution or bugfix we need goes through the parent repo.Misaf\VendraTesting, reusable Pest expectations (Expectations, TranslationParity, TableSorting), provider-agnostic helpers in src/Helpers.php (tenant and user fixtures, Pennant feature state, Filament admin panel bootstrap), and architecture tests that enforce module boundaries.PackageManifestConsistencyTest and arch()->expect('Misaf\VendraTesting')->not->toUse('Misaf\VendraTenant') rule are the mechanism that stops domain modules from reaching into the concrete tenant provider. If this package rots, the boundary enforcement rots with it.misaf/vendra-support is the one sanctioned dependency (via the TenantResolver / TenantAwareness contracts), and the skill explicitly forbids concrete provider imports. self.version alignment across the Vendra package graph is a hard compatibility axis.Integration feasibility
require-dev line and a composer update. Helpers are files-autoloaded, so there is no provider to register or config to publish in the common path.setUpFilamentAdminTestContext() needs a Filament panel; makeCurrentTestTenantWithFeatures() needs Pennant; tenant helpers need a TenantResolver binding. The package degrades correctly — tenant helpers no-op and return null when tenancy is disabled — but that graceful degradation is itself a hazard: a suite can pass with tenancy off and behave differently in a tenancy-enabled configuration.Technical risk
compare/v1.11.0...v1.12.3 link. No changelog, no deprecations, no constraint-change notes. Minor bumps in test-support packages routinely alter assertion defaults, fixture shapes, and mock behaviour — "non-breaking" to the package API, outcome-flipping for our suite.require entries (misaf/vendra-support), so a transitive path into a non-dev requirement is possible and must be checked with composer why.Key questions
misaf/vendra monorepo the tracked source with a defined release cadence — or are we consuming an artifact nobody is steering?v1.11.0 → v1.12.3 in assertion defaults, fixture shapes, and composer.json constraints (PHP floor, illuminate/* range, Pest/PHPUnit major, misaf/vendra-support version)?composer why misaf/vendra-testing return anything outside require-dev?Stack fit
misaf/vendra-support contracts. No infrastructure change, no new service, no deployment artifact.Migration path
php, security, laravel) plus the not->toUse('Misaf\VendraTenant') expectation in one module. This proves the boundary rule works before anyone depends on it.createTestTenant() / createTestUser() in a single module, and delete the local duplicates. Measure diff size — if deletion is trivial, the helpers are not earning their place.setUpFilamentAdminTestContext() and makeCurrentTestTenantWithFeatures() only in modules that genuinely need Filament/Pennant, since those carry the heaviest bootstrap cost.Expectations and TranslationParity adoption until after the first CI timing comparison; custom expectations are the highest-value, lowest-risk surface and should go last only because they are the easiest to add later.Compatibility
1.11.x until the diff is read and an internal changelog entry is written. Do not float to ^1.12 in main first.composer.json between tags before running anything: PHP floor, illuminate/* range, Pest/PHPUnit major, misaf/vendra-support constraint, self.version.self.version alignment rule holds across the whole Vendra package graph — a split tag that advances vendra-testing without matching siblings is the failure mode to catch early.Sequencing
v1.11.0...v1.12.3 diff and tag annotations; author the missing changelog as an internal artifact.composer why; capture the result in the dependency register.1.11.x baseline.Maintenance
self.version aligned across the package graph.createTestTenant() or toSortByEverySortableColumn(), every helper change is a migration of our test code, invisible in planning until CI goes red.Support
Scaling
setUpFilamentAdminTestContext() in particular does a lot per test if not scoped to admin suites.Failure modes
null. Detect by running one job with tenancy enabled.Ramp-up
How can I help you explore Laravel packages today?