0.0.5 • Public • Published


    A testing framework for reliable, repeatable testing of wordpress plugins.

    The problem with testing a wordpress plugin is that you need to install wordpress, a database, initialize and activate your plugin.

    Any unit or integration tests ideally should run off the same test environment each time.

    Wordpresto provides a Makefile that allows you to easily install the latest Wordpress installation, link it to your ~/Sites folder, or Apache folder.

    It also isolates your MySQL database to run in a local db/mysql folder so you can run this wordpress installation completely independently of your main MySQL database.


    Install via npm into your wordpress plugin folder:

    $ npm install wordpresto

    This will install the files into the node_modules folder:

    To install the latest wordpress, initialize the database, etc, run the command:

    $ ./node_modules/.bin/wordpresto plugininit

    You may wish to alias some of these commands into your package.json:

    // package.json
      "scripts": {
        "mysqlup": "node_modules/.bin/wordpresto mysqldown",
        "mysqldown": "node_modules/.bin/wordpresto mysqlup",
        "reset": "node_modules/.bin/wordpresto wordpressreset",
        "snapshot": "node_modules/.bin/wordpresto wordpresssnapshot",
        "clean": "node_modules/.bin/wordpresto clean",
        "init": "node_modules/.bin/wordpresto plugininit"

    That way you can just call:

    // Installs wordpress test environment
    $ npm run init


    node_modules/.bin/wordpresto clean

    Cleans the wordpress installation and wipes the MySQL database in db/mysql

    node_modules/.bin/wordpresto mysqlinit

    Initializes a brand new blank MySQL database in db/mysql

    node_modules/.bin/wordpresto wordpressinit

    Downloads the latest version of wordpress and install it, and a new database in ./wordpress

    It will blow away the existing local MySQL instance in db/mysql as well as making a copy or "snapshot" of a fresh wordpress database instance and stores it away for quick restoration under db/mysql.snapshot.

    node_modules/.bin/wordpresto wordpressreset

    Blows away the local MySQL database in db/mysql and replaces it with the snapshot copy in db/mysql.snapshot.

    This would be the script that you run before running unit or integration tests to ensure you have a fresh wordpress install for running tests.

    node_modules/.bin/wordpresto wordpresssnapshot

    Take the current data in the local db/mysql directory and back it up with a "snapshot" in db/mysql.snapshot.

    This allows you to modify the live wordpress instance to be the way you want it prior to testing, and then you execute this command to save a snapshot.

    You can then easily roll back to this snapshot by running node_modules/.bin/wordpresto wordpressreset.

    node_modules/.bin/wordpresto mysqlup

    Fire up a MySQL server to serve your wordpress data from db/mysql.

    This will run on port 3308 by default (which is different from the default MySQL port). The .sock file will be stored in db/mysql/mysql.wordpress.sock by default too so it doesn't interfere with any other MySQL instances that you're running.

    node_modules/.bin/wordpresto mysqldown

    Shuts down the local MySQL wordpress instance.

    node_modules/.bin/wordpresto plugininit

    This will install the current directory as a plugin for the local ./wordpress Wordpress installation.

    It will also activate the plugin.

    Make variables to override.

    By default this script assumes that you're running OS X and that you want to install worpress in ~/Sites. To override these defaults, either edit the APACHE_PATH and WORDPRESS_URL in the Makefile to be the path where you want to symlink the ./wordpress to so you can access it through Apache, and the full wordpress URL of your testing wordpress installation.




    npm i wordpresto

    DownloadsWeekly Downloads






    Last publish


    • eugeneware