How we blog

2 May 2015

Testing is a huge part of what we do and we follow this through with our blogging. This site is built using jekyll and has no CMS at the backend. We are too busy building other apps and helping clients. Using something like wordpress would make our skin crawl. We had to make a compromise for non technical members of the team.

As there is no CMS we came up with the following workflow

We use grunt.js as our task manager. We use it for our automated unit and acceptance tests, which are written using Mocha. It also provides us with various tasks such as linting and static asset complication. This level of automation allows us to quickly verify that the new entry going to production will not cause any problems and the user always sees the page as intended.

Some details have been redacted from the graphic above. At the minute the tests check the YAML.

category: blog 
tags: development, testing 
title: How we blog 
layout: blog 
status: publish
is_index: true
article_author_tag: stephen 
article_author: Stephen
article_background: demo.jpg

We use Codeship as our CI Server for our web apps. When a change is pushed it is registered by codeship and the tests are executed.

If the tests pass the site is then built using grunt (which just calls a jekyll build command) and remotely synced to our server.

Hooking into the codeship eco system means we piggy back on their notification systems. So on success or failure the team gets (depending on their settings) a push notification to their devices (iphone, ipad, chrome) or email. Keeping the process transparent keeps everyone informed.

This process isn't perfect and we could certainly add more tests such as acceptance and smoke tests. Headless tests so we can prove that it works on several different browsers, operating systems and devices. However we thought it better to put something out there first and then improve it. "One is greater than zero".

Since testing is core to our values this is something we will be improving on so we will keep you posted.