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 Minio Testing Tools Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Storage abstraction and S3-first architecture. If your roadmap includes file uploads, exports, document storage, or media pipelines, this package lets you validate the actual S3 driver path in tests rather than trusting a mocked Storage facade. That de-risks the decision to standardize on S3-compatible storage instead of local disk or a database blob column.
  • Vendor lock-in and portability. Because MinIO is S3-compatible, running tests against it gives you real signal on whether your code depends on AWS-specific behavior. That is directly relevant to decisions about staying on AWS S3 versus moving to MinIO, Cloudflare R2, Backblaze B2, or on-prem object storage.
  • Build vs buy for test infrastructure. The alternative is a hand-rolled MinIO container in CI, localstack, or mocking. This package is a thin trait that removes boilerplate — it turns "should we invest a sprint in a reliable object-storage test harness?" into "add a dev dependency."
  • CI cost and flakiness budgeting. Real AWS S3 in CI means credentials management, per-run spend, cross-region latency, and intermittent network failures. Running against a local MinIO server removes all four from the critical path, which is a concrete engineering-velocity decision a PM can own.
  • Feature-scoped use cases. Download/export endpoints, presigned URL generation, multipart uploads, directory listing, and storage-quota logic are all things that mocks routinely get wrong. This package supports test coverage for those specific features without a full integration environment.
  • PHP version runway. The 1.7.0 release adds PHP 8.5 support, so this stays viable if your platform-upgrade roadmap moves the fleet to PHP 8.5 within the next cycle. That removes one potential "we can't upgrade because a dev dependency blocks us" objection.
  • Not a differentiator. With ~15 stars, zero dependents, and a low opportunity score, this is a developer-productivity dependency, not a product capability. Treat it as an internal engineering choice, not something to build a roadmap narrative around.

When to Consider This Package

Adopt it when:

  • Your application already uses or is about to use Laravel's s3 filesystem driver, and you want tests that exercise real HTTP calls against an S3-compatible endpoint.
  • Your team runs PHPUnit/Pest in CI and wants object-storage tests that are hermetic, cheap, and free of cloud credentials.
  • You are evaluating or migrating to MinIO (or another S3-compatible store) and want a low-friction way to prove your code works against it before committing.
  • Your current approach is either (a) mocking Storage, which hides serialization and path bugs, or (b) hitting a shared staging bucket, which introduces flakiness and cross-test pollution.
  • Your platform roadmap includes PHP 8.5 — 1.7.0 explicitly adds support, so the dependency won't become the blocker on an upgrade.
  • The surface area you need is small — the package is a trait, so it should be easy to read, fork, or replace if it goes stale.

Look elsewhere when:

  • You are not on S3 or S3-compatible storage at all — the value proposition collapses entirely.
  • You need a broader integration-testing story (queues, databases, search, mail) and would rather standardize on one harness such as Testcontainers, Docker Compose, or Laravel Sail than add a single-purpose trait.
  • You require a vendor-backed or heavily maintained dependency. 1.7.0 is a maintenance release (Dependabot bumps, PHP 8.5 support, one first-time contributor) — a mildly positive signal that the package is not abandoned, but adoption remains thin and there is still effectively a single-maintainer bus factor. Plan for possible abandonment: pin the version and accept that inlining the trait is a reasonable fallback, given its size.
  • Your CI environment cannot run a MinIO binary or container, or your organization prohibits dynamically downloaded test binaries.
  • Your team already has a working localstack or custom MinIO setup and the migration cost exceeds the boilerplate saved.

How to Pitch It (Stakeholders)

To executives: This is a small, MIT-licensed developer tool that makes our automated tests behave more like production when it comes to file storage. It costs nothing to adopt, requires no new infrastructure contract, and removes a recurring source of "works in tests, breaks in production" bugs on upload and download features. It also keeps AWS spend and credentials out of our CI pipeline. The latest release (1.7.0) is routine maintenance — dependency bumps plus PHP 8.5 compatibility — so adopting it now also keeps us clear of a future upgrade blocker. Risk is low because the package is a thin wrapper we could absorb into our own codebase in an afternoon if needed — but it is not strategically important, so do not frame it as a platform investment.

To engineering: Add this as a dev-only dependency to run tests against a real MinIO S3 server instead of mocking the Storage facade. You get genuine coverage of presigned URLs, multipart uploads, streaming downloads, and path/mimetype handling — the exact areas mocks misrepresent. It keeps CI hermetic and credential-free. 1.7.0 contains no breaking changes or API surface additions: it adds PHP 8.5 to the support matrix and refreshes CI tooling, so bumping within the 1.x line is a low-risk, non-code-touching change. Caveats to accept up front: low adoption and a single maintainer — the 1.7.0 release shows the package is still being kept alive, but treat the trait as something we may need to vendor; and it only pays off if we are actually on the S3 driver, so confirm that before we invest in wiring it into the suite.

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.
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle