PackageTrack
Sign in Get early access

yoast/wp-test-utils

PHPUnit cross-version compatibility layer for testing plugins and themes build for WordPress

1.2.1 2.7M downloads/mo #2588 most downloaded on Packagist Yoast/wp-test-utils

What this package is like to depend on

Last release 6 months ago

05 Feb 2026

Release timing varies

gaps range from 2 weeks to 2.4 years

Nearly every release is documented

notes for 10 of 10 stable releases

Nothing withdrawn

no release was ever pulled

6 years old

10 releases · first in 2020

1 release in the last 12 months

see the full history below

Release timeline

10 releases · Nov 2020 to Feb 2026
2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 10
  1. 1.2.1 05 Feb 2026
    Release notes

    Changed

    Open source →
    Release notes

    Changed

    • The [PHPUnit Polyfills] dependency has been updated to require version ^1.1.5 (was ^1.1.0). PRs #75, #101
    • The [BrainMonkey] dependency has been updated to require version ^2.7.0 (was ^2.6.1). PRs #79, #102
    • Verified PHP 8.4 and 8.5 compatibility.
    • General housekeeping.
    Open source →
  2. 1.2.0 27 Sep 2023
    Release notes

    Added

    • Support for the new PHPUnit assertObjectHasProperty() and assertObjectNotHasProperty() assertions, as polyfilled via the PHPUnit Polyfills in all test cases. PR #64
      This means that the assertObjectHasProperty() and assertObjectNotHasProperty() assertions can now safely be used in all tests in classes which extend one of the WP Test Utils TestCases.

    Changed

    • Yoast\WPTestUtils\BrainMonkey\YoastTestCase: the parameter names used in a few of the stubs for WP Core functions have been updated to stay in line with the names used in WP Core. PR #53
    • The PHPUnit Polyfills dependency has been updated to require version ^1.1.0 (was ^1.0.5). PRs #52, #64
    • Verified PHP 8.3 compatibility.
    • General housekeeping.
    Open source →
    Release notes

    Added

    • Support for the new PHPUnit assertObjectHasProperty() and assertObjectNotHasProperty() assertions, as polyfilled via the [PHPUnit Polyfills] in all test cases. PR #64 This means that the assertObjectHasProperty() and assertObjectNotHasProperty() assertions can now safely be used in all tests in classes which extend one of the WP Test Utils TestCases.

    Changed

    • Yoast\WPTestUtils\BrainMonkey\YoastTestCase: the parameter names used in a few of the stubs for WP Core functions have been updated to stay in line with the names used in WP Core. PR #53
    • The [PHPUnit Polyfills] dependency has been updated to require version ^1.1.0 (was ^1.0.5). PRs #52, #64
    • Verified PHP 8.3 compatibility.
    • General housekeeping.
    Open source →
  3. 1.1.1 17 Nov 2022
    Release notes

    Fixed

    • The "on the fly" created test doubles would identify as the same class when comparing objects using instanceof. #45
      The underlying logic has been changed to prevent this.
      This includes removing the (non-public API) Yoast\WPTestUtils\BrainMonkey\Doubles\DummyTestDouble class which was introduced in 1.1.0.
    Open source →
    Release notes

    Fixed

    • The "on the fly" created test doubles would identify as the same class when comparing objects using instanceof. #45 The underlying logic has been changed to prevent this. This includes removing the (non-public API) Yoast\WPTestUtils\BrainMonkey\Doubles\DummyTestDouble class which was introduced in 1.1.0.
    Open source →
  4. 1.1.0 16 Nov 2022
    Release notes

    Added

    • Helper functions for on-the-fly creation of opaque test doubles for unavailable classes for use with Mockery. PR #40
      The default Mockery mocks for unavailable classes do not allow for the dynamic property deprecation in PHP 8.2, which can cause tests to error out.
      These helper functions can be used to create test doubles which do allow for setting properties.
      The helper functions can be called from within a test bootstrap or from within a test class.
      For full details about these new functions, why they exist and how to use them, please see the documentation in the README.

    Changed

    Open source →
    Release notes

    Added

    • Helper functions for on-the-fly creation of opaque test doubles for unavailable classes for use with Mockery. PR #40 The default Mockery mocks for unavailable classes do not allow for the dynamic property deprecation in PHP 8.2, which can cause tests to error out. These helper functions can be used to create test doubles which do allow for setting properties. The helper functions can be called from within a test bootstrap or from within a test class. For full details about these new functions, why they exist and how to use them, please see the documentation in the README.

    Changed

    • The [BrainMonkey] dependency has been updated to require version ^2.6.1 (was ^2.6.0). PR #28
    • The [PHPUnit Polyfills] dependency has been updated to require version ^1.0.4 (was ^1.0.1). PRs #28, #41
    • Composer: The package will now identify itself as a testing tool. PR #36
    • Verified PHP 8.2 compatibility.
    • General housekeeping.
    Open source →
  5. 1.0.0 27 Sep 2021
    Release notes

    WordPress 5.9 contains significant changes to the WordPress native test suite, which impacts integration tests.
    Please see the dev-note about these changes on Make WordPress for full details.

    This release makes WP Test Utils compatible with these changes, but can't fully mitigate them, though if you were using WP Test Utils before, you're already half prepared for these changes.

    For users of WP Test Utils, a search for declarations of and calls to the setUpBeforeClass(), setUp(), tearDown() and tearDownAfterClass() methods and replacing these with their snake_case equivalents set_up_before_class(), set_up() tear_down() and tear_down_after_class() is all that is required to make your test suite compatible again with the latest versions of WordPress.

    You also may want to do some tweaking to the CI scripts used to run the tests to allow for using the optimal PHPUnit version to run the tests.
    See the Make Core dev-note for guidance.

    Added

    • Integration tests bootstrap utilities: the Yoast\WPTestUtils\WPIntegration\get_path_to_wp_test_dir() function will now also search for the WP Core test framework files in the system temp directory as per the typical setup created by the WP-CLI scaffold command. PR #16
      This means that if the install-wp-tests.sh script is used without adjustments, the path to the WP native test bootstrap should be findable by WP Test Utils without needing to set the WP_TESTS_DIR environment variable.
      If you previously adjusted your test bootstrap to set this environment variable, you should now be able to remove it.

    Changed

    • Integration tests: both the TestCase as well as the bootstrap utilities have been adjusted to be cross-version compatible with the WP Core test framework as it is per WP 5.9, while still maintaining compatibility with older WP versions as well, including WP < 5.2. PR #20
    • Yoast\WPTestUtils\BrainMonkey\YoastTestCase: the is_multisite() stub will now respect a potentially set WP_TESTS_MULTISITE PHP constant. PR #22
    • The PHPUnit Polyfills dependency has been updated to require version ^1.0.1 (was ^1.0.0).
    • README: the documentation has been partially rewritten to make it clearer what problems WP Test Utils solves.
    • General housekeeping.

    Fixes

    • The PHPUnit Polyfills dependency introduced three new polyfills in the 1.0.0 version. These are now supported in all test cases. #17

    Thanks Pierre Gordon and Pascal Birchler for making feature suggestions for this version.

    Open source →
    Release notes

    WordPress 5.9 contains significant changes to the WordPress native test suite, which impacts integration tests.<br/> Please see the dev-note about these changes on Make WordPress for full details.

    This release makes WP Test Utils compatible with these changes, but can't fully mitigate them, though if you were using WP Test Utils before, you're already half prepared for these changes.

    For users of WP Test Utils, a search for declarations of and calls to the setUpBeforeClass(), setUp(), tearDown() and tearDownAfterClass() methods and replacing these with their snake_case equivalents set_up_before_class(), set_up() tear_down() and tear_down_after_class() is all that is required to make your test suite compatible again with the latest versions of WordPress.

    You also may want to do some tweaking to the CI scripts used to run the tests to allow for using the optimal PHPUnit version to run the tests.<br/> See the Make Core dev-note for guidance.

    Added

    • Integration tests bootstrap utilities: the Yoast\WPTestUtils\WPIntegration\get_path_to_wp_test_dir() function will now also search for the WP Core test framework files in the system temp directory as per the typical setup created by the [WP-CLI scaffold command]. PR #16<br/> This means that if the install-wp-tests.sh script is used without adjustments, the path to the WP native test bootstrap should be findable by WP Test Utils without needing to set the WP_TESTS_DIR environment variable.<br/> If you previously adjusted your test bootstrap to set this environment variable, you should now be able to remove it.

    Changed

    • Integration tests: both the TestCase as well as the bootstrap utilities have been adjusted to be cross-version compatible with the WP Core test framework as it is per WP 5.9, while still maintaining compatibility with older WP versions as well, includes WP < 5.2. PR #20
    • Yoast\WPTestUtils\BrainMonkey\YoastTestCase: the is_multisite() stub will now respect a potentially set WP_TESTS_MULTISITE PHP constant. PR #22
    • The [PHPUnit Polyfills] dependency has been updated to require version ^1.0.1 (was ^1.0.0).
    • README: the documentation has been partially rewritten to make it clearer what problems WP Test Utils solves.
    • General housekeeping.

    Fixes

    • The [PHPUnit Polyfills] dependency introduced three new polyfills in the 1.0.0 version. These are now supported in all test cases. #17

    Thanks Pierre Gordon and Pascal Birchler for making feature suggestions for this version.

    Open source →
  6. 0.2.2 21 Jun 2021
    Release notes

    Changed

    • The PHPUnit Polyfills dependency has been updated to require version ^1.0.0 (was ^0.2.0).
    • Improved compatibility with the test setup as created via the WP CLI scaffold command.
    • CI is now run via GitHub Actions.
    Open source →
    Release notes

    Changed

    • The [PHPUnit Polyfills] dependency has been updated to require version ^1.0.0 (was ^0.2.0).
    • Improved compatibility with the test setup as created via the [WP-CLI scaffold command].
    • CI is now run via GitHub Actions.
    Open source →
  7. 0.2.1 09 Dec 2020
    Release notes

    Changed

    • The BrainMonkey dependency has been updated to require version ^2.6.0 (was ^2.5.0).
    • Yoast\WPTestUtils\BrainMonkey\YoastTestCase: removed stubs for wp_json_encode() and user_trailingslashit().
      These are now stubbed in the BrainMonkey library.
    Open source →
    Release notes

    Changed

    • The [BrainMonkey] dependency has been updated to require version ^2.6.0 (was ^2.5.0).
    • Yoast\WPTestUtils\BrainMonkey\YoastTestCase: removed stubs for wp_json_encode() and user_trailingslashit().<br/> These are now stubbed in the BrainMonkey library.
    Open source →
  8. 0.2.0 09 Dec 2020
    Release notes

    Added

    • A TestCase for WordPress plugin integration tests.
    • Utility functions and a custom autoloader for use within a plugin's integration test bootstrap.php file.
    • An EscapeOutputHelper trait.

    Full details on these new features can be found in the README.

    Open source →
    Release notes

    Added

    • A TestCase for WordPress plugin integration tests.
    • Utility functions and a custom autoloader for use within a plugin's integration test bootstrap.php file.
    • An EscapeOutputHelper trait.

    Full details on these new features can be found in the [README].

    Open source →
  9. 0.1.1 25 Nov 2020
    Release notes

    Changed

    • The PHPUnit Polyfills dependency has been updated to require version ^0.2.0 (was ^0.1.0).
    Open source →
    Release notes

    Changed

    • The [PHPUnit Polyfills] dependency has been updated to require version ^0.2.0 (was ^0.1.0).
    Open source →
  10. 0.1.0 13 Nov 2020
    Release notes

    Initial release.

    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive