Download the PHP package dingo-d/wp-pest-integration-test-setup without Composer

On this page you can find all versions of the php package dingo-d/wp-pest-integration-test-setup. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package wp-pest-integration-test-setup

WordPress integration tests with PestPHP

A package that will add WordPress integration and unit test suites using Pest PHP testing framework.

Why bother?

When somebody mentions automated testing, WordPress doesn't really come to mind, right? Hopefully, this package will help break the stigma of testing in WordPress.

This package will enable you to get up and running in no time with easy and readable testing setup using Pest PHP framework.

Requirements

  1. PHP > 7.4
  2. Composer

This package will only work with Composer, I don't plan on supporting alternative ways of installations.

Setup

In your project run:

After that you can run the following command:

This will set up the tests folder, download the latest version of WordPress develop repo and place it in wp folder. It will also set up your integration and unit test suites with an example that you can run in your theme.

There are other options you can choose from by typing

Under the hood

For an in-depth reasoning and explanation of how this package came to be, you can read this article.

Basically what's "under the hood" is downloaded wordpress-develop repository to your project, added an in memory DB (sql lite from aaemnnosttv/wp-sqlite-db), and a base test class from Yoast/wp-test-utils. All that combined allows you to run integration tests in WordPress with Pest PHP without any additional setup.

Running unit tests alongside integration tests

Due to the bug in how Pest handles file loading, in order to successfully run the unit tests, you'll need to add the following helper to either your Pest.php file, or your Helpers.php file:

Then, in your integration tests, you'll need to add, before the test case uses() call

This way, when you run the unit test group, the integration test files will bow out, and you won't get the wrong test class used for your test.

Test example

The command will set up two examples - one for unit test, one for integration test.

Running:

will run unit test:

and running:

will run integration tests:

The test suites are grouped together, and it's necessary to pass the --group=integration option if you want to run integration tests, because that way the bootstrap knows to load integration test specific configuration when running tests.

Running the package in CI pipelines

If you want to run the package as a part of your continuous integration (CI) pipeline, be sure to provide the --skip-delete parameter when running the wp-pest setup command. This will skip the deletion of the wp-content folder (which is not important at all, especially in CI environments), and won't block the setup script.

Questions

Why such a high PHP version? What if I need to test my theme/plugin on other PHP versions?

Underlying aim of this package (besides getting WordPress developers more acquainted to testing) is to urge the developers to update their projects, and use more modern PHP features. While WordPress supports PHP 5.6, it's no longer even supported with security patches (at the time of writing this PHP 7.4 is in the EOL phase).

The WordPress community needs to move on, and if this package will help somebody to update their servers and PHP version I'll call that a success.

The script is stuck on Download WordPress part, what do I do?

It's not stuck! 😂

You're probably running this in WSL, right? For some reason, download on WSL terminal can be slow.
This is a known issue.

The solution is probably to disable some network adapters, as described here (you can also read a tl;dr version 😅).

It's not working on Windows

I haven't tested it yet on native Windows installation. This is on my to do list, but not high on the priority list.

Something is not working

Please do open an issue for that.

Updates

1.6.0 version

I've decided to change the name to a more catchy wp-pest. To be honest, not sure why I haven't done this before. The functionality stays the same.

If you've just downloaded and set up the testing from scratch on version 1.6.0, then you're all set, happy testing!
If not, you should probably update your phpunit.xml file to include

in the <php> part of the configuration.

Also, update your bootstrap.php file according to the templates in the package. Namely you should remove the line at the end

with

Make sure you import the namespace for the bootstrap_it() function at the top of the file

Last, but really important, remove the Integration in the Pest.php file

And add

At the top of every integration test you have. This will ensure a correct base test class is used for integration tests.


All versions of wp-pest-integration-test-setup with dependencies

PHP Build Version
Package Version
Requires ext-json Version *
ext-zip Version *
php Version ^8.1
aaemnnosttv/wp-sqlite-db Version ^1.3
guzzlehttp/guzzle Version ^7.4
pestphp/pest Version ^2.18.0
symfony/filesystem Version ^6.3
yoast/wp-test-utils Version dev-JRF/update-for-polyfills-2.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package dingo-d/wp-pest-integration-test-setup contains the following files

Loading the files please wait ....