Weave Code
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

Repeat Laravel Package

testo/repeat

Testo repeat policy plugin. Re-runs a test multiple times in a single run to surface flaky behavior, catch intermittent regressions, and verify consistent results. Opt-in per test or per test class and works alongside other Testo plugins.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Flaky Test Mitigation: Proactively identify and address intermittent test failures in CI/CD pipelines, reducing false positives and improving test reliability. Directly supports quality gates for releases by ensuring deterministic test outcomes.
  • Regression Verification: Validate critical operations (e.g., API endpoints, database transactions) for consistency across repeated executions, critical for financial systems, healthcare, or high-availability services.
  • Test Suite Optimization: Decouple test execution logic from flakiness detection, enabling teams to prioritize stable assertions while leveraging the plugin for robustness. Aligns with shift-left testing by catching issues earlier.
  • Roadmap for Testo Ecosystem: Strengthens the Testo framework’s extensibility, enabling future integration with plugins like retry mechanisms, parallel testing, or distributed execution. Supports a modular testing strategy for PHP/Laravel teams.
  • Build vs. Buy Decision: Buy—avoids reinventing repeat-testing logic, with minimal maintenance cost due to Testo’s active development. Ideal for teams already invested in Testo or evaluating it as a PHPUnit alternative.
  • Use Cases:
    • Pre-release CI pipelines: Run critical tests 2–5 times to catch flakiness before deployment.
    • Stress-testing edge cases: Detect race conditions or external API dependencies (e.g., payment gateways, third-party services).
    • Idempotency validation: Ensure operations like cache invalidation, payment processing, or data migrations behave consistently.
    • Legacy system testing: Mitigate flakiness in monolithic PHP/Laravel apps where test stability is a known bottleneck.

When to Consider This Package

  • Adopt if:
    • Your team uses Testo (or is evaluating it as a PHPUnit replacement) and needs repeat-testing capabilities.
    • Flaky tests are a critical pain point (e.g., >5% of test failures are intermittent, causing CI noise or delayed releases).
    • You require granular control over repeat counts and failure thresholds (e.g., maxFailures option to fail tests only if they consistently fail).
    • Your stack is PHP/Laravel-based and already uses Composer for dependencies, with Testo as the primary testing framework.
    • You need a lightweight, opt-in solution that integrates with existing Testo plugins (e.g., assertions, mocking).
  • Look elsewhere if:
    • You’re not using Testo (e.g., PHPUnit, Pest, or non-PHP frameworks like Jest). Alternatives include:
      • PHPUnit’s @runInSeparateProcess or @repeat (if available in future versions).
      • Custom scripts (e.g., Bash loops, Python-based retry logic).
      • Third-party tools like FlakyTestFinder (for PHPUnit).
    • Your flakiness issues stem from environmental instability (e.g., Docker networking, external service timeouts) rather than test logic. In such cases, focus on infrastructure fixes (e.g., stable Docker images, mocking external services).
    • You need distributed/parallel repeat testing (this package focuses on sequential repeats within a single run).
    • Your team lacks Testo expertise—opt for PHPUnit’s built-in features or well-documented alternatives to avoid migration overhead.

How to Pitch It (Stakeholders)

For Executives: "This plugin automates the detection of flaky tests in our PHP test suite, directly addressing a key bottleneck in our CI/CD pipeline. By running critical tests 2–5 times per execution, we’ll catch intermittent failures early—reducing false positives, accelerating releases, and improving software quality. It’s a low-risk, high-reward solution that integrates seamlessly with our existing Testo framework, requiring minimal overhead. Early adoption could cut our CI noise by 30–50%, saving developer time and reducing release delays."

For Engineering/DevOps: *"The testo/repeat plugin lets us annotate tests or test classes to run them N times, with a configurable maxFailures threshold to control when a test is marked as failed. This is perfect for:

  • API tests hitting external services (e.g., Stripe, Twilio) where network issues cause flakiness.
  • Database-heavy tests with race conditions or transaction rollbacks.
  • UI/integration tests where timing or external dependencies introduce variability. It’s a drop-in solution—just add @repeat(3) to your test, and it runs the test 3 times. The maxFailures option (e.g., maxFailures: 1) ensures we only fail the test if it fails consistently, not just once. Since it’s part of the Testo ecosystem, it plays nicely with our existing plugins and won’t disrupt our workflow. No migration needed if we’re already using Testo!"*

For QA/Testing Teams: "This plugin will supercharge our flakiness detection, helping us identify and fix intermittent test failures faster. Instead of guessing why a test passes locally but fails in CI, we can now run it 3–5 times and see if the failure is consistent or just a one-off. The maxFailures setting lets us tune sensitivity—for example, failing a test only if it fails all 3 times, which helps distinguish between real bugs and environmental noise. It’s also opt-in, so we can start with the most flaky tests and expand coverage gradually. This will make our test suite more reliable and our CI less noisy."

For Product Managers: "By reducing flaky test noise, this plugin will improve our team’s confidence in test results, leading to faster, more reliable releases. It’s especially valuable for high-stakes features (e.g., payments, user data) where test stability is critical. The plugin’s low maintenance cost and Testo integration make it a smart investment—we’re not building this from scratch, and it aligns with our long-term shift toward modular, extensible testing."

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.
cadot.eu/make
besmartand-pro/php-quality-config
sentix/ai-chatbot
codifyo/ts-generator-bundle
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky