Best of TestingApril 2026

  1. 1
    Article
    Avatar of swizecswizec.com·6w

    Frustration Driven Development

    Frustration is a powerful engineering signal. Instead of repeatedly doing the same manual task, great engineers use that annoyance as motivation to eliminate the problem permanently. Three concrete examples illustrate this: upgrading CI/CD runners to cut build times from 10 to 2 minutes instead of endless Slack debates; building a self-serve permissions UI so managers can grant roles without engineering involvement; and writing AI-assisted tests to cover complex invoicing edge cases that were impossible to reproduce manually. The core philosophy is that your job is to remove work, not just do it — build tools, scripts, dashboards, and automation that create durable value and eliminate recurring friction.

  2. 2
    Video
    Avatar of seriousctoThe Serious CTO·5w

    Code Review Is Broken - Here's What Elite Teams Do Instead

    Traditional code review processes are fundamentally broken, especially in the age of AI-generated code. The 'LGTM syndrome' — rubber-stamp approvals — creates an illusion of safety rather than real quality. AI coding agents now generate code far faster than humans can meaningfully review it, with AI-generated code producing 1.7x more issues per PR. The solution involves several shifts: keeping PRs small and short-lived, designing architectures for modifiability, replacing the gatekeeper model with a mentoring model, using synchronous collaboration like mob programming, maintaining healthy senior-to-junior ratios (1:2 to 1:4), adopting inner sourcing to prevent knowledge silos, and treating automated testing as a first-class architectural requirement. The goal is building engineers who understand the system deeply enough that reviews become a formality, not a bottleneck.

  3. 3
    Article
    Avatar of milanjovanovicMilan Jovanović·4w

    The Test Pyramid Is a Lie (and What I Do Instead)

    The classic test pyramid — lots of unit tests, few integration tests — was practical advice for 2009 when spinning up real databases was slow and expensive. With Testcontainers and .NET Aspire, that constraint is gone. The author argues that most real bugs live at the seams (handlers, repositories, HTTP endpoints), where unit tests with mocks fail to catch them. The proposed alternative is a 'testing trophy' shape: a thin base of unit tests for pure domain logic (~15-25%), a thick middle of integration tests against real PostgreSQL/RabbitMQ/Redis (~60-70%), a small cap of E2E tests for critical flows (<10%), and architecture/contract tests as a foundation layer. A concrete example shows how a missing SaveChangesAsync call — undetected by 94% unit test coverage — would have been caught immediately by a single integration test.

  4. 4
    Article
    Avatar of lnLaravel News·4w

    Interruptible Jobs in Laravel 13.7.0

    Laravel v13.7.0 ships several new features: the Interruptible interface lets queued jobs respond to worker signals like SIGTERM for graceful cleanup, a new WorkerInterrupted event enables observability when workers receive signals, the @fonts Blade directive and Vite::fonts() method add font preload and inline style rendering from Vite font manifests, bulk JSON path assertions (assertJsonPaths/assertJsonMissingPaths) simplify testing multiple response values at once, and SortDirection enum support improves type safety in collection sorting. Additional improvements include LazyCollection keyBy() accepting BackedEnum, an isLocked() method on the Lock class, and enum support across several manager classes.

  5. 5
    Article
    Avatar of lnLaravel News·5w

    Debounceable Queued Jobs in Laravel 13.6.0

    Laravel 13.6.0 ships several notable features. The headline addition is debounceable queued jobs via the #[DebounceFor] attribute — when the same job is dispatched multiple times within a time window, only the last dispatch executes. A maxWait parameter prevents indefinite deferral. The release also adds JSON response support for the built-in /up health route (useful for API-only apps and load balancers), a new JsonFormatter for structured logging compatible with ELK/Datadog, and Cloudflare Email Service integration. Testing improvements include multi-record assertions for assertDatabaseHas/assertDatabaseMissing, and the hasAttached factory method now accepts arrays of pivot arrays. Additional fixes cover validation rules, enum support in BroadcastManager, PasswordBrokerManager, and NotificationChannelManager, plus SQS named credential providers.

  6. 6
    Article
    Avatar of lnLaravel News·7w

    UnitTest Attribute and More in Laravel 13.3.0

    Laravel 13.3.0 ships several notable additions: a new #[UnitTest] PHP attribute that skips full framework booting for individual test methods (enabling faster pure unit tests within integration test classes), variadic argument support for Eloquent model attributes like #[Fillable] and #[Hidden], a new BatchStarted event to fill the gap in job batch lifecycle monitoring, and memory usage reporting in verbose queue worker output. The release also includes fixes for sub-minute scheduling, MorphTo eager loading, macros with static closures, and a security improvement that passes --ignore-scripts to npm/pnpm during broadcasting installation.

  7. 7
    Article
    Avatar of wordpresscoreMake WordPress Core·4w

    Urgent: Testing request to Web hosts for collaborative editing by May 4th

    WordPress Core is requesting web hosts and database admins to test the Real Time Collaboration (RTC) feature planned for WordPress 7.0 by May 4th. A test suite requiring only bash, cURL, WP-CLI, and patch has been provided. Hosts are asked to run tests against their actual production configurations (not fresh installs) and submit results to WordPress.org using a bot account. Results will be aggregated and analyzed by hosting type to inform architectural decisions before the 7.0 release. The RTC feature is part of the Phase 3 roadmap and opens the door to agentic collaborators and future features like suggestion mode.

  8. 8
    Article
    Avatar of collectionsCollections·5w

    Bun v1.3.13: test isolation, 8x less memory for source maps, and faster gzip

    Bun v1.3.13 ships with notable performance gains and new test runner capabilities. Four new flags — --isolate, --parallel, --shard, and --changed — give developers finer control over test execution. Memory usage drops dramatically: bun install uses ~17x less memory by streaming tarballs to disk, and source maps consume 8x less memory. gzip compression is up to 5.5x faster via zlib-ng. New features include Range request support in Bun.serve(), SHA3 hash algorithms, and WebSocket unix socket schemes. The JavaScriptCore engine received 1,316 upstream commits, and 82 reported issues were closed including Node.js compatibility fixes and memory leak patches.

  9. 9
    Article
    Avatar of lnLaravel News·6w

    Flaky Test Retries in Pest v4.5.0

    Pest v4.5.0 introduces first-class support for flaky test retries via a new `flaky()` modifier and `--flaky` CLI flag, allowing intermittently failing tests to be automatically retried (default 3 times) before being reported as failures. The release also adds a `toBeCasedCorrectly()` architecture assertion that catches namespace/file path casing mismatches — a common source of class-not-found errors on Linux servers after local development on macOS or Windows. A new `--only-covered` option filters coverage output to show only files with actual coverage. Several bug fixes address dataset inheritance, parallel testing, trait detection, and Unicode filename handling.