Developing for ElasticPress is easy. We provide tools that give you everything you need to test ElasticPress features and create Pull Requests. The first thing you'll want to do is set up a local development environment.
Local Development Environment
We highly recommend using WP Local Docker V2 to develop for ElasticPress. This docker-based environment can be installed and set up via NPM. It comes with Elasticsearch out of the box.
After installing WP Local Docker V2, just run
10updocker create. Use
elasticpress.test as the hostname. Make sure to answer yes when it asks if you need Elasticsearch. After the site is created, follow the plugin installation instructions.
wp-config.php file, insert the following to tell ElasticPress where Elasticsearch is located:
define( 'EP_HOST', 'http://elasticpress.test/__elasticsearch' );
composer install in the root of the plugin.
ElasticPress uses unit tests via the WordPress core unit testing library as well as end-to-end tests with Cypress.
To run unit tests, assuming you are using WP Local Docker V2 and Elasticsearch is running, SSH into your docker container by running
10updocker shell. Navigate to the root of the ElasticPress directory, first set up the test database:
composer run-script setup-local-tests
Now run the tests:
To run a specific test, pass the
EP_HOST="http://elasticsearch:9200" phpunit --filter=testSanitizeCredentials
To verify all of the code paths are being tested, you can generate an HTML code coverage report for your tests. Pass
--coverage-html test-coverage-html as a parameter and a report will be generated in that directory.
EP_HOST="http://elasticsearch:9200" phpunit --filter=testSanitizeCredentials --coverage-html test-coverage-html
To run e2e tests follow these instructions.