WordCamp Montreal slides – Catching regressions faster with automated acceptance tests

Check out the demo plugin on

Codeception & WordPress: Getting up and running

Getting up and running with Codeception tests locally in Chrome, Firefox or BrowserStack you need to be able to run your site locally first (take a look at Laravel Valet, it’s fast and requires almost no configurations).

Here are the requirements for mac:

  • Java 1.8
  • Homebrew
  • WP-CLI (latest version)
  • Composer (latest version)
  • Selenium server
    brew install selenium-server-standalone && brew services start selenium-server-standalone
  • Chrome driver
    brew install chromedriver && brew services start chromedriver

Once everything is installed, you need to create a new composer.json (or merge an existing one) with the following requirements:

Could not embed GitHub Gist f73df5530abea74ae8ae250adbec9b90: Not Found

After this file is created, you can run composer install and composer will take care of downloading all dependencies for you.

Here is a sample plugin to help you get started. You can copy the codeception.yml file and the tests/codeception directory into your own plugin or theme and use that as a template.

You are ready to run wp codeception run --debug at the root of your directory!



If WordPress had a minimum requirement of PHP >= 5.3

Here is a small function I’ve growed to use when I built a WordPress plugin or site for myself. This could eventually be in core one day if WordPress would raise the minimum requirement of PHP to 5.3.


if ( ! function_exists( '__return' ) ) {

	function __return( $return ) {
		return function() use ( $return ) {
			return $return;


add_filter( 'YOUR_FILTER',  __return( 'YOURSTRING' ) );

// The above is so much cleaner than doing
add_filter( 'YOUR_FILTER', function() { return 'YOURSTRING'; } );

On a sidenote, we could also finally use namespaces…

Contact Widgets – A Plugin to showcase your social links & contact informations

Building a simple but highly flexible contact & social widget that works well in the customizer is hard. This was our core philosophy while working on the version 1 of this plugin and I do hope it proves useful for many people out there. Please check out for new features and releases in the coming weeks.

Here is a screenshot of the contact widget as of version 1.0.0 (note that you can reorder most fields using simple drag and drop. This works on mobile as well.)

Continue reading

Elasticsearch + WordPress: made for each other!

If you landed here is that you probably have a keen interest in bringing a more powerful search engine into your WordPress site and you have heard about Elasticsearch, the relatively new document oriented, RESTful search server based on Lucene.

There are many reasons why one uses Elasticsearch so I won’t get into much details, I will only show you the steps to get up and running¬†with WordPress + Elasticsearch on your VPS server running ubuntu (or whatever linux distro you prefer but I will only show ubuntu commands)*.

Continue reading

Jira ticket number between git branches

Have you ever worked on a team where everyone needed to put the Jira ticket number in the git message? Ever wanted to know all the ticket being merge to another branch before doing so?

Here is a nifty little bash function that you can put in your bash profile:

gitjira (){ git log $1...$2 | grep -o -E '\b([A-Z]+)-[0-9]+\b' | sort | uniq; }

Once you have this included, you can now compare 2 branches together like so:

gitjira master stage

Use Vagrant Rsync feature to maximize performance

Original article appeared on


We all know that Drupal doesn’t do really well under the default shared folder of VirtualBox. When we were given the task of creating a new box for one of our clients, we immediately went with NFS file system to circumvent this issue. We quickly realized two things:

  1. Vagrant is way faster with NFS enabled (but won’t work on Windows)
  2. Drupal is still slower reading files using NFS shared folder than using a default LAMP setup on the host directly

Thanks to the newly added feature in Vagrant 1.5, we can now use rsync to sync our shared folder with any Vagrant virtual machine. What does it mean for Drupal local development? A huge performance gain! Continue reading

© 2017 Jonathan Bardo