NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #1967 most downloaded on Packagist
A set of Codeception modules to test WordPress projects.
Last release 1 months ago
26 Aug 2026
Ships fairly regularly
a new release about every 6 weeks
Most releases are documented
notes for 40 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
422 releases · first in 2014
Add the WPCLI::grabLastShellOutput method (thanks @calvinalkan).
WPCLI::grabLastShellOutput method (thanks @calvinalkan).Fixed query to DROP tables generated by the WPLoader module when setting installationTableHandling to drop.
DROP tables generated by the WPLoader module when setting installationTableHandling to drop.Nothing published for this version
One column per quarter.
improve psalm, and other static analysis tools compatibility, in the WPLoader module (thanks @calvinalkan).
psalm, and other static analysis tools compatibility, in the WPLoader module (thanks @calvinalkan).handle empty numeric values correctly int he WPCLI module, fixes #528.
WPCLI module, fixes #528.in the context of the WPLoader module, construct the PHPMailer instance to throw exceptions.
WPLoader module, construct the PHPMailer instance to throw exceptions.@since TBD tags from doc-blocks.correctly escape the database name in the WPDb::createDatabasesIfNotExist method.
WPDb::createDatabasesIfNotExist method.make.Require file defining functions before calling tests_add_filter function in includes/bootstrap.php.
tests_add_filter function in includes/bootstrap.php.Correctly load SQL from a file in the WPDb::importSqlDumpFile (thanks @andergmartins).
WPDb::importSqlDumpFile (thanks @andergmartins).Pass the configured table prefix to the user capability builder in the WPDb module (thanks @johnbillion).
WPDb module (thanks @johnbillion).activePlugins cannot be included or activated in the WPLoader module (thanks
@johnbillion).Avoid core installer failures due to mysqli report defaults on PHP 8.1 (thanks @johnbillion).
Introduce the skipPluggables configuration parameter in the WPLoader module to avoid the override of pluggable functions (thanks @johnbillion).
skipPluggables configuration parameter in the WPLoader module to avoid the override of pluggable
functions (thanks @johnbillion).Update composer.json to specify the package conflicts with version 2.0 of Codeception modules (thanks @simonhammes).
composer.json to specify the package conflicts with version 2.0 of Codeception modules (thanks
@simonhammes).Update Codeception module suggestions to stick with version ^1.0 and PHP 5.6 compatibility.
^1.0 and PHP 5.6 compatibility.Normalize env file parsing to support LF line separators on Windows (thanks @kagg-design).
Do not require iconv extension when, and use the intl one if available, when building slugs (thanks @roborourke).
Do not require iconv extension when, and use the intl one if available, when building slugs (thanks @roborourke).
do not redefine wp-config constants when using the WPLoaded module in loadOnly: true mode (thanks @LucasDemea)
WPLoaded module in loadOnly: true mode (thanks @LucasDemea)correct escaping of the PHP binary in the WithWpCli trait (thanks @joppuyo)
WithWpCli trait (thanks @joppuyo)update phpass dependency to use stable mirror (thanks @Luc45 and @bordoni)
phpass dependency to use stable mirror (thanks @Luc45 and @bordoni)add mirror for the phpass dependency, thanks @bordoni, fixes #523
phpass dependency, thanks @bordoni, fixes #523pass the provided parameters to the actions fired in the replacement wp_set_auth_cookie function, fixes #509
wp_set_auth_cookie function, fixes #509WPDb::getOriginalUrlFromSqlString regex to parse original site URL from dump file (thanks @stracker-phil)
WPDb::getOriginalUrlFromSqlString regex to parse original site URL from dump file (thanks @stracker-phil)WPDb module documentation to improve clarity about populate and cleanup configuration parameters (thanks
@calvinalkan)destination file detection in Symlinker extension (thanks @ryanshoover)
Update the WPFilesystem::havePlugin and WPFilesystem::haveMuPlugin methods to take a plugin path without requiring the .php extension (thanks @Luc45).
WPFilesystem::havePlugin and WPFilesystem::haveMuPlugin methods to take a plugin path without requiring
the .php extension (thanks @Luc45).Smaller text fix in Healthcheck component.
WPDb module.Parameter format of the WPDb module seeOptionInDatabase, dontSeeOptionInDatabase, seeSiteOptionInDatabase, dontSeeSiteOptionInDatabase methods to supp
WPDb module seeOptionInDatabase, dontSeeOptionInDatabase, seeSiteOptionInDatabase,
dontSeeSiteOptionInDatabase methods to support both name and value or array criteria.WPDb::dontSeeSiteOptionInDatabase method.Yaml format issue in scaffoled configuration files, thanks @dale42
Compatibility with PHPUnit version 9.5, thanks @Luc45
This version is the first to target Composer version 2 compatibility, while keeping back-compatibility with Composer version 1. The version is marked
This version is the first to target Composer version 2 compatibility, while keeping back-compatibility with Composer
version 1.
The version is marked as breaking, and as such as a Major release, as existing setups that rely on some packages
previously bundled
with wp-browser might break.
I've changed the removed wp-cli/wp-cli-bundle (full wp-cli packages) dependency in favor of the wp-cli/wp-cli one
and I've removed the symfony/filesystem
dependency in favour of other internal solutions.
Read the migration guide here.
WithWpCli::executeBackgroundWpCliCommand method, and, as a consequence, the
WPCLI::executeBackgroundWpCliCommand method.symfony/process dependency and replaced it with the mikehaertl/php-shellcommand one; refactor methods
that use and accept shell commands.WPCLI module to build and escape string command lines differently.wp-cli/wp-cli-bundle dependency and replaced it with the wp-cli/wp-cli one.URL replacement issue in DbDump class
DbDump classhandle more Cookie types in WPBrowser::grabCookiesWithPattern method to avoid errors.
WPBrowser::grabCookiesWithPattern method to avoid errors.vlucas/phpdotenv:^4.0 to avoid env vars loading issues.avoid deleting the whole plugins folder when havePlugin is used to create single file plugins (thanks @Luc45)
havePlugin is used to create single file plugins (thanks @Luc45)the logOut(string|bool $redirectTo) method to the WPBrowser and WPWebDriver modules (thanks @gabe-connolly)
logOut(string|bool $redirectTo) method to the WPBrowser and WPWebDriver modules (thanks @gabe-connolly)restore full phpstan lvl 8 coverage
rename the rmkdir function to mkdirp for clarity and resemblance with the WordPress one.
rmkdir function to mkdirp for clarity and resemblance with the WordPress one.an issue where the recurseRemoveDir function would leave empty directories behind, fixes #447
recurseRemoveDir function would leave empty directories behind, fixes #447mkdirp function to scaffold nested directory structures and filesremove version block on symfony/filesystem dependency, fixes #440
symfony/filesystem dependency, fixes #440the WPDb::importSql method to allow importing custom SQL strings in the database during tests
WPDb::importSql method to allow importing custom SQL strings in the database during testsavoid deprecation notices when loading MockPHPMailer, fixes #436
MockPHPMailer, fixes #436the WPDb::havePostThumbnailInDatabase and WPDb::dontHavePostThumbnailInDatabase methods, fixes #434
WPDb::havePostThumbnailInDatabase and WPDb::dontHavePostThumbnailInDatabase methods, fixes #434URL replacement function in WPDb module that would incorrectly handling the replacement of localhost:port URLs, fixes #430
WPDb module that would incorrectly handling the replacement of localhost:port URLs,
fixes #430return type of WPLoader::factory method to ensure IDE type-hinting will work correctly (thanks @Luc45)
WPLoader::factory method to ensure IDE type-hinting will work correctly (thanks @Luc45)typos and spacing in documentation (thanks @cliffordp)
An issue where additional required plugins would not be correctly parsed during the init wpbrowser command, fixes
init wpbrowser command, fixes
#424An issue where users created during tests would not be have the correct editing and layout meta set, fixes #422, thanks @ryanshoover
ensure $_SERVER['REQUEST_TIME'] and $_SERVER['REQUEST_TIME_FLOAT'] are correctly set when running tests based on the Codeception\Test\WPTestCase class
$_SERVER['REQUEST_TIME'] and $_SERVER['REQUEST_TIME_FLOAT'] are correctly set when running tests based on
the Codeception\Test\WPTestCase class, fixes #417support, in WPTestCase, for the @runInSeparateProcess annotation to run test methods in separate PHP processes; fixes #410
WPTestCase, for the @runInSeparateProcess annotation to run test methods in separate PHP processes;
fixes #410Codeception required version erroneously set in prev version of composer.json file
composer.json filecheck in the codecept init wpbrowser command to check and report missing Codeception 4.0 to the user during initialization, fixes #412
codecept init wpbrowser command to check and report missing Codeception 4.0 to the user during
initialization, fixes #412refactoring to pass phpstan level 1 and 2 checks.
phpstan level 1 and 2 checks.an issue with .env files handling that, when the vlucas/phpdotenv package is not required, would incorrectly set up the test environment.
vlucas/phpdotenv package is not required, would incorrectly set up
the test environment.phpstan level 0 checks.the WPDb.letCron configuration parameter to control whether wp-cron processes should be allowed to spawn during tests or not (new default).
WPDb.letCron configuration parameter to control whether wp-cron processes should be allowed to spawn during
tests or not (new default).WPDb module will set up the database to prevent wp-cron requests from being spawned during tests, fixes #363.WPDb module sets up the database at the start of tests (and between tests), wp-cron
process will not be spawned during tests unless the WPDb.letCron configuration parameter is set to true.added Dotenv\Dotenv polyfill class to avoid back-compatibility issues w/ projects not requiring vlucas/phpdotenv explicitly and using env files for te
Dotenv\Dotenv polyfill class to avoid back-compatibility issues w/ projects not requiring vlucas/phpdotenv
explicitly and using env files for tests configuration.add function_exists check to avoid redefinition issues when wp-browser is used in two related packages (thanks @cliffordp)
function_exists check to avoid redefinition issues when wp-browser is used in two related packages (thanks
@cliffordp)README.md file updates (thanks @szepeviktor)
README.md file updates (thanks @szepeviktor)src/tad/scripts fixes and refactorings (thanks @szepeviktor)gumlet/php-image-resize package requirement; runtime image modification in the WPDb::haveAttachmentInDatabase
method will require it at runtime.vlucas/phpdotenv package requirement; wp-browser will not use it internally, but Codeception will keep requiring
it for dynamic parameter configuration.initialization environment vars in the Wpbrowser template providing functions for the codecept init wpbrowser command
Wpbrowser template providing functions for the codecept init wpbrowser
commandsupport for Unix sockets in WPDB and WPLoader modules
WPDB and WPLoader modulescodecept init wpbrowser will now scaffold the suites to support both classic MySQL hosts like 1.2.3.4:3306,
container-type hosts like db and Unix socket hosts like localhost:/var/mysql.sockPHP 5.6 incompatibility issues introduced in version 2.4.0, fixes #372
2.4.0, fixes #372set the admin_email_lifespan option value to prevent showing the administration email verification in the WPDb module, after the database is imported;
admin_email_lifespan option value to prevent showing the administration email verification in the WPDb
module, after the database is imported; fixes #358WPDb::EVENT_AFTER_DB_PREPARE action after an imported datababse is prepared by applying quality-of-testing-life "
patches" to the databaseclearer messaging for missing Codeception 4.0 modules in wp-browser modules requiring it, fixes #365 and #360
Your coding agent can read these notes before it upgrades. Set up the MCP server →