protonemedia/laravel-minio-testing-tools
Testing helpers for Laravel that make it easy to use MinIO, the S3-compatible object storage server, in your test suite. Spin up buckets, configure filesystem disks, and assert file uploads without touching real AWS S3, keeping tests fast, isolated, and repeatable.
Architecture fit
require-dev): zero production surface, no autoload cost in deployed artifacts, no runtime coupling, no new attack surface. Still the single strongest point in its favor.league/flysystem-aws-s3-v3.Storage::fake() does not exercise actual S3 protocol behavior (multipart uploads, presigned URLs, HeadObject, ETag/part semantics, 404-vs-403 error shapes). This closes that gap cheaply.Integration feasibility
composer require --dev, add the trait to the base TestCase, publish/adjust config. Half a day to a first green test.Technical risk
@realpascalbotjet, first contribution) is a marginal positive for bus factor, but a single PHP-matrix PR is not a co-maintainer commitment.Key questions
@protonemedia, and what does issue response (not commit cadence) look like over the last 12 months? Commit cadence is now demonstrably automated; issue responsiveness remains unmeasured.Stack fit
^1.7.Migration path
Storage::fake() only in the subset of tests that genuinely depend on S3 semantics. Do not swap out Storage::fake() wholesale — keep it for the majority of tests that only need the facade.Compatibility
RefreshDatabase/DatabaseTransactions. Confirm it coexists with other container-booting traits (testcontainers-based DB traits), since multiple containers per process hit runner resource limits fast.composer.json constraint, do not infer from release notes.Sequencing
^1.7.Maintenance
Support
Scaling
Failure modes
composer.json; a routine composer update in an unrelated repo could break the suite. Pin and review diffs on the dependency manifest, not just the changelog.Ramp-up
Recommendation: adopt behind the gate above, pinning ^1.7 if we are on PHP 8.5. 1.7.0 is a non-event for integration risk — no breaking changes, no new capability, no deprecations — but it does confirm active (if largely automated) CI upkeep and widens the PHP matrix. It does not change the core judgment: low-cost, low-risk fix for a genuine testing gap, with 0 dependents and a thin wrapper scope, so treat it as disposable — prove the CI story first, pin everything, and keep the DIY fallback documented. No re-review required until a release touches the public API, config schema, or default MinIO image tag — or until the quarterly Laravel-major bump.
How can I help you explore Laravel packages today?