BDD Framework for WordPress

An end-to-end test detects issues whenever there is a major system change. In software development, with every release, a battery of unit tests must pass or business can be lost.

Yes, software testing is difficult. It sounds like it is reactive but it is preventative.

Do you have a defined end-to-end test path you can implement in a code replay – a commercial one is Selenium – you can make it record your “happy path” from home-page to shop order to basket acceptance to payment page, do you have certainty that the new plugin you are testing will not break something you rely on?

The reason for code isolation is to prevent this, but WordPress operates in a global namespace – know that the basics are not broken by a plugin update. If it is a server-side script, it can for instance test certain URLs work (return 200 OK instead of 404 or more to the point when it returns a 500 or a 502 HTTP error in a plugin function you may not know something is failing).

With a “headless-browser” on the server, we can automatically test it is working. It could simply be an app that tests URLs that you can visit, or paths you can get 200 OK responses for – rather than a WordPress plugin that has overhead on every request.

Being a service centre or a nerd club?

It is quite hard to map the direction when you create organically. But the two central themes of RD are: Service and Technical brilliance.

Service

  1. Our services are more in touch with the client
  2. Our services are more flexible and agile
  3. It is not expensive to change your ideas
  4. It is not unknown for us to start again and reinvent badly shaped wheels

Technical Brilliance

  1. We can adapt our software to add any clients requirement into an option
  2. We love agile as it keeps the work variety and intensity of technical application very smart
  3. Change gives us opportunities to refactor
  4. Smart frameworks make Project level refactors far easier to consider

There is a fit between these objectives.

Therefore are products are:

Intro Site: a one year excercise using WordPress with the Client defining what they want

which then progresses to either:

  • CMS Site: a hosted continuation of the Intro site
  • Development Site: we either develop to staging for a commercial client OR we extend the WordPress CMS with a sub-domain hosted Laravel instance (or GOlang/NodeJS based server depending on the team).

Development Sites are hosted on a Cloud.   CMS sites – we use shared hosting for email and DNS as the support is essentially free.  NS point at the CMS host.

The www domain can be switched to point at the Cloud site easily with an A record.

Additional Products

We can add new products by adding new Enquiry types.  The proposal can only propose CMS/Dev solutions – so some Enquiry types include an Order form bypassing the proposal system: So an Enquiry->Proposal->Order->Project can be Enquiry->Order->Product instead (i.e. for SSL certs, etc).