diff --git a/doc/deprecating-badges.md b/doc/deprecating-badges.md
index 4af66084888cfa50763ecba2701557230e1d3e85..69aa5359bfd708dcfcba3551a9e8b7d5e82af377 100644
--- a/doc/deprecating-badges.md
+++ b/doc/deprecating-badges.md
@@ -43,7 +43,7 @@ Locate the test file(s) for the service, which can be found in `*.tester.js` fil
 With `DeprecatedService` classes we cannot use `createServiceTester()` so you will need to create the `ServiceTester` class directly. For example:
 
 ```js
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'imagelayers',
@@ -69,7 +69,7 @@ Here is an example of what the final result would look like for a test file:
 ```js
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'imagelayers',
diff --git a/doc/rewriting-services.md b/doc/rewriting-services.md
index aabac962fef06e16768546be2f74d85b612535cf..e866652ed1714881029de802d5bd9727448428d2 100644
--- a/doc/rewriting-services.md
+++ b/doc/rewriting-services.md
@@ -278,7 +278,7 @@ https://github.com/hapijs/joi/blob/master/API.md
 Switch to `createServiceTester`:
 
 ```js
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 ```
 
 This may require updating the URLs, which will be relative to the service's base
diff --git a/doc/service-tests.md b/doc/service-tests.md
index 3238efa6ecf5781e6995052906f3c2ab21a86786..0660f8a5762cdbcff58091e904dc6a1a9258e880 100644
--- a/doc/service-tests.md
+++ b/doc/service-tests.md
@@ -37,14 +37,14 @@ We'll start by adding some boilerplate to our file:
 
 const Joi = require('joi')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 ```
 
 1. Import [Joi][] We'll use this to make assertions. This is the same library
    we use to define schema for validation in the main badge class.
 
 2. If our `.service.js` module exports a single class, we can
-   `require('..').createServiceTester()`, which uses convention to create a
+   `require('../tester').createServiceTester()`, which uses convention to create a
    `ServiceTester` object. Calling this inside
    `services/wercker/wercker.tester.js` will create a `ServiceTester` object
    configured for the service exported in `services/wercker/wercker.service.js`.
diff --git a/services/amo/amo.tester.js b/services/amo/amo.tester.js
index d22e2d021cda893b67d9243ecf06859883efe880..0b9401cfaacc9acbde9f4d8b1df77a5cf53139e6 100644
--- a/services/amo/amo.tester.js
+++ b/services/amo/amo.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const {
   isMetric,
   isStarRating,
diff --git a/services/ansible/ansible-quality.tester.js b/services/ansible/ansible-quality.tester.js
index cb9dced030a0749c0a15f0ed8c37948a20e4080d..5add4cb7c466f65d625d30a39114c09d0d4470a2 100644
--- a/services/ansible/ansible-quality.tester.js
+++ b/services/ansible/ansible-quality.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { nonNegativeInteger } = require('../validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('quality score (valid)')
   .get('/432.json')
diff --git a/services/ansible/ansible-role.tester.js b/services/ansible/ansible-role.tester.js
index 15168be3fc7a89e2afa48b45611793cf3f05f4f2..54e6b929e356e28e1d06073e07bd57289f38ffbd 100644
--- a/services/ansible/ansible-role.tester.js
+++ b/services/ansible/ansible-role.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isMetric } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({
diff --git a/services/apm/apm.tester.js b/services/apm/apm.tester.js
index 6a425a01412eaab497f93458ce10dc1b20b7f2c3..af7aa3828322103ed27fd13b58c8d9c990bdb0c0 100644
--- a/services/apm/apm.tester.js
+++ b/services/apm/apm.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { invalidJSON } = require('../response-fixtures')
 const { isMetric, isVPlusTripleDottedVersion } = require('../test-validators')
 
diff --git a/services/appveyor/appveyor-ci.tester.js b/services/appveyor/appveyor-ci.tester.js
index c4545e23cdddb23de873dc5644d0346ee1d75318..0d53289510d52d4aa125accb450222cf336737cc 100644
--- a/services/appveyor/appveyor-ci.tester.js
+++ b/services/appveyor/appveyor-ci.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isBuildStatus } = require('../../lib/build-status')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('CI status')
   .timeout(10000)
diff --git a/services/appveyor/appveyor-tests.tester.js b/services/appveyor/appveyor-tests.tester.js
index cea78db0f689335b7a67588a14c54828f97013b9..cfd2fbb6b111a756804ab764cc7da3de536e782f 100644
--- a/services/appveyor/appveyor-tests.tester.js
+++ b/services/appveyor/appveyor-tests.tester.js
@@ -18,7 +18,7 @@ const isCompactCustomAppveyorTestTotals = Joi.string().regex(
   /^💃 [0-9]+( \| 🤦‍♀️ [0-9]+)?( \| 🤷 [0-9]+)?$/
 )
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Test status')
   .timeout(10000)
diff --git a/services/aur/aur.tester.js b/services/aur/aur.tester.js
index 216361f8d97acd2f201033257211eca5339c6d5f..00633a9160aa12835874e11b237c7beaa8962ee9 100644
--- a/services/aur/aur.tester.js
+++ b/services/aur/aur.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const {
   isVPlusDottedVersionNClausesWithOptionalSuffix,
   isMetric,
diff --git a/services/azure-devops/azure-devops-build.tester.js b/services/azure-devops/azure-devops-build.tester.js
index 3d26683e3134d47b51606aed2b4ecd4c3859c75d..d7a47a4f9dc50880e0c650f67d5abf0982b116d4 100644
--- a/services/azure-devops/azure-devops-build.tester.js
+++ b/services/azure-devops/azure-devops-build.tester.js
@@ -6,7 +6,7 @@ const { isBuildStatus } = require('../../lib/build-status')
 // https://dev.azure.com/totodem/Shields.io is a public Azure DevOps project
 // solely created for Shields.io testing.
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('default branch')
   .get(
diff --git a/services/azure-devops/azure-devops-coverage.tester.js b/services/azure-devops/azure-devops-coverage.tester.js
index 2fff1e6d1aca2e9eda85ac20c23d01933bc57ca5..fae2041e9c121550603fce5b0c23ab53173beb99 100644
--- a/services/azure-devops/azure-devops-coverage.tester.js
+++ b/services/azure-devops/azure-devops-coverage.tester.js
@@ -53,7 +53,7 @@ const secondLinesCovStat = {
 const expCoverageSingleReport = '83%'
 const expCoverageMultipleReports = '77%'
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('default branch coverage')
   .get(`${uriPrefix}/${linuxDefinitionId}.json`)
diff --git a/services/azure-devops/azure-devops-release.tester.js b/services/azure-devops/azure-devops-release.tester.js
index 72a213ece4848c6ed88726e8e7a599e43800c145..e1c5104125debe7094153332068380e55933cbd0 100644
--- a/services/azure-devops/azure-devops-release.tester.js
+++ b/services/azure-devops/azure-devops-release.tester.js
@@ -6,7 +6,7 @@ const { isBuildStatus } = require('../../lib/build-status')
 // https://dev.azure.com/totodem/Shields.io is a public Azure DevOps project
 // solely created for Shields.io testing.
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('release status is succeeded')
   .get(
diff --git a/services/azure-devops/azure-devops-tests.tester.js b/services/azure-devops/azure-devops-tests.tester.js
index 1cad65dc047bd9f1115da0b171450f19d7c0b2f1..ed4383659a0635615c9f12c3bd12b47c390075cc 100644
--- a/services/azure-devops/azure-devops-tests.tester.js
+++ b/services/azure-devops/azure-devops-tests.tester.js
@@ -113,7 +113,7 @@ const isCompactCustomAzureDevOpsTestTotals = isAzureDevOpsTestTotals(
   true
 )
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('unknown build definition')
   .get(`${uriPrefix}/${nonExistentDefinitionId}.json`)
diff --git a/services/beerpay/beerpay.tester.js b/services/beerpay/beerpay.tester.js
index 82568ace5d20f0e76d46bef81008853c6e23661e..92e602476893cb86a82aa5d6de75d251c2a6452f 100644
--- a/services/beerpay/beerpay.tester.js
+++ b/services/beerpay/beerpay.tester.js
@@ -5,7 +5,7 @@ const { withRegex } = require('../test-validators')
 
 const amountOfMoney = withRegex(/^\$[0-9]+(\.[0-9]+)?/)
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('funding')
   .get('/hashdog/scrapfy-chrome-extension.json')
diff --git a/services/bintray/bintray.tester.js b/services/bintray/bintray.tester.js
index c84b3627c4890d59291b6ef615cecd2302864435..cf4d75c628c9951de465f35e99ec8dd6e6c65104 100644
--- a/services/bintray/bintray.tester.js
+++ b/services/bintray/bintray.tester.js
@@ -5,7 +5,7 @@ const {
   isVPlusDottedVersionNClausesWithOptionalSuffix,
 } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('version')
   .get('/asciidoctor/maven/asciidoctorj.json')
diff --git a/services/bitbucket/bitbucket.tester.js b/services/bitbucket/bitbucket.tester.js
index b9c73f3d2ce52398563a75b5e8eef744e595adc0..3923a0de889160ce44b68eb9adc7e8640ac81aef 100644
--- a/services/bitbucket/bitbucket.tester.js
+++ b/services/bitbucket/bitbucket.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const {
   mockBitbucketCreds,
   mockBitbucketServerCreds,
diff --git a/services/bithound/bithound.tester.js b/services/bithound/bithound.tester.js
index 5a9057e0f5e03b4a6737c8b870039520cd8654b9..2d7dd97d328d47356e83d0a2d199b4ff18b9b4d5 100644
--- a/services/bithound/bithound.tester.js
+++ b/services/bithound/bithound.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'bithound',
diff --git a/services/bitrise/bitrise.tester.js b/services/bitrise/bitrise.tester.js
index c978ab7077f4a098e46bbd2a8040d805503a6aed..24b357f82d41d310b13a5e0bcaf1d034ac016844 100644
--- a/services/bitrise/bitrise.tester.js
+++ b/services/bitrise/bitrise.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'bitrise',
diff --git a/services/bountysource/bountysource.tester.js b/services/bountysource/bountysource.tester.js
index 062aa4178c3276db91a8ebe24d65a9016181abdf..9c4995974ab312cf710ae81c0bea4ca350c09738 100644
--- a/services/bountysource/bountysource.tester.js
+++ b/services/bountysource/bountysource.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 const { isMetric } = require('../test-validators')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'bountysource',
diff --git a/services/bower/bower.tester.js b/services/bower/bower.tester.js
index 7cd706821752f448265ef701e2f585ecb122fbc8..ced65af40add569303403e4c91fec4cecfbfacce 100644
--- a/services/bower/bower.tester.js
+++ b/services/bower/bower.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isVPlusDottedVersionAtLeastOne } = require('../test-validators')
 
 const isBowerPrereleaseVersion = Joi.string().regex(
diff --git a/services/bstats/bstats-players.tester.js b/services/bstats/bstats-players.tester.js
index 637a65332e2026ad0986da38c2bf69930a43f573..1337236ca454af8f44952e9a04f18782c2b266ad 100644
--- a/services/bstats/bstats-players.tester.js
+++ b/services/bstats/bstats-players.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isMetric } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Players')
   .get('/1.json')
diff --git a/services/bstats/bstats-servers.tester.js b/services/bstats/bstats-servers.tester.js
index 34fda5a91d98254bbd6c3b025038586654564d36..ee16c9876047fd86b571127f8f8d15db546f3f10 100644
--- a/services/bstats/bstats-servers.tester.js
+++ b/services/bstats/bstats-servers.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isMetric } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Servers')
   .get('/1.json')
diff --git a/services/bugzilla/bugzilla.tester.js b/services/bugzilla/bugzilla.tester.js
index cc2664efc62be6a8b20f27aa4e4cbac0c5455cda..24b0a41eefe35db3082f0074b9a1429cd09c3d1b 100644
--- a/services/bugzilla/bugzilla.tester.js
+++ b/services/bugzilla/bugzilla.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const bzBugStatus = Joi.equal(
   'unconfirmed',
diff --git a/services/buildkite/buildkite.tester.js b/services/buildkite/buildkite.tester.js
index 9393761bf186f8dbe263b5f2c416d2204e812ccb..95c7a3a3928496512fb1e92b8a6c2ae0772b431e 100644
--- a/services/buildkite/buildkite.tester.js
+++ b/services/buildkite/buildkite.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isBuildStatus } = require('../../lib/build-status')
 const { invalidJSON } = require('../response-fixtures')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'buildkite',
diff --git a/services/bundlephobia/bundlephobia.tester.js b/services/bundlephobia/bundlephobia.tester.js
index f4c8305d5e3b1aebc56d940a1b11852530e6e44b..f815dd06f12908493b312e7708403c5cc148a7f3 100644
--- a/services/bundlephobia/bundlephobia.tester.js
+++ b/services/bundlephobia/bundlephobia.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 const { isFileSize } = require('../test-validators')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'bundlephobia',
diff --git a/services/cauditor/cauditor.tester.js b/services/cauditor/cauditor.tester.js
index 80e6a16e804d4de405519a0a5da228a32c06494e..e971d175f8b02af38594b2f5058421918ae28b2b 100644
--- a/services/cauditor/cauditor.tester.js
+++ b/services/cauditor/cauditor.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'cauditor',
diff --git a/services/cdnjs/cdnjs.tester.js b/services/cdnjs/cdnjs.tester.js
index 6b4f5a833b68e17fb607621994f082b594c418d1..4618f25a5b6adbf2b1d72e2ea858e1661adc0e2e 100644
--- a/services/cdnjs/cdnjs.tester.js
+++ b/services/cdnjs/cdnjs.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isVPlusTripleDottedVersion } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('cdnjs (valid)')
   .get('/jquery.json')
diff --git a/services/chocolatey/chocolatey.tester.js b/services/chocolatey/chocolatey.tester.js
index 064d8d7e6e13aa665235b6aaa164bdb0dea5dccd..693fba22a8503533c4be346442b1564214f15a6d 100644
--- a/services/chocolatey/chocolatey.tester.js
+++ b/services/chocolatey/chocolatey.tester.js
@@ -11,7 +11,7 @@ const {
   nuGetV2VersionJsonFirstCharZero,
   nuGetV2VersionJsonFirstCharNotZero,
 } = require('../nuget-fixtures')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'chocolatey',
diff --git a/services/chrome-web-store/chrome-web-store.tester.js b/services/chrome-web-store/chrome-web-store.tester.js
index 833d8c9042852e01e99a83ba87b7a8c306535d11..433441b6f714ef42ba34914b6495ad82d1bee08b 100644
--- a/services/chrome-web-store/chrome-web-store.tester.js
+++ b/services/chrome-web-store/chrome-web-store.tester.js
@@ -6,7 +6,7 @@ const {
   isStarRating,
   isMetric,
 } = require('../test-validators')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'chrome-web-store',
diff --git a/services/cii-best-practices/cii-best-practices.tester.js b/services/cii-best-practices/cii-best-practices.tester.js
index 5c7a78aee298f4e36e2fa319dcd47655eae10777..df1e28f8039a80fb3bb7703246b6285170961c4a 100644
--- a/services/cii-best-practices/cii-best-practices.tester.js
+++ b/services/cii-best-practices/cii-best-practices.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { withRegex } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('live: level known project')
   .get(`/level/1.json`)
diff --git a/services/circleci/circleci.tester.js b/services/circleci/circleci.tester.js
index 2cdb7d85dd329673454a302ea5b3c92b6580cce8..c27a34f5a539fb3442b9a81d26d8ae9decb7b5f5 100644
--- a/services/circleci/circleci.tester.js
+++ b/services/circleci/circleci.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 const { isBuildStatus } = require('../../lib/build-status')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'circleci',
diff --git a/services/clojars/clojars-downloads.tester.js b/services/clojars/clojars-downloads.tester.js
index f06f4174b2ed88f52cb73f35290b88ad346b9919..06f79a4319a7373b65663082e279794c251db7ef 100644
--- a/services/clojars/clojars-downloads.tester.js
+++ b/services/clojars/clojars-downloads.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isMetric } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('clojars downloads (valid)')
   .get('/prismic.json')
diff --git a/services/clojars/clojars-version.tester.js b/services/clojars/clojars-version.tester.js
index 078acaf85bcc9d46762d214cdd4935be8e4f9d25..dd6efccfe11d0b3bfd7c22b51e31a78634f84c7f 100644
--- a/services/clojars/clojars-version.tester.js
+++ b/services/clojars/clojars-version.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('clojars (valid)')
   .get('/prismic.json')
diff --git a/services/cocoapods/cocoapods-apps.tester.js b/services/cocoapods/cocoapods-apps.tester.js
index 43b36324a72968cba73dd0596d2e5013321138c4..0a2be6618fd5ad104492de7d7e2418d7c151dd4d 100644
--- a/services/cocoapods/cocoapods-apps.tester.js
+++ b/services/cocoapods/cocoapods-apps.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const t = (module.exports = new ServiceTester({
   id: 'CocoapodsApps',
   title: 'CocoapodsApps',
diff --git a/services/cocoapods/cocoapods-downloads.tester.js b/services/cocoapods/cocoapods-downloads.tester.js
index ef534d023da89797dd37fb96b0521466ea75ad73..92f008aa500e09e5976c685a61a0ebe0a9c4c11b 100644
--- a/services/cocoapods/cocoapods-downloads.tester.js
+++ b/services/cocoapods/cocoapods-downloads.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'CocoapodsDownloads',
diff --git a/services/cocoapods/cocoapods-license.tester.js b/services/cocoapods/cocoapods-license.tester.js
index 282b10d43ddfcf8f8f6324277111edae74cc6c95..bbc5a2375d26a5b095889237814b4557cb063a4d 100644
--- a/services/cocoapods/cocoapods-license.tester.js
+++ b/services/cocoapods/cocoapods-license.tester.js
@@ -2,7 +2,7 @@
 
 const { invalidJSON } = require('../response-fixtures')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('license (valid)')
   .get('/AFNetworking.json')
diff --git a/services/cocoapods/cocoapods-metrics.tester.js b/services/cocoapods/cocoapods-metrics.tester.js
index 5ea55a2504e0d42934bfcb8474700fa7d139aebf..5ced9e19e7d6b27d8a0a02b3fa756c87f916566c 100644
--- a/services/cocoapods/cocoapods-metrics.tester.js
+++ b/services/cocoapods/cocoapods-metrics.tester.js
@@ -4,7 +4,7 @@ const Joi = require('joi')
 const { invalidJSON } = require('../response-fixtures')
 const { isIntegerPercentage } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('doc percent (valid)')
   .get('/AFNetworking.json')
diff --git a/services/cocoapods/cocoapods-platform.tester.js b/services/cocoapods/cocoapods-platform.tester.js
index 9f3b9fed5995f99caf7e5d71b093684d6aa9fe2e..66e9fd16fad831df08e4292ad017aa9eb9efd468 100644
--- a/services/cocoapods/cocoapods-platform.tester.js
+++ b/services/cocoapods/cocoapods-platform.tester.js
@@ -7,7 +7,7 @@ const isPlatform = Joi.string().regex(
   /^(osx|ios|tvos|watchos)( \| (osx|ios|tvos|watchos))*$/
 )
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('platform (valid)')
   .get('/AFNetworking.json')
diff --git a/services/cocoapods/cocoapods-version.tester.js b/services/cocoapods/cocoapods-version.tester.js
index 547e7b462942892c297f610667e89de769903990..cc2423b0646a46110590e76910a3e5d76d32101b 100644
--- a/services/cocoapods/cocoapods-version.tester.js
+++ b/services/cocoapods/cocoapods-version.tester.js
@@ -4,7 +4,7 @@ const Joi = require('joi')
 const { isVPlusDottedVersionAtLeastOne } = require('../test-validators')
 const { invalidJSON } = require('../response-fixtures')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('version (valid)')
   .get('/AFNetworking.json')
diff --git a/services/codacy/codacy-coverage.tester.js b/services/codacy/codacy-coverage.tester.js
index fc82b94bfbda1a7c14cae1d3d8fd2839e1a13858..0da5796bf840e457af4a898804d8a8d73cf027a6 100644
--- a/services/codacy/codacy-coverage.tester.js
+++ b/services/codacy/codacy-coverage.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isIntegerPercentage } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Coverage')
   .get('/59d607d0e311408885e418004068ea58.json')
diff --git a/services/codacy/codacy-grade.tester.js b/services/codacy/codacy-grade.tester.js
index 481fbf952367d3af788a4b108d2c6fe6f1f273ef..55168e6b10e60693be368aaf37043eb08c265a25 100644
--- a/services/codacy/codacy-grade.tester.js
+++ b/services/codacy/codacy-grade.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { codacyGrade } = require('./codacy-helpers')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Code quality')
   .get('/grade/e27821fb6289410b8f58338c7e0bc686.json')
diff --git a/services/codeclimate/codeclimate.tester.js b/services/codeclimate/codeclimate.tester.js
index 520fcfe587531f3ee520870d97b85af50bdc7b31..38e7da77c0455eac9c7206b0e9072bda9e13767b 100644
--- a/services/codeclimate/codeclimate.tester.js
+++ b/services/codeclimate/codeclimate.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isIntegerPercentage } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({
diff --git a/services/codecov/codecov.tester.js b/services/codecov/codecov.tester.js
index 63f6f621b7ca10b67242ddcd2a727327f1fcb188..753d7340f7e0a246c7ed9934ba48e91e27da0e1b 100644
--- a/services/codecov/codecov.tester.js
+++ b/services/codecov/codecov.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isIntegerPercentage } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({
diff --git a/services/codeship/codeship.tester.js b/services/codeship/codeship.tester.js
index efb0579187c923199698cc0859422f01ca7a4cfb..ea2009cb28c5c83b0ab54188bba2705092338800 100644
--- a/services/codeship/codeship.tester.js
+++ b/services/codeship/codeship.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 const { isBuildStatus } = require('../../lib/build-status')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'codeship',
diff --git a/services/codetally/codetally.tester.js b/services/codetally/codetally.tester.js
index d9f155b6d9441427179e881f8fac24e711f88ede..1128f3ce24af345648184ec7041e609623d6008c 100644
--- a/services/codetally/codetally.tester.js
+++ b/services/codetally/codetally.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 // This test will extract the currency value from the
 // string value response from the server.
diff --git a/services/conda/conda.tester.js b/services/conda/conda.tester.js
index b508fbadc7a3f90c38a58613e7d065b326ca1559..db304d6dcf1738a6030b2ecec83b9b966772f269 100644
--- a/services/conda/conda.tester.js
+++ b/services/conda/conda.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isVPlusTripleDottedVersion, isMetric } = require('../test-validators')
 
 const isCondaPlatform = Joi.string().regex(/^\w+-[\w\d]+( \| \w+-[\w\d]+)*$/)
diff --git a/services/continuousphp/continuousphp.tester.js b/services/continuousphp/continuousphp.tester.js
index 9b4aa85fd52553568735294920b572e1579ce7da..5eabd255e84eaf0c90e0eeef6887efbbdae04c14 100644
--- a/services/continuousphp/continuousphp.tester.js
+++ b/services/continuousphp/continuousphp.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isBuildStatus } = require('../../lib/build-status')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('build status on default branch')
   .get('/git-hub/doctrine/dbal.json')
diff --git a/services/cookbook/cookbook.tester.js b/services/cookbook/cookbook.tester.js
index 61a180d25fff427563d305286b2ee45b1e2629f5..fe8f619669853307d0921c68945f1c38cf16df7f 100644
--- a/services/cookbook/cookbook.tester.js
+++ b/services/cookbook/cookbook.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isVPlusDottedVersionAtLeastOne } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('version')
   .get('/chef-sugar.json')
diff --git a/services/coveralls/coveralls.tester.js b/services/coveralls/coveralls.tester.js
index d5f079a2e5835aaac1ef926071c90d4ebd1e5048..ab9f826476aeff13697da07b2fe66f87b02c04f5 100644
--- a/services/coveralls/coveralls.tester.js
+++ b/services/coveralls/coveralls.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 const { isIntegerPercentage } = require('../test-validators')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'coveralls',
diff --git a/services/coverity/coverity-on-demand.tester.js b/services/coverity/coverity-on-demand.tester.js
index eb25cc97c8eefdb8bde099d3ca00578548d5c2f8..23e957ba711768e7c3ea2d91ebdaf2b1726fe070 100644
--- a/services/coverity/coverity-on-demand.tester.js
+++ b/services/coverity/coverity-on-demand.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'CoverityOnDemand',
diff --git a/services/coverity/coverity-scan.tester.js b/services/coverity/coverity-scan.tester.js
index f2ef041e39de61a8cd903db9c8e347a245cdc389..a92ab3d6431a41e58c30b63e6f2c621f839659c3 100644
--- a/services/coverity/coverity-scan.tester.js
+++ b/services/coverity/coverity-scan.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'CoverityScan',
diff --git a/services/cpan/cpan-license.tester.js b/services/cpan/cpan-license.tester.js
index 95831ec71dbfa4190f1d1e6a08e01e3baa9f9b8d..3dcd6b21cd973e7d6ff5c971e829080a9883ca7b 100644
--- a/services/cpan/cpan-license.tester.js
+++ b/services/cpan/cpan-license.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('license (valid)')
   .get('/Config-Augeas.json')
diff --git a/services/cpan/cpan-version.tester.js b/services/cpan/cpan-version.tester.js
index 4a5d5de5a95b8e216cd78a2234a7f3aafbe20236..4659f3271a65e61ae1a6bddb7b2399b8c894738d 100644
--- a/services/cpan/cpan-version.tester.js
+++ b/services/cpan/cpan-version.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const { isVPlusDottedVersionAtLeastOne } = require('../test-validators')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('version (valid)')
   .get('/Config-Augeas.json')
diff --git a/services/cran/cran.tester.js b/services/cran/cran.tester.js
index f7b6dfc262332c7ae59782f64aebed1d6a410ac4..decb96612813a397f31f57498c72c7ac10179ab3 100644
--- a/services/cran/cran.tester.js
+++ b/services/cran/cran.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isVPlusTripleDottedVersion } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({
diff --git a/services/crates/crates-downloads.tester.js b/services/crates/crates-downloads.tester.js
index e7419e917a26fd29cb464d1b162c48ca71b0e432..8cb1ddd50bd20a0f73f489a2943aa2b4c3f4bb85 100644
--- a/services/crates/crates-downloads.tester.js
+++ b/services/crates/crates-downloads.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isMetric } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({
diff --git a/services/crates/crates-license.tester.js b/services/crates/crates-license.tester.js
index 796372ff9f60f7aad035e6c70de22e05ab7f1f15..e18a0929e47f41e6f6a98e9448dc50881ef93f62 100644
--- a/services/crates/crates-license.tester.js
+++ b/services/crates/crates-license.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'crates',
diff --git a/services/crates/crates-version.tester.js b/services/crates/crates-version.tester.js
index 0edb46e02e9f6640a64767b907237fc29263dd7e..c0813eaf290e356eb01f3c935144962b82d63219 100644
--- a/services/crates/crates-version.tester.js
+++ b/services/crates/crates-version.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isSemver } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({
diff --git a/services/ctan/ctan.tester.js b/services/ctan/ctan.tester.js
index ffeb0e0a1ac9163779dc17bcee0722fc8f50c08a..b02be86e3015e7b546e69e6cef0e2700b2e3063e 100644
--- a/services/ctan/ctan.tester.js
+++ b/services/ctan/ctan.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isVPlusDottedVersionAtLeastOne } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({
diff --git a/services/date/date.tester.js b/services/date/date.tester.js
index ee9bf661bca3cfdb8e7cc4260dd20775a5c50900..c9d9be07adb2533554f3936d652de5f4ee938c05 100644
--- a/services/date/date.tester.js
+++ b/services/date/date.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isRelativeFormattedDate } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({
diff --git a/services/david/david.tester.js b/services/david/david.tester.js
index 7c22cb9c1836cc1dfbabe1dfab3aadbe6f446bca..4cdcc374ce544e977a4db1764ecb5041401fd083 100644
--- a/services/david/david.tester.js
+++ b/services/david/david.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { invalidJSON } = require('../response-fixtures')
 
 const isDependencyStatus = Joi.string().valid(
diff --git a/services/debug/debug.tester.js b/services/debug/debug.tester.js
index f962b53b1f27b0d8295dcbbc9d25ecbe02f03976..db7f1d218c0e5fb2e7553871624ed3ea0fbf4a6b 100644
--- a/services/debug/debug.tester.js
+++ b/services/debug/debug.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('start time')
   .get('/starttime.json')
diff --git a/services/dependabot/dependabot.tester.js b/services/dependabot/dependabot.tester.js
index f2ae943761d3bea5f1ad2306f4a3a7af60d5c4cb..59fc2c5f514374b553dd16e68ef7d66057c50c0f 100644
--- a/services/dependabot/dependabot.tester.js
+++ b/services/dependabot/dependabot.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isIntegerPercentage } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('semver stability (valid)')
   .get('/bundler/puma.json')
diff --git a/services/depfu/depfu.tester.js b/services/depfu/depfu.tester.js
index 4778374ad275ab1e6b8fcb5bbc923ac9cd12d8e0..c72b117efc5d2235de48504f596b7082105650f7 100644
--- a/services/depfu/depfu.tester.js
+++ b/services/depfu/depfu.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const isDependencyStatus = Joi.string().valid(
   'insecure',
diff --git a/services/discord/discord.tester.js b/services/discord/discord.tester.js
index a3ed95044616d209721764cdb3557cf34fae07d0..6d9a484c80d0ab10d860aab6cc153b401d22ccd1 100644
--- a/services/discord/discord.tester.js
+++ b/services/discord/discord.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('gets status for Reactiflux')
   .get('/102860784329052160.json?style=_shields_test')
diff --git a/services/discourse/discourse.tester.js b/services/discourse/discourse.tester.js
index bcb08c2a6407ffbc823eab3f7a2ef9b8e4383ec8..74857a677827e97aa18970f605ebab94c495e327 100644
--- a/services/discourse/discourse.tester.js
+++ b/services/discourse/discourse.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'discourse',
diff --git a/services/dockbit/dockbit.tester.js b/services/dockbit/dockbit.tester.js
index c7474386a7e171aa2d6862b51ef8d9b71bb221db..3c1f69a910db1b783d95121ea7067bd0187fef0b 100644
--- a/services/dockbit/dockbit.tester.js
+++ b/services/dockbit/dockbit.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'dockbit',
diff --git a/services/docker/docker-automated.tester.js b/services/docker/docker-automated.tester.js
index 0242e147a9128c0383750c165b297b7b21c524b2..a62f2cb85ba190b8b052c56cfa4bcfcd7e72ffc4 100644
--- a/services/docker/docker-automated.tester.js
+++ b/services/docker/docker-automated.tester.js
@@ -4,7 +4,7 @@ const Joi = require('joi')
 const { dockerBlue } = require('./docker-helpers')
 const isAutomatedBuildStatus = Joi.string().valid('automated', 'manual')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('docker automated build (valid, library)')
   .get('/_/ubuntu.json')
diff --git a/services/docker/docker-build.tester.js b/services/docker/docker-build.tester.js
index ec2146128f78641e7c89ff04965ff22ea83e4435..670d4217d75180d83e8ed19ee355c4822baaed31 100644
--- a/services/docker/docker-build.tester.js
+++ b/services/docker/docker-build.tester.js
@@ -4,7 +4,7 @@ const Joi = require('joi')
 const { dockerBlue } = require('./docker-helpers')
 const { isBuildStatus } = require('../../lib/build-status')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('docker build status (valid, user)')
   .get('/jrottenberg/ffmpeg.json')
diff --git a/services/docker/docker-pulls.tester.js b/services/docker/docker-pulls.tester.js
index 944b8b53225a7ef4a1acabeae5b78dc6a7557e6c..381942a5e88d55c11c61a2d469b32f3ed28e85f5 100644
--- a/services/docker/docker-pulls.tester.js
+++ b/services/docker/docker-pulls.tester.js
@@ -4,7 +4,7 @@ const Joi = require('joi')
 const { dockerBlue } = require('./docker-helpers')
 const { isMetric } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('docker pulls (valid, library)')
   .get('/_/ubuntu.json?style=_shields_test')
diff --git a/services/docker/docker-stars.tester.js b/services/docker/docker-stars.tester.js
index eb1ff4bf64759588e81339feacdf5661383d4954..61c97b908a39a68f3651d7e33f792bdf413af60d 100644
--- a/services/docker/docker-stars.tester.js
+++ b/services/docker/docker-stars.tester.js
@@ -4,7 +4,7 @@ const Joi = require('joi')
 const { isMetric } = require('../test-validators')
 const { dockerBlue } = require('./docker-helpers')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('docker stars (valid, library)')
   .get('/_/ubuntu.json?style=_shields_test')
diff --git a/services/dotnetstatus/dotnetstatus.tester.js b/services/dotnetstatus/dotnetstatus.tester.js
index 000988ae2417ad43fc259518839e38194d30d3a6..745770954f35efc9d8bc47a0f99964951f548b15 100644
--- a/services/dotnetstatus/dotnetstatus.tester.js
+++ b/services/dotnetstatus/dotnetstatus.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'dotnetstatus',
diff --git a/services/dub/dub-download.tester.js b/services/dub/dub-download.tester.js
index bf8a5862c1a435637a05dd5b8424d71cd9f1eeac..aa27f8a83324c7c0044e7bad1873e783561c09e2 100644
--- a/services/dub/dub-download.tester.js
+++ b/services/dub/dub-download.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isMetric, isMetricOverTimePeriod } = require('../test-validators')
 
 const isDownloadsColor = Joi.equal(
diff --git a/services/dub/dub-license.tester.js b/services/dub/dub-license.tester.js
index bc0a266c92ea84fdba4d8800e5d98b9e80e53561..357b58b79540e35557d4e6583195eed81dc1dac3 100644
--- a/services/dub/dub-license.tester.js
+++ b/services/dub/dub-license.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('license (valid)')
   .get('/vibe-d.json')
diff --git a/services/dub/dub-version.tester.js b/services/dub/dub-version.tester.js
index 5a7311693967eb26dd6323e23c28e50cb17189b3..e8e21d56e6913797f5aac9d4ec944ddaad654909 100644
--- a/services/dub/dub-version.tester.js
+++ b/services/dub/dub-version.tester.js
@@ -5,7 +5,7 @@ const {
   isVPlusDottedVersionNClausesWithOptionalSuffix,
 } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('version (valid)')
   .get('/vibe-d.json?style=_shields_test')
diff --git a/services/dynamic/dynamic-json.tester.js b/services/dynamic/dynamic-json.tester.js
index f433fb70d1c363a4c0b15c3b50354804c5e12797..1f454ee8836ffd9a532b8f67333f218e165d081f 100644
--- a/services/dynamic/dynamic-json.tester.js
+++ b/services/dynamic/dynamic-json.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { expect } = require('chai')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('No URL specified')
   .get('.json?query=$.name&label=Package Name&style=_shields_test')
diff --git a/services/dynamic/dynamic-xml.tester.js b/services/dynamic/dynamic-xml.tester.js
index f5738fa1bf2e2e5e4af088aaf1884da5fdf5d669..d1f18def87bb4c6b254676231fd15e639154f0f4 100644
--- a/services/dynamic/dynamic-xml.tester.js
+++ b/services/dynamic/dynamic-xml.tester.js
@@ -4,7 +4,7 @@ const Joi = require('joi')
 const { expect } = require('chai')
 const { isSemver } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('No URL specified')
   .get('.json?query=//name&label=Package Name&style=_shields_test')
diff --git a/services/dynamic/dynamic-yaml.tester.js b/services/dynamic/dynamic-yaml.tester.js
index 9efd4f441453fdd3774b48d129cbc146b9fc967a..7a82cfc7881c07683195eb894bfc5ac56806fa44 100644
--- a/services/dynamic/dynamic-yaml.tester.js
+++ b/services/dynamic/dynamic-yaml.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('No URL specified')
   .get('.json?query=$.name&label=Package Name&style=_shields_test')
diff --git a/services/eclipse-marketplace/eclipse-marketplace-downloads.tester.js b/services/eclipse-marketplace/eclipse-marketplace-downloads.tester.js
index c06bfec0a1b360e0fd49dca048e93ae53215d9f2..d2f6724150e958b4bf6be4295d7215f028a6b97c 100644
--- a/services/eclipse-marketplace/eclipse-marketplace-downloads.tester.js
+++ b/services/eclipse-marketplace/eclipse-marketplace-downloads.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isMetric, isMetricOverTimePeriod } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({
diff --git a/services/eclipse-marketplace/eclipse-marketplace-favorites.tester.js b/services/eclipse-marketplace/eclipse-marketplace-favorites.tester.js
index 658d3feac95181ad3dd70df19d4880295107e10f..392a9262c5b7ca750fe8d92817eb0a0b56d3ae40 100644
--- a/services/eclipse-marketplace/eclipse-marketplace-favorites.tester.js
+++ b/services/eclipse-marketplace/eclipse-marketplace-favorites.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('favorites count')
   .get('/notepad4e.json')
diff --git a/services/eclipse-marketplace/eclipse-marketplace-license.tester.js b/services/eclipse-marketplace/eclipse-marketplace-license.tester.js
index b143a9777adbddcf81bf7575528ca1dd6a65265a..92bf92d827ba0d234d24aa8366f658292a3c01da 100644
--- a/services/eclipse-marketplace/eclipse-marketplace-license.tester.js
+++ b/services/eclipse-marketplace/eclipse-marketplace-license.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('license')
   .get('/notepad4e.json')
diff --git a/services/eclipse-marketplace/eclipse-marketplace-update.tester.js b/services/eclipse-marketplace/eclipse-marketplace-update.tester.js
index 0f7b20cceecc13f66804feaaeb126f76710e689c..ddc6cd598fdf4ce41caeb0cf1d2893cc8ab8b023 100644
--- a/services/eclipse-marketplace/eclipse-marketplace-update.tester.js
+++ b/services/eclipse-marketplace/eclipse-marketplace-update.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isFormattedDate } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('last update date')
   .get('/notepad4e.json')
diff --git a/services/eclipse-marketplace/eclipse-marketplace-version.tester.js b/services/eclipse-marketplace/eclipse-marketplace-version.tester.js
index 14ac85b100fa871f345638cf01b3f2a617b1462d..bc8bb2c301fcf260f6fbc863c001789a322633a2 100644
--- a/services/eclipse-marketplace/eclipse-marketplace-version.tester.js
+++ b/services/eclipse-marketplace/eclipse-marketplace-version.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isVPlusDottedVersionAtLeastOne } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('marketplace version')
   .get('/notepad4e.json')
diff --git a/services/elm-package/elm-package.tester.js b/services/elm-package/elm-package.tester.js
index d378ba4b0ff6db3a8a593cdc5ffdb56ddb1321e3..a0f2b44c147fc820d650ea5a4d00cd0fb46c6bb0 100644
--- a/services/elm-package/elm-package.tester.js
+++ b/services/elm-package/elm-package.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isSemver } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('gets the package version of elm/core')
   .get('/elm/core.json')
diff --git a/services/endpoint/endpoint.tester.js b/services/endpoint/endpoint.tester.js
index 6de816adc49e99858a253ad5b595012dca42bae2..2d8fd9a4c260ec9bd30b9f7e37ccd34870e68314 100644
--- a/services/endpoint/endpoint.tester.js
+++ b/services/endpoint/endpoint.tester.js
@@ -3,7 +3,7 @@
 const { expect } = require('chai')
 const { getShieldsIcon } = require('../../lib/logos')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Valid schema (mocked)')
   .get('.json?url=https://example.com/badge')
diff --git a/services/f-droid/f-droid.tester.js b/services/f-droid/f-droid.tester.js
index 5ce1831cfa974c78e3b9248725c4047b963fd555..b636e4ca4d063e2b77822d359ee8fb01db5b3389 100644
--- a/services/f-droid/f-droid.tester.js
+++ b/services/f-droid/f-droid.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isVPlusDottedVersionAtLeastOne } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({
diff --git a/services/flip/flip.tester.js b/services/flip/flip.tester.js
index 59b000b41b7a4b622339afcd5aa16eeeb1f930f8..c52365b4f1b2c6ec85a2126f8c02394539eb3fd6 100644
--- a/services/flip/flip.tester.js
+++ b/services/flip/flip.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('First request')
   .get('.json')
diff --git a/services/gem/gem-downloads.tester.js b/services/gem/gem-downloads.tester.js
index f2d4e968053517548d5d93df3e4a72bdc5530e1c..7842477d3e02b9f2bf184bdfc2b9e5c5cd3eb0c3 100644
--- a/services/gem/gem-downloads.tester.js
+++ b/services/gem/gem-downloads.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isMetric } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('total downloads (valid)')
   .get('/dt/rails.json')
diff --git a/services/gem/gem-owner.tester.js b/services/gem/gem-owner.tester.js
index 741dbfe129a5abea5544a5ab262cd288e29065ba..34b85040c43d0e7ab1421629f2915823eb892354 100644
--- a/services/gem/gem-owner.tester.js
+++ b/services/gem/gem-owner.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('users (valid)')
   .get('/raphink.json')
diff --git a/services/gem/gem-rank.tester.js b/services/gem/gem-rank.tester.js
index 033841f4f016448f8d6279511e719effc31a7b70..22f3b61d1296110b581e9a7d3616945f9aaa17ca 100644
--- a/services/gem/gem-rank.tester.js
+++ b/services/gem/gem-rank.tester.js
@@ -7,7 +7,7 @@ const isOrdinalNumberDaily = Joi.string().regex(
   /^[1-9][0-9]*(ᵗʰ|ˢᵗ|ⁿᵈ|ʳᵈ) daily$/
 )
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('total rank (valid)')
   .get('/rt/rspec-puppet-facts.json')
diff --git a/services/gem/gem-version.tester.js b/services/gem/gem-version.tester.js
index f4a6ce93b140c3ea8334fcfdaf0209aa96bdbc9b..9d650a413d2bf568098dd216baf7702942203bf4 100644
--- a/services/gem/gem-version.tester.js
+++ b/services/gem/gem-version.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isVPlusDottedVersionAtLeastOne } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('version (valid)')
   .get('/formatador.json')
diff --git a/services/gemnasium/gemnasium.tester.js b/services/gemnasium/gemnasium.tester.js
index d2954c05bc404f9c7019ec4f633093bf2673e93d..62357635747f415e5cf87b36e1e305924187e8b6 100644
--- a/services/gemnasium/gemnasium.tester.js
+++ b/services/gemnasium/gemnasium.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'gemnasium',
diff --git a/services/github/github-commit-activity.tester.js b/services/github/github-commit-activity.tester.js
index 105912d7b75f5e0d6edfe26b446a5bae0627d47f..2c2a909b361495e96607f33002fbc5ce93a12f56 100644
--- a/services/github/github-commit-activity.tester.js
+++ b/services/github/github-commit-activity.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isMetricOverTimePeriod } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('commit activity (1 year)')
   .get('/y/eslint/eslint.json')
diff --git a/services/github/github-commit-status.tester.js b/services/github/github-commit-status.tester.js
index 22100c4813d11f57f96ec46f16acb5b4ade8f972..11f6dd316640b00b9a2d6f59c0604d70bae14164 100644
--- a/services/github/github-commit-status.tester.js
+++ b/services/github/github-commit-status.tester.js
@@ -2,7 +2,7 @@
 
 const { invalidJSON } = require('../response-fixtures')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('commit status - commit in branch')
   .get(
diff --git a/services/github/github-commits-since.tester.js b/services/github/github-commits-since.tester.js
index c9ddc8194d0f874ea7f811088d5e8630a7db0b19..1bcd596a5240fed725f5f9855c1eec4f46f2e60b 100644
--- a/services/github/github-commits-since.tester.js
+++ b/services/github/github-commits-since.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Commits since')
   .get(
diff --git a/services/github/github-contributors.tester.js b/services/github/github-contributors.tester.js
index b9d30d02cc72a8382c129e372c038078212da21a..e946f28e33727be153ce3fe194e7cbe4d8a86f63 100644
--- a/services/github/github-contributors.tester.js
+++ b/services/github/github-contributors.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 const { isMetric } = require('../test-validators')
 
 t.create('Contributors')
diff --git a/services/github/github-downloads.tester.js b/services/github/github-downloads.tester.js
index d1181384e27da7a6e3d8643eb16c4bded3ac1a3f..8b2e6a461e0ba4a6038a362b50a21a1376c07bb7 100644
--- a/services/github/github-downloads.tester.js
+++ b/services/github/github-downloads.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isMetric } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Downloads all releases')
   .get('/downloads/photonstorm/phaser/total.json')
diff --git a/services/github/github-followers.tester.js b/services/github/github-followers.tester.js
index 6b4f85e8d2a86d6f648083d017a742359689cb1a..087847b36d325b8ea64c11575db187aa8291d486 100644
--- a/services/github/github-followers.tester.js
+++ b/services/github/github-followers.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Followers')
   .get('/webcaetano.json')
diff --git a/services/github/github-forks.tester.js b/services/github/github-forks.tester.js
index 6dfbae5a2e8732a9251e8cddf46a29a833622210..53d9950112c113c673c09d569f4146957d0e57cb 100644
--- a/services/github/github-forks.tester.js
+++ b/services/github/github-forks.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Forks')
   .get('/badges/shields.json')
diff --git a/services/github/github-issue-detail.tester.js b/services/github/github-issue-detail.tester.js
index 8ac4ce19cbb9de8278705969db38d7d02c0a5de8..a6fb65efb2f1e4f7c5cf50841a49b1a84ca71638 100644
--- a/services/github/github-issue-detail.tester.js
+++ b/services/github/github-issue-detail.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isFormattedDate } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('github issue state')
   .get('/s/badges/shields/979.json')
diff --git a/services/github/github-issues.tester.js b/services/github/github-issues.tester.js
index 725dbc61f0cd819984ce34c1430df3bf804a2a60..fca450d7510e7af03c6ddeb6a1c63c2062e45304 100644
--- a/services/github/github-issues.tester.js
+++ b/services/github/github-issues.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isMetric, isMetricOpenIssues } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('GitHub closed pull requests')
   .get('/issues-pr-closed/badges/shields.json')
diff --git a/services/github/github-languages.tester.js b/services/github/github-languages.tester.js
index ffbc8624c24b3f6aa7e4eb558e0c4219a47bb541..9dbc142ed0e414859d036ff68978ed06a69a1f0c 100644
--- a/services/github/github-languages.tester.js
+++ b/services/github/github-languages.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isFileSize } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({
diff --git a/services/github/github-last-commit.tester.js b/services/github/github-last-commit.tester.js
index e58084fff857c67971f68a5c416e6dd10f6e73f8..4018b0eb74f56d6659866b35b3628b1daf724db8 100644
--- a/services/github/github-last-commit.tester.js
+++ b/services/github/github-last-commit.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isFormattedDate } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('last commit (recent)')
   .get('/eslint/eslint.json')
diff --git a/services/github/github-license.tester.js b/services/github/github-license.tester.js
index d7e6b1c8fc90787885472fc8d911207ac888a18a..6d5fcd4a39f6f033fe52b35c4bd7dcf001f7c09d 100644
--- a/services/github/github-license.tester.js
+++ b/services/github/github-license.tester.js
@@ -7,7 +7,7 @@ const permissiveLicenseColor = licenseToColor('MIT')
 const copyleftLicenseColor = licenseToColor('GPL-3.0')
 const unknownLicenseColor = licenseToColor()
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Public domain license')
   .get('/github/gitignore.json?style=_shields_test')
diff --git a/services/github/github-manifest.tester.js b/services/github/github-manifest.tester.js
index 43afb4eecbbf044cdc7fc3ac81da47ed2cb69701..b7a4253bdcba877784ef930c8f7497701951ed2b 100644
--- a/services/github/github-manifest.tester.js
+++ b/services/github/github-manifest.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isVPlusDottedVersionAtLeastOne } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({
diff --git a/services/github/github-package-json.tester.js b/services/github/github-package-json.tester.js
index 3d3742ad22a208fbe9ff7a827043ca408c856561..f187eee7ea9eae88ba122c339e369969f74f4f30 100644
--- a/services/github/github-package-json.tester.js
+++ b/services/github/github-package-json.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isSemver } = require('../test-validators')
 const { semverRange } = require('../validators')
 
diff --git a/services/github/github-pull-request-check-state.tester.js b/services/github/github-pull-request-check-state.tester.js
index 64ba8e215973a0933f190e900d1f259be16757d2..a7df0b57669fda0ed3eb47b03bc5290bc0cfd1c4 100644
--- a/services/github/github-pull-request-check-state.tester.js
+++ b/services/github/github-pull-request-check-state.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('github pull request check state')
   .get('/s/pulls/badges/shields/1110.json')
diff --git a/services/github/github-release.tester.js b/services/github/github-release.tester.js
index 30ec7a04caf8d735871eb2b35e2945d2902aa9a6..7c8f61d7957cf2d216f131e2076373468fff8273 100644
--- a/services/github/github-release.tester.js
+++ b/services/github/github-release.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isFormattedDate } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Release')
   .get('/release/photonstorm/phaser.json')
diff --git a/services/github/github-repo-size.tester.js b/services/github/github-repo-size.tester.js
index 0a0e209cb4cd080e9daf3f5cc971b8f9fbb1554a..d527e599b5ee65c927fe1ded55ba80bf1e75393f 100644
--- a/services/github/github-repo-size.tester.js
+++ b/services/github/github-repo-size.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isFileSize } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('repository size')
   .get('/badges/shields.json')
diff --git a/services/github/github-search.tester.js b/services/github/github-search.tester.js
index 238b25d7fef345455796bd88392297684ff98c4a..06437f5a79266f923b16d604e6db0763f0edd150 100644
--- a/services/github/github-search.tester.js
+++ b/services/github/github-search.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isMetric } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('hit counter')
   .get('/badges/shields/async%20handle.json')
diff --git a/services/github/github-size.tester.js b/services/github/github-size.tester.js
index 9899aeebcaea2db206fb54d5c2e77f2031c31e6a..e1163e9b3551ff66c737313bbcad1b0e759d1ed5 100644
--- a/services/github/github-size.tester.js
+++ b/services/github/github-size.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isFileSize } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('File size')
   .get('/webcaetano/craft/build/phaser-craft.min.js.json')
diff --git a/services/github/github-stars.tester.js b/services/github/github-stars.tester.js
index 6d501a65c41fd079df1e6a7f435dcb419696a843..272743833161bef86288c42d7812831b9a1be436 100644
--- a/services/github/github-stars.tester.js
+++ b/services/github/github-stars.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Stars')
   .get('/badges/shields.json')
diff --git a/services/github/github-tag.tester.js b/services/github/github-tag.tester.js
index 4a2bd9f5cb5bee3c9cc514769ee356f8f07a9ea9..0d8946fe44edbff0a2465557a01dd13fa77eccf1 100644
--- a/services/github/github-tag.tester.js
+++ b/services/github/github-tag.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Tag')
   .get('/tag/photonstorm/phaser.json')
diff --git a/services/github/github-watchers.tester.js b/services/github/github-watchers.tester.js
index 3fae7e040afe4e19b4cfb612540c092ab5b8265d..f3eac4db8203a5668a1ad2e97325759350250bb4 100644
--- a/services/github/github-watchers.tester.js
+++ b/services/github/github-watchers.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Watchers')
   .get('/badges/shields.json')
diff --git a/services/gitlab/gitlab-pipeline-status.tester.js b/services/gitlab/gitlab-pipeline-status.tester.js
index b2eb24310d066eb7679143e4d540ca91ce5fba0b..5f7e8bbecc9eda0e1c88f52e53191fe6a7b19413 100644
--- a/services/gitlab/gitlab-pipeline-status.tester.js
+++ b/services/gitlab/gitlab-pipeline-status.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isBuildStatus } = require('../../lib/build-status')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Pipeline status')
   .get('/gitlab-org/gitlab-ce.json')
diff --git a/services/gitter/gitter.tester.js b/services/gitter/gitter.tester.js
index f5e7ecebae7366232c8f4f76e784e57c4dd8f59d..f8671b8fc77276f4a29c5ccffecd143a008955f2 100644
--- a/services/gitter/gitter.tester.js
+++ b/services/gitter/gitter.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('on gitter')
   .get('/nwjs/nw.js.json')
diff --git a/services/gratipay/gratipay.tester.js b/services/gratipay/gratipay.tester.js
index dbf2522d7ef82c663d3377db92e2fa8145328558..6d3accfc1c8c853083913da2f08aa78f446dc72e 100644
--- a/services/gratipay/gratipay.tester.js
+++ b/services/gratipay/gratipay.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'gratipay',
diff --git a/services/hackage/hackage-deps.tester.js b/services/hackage/hackage-deps.tester.js
index c8b2aa03f24c58d925ff16a982715eb551a8e94f..432b8f9e0018f1b601d74edc200e952778a1ff28 100644
--- a/services/hackage/hackage-deps.tester.js
+++ b/services/hackage/hackage-deps.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('hackage deps (valid)')
   .get('/lens.json')
diff --git a/services/hackage/hackage-version.tester.js b/services/hackage/hackage-version.tester.js
index cb6406624bad21ee95346a485505dd5ca3ad1fa8..2f897fd312dcbd38e6b5490df5395ee6ac8e670e 100644
--- a/services/hackage/hackage-version.tester.js
+++ b/services/hackage/hackage-version.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isVPlusDottedVersionAtLeastOne } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('hackage version (valid)')
   .get('/lens.json')
diff --git a/services/hexpm/hexpm.tester.js b/services/hexpm/hexpm.tester.js
index 8fd479f22ed3e99803529cf1d64a7f34a1963054..e9ad5734ea779184800e6b9662d76c65cb69f66d 100644
--- a/services/hexpm/hexpm.tester.js
+++ b/services/hexpm/hexpm.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isMetric, isMetricOverTimePeriod } = require('../test-validators')
 
 const isHexpmVersion = Joi.string().regex(/^v\d+.\d+.?\d?$/)
diff --git a/services/homebrew/homebrew.tester.js b/services/homebrew/homebrew.tester.js
index 87781afa61c2c8c502837d29d17258aa36fa39a3..f8be425c32edb6bf8caf1fe7f4b5e10de155b78e 100644
--- a/services/homebrew/homebrew.tester.js
+++ b/services/homebrew/homebrew.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isVPlusTripleDottedVersion } = require('../test-validators')
 const { invalidJSON } = require('../response-fixtures')
 
diff --git a/services/imagelayers/imagelayers.tester.js b/services/imagelayers/imagelayers.tester.js
index 51bf85fd5d386b1cd2237b9c7de0a445a0fba494..e8ce26803b043e9215b50232ef78480779b2b458 100644
--- a/services/imagelayers/imagelayers.tester.js
+++ b/services/imagelayers/imagelayers.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'imagelayers',
diff --git a/services/index.js b/services/index.js
index 5d1a86273306da07b223c5011d8ca7ecbe5deaff..14d418b6df2fe4ad701b3fce4a2b706077bc9653 100644
--- a/services/index.js
+++ b/services/index.js
@@ -1,11 +1,7 @@
 'use strict'
 
 const base = require('../core/base-service')
-const createServiceTester = require('../core/service-test-runner/create-service-tester')
-const ServiceTester = require('../core/service-test-runner/service-tester')
 
 module.exports = {
   ...base,
-  createServiceTester,
-  ServiceTester,
 }
diff --git a/services/issuestats/issuestats.tester.js b/services/issuestats/issuestats.tester.js
index 8eb3f8cb7aee6fbdee0a3d114afbf72d0991814a..ea8d5a45673e7fc00bfc7485d019e3a3a9c66da2 100644
--- a/services/issuestats/issuestats.tester.js
+++ b/services/issuestats/issuestats.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = new ServiceTester({ id: 'issuestats', title: 'Issue Stats' })
 module.exports = t
diff --git a/services/itunes/itunes.tester.js b/services/itunes/itunes.tester.js
index d5da284fae776edff413e6955644d82af8365396..0888f8a8ab90dc09ca17979eb0e10a46adc19b71 100644
--- a/services/itunes/itunes.tester.js
+++ b/services/itunes/itunes.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isVPlusDottedVersionAtLeastOne } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('iTunes version (valid)')
   .get('/324684580.json')
diff --git a/services/jenkins/jenkins-coverage.tester.js b/services/jenkins/jenkins-coverage.tester.js
index eb10f8c3fbdb214b6360f2ff915ce016d78e59a8..9f3926afd793793eaa25ee66d6c621c2bd9e94a1 100644
--- a/services/jenkins/jenkins-coverage.tester.js
+++ b/services/jenkins/jenkins-coverage.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isIntegerPercentage } = require('../test-validators')
 
 const t = new ServiceTester({
diff --git a/services/jenkins/jenkins-plugin-installs.tester.js b/services/jenkins/jenkins-plugin-installs.tester.js
index bb62c497ea35f424a43bf0c5ce65c63acc7f462d..66c355ef3c2fa69250a240551626874757a119fb 100644
--- a/services/jenkins/jenkins-plugin-installs.tester.js
+++ b/services/jenkins/jenkins-plugin-installs.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isMetric } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 // total installs
 
diff --git a/services/jenkins/jenkins-plugin-version.tester.js b/services/jenkins/jenkins-plugin-version.tester.js
index 2534f5c6b0dce0b02682d4913ddc74d7581ab0e8..fb35de98210b987582b40dec18ed84251c20925f 100644
--- a/services/jenkins/jenkins-plugin-version.tester.js
+++ b/services/jenkins/jenkins-plugin-version.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = new ServiceTester({
   id: 'jenkins-plugin',
diff --git a/services/jetbrains/jetbrains.tester.js b/services/jetbrains/jetbrains.tester.js
index c7bb86316e8ef7f0735143f9a7279cf197899e1d..a0fc53dd741c6951d3a191999b7ab3390e055906 100644
--- a/services/jetbrains/jetbrains.tester.js
+++ b/services/jetbrains/jetbrains.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isMetric, isVPlusDottedVersionNClauses } = require('../test-validators')
 
 const t = new ServiceTester({ id: 'jetbrains', title: 'JetBrains' })
diff --git a/services/jira/jira-issue.tester.js b/services/jira/jira-issue.tester.js
index b8fb77f058541838a8afb857dd184ca3db44cbe2..44d4c84c08c73d16190529c2d8fe6f5da58c518b 100644
--- a/services/jira/jira-issue.tester.js
+++ b/services/jira/jira-issue.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 const { mockJiraCreds, restore, user, pass } = require('./jira-test-helpers')
 
 t.create('live: unknown issue')
diff --git a/services/jira/jira-sprint.tester.js b/services/jira/jira-sprint.tester.js
index 595d51b937c96f4032fdaa78c32a2754dd251753..6bab3b7c85fd512f6034cb7e4b8d9d2459d15e90 100644
--- a/services/jira/jira-sprint.tester.js
+++ b/services/jira/jira-sprint.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 const { isIntegerPercentage } = require('../test-validators')
 const { mockJiraCreds, restore, user, pass } = require('./jira-test-helpers')
 
diff --git a/services/jitpack/jitpack.tester.js b/services/jitpack/jitpack.tester.js
index cbca26fde18920fab545d01ba284e2939269ef32..419d3b864954842c91f4bf0eb75db2d0b7271b8a 100644
--- a/services/jitpack/jitpack.tester.js
+++ b/services/jitpack/jitpack.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 // Github allows versions with chars, etc.
 const isAnyV = Joi.string().regex(/^v.+$/)
diff --git a/services/leanpub/leanpub-book-summary.tester.js b/services/leanpub/leanpub-book-summary.tester.js
index a712a54891b6446f40ccf9b1ea14566e9e7af6ca..cc18cf5a1bfbe56e27f98fe931514323283ca155 100644
--- a/services/leanpub/leanpub-book-summary.tester.js
+++ b/services/leanpub/leanpub-book-summary.tester.js
@@ -4,7 +4,7 @@ const Joi = require('joi')
 
 const knownValidBook = 'juice-shop'
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('known book pages')
   .get(`/pages/${knownValidBook}.json`)
diff --git a/services/lgtm/lgtm.tester.js b/services/lgtm/lgtm.tester.js
index 9644d3dfa130e4202d53c2f2e7e94f09127c93a3..7dafca2da6b98a588c5a43b8475a1831280253cc 100644
--- a/services/lgtm/lgtm.tester.js
+++ b/services/lgtm/lgtm.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const t = new ServiceTester({ id: 'lgtm', title: 'LGTM' })
 module.exports = t
 
diff --git a/services/liberapay/liberapay-gives.tester.js b/services/liberapay/liberapay-gives.tester.js
index 67f50f86e009298e69cde3f713e8cbcc9ad7a3f7..c7c5363cb1158ecdaef4cb2007f14f817a129458 100644
--- a/services/liberapay/liberapay-gives.tester.js
+++ b/services/liberapay/liberapay-gives.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 const { isCurrencyOverTime } = require('./liberapay-base')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Giving (valid)')
   .get('/Changaco.json')
diff --git a/services/liberapay/liberapay-goal.tester.js b/services/liberapay/liberapay-goal.tester.js
index b9453717bf58a21292f685170cbff16f925162fd..2b44734f00301fd6cd5852dcce10cbe7456990ca 100644
--- a/services/liberapay/liberapay-goal.tester.js
+++ b/services/liberapay/liberapay-goal.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 const { isIntegerPercentage } = require('../test-validators')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Goal Progress (valid)')
   .get('/Liberapay.json')
diff --git a/services/liberapay/liberapay-patrons.tester.js b/services/liberapay/liberapay-patrons.tester.js
index 211645b2bf553c7ec61484583cc2b23a7e32a54d..6bd0b598d7c8c08ab6c0eb30abcc69319691228a 100644
--- a/services/liberapay/liberapay-patrons.tester.js
+++ b/services/liberapay/liberapay-patrons.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 const { isMetric } = require('../test-validators')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Patrons (valid)')
   .get('/Liberapay.json')
diff --git a/services/liberapay/liberapay-receives.tester.js b/services/liberapay/liberapay-receives.tester.js
index bbf55f5fbca80d0f51bc59311ffda1888ee97d97..eb8977988a46221c3e1c12a4f0075a88594272d4 100644
--- a/services/liberapay/liberapay-receives.tester.js
+++ b/services/liberapay/liberapay-receives.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 const { isCurrencyOverTime } = require('./liberapay-base')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Receiving (valid)')
   .get('/Changaco.json')
diff --git a/services/librariesio/librariesio-dependencies.tester.js b/services/librariesio/librariesio-dependencies.tester.js
index ffef6867c4006b64b33f90ae557914dc03882796..2de77af932fa09c940763d880d6cef0eda774209 100644
--- a/services/librariesio/librariesio-dependencies.tester.js
+++ b/services/librariesio/librariesio-dependencies.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isDependencyState } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('dependencies for releases')
   .get('/release/hex/phoenix/1.0.3.json')
diff --git a/services/librariesio/librariesio-dependent-repos.tester.js b/services/librariesio/librariesio-dependent-repos.tester.js
index bf6f849775e1a05f8ece747393043ca3c6de5250..26e703948db5bf61eb2c605177eef965b3157adb 100644
--- a/services/librariesio/librariesio-dependent-repos.tester.js
+++ b/services/librariesio/librariesio-dependent-repos.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isMetric } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('dependent repo count')
   .get('/npm/got.json')
diff --git a/services/librariesio/librariesio-dependents.tester.js b/services/librariesio/librariesio-dependents.tester.js
index dd2ec520d98653cc449fa4b838ef07f2282c5398..e1f283f9a4e9898ad8c3c3875c0fc9c59edf4a13 100644
--- a/services/librariesio/librariesio-dependents.tester.js
+++ b/services/librariesio/librariesio-dependents.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isMetric } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('dependent count')
   .get('/npm/got.json')
diff --git a/services/librariesio/librariesio-sourcerank.tester.js b/services/librariesio/librariesio-sourcerank.tester.js
index 80c8864f2068243d3b291258f029769dc8c508e5..9d870e7eadcb3a7ec4e7cb1668e683694096fcba 100644
--- a/services/librariesio/librariesio-sourcerank.tester.js
+++ b/services/librariesio/librariesio-sourcerank.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { anyInteger } = require('../validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('sourcerank')
   .get('/npm/got.json')
diff --git a/services/libscore/libscore.tester.js b/services/libscore/libscore.tester.js
index 8c440914e0141796c41b6b1c75a1150ae59961d2..e43e341c0fc6bf20b11a18b415ea8862167a9770 100644
--- a/services/libscore/libscore.tester.js
+++ b/services/libscore/libscore.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = new ServiceTester({ id: 'libscore', title: 'libscore' })
 module.exports = t
diff --git a/services/luarocks/luarocks.tester.js b/services/luarocks/luarocks.tester.js
index 94ce1874e4fda0eabf24db4e06d1ac7c52e36fe6..00c083ba69ce43489e54e292dd5e700a0e6c65f2 100644
--- a/services/luarocks/luarocks.tester.js
+++ b/services/luarocks/luarocks.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = new ServiceTester({ id: 'luarocks', title: 'LuaRocks' })
 module.exports = t
diff --git a/services/magnumci/magnumci.tester.js b/services/magnumci/magnumci.tester.js
index bd44cf89f23b7dd4817653e140523af37f1f8eb2..aba33b639744a154eb68078d2e5bf8ce4f84ad80 100644
--- a/services/magnumci/magnumci.tester.js
+++ b/services/magnumci/magnumci.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = new ServiceTester({ id: 'magnumci', title: 'Magnum CI' })
 module.exports = t
diff --git a/services/maintenance/maintenance.tester.js b/services/maintenance/maintenance.tester.js
index d10bed8df389318c88b14d481ebc9e309f495493..9c879520ac0795a14c9b80d06de927a49650cea0 100644
--- a/services/maintenance/maintenance.tester.js
+++ b/services/maintenance/maintenance.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = new ServiceTester({ id: 'maintenance', title: 'Maintenance' })
 module.exports = t
diff --git a/services/matrix/matrix.tester.js b/services/matrix/matrix.tester.js
index 9f5fb54c1b01b645b055763e99eb2d183cac7a5e..1ff18ed437abdae48b11dd0a36d740b0770667d5 100644
--- a/services/matrix/matrix.tester.js
+++ b/services/matrix/matrix.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('get room state as guest')
   .get('/ALIAS:DUMMY.dumb.json?style=_shields_test')
diff --git a/services/maven-central/maven-central.tester.js b/services/maven-central/maven-central.tester.js
index 7f089c7c4889a757f391dcea7620c200b213bb13..58b45027871b01034b5db0d80ba546815135dcda 100644
--- a/services/maven-central/maven-central.tester.js
+++ b/services/maven-central/maven-central.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = new ServiceTester({ id: 'maven-central', title: 'Maven Central' })
 module.exports = t
diff --git a/services/maven-metadata/maven-metadata.tester.js b/services/maven-metadata/maven-metadata.tester.js
index b4e2b4aa645892ea9b19c5cac80c40833eddb21d..fcf388672f9c031099c12d403bf62e6da5738f3f 100644
--- a/services/maven-metadata/maven-metadata.tester.js
+++ b/services/maven-metadata/maven-metadata.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isVPlusDottedVersionAtLeastOne } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({
diff --git a/services/microbadger/microbadger.tester.js b/services/microbadger/microbadger.tester.js
index 242135572c913da7b774c74b437f1d5112f5eaea..a07a37eeaf47f704f9cf71b3291612ba48a2bd3b 100644
--- a/services/microbadger/microbadger.tester.js
+++ b/services/microbadger/microbadger.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isFileSize } = require('../test-validators')
 const { invalidJSON } = require('../response-fixtures')
 
diff --git a/services/myget/myget.tester.js b/services/myget/myget.tester.js
index 87606a76027acb90e09e9855140e236000e09e10..ae88fc7be0b83fbdc6c27d04f095fc94d9b8b893 100644
--- a/services/myget/myget.tester.js
+++ b/services/myget/myget.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const {
   isMetric,
   isVPlusDottedVersionNClausesWithOptionalSuffix,
diff --git a/services/nexus/nexus.tester.js b/services/nexus/nexus.tester.js
index bfdd1f8e13e9276b05718fa2dfc35583b2db2046..2383735e93832ad99e55aa5ee3784af37330009b 100644
--- a/services/nexus/nexus.tester.js
+++ b/services/nexus/nexus.tester.js
@@ -5,7 +5,7 @@ const sinon = require('sinon')
 const {
   isVPlusDottedVersionNClausesWithOptionalSuffix: isVersion,
 } = require('../test-validators')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 const serverSecrets = require('../../lib/server-secrets')
 
 const user = 'admin'
diff --git a/services/node/node.tester.js b/services/node/node.tester.js
index f9baa4ff8e5a41b181984f8d41a45532844f9b7e..0796c0d9d6dba7aadf1e7d534463436a429ce404 100644
--- a/services/node/node.tester.js
+++ b/services/node/node.tester.js
@@ -4,7 +4,7 @@ const { expect } = require('chai')
 const Joi = require('joi')
 const { Range } = require('semver')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 function expectSemverRange(value) {
   expect(() => new Range(value)).not.to.throw()
diff --git a/services/npm/npm-collaborators.tester.js b/services/npm/npm-collaborators.tester.js
index f005d87ce5185f4a68423d1700decd76fe0f5829..3c4c4cbc0ce8f0ebb2a9a9c5d1a3edceeea320f8 100644
--- a/services/npm/npm-collaborators.tester.js
+++ b/services/npm/npm-collaborators.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 const { nonNegativeInteger } = require('../validators')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('gets the contributor count')
   .get('/prettier.json')
diff --git a/services/npm/npm-dependency-version.tester.js b/services/npm/npm-dependency-version.tester.js
index 9fe860b1cdc6db3ea59117da37c1a502d1c13921..61ed87a6dd314c90c936e3d090d164856bbae619 100644
--- a/services/npm/npm-dependency-version.tester.js
+++ b/services/npm/npm-dependency-version.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 const { semverRange } = require('../validators')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('gets the peer dependency version')
   .get('/react-boxplot/peer/react.json')
diff --git a/services/npm/npm-downloads.tester.js b/services/npm/npm-downloads.tester.js
index 184e2638639e482bc17174953794703df7067768..0d2b27858c33b79303b1d336b289e428e625a72e 100644
--- a/services/npm/npm-downloads.tester.js
+++ b/services/npm/npm-downloads.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isMetric } = require('../test-validators')
 
 const t = new ServiceTester({
diff --git a/services/npm/npm-license.tester.js b/services/npm/npm-license.tester.js
index cc6f1e86723e6019d9296c6ec747bced5d3bc167..20677c6ac502223a8b8d7b6743992cf3315b7ccd 100644
--- a/services/npm/npm-license.tester.js
+++ b/services/npm/npm-license.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('gets the license of express')
   .get('/express.json')
diff --git a/services/npm/npm-type-definitions.tester.js b/services/npm/npm-type-definitions.tester.js
index 47e39e25a8619d12b09a886f1b43d2834c13f8a5..747f16cb5b312c7d73e1c984932c1d8e8d42479f 100644
--- a/services/npm/npm-type-definitions.tester.js
+++ b/services/npm/npm-type-definitions.tester.js
@@ -6,7 +6,7 @@ const isTypeDefinition = Joi.string().regex(
   /^((Flow|TypeScript)|(Flow \| TypeScript))$/
 )
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('types (from dev dependencies + files)')
   .get('/chalk.json')
diff --git a/services/npm/npm-version.tester.js b/services/npm/npm-version.tester.js
index f87f41f9bc74b7f7d0dfc25b1275c6dcc9c51ba2..e5572e9d9f0b6318463b063d0709a95ca9e3b11a 100644
--- a/services/npm/npm-version.tester.js
+++ b/services/npm/npm-version.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isSemver } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('gets the package version of left-pad')
   .get('/left-pad.json')
diff --git a/services/nsp/nsp.tester.js b/services/nsp/nsp.tester.js
index 5e6c38d40c952512cfb0edfb7e903d21bbfae29b..b2a66903edf9101035cb14f764d813b807f478cf 100644
--- a/services/nsp/nsp.tester.js
+++ b/services/nsp/nsp.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'nsp',
diff --git a/services/nuget/nuget.tester.js b/services/nuget/nuget.tester.js
index dc721a1c16eb4a2ed79ed5339da1fa6c0ae56be9..8dc07a4812cfb27d25ed6184a7ddc05689add254 100644
--- a/services/nuget/nuget.tester.js
+++ b/services/nuget/nuget.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const {
   isMetric,
   isVPlusDottedVersionNClauses,
diff --git a/services/opencollective/opencollective-all.tester.js b/services/opencollective/opencollective-all.tester.js
index 05282b0a7be854a2612a6dc8d6a059beff9e8378..b7648f1dd98f893d38662af7d8c03b90c4a42dd8 100644
--- a/services/opencollective/opencollective-all.tester.js
+++ b/services/opencollective/opencollective-all.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 const { nonNegativeInteger } = require('../validators')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('renders correctly')
   .get('/shields.json?style=_shields_test')
diff --git a/services/opencollective/opencollective-backers.tester.js b/services/opencollective/opencollective-backers.tester.js
index 541a595fd7d994325e580ddbba80b050eafd3e7a..c6f16185ea5098e369c2b11fd87ce75646a6cfee 100644
--- a/services/opencollective/opencollective-backers.tester.js
+++ b/services/opencollective/opencollective-backers.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 const { nonNegativeInteger } = require('../validators')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('renders correctly')
   .get('/shields.json?style=_shields_test')
diff --git a/services/opencollective/opencollective-by-tier.tester.js b/services/opencollective/opencollective-by-tier.tester.js
index df7ae78a7d50b944fa2bd87fd6705ac4f5057c06..e7f44cb05ce553df71a3c093315813fe78804ca4 100644
--- a/services/opencollective/opencollective-by-tier.tester.js
+++ b/services/opencollective/opencollective-by-tier.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 const { nonNegativeInteger } = require('../validators')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('renders correctly')
   .get('/shields/2988.json')
diff --git a/services/opencollective/opencollective-sponsors.tester.js b/services/opencollective/opencollective-sponsors.tester.js
index 9d8ef2063d8cac04dc21868eb5e031e467be5c2e..1a39cf358f79f1dfd0bb803e31302d073f104f31 100644
--- a/services/opencollective/opencollective-sponsors.tester.js
+++ b/services/opencollective/opencollective-sponsors.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 const { nonNegativeInteger } = require('../validators')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('renders correctly')
   .get('/shields.json')
diff --git a/services/osslifecycle/osslifecycle.tester.js b/services/osslifecycle/osslifecycle.tester.js
index dfd730a541505ce783d2e5274b2a55580e9ed50f..56a0f1722f58b9b383107e66ca09f3cc9d615395 100644
--- a/services/osslifecycle/osslifecycle.tester.js
+++ b/services/osslifecycle/osslifecycle.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'osslifecycle',
diff --git a/services/packagecontrol/packagecontrol.tester.js b/services/packagecontrol/packagecontrol.tester.js
index 0701e4a6fe1a68aceb50a233052ed357644b8d24..cdfdfb4fa9aec9cc35c3154e7356472fb745e614 100644
--- a/services/packagecontrol/packagecontrol.tester.js
+++ b/services/packagecontrol/packagecontrol.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isMetric, isMetricOverTimePeriod } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({
diff --git a/services/packagist/packagist.tester.js b/services/packagist/packagist.tester.js
index ce2aa3f2d2092d46a51b060f421cb30c378be4bf..f42abbae67b0e58b4c481bccebab15c09da0d041 100644
--- a/services/packagist/packagist.tester.js
+++ b/services/packagist/packagist.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const {
   isComposerVersion,
   isMetric,
diff --git a/services/php-eye/php-eye-hhvm.tester.js b/services/php-eye/php-eye-hhvm.tester.js
index df8cdfe156215bfc92a98f9a1eeeb4c533b25937..1f5e6437d265da1254c80c9eb1db9aea90c50f68 100644
--- a/services/php-eye/php-eye-hhvm.tester.js
+++ b/services/php-eye/php-eye-hhvm.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { invalidJSON } = require('../response-fixtures')
 
 const isAllowedStatus = Joi.string().regex(
diff --git a/services/php-eye/php-eye-php-version.tester.js b/services/php-eye/php-eye-php-version.tester.js
index fbe25a6a280e00b1a0a86cbe5b8e461544d3f944..192a617265155c2cc8b7ba3f7758ab68a2c57ff0 100644
--- a/services/php-eye/php-eye-php-version.tester.js
+++ b/services/php-eye/php-eye-php-version.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isPhpVersionReduction } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({
diff --git a/services/powershellgallery/powershellgallery.tester.js b/services/powershellgallery/powershellgallery.tester.js
index 57bca781167e69b431ede4f2adc6b0e4182695e5..5f5e3bbd448384fe8e66094a00a91c4f18bbc450 100644
--- a/services/powershellgallery/powershellgallery.tester.js
+++ b/services/powershellgallery/powershellgallery.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const {
   isMetric,
   isVPlusDottedVersionNClauses,
diff --git a/services/pub/pub.tester.js b/services/pub/pub.tester.js
index 0d9deac3edb17dbc0920eaeb0be9b74decded3c4..68bd219678fa40cd9e967b8dad1d06dd4dbb7f4d 100644
--- a/services/pub/pub.tester.js
+++ b/services/pub/pub.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isVPlusTripleDottedVersion } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({ id: 'pub', title: 'Pub' }))
diff --git a/services/puppetforge/puppetforge-modules.tester.js b/services/puppetforge/puppetforge-modules.tester.js
index 14e70dcb7677ec4971001cd94617d7919bad840b..8fcc1cf8990819a59e53bd924acdd6a79cce3219 100644
--- a/services/puppetforge/puppetforge-modules.tester.js
+++ b/services/puppetforge/puppetforge-modules.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isSemver } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({
diff --git a/services/pypi/pypi.tester.js b/services/pypi/pypi.tester.js
index e99280389b73dfb0cd5823c082764bdd8b9ad263..00d1400069822011de9e8570f6fc413d7f86c5c6 100644
--- a/services/pypi/pypi.tester.js
+++ b/services/pypi/pypi.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isMetricOverTimePeriod, isSemver } = require('../test-validators')
 
 const isPsycopg2Version = Joi.string().regex(/^v([0-9][.]?)+$/)
diff --git a/services/readthedocs/readthedocs.tester.js b/services/readthedocs/readthedocs.tester.js
index 5ecb2bb75d3d7c0b19ef09e9e0b461814991e992..390abc358be16bd817c01e7ee95f580df95bc423 100644
--- a/services/readthedocs/readthedocs.tester.js
+++ b/services/readthedocs/readthedocs.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isBuildStatus } = require('../../lib/build-status')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('build status')
   .get('/pip.json')
diff --git a/services/redmine/redmine.tester.js b/services/redmine/redmine.tester.js
index aa6fb02c11ffa8fbedbdfe5005f9939745dfbeaa..b1da1ec9891b33f082a2d49294d8d1e4f73a843a 100644
--- a/services/redmine/redmine.tester.js
+++ b/services/redmine/redmine.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isStarRating } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({
diff --git a/services/requires/requires.tester.js b/services/requires/requires.tester.js
index 34a6503643f545ee193cd6fe8a38d58468e144cd..adc347272ded4161af0145410592e7ed3bdb0301 100644
--- a/services/requires/requires.tester.js
+++ b/services/requires/requires.tester.js
@@ -6,7 +6,7 @@ const isRequireStatus = Joi.string().regex(
   /^(up to date|outdated|insecure|unknown)$/
 )
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('requirements (valid, without branch)')
   .get('/github/celery/celery.json')
diff --git a/services/resharper/resharper.tester.js b/services/resharper/resharper.tester.js
index 35b10de1e06ceb0623d00948ff086f7c84fd9fdc..2ff327a186b135ede520b7862684ea1b12e02f54 100644
--- a/services/resharper/resharper.tester.js
+++ b/services/resharper/resharper.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const {
   isMetric,
   isVPlusDottedVersionNClauses,
diff --git a/services/scrutinizer/scrutinizer.tester.js b/services/scrutinizer/scrutinizer.tester.js
index bc2708e912c5e444bcc4b790ec62cd89d9a0d1bd..e81bf0e2a7a28535f388a738f00a7f78c436f5e1 100644
--- a/services/scrutinizer/scrutinizer.tester.js
+++ b/services/scrutinizer/scrutinizer.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 const { isBuildStatus } = require('../../lib/build-status')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isIntegerPercentage } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({
diff --git a/services/shippable/shippable.tester.js b/services/shippable/shippable.tester.js
index 41387ee524239a8cdc1be7cc3cfa4c5412c36418..d425e81396c87be27602be5a8fa3b20359e099a8 100644
--- a/services/shippable/shippable.tester.js
+++ b/services/shippable/shippable.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isBuildStatus } = require('../../lib/build-status')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('build status (valid, without branch)')
   .get('/5444c5ecb904a4b21567b0ff.json')
diff --git a/services/snap-ci/snap-ci.tester.js b/services/snap-ci/snap-ci.tester.js
index 1661142c4753856f60f3acf8d5f225bf139702d0..194966fc5b9546df0400c18a12f6368d3508deab 100644
--- a/services/snap-ci/snap-ci.tester.js
+++ b/services/snap-ci/snap-ci.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = new ServiceTester({ id: 'snap-ci', title: 'Snap CI' })
 module.exports = t
diff --git a/services/snyk/snyk-vulnerability-github.tester.js b/services/snyk/snyk-vulnerability-github.tester.js
index 5ff1270df6d65419e55ed3e60f8f78ed135c9b6b..825b780c2f6ecf7a82b941b366be13a529b120e0 100644
--- a/services/snyk/snyk-vulnerability-github.tester.js
+++ b/services/snyk/snyk-vulnerability-github.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 const {
   twoVulnerabilitiesSvg,
   zeroVulnerabilitiesSvg,
diff --git a/services/snyk/snyk-vulnerability-npm.tester.js b/services/snyk/snyk-vulnerability-npm.tester.js
index a806a855ea84e0ee1104af75493b1593a08fd626..1b083a5f60c89c10245f654374777fadc076ba7b 100644
--- a/services/snyk/snyk-vulnerability-npm.tester.js
+++ b/services/snyk/snyk-vulnerability-npm.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 const {
   twoVulnerabilitiesSvg,
   zeroVulnerabilitiesSvg,
diff --git a/services/sonarqube/sonarqube.tester.js b/services/sonarqube/sonarqube.tester.js
index 8a1d18c208f86dc679f6ab827abf639779c7b7e2..bcd64af3b0f839c176d6024293053178ec87beb3 100644
--- a/services/sonarqube/sonarqube.tester.js
+++ b/services/sonarqube/sonarqube.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isIntegerPercentage } = require('../test-validators')
 
 const t = new ServiceTester({ id: 'sonar', title: 'SonarQube' })
diff --git a/services/sourceforge/sourceforge.tester.js b/services/sourceforge/sourceforge.tester.js
index aae9ac2313347b8b292f779ed02f1e469d6f6227..1bbe841c495878171ca59e50f62b648f654f670f 100644
--- a/services/sourceforge/sourceforge.tester.js
+++ b/services/sourceforge/sourceforge.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isMetric, isMetricOverTimePeriod } = require('../test-validators')
 
 const t = new ServiceTester({ id: 'sourceforge', title: 'SourceForge' })
diff --git a/services/sourcegraph/sourcegraph.tester.js b/services/sourcegraph/sourcegraph.tester.js
index 8bfab1d01018337a0fc4a7964eda433e0b1da208..bed874a9ea413df3556e5087651d5011beceff70 100644
--- a/services/sourcegraph/sourcegraph.tester.js
+++ b/services/sourcegraph/sourcegraph.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { withRegex } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 // Matches API responses such as "0 projects", "1 projects", "182 projects", "14.0k projects".
 // There may be other cases not covered by this regex, but hopefully the tested projects won't vary much.
diff --git a/services/spiget/spiget-download-size.tester.js b/services/spiget/spiget-download-size.tester.js
index 66ff7353c4bb22e86a19d1e07fe7d2d2f3b55e02..3e81ec514ac737e5a0cec9ea8e342a2d98547b6b 100644
--- a/services/spiget/spiget-download-size.tester.js
+++ b/services/spiget/spiget-download-size.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isFileSize } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('EssentialsX (id 9089)')
   .get('/9089.json')
diff --git a/services/spiget/spiget-downloads.tester.js b/services/spiget/spiget-downloads.tester.js
index ebe106c8a5ea08f6a72b18d608ac23701206856b..885e32b387cd454fd21387027ef8ce3130045bfb 100644
--- a/services/spiget/spiget-downloads.tester.js
+++ b/services/spiget/spiget-downloads.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isMetric } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('EssentialsX (id 9089)')
   .get('/9089.json')
diff --git a/services/spiget/spiget-latest-version.tester.js b/services/spiget/spiget-latest-version.tester.js
index 4ef39c50c22677a3c1e04ee1d1e1f1df93459a4b..7dd99dfdaec59c37d9d6cd5482c83a2d51ab9769 100644
--- a/services/spiget/spiget-latest-version.tester.js
+++ b/services/spiget/spiget-latest-version.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { withRegex } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 // Note that Spigot versions can be anything (including just a string), so we'll make sure it's not returning 'not found'
 
diff --git a/services/spiget/spiget-rating.tester.js b/services/spiget/spiget-rating.tester.js
index 3fb2a03b022b6e92d7beb12fbe59a53f0b580a01..901c4b679fc4dfc94ddd9157f053a689f830c8f5 100644
--- a/services/spiget/spiget-rating.tester.js
+++ b/services/spiget/spiget-rating.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isStarRating, withRegex } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Stars - EssentialsX (id 9089)')
   .get('/stars/9089.json')
diff --git a/services/spiget/spiget-tested-versions.tester.js b/services/spiget/spiget-tested-versions.tester.js
index 75139b71576ec6b0649152e9b28ecaaf299feada..51da667b6fa470a112dd8616e8b303c424c8b646 100644
--- a/services/spiget/spiget-tested-versions.tester.js
+++ b/services/spiget/spiget-tested-versions.tester.js
@@ -5,7 +5,7 @@ const { withRegex } = require('../test-validators')
 
 const multipleVersions = withRegex(/^([+]?\d*\.\d+)(-)([+]?\d*\.\d+)$/)
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('EssentialsX - multiple versions supported - (id 9089)')
   .get('/9089.json')
diff --git a/services/stackexchange/stackexchange-monthlyquestions.tester.js b/services/stackexchange/stackexchange-monthlyquestions.tester.js
index 37945453121514977db9068c08a50c7301649abe..ae961c1ce6f025b361bd2534f5aec94209c0d7cc 100644
--- a/services/stackexchange/stackexchange-monthlyquestions.tester.js
+++ b/services/stackexchange/stackexchange-monthlyquestions.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isMetricOverTimePeriod } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Monthly Questions for StackOverflow Momentjs')
   .get('/stackoverflow/qm/momentjs.json')
diff --git a/services/stackexchange/stackexchange-reputation.tester.js b/services/stackexchange/stackexchange-reputation.tester.js
index 07afd7fc5f6841ffcf5ca36a14136504ea4a9dfe..20ad4685e9a9eeab1d89f6e42d01e0d273615bd9 100644
--- a/services/stackexchange/stackexchange-reputation.tester.js
+++ b/services/stackexchange/stackexchange-reputation.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isMetric } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Invalid parameters')
   .get('/stackoverflow/r/invalidimage.json')
diff --git a/services/stackexchange/stackexchange-taginfo.tester.js b/services/stackexchange/stackexchange-taginfo.tester.js
index d3dbfc4198fdd7a92da15037c1adcbaa6d4362bf..0fd2f63b87a398465f85d0def0f6a4128949f796 100644
--- a/services/stackexchange/stackexchange-taginfo.tester.js
+++ b/services/stackexchange/stackexchange-taginfo.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isMetric } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('JavaScript Questions')
   .get('/stackoverflow/t/javascript.json')
diff --git a/services/static-badge/static-badge.tester.js b/services/static-badge/static-badge.tester.js
index 91a87ae801bc78d166ba2587b10acadba99c3ab8..c6daccb777f91f84d03b07294bf8d2141c7343f7 100644
--- a/services/static-badge/static-badge.tester.js
+++ b/services/static-badge/static-badge.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Shields colorscheme color')
   .get('/badge/label-message-blue.json?style=_shields_test')
diff --git a/services/steam/steam-workshop.tester.js b/services/steam/steam-workshop.tester.js
index 60c9973b00cff2bfcaa76d83eef78a2d3fa98efb..3114e39b5cd07fa4d7e0168a3b19e2c2c8d2bb10 100644
--- a/services/steam/steam-workshop.tester.js
+++ b/services/steam/steam-workshop.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isMetric, isFileSize, isFormattedDate } = require('../test-validators')
 
 const t = new ServiceTester({ id: 'steam', title: 'Steam Workshop Tests' })
diff --git a/services/swagger/swagger.tester.js b/services/swagger/swagger.tester.js
index 108ac6796cdfd04c49ede4a04f6c37be50904a7d..941bcc8308f097ebcc61d27bedc01b99dd5ed559 100644
--- a/services/swagger/swagger.tester.js
+++ b/services/swagger/swagger.tester.js
@@ -5,7 +5,7 @@ const apiURL = 'http://online.swagger.io'
 const apiGetURL = '/validator/debug'
 const apiGetQueryParams = { url: 'https://example.com/example.json' }
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Valid (mocked)')
   .get(getURL)
diff --git a/services/symfony/symfony-insight.tester.js b/services/symfony/symfony-insight.tester.js
index f37249d826d272454c1271187c21c5f2142f5d7b..0eaa9f7799f63c679452a3926e156b39558801c0 100644
--- a/services/symfony/symfony-insight.tester.js
+++ b/services/symfony/symfony-insight.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { withRegex } = require('../test-validators')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 const {
   runningMockResponse,
diff --git a/services/teamcity/teamcity-build.tester.js b/services/teamcity/teamcity-build.tester.js
index e118faba40db26210ced18ac79a31dc75d3da6c9..987f275aadfe2564aeffbb2ba04ea6ba52761745 100644
--- a/services/teamcity/teamcity-build.tester.js
+++ b/services/teamcity/teamcity-build.tester.js
@@ -12,7 +12,7 @@ const {
 const buildStatusValues = Joi.equal('passing', 'failure', 'error').required()
 const buildStatusTextRegex = /^success|failure|error|tests( failed: \d+( \(\d+ new\))?)?(,)?( passed: \d+)?(,)?( ignored: \d+)?(,)?( muted: \d+)?$/
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('live: codebetter unknown build')
   .get('/codebetter/btabc.json')
diff --git a/services/teamcity/teamcity-coverage.tester.js b/services/teamcity/teamcity-coverage.tester.js
index d100f87aef30e213e915cf83d90d872e68777d70..8046e029896ce158636315755ce573569e3a6ba5 100644
--- a/services/teamcity/teamcity-coverage.tester.js
+++ b/services/teamcity/teamcity-coverage.tester.js
@@ -9,7 +9,7 @@ const {
   restore,
 } = require('./teamcity-test-helpers')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('live: valid buildId')
   .get('/bt428.json')
diff --git a/services/tester.js b/services/tester.js
new file mode 100644
index 0000000000000000000000000000000000000000..c9d230b0f968ccc4cf3303812a7921af58b99161
--- /dev/null
+++ b/services/tester.js
@@ -0,0 +1,9 @@
+'use strict'
+
+const createServiceTester = require('../core/service-test-runner/create-service-tester')
+const ServiceTester = require('../core/service-test-runner/service-tester')
+
+module.exports = {
+  createServiceTester,
+  ServiceTester,
+}
diff --git a/services/travis/travis-build.tester.js b/services/travis/travis-build.tester.js
index 8641d3fd790beb8d2c2966515c1ecf12d444a1e5..78f05ec698df264edd06c074a7fc5696aab7904a 100644
--- a/services/travis/travis-build.tester.js
+++ b/services/travis/travis-build.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 const { isBuildStatus } = require('../../lib/build-status')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'travis-build',
diff --git a/services/travis/travis-php-version.tester.js b/services/travis/travis-php-version.tester.js
index 8344765469a68a550681740bb40939898741f8c8..0b5f4c19e55c7c6e22d4eea107910753dec0ebea 100644
--- a/services/travis/travis-php-version.tester.js
+++ b/services/travis/travis-php-version.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 const { isPhpVersionReduction } = require('../test-validators')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'travis-php-version',
diff --git a/services/twitter/twitter.tester.js b/services/twitter/twitter.tester.js
index d77933c1e3f0ba618a30b76b73d911accc33d870..7e7aec08e7acfced6d8a3e0a6529660a0b775603 100644
--- a/services/twitter/twitter.tester.js
+++ b/services/twitter/twitter.tester.js
@@ -2,7 +2,7 @@
 
 const Joi = require('joi')
 const { isMetric } = require('../test-validators')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'twitter',
diff --git a/services/uptimerobot/uptimerobot-ratio.tester.js b/services/uptimerobot/uptimerobot-ratio.tester.js
index 495b9a1c645d2e449eff574b6a2ecb0b2c694013..52f22ceab716835181dab1a2b4b8262db25f84a9 100644
--- a/services/uptimerobot/uptimerobot-ratio.tester.js
+++ b/services/uptimerobot/uptimerobot-ratio.tester.js
@@ -4,7 +4,7 @@ const Joi = require('joi')
 const { isPercentage } = require('../test-validators')
 const { invalidJSON } = require('../response-fixtures')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Uptime Robot: Percentage (valid)')
   .get('/m778918918-3e92c097147760ee39d02d36.json')
diff --git a/services/uptimerobot/uptimerobot-status.tester.js b/services/uptimerobot/uptimerobot-status.tester.js
index 7966ecac4add26c4537f91c0a3816feab2eabab6..78b49b64af636ab4bfb79a868675608397823c54 100644
--- a/services/uptimerobot/uptimerobot-status.tester.js
+++ b/services/uptimerobot/uptimerobot-status.tester.js
@@ -11,7 +11,7 @@ const isUptimeStatus = Joi.string().valid(
   'down'
 )
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Uptime Robot: Status (valid)')
   .get('/m778918918-3e92c097147760ee39d02d36.json')
diff --git a/services/vaadin-directory/vaadin-directory.tester.js b/services/vaadin-directory/vaadin-directory.tester.js
index 1761e923b7f82b0bbb8a37a8a0f06598201780b1..dba19219674ba5ef4c30039affcea5050533d70f 100644
--- a/services/vaadin-directory/vaadin-directory.tester.js
+++ b/services/vaadin-directory/vaadin-directory.tester.js
@@ -6,7 +6,7 @@ const {
   isStarRating,
   isFormattedDate,
 } = require('../test-validators')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = (module.exports = new ServiceTester({
   id: 'vaadin-directory',
diff --git a/services/versioneye/versioneye.tester.js b/services/versioneye/versioneye.tester.js
index cf23e8e66ddf1ad6d5c6dc467e23a0d12a10f206..9a6c4c21a6da5a7c942dc4605f4530569f6cfe78 100644
--- a/services/versioneye/versioneye.tester.js
+++ b/services/versioneye/versioneye.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const t = new ServiceTester({ id: 'versioneye', title: 'VersionEye' })
 module.exports = t
diff --git a/services/visual-studio-marketplace/visual-studio-marketplace-azure-devops-installs.tester.js b/services/visual-studio-marketplace/visual-studio-marketplace-azure-devops-installs.tester.js
index 14d07d2f9111ed4ca970501177959232c21fb91b..ea4f597ac9f2a6a160768f6b16c41275ea67049b 100644
--- a/services/visual-studio-marketplace/visual-studio-marketplace-azure-devops-installs.tester.js
+++ b/services/visual-studio-marketplace/visual-studio-marketplace-azure-devops-installs.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 const { isMetric } = require('../test-validators')
 
 const mockResponse = {
diff --git a/services/visual-studio-marketplace/visual-studio-marketplace-downloads.tester.js b/services/visual-studio-marketplace/visual-studio-marketplace-downloads.tester.js
index f35f1c4b41c183623b79f673fa5eff608a201c2e..76ed6db782cfb7e9df7eb7c794f596ae40273b5a 100644
--- a/services/visual-studio-marketplace/visual-studio-marketplace-downloads.tester.js
+++ b/services/visual-studio-marketplace/visual-studio-marketplace-downloads.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 const { isMetric } = require('../test-validators')
 
 const mockResponse = {
diff --git a/services/visual-studio-marketplace/visual-studio-marketplace-rating.tester.js b/services/visual-studio-marketplace/visual-studio-marketplace-rating.tester.js
index 7568243f0b923c7076fffba1aa81aa6113308c90..21593cf3aa120dd89b525a8e8d5acfe8826cab5e 100644
--- a/services/visual-studio-marketplace/visual-studio-marketplace-rating.tester.js
+++ b/services/visual-studio-marketplace/visual-studio-marketplace-rating.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 const { withRegex, isStarRating } = require('../test-validators')
 
 const isVscodeRating = withRegex(/[0-5]\.[0-9]{1}\/5?\s*\([0-9]*\)$/)
diff --git a/services/visual-studio-marketplace/visual-studio-marketplace-version.tester.js b/services/visual-studio-marketplace/visual-studio-marketplace-version.tester.js
index 3fa8f3f37c5926c96006cf3c39753204032a8d74..84b956383bb2ed78e425457b92fac9381a3bdec8 100644
--- a/services/visual-studio-marketplace/visual-studio-marketplace-version.tester.js
+++ b/services/visual-studio-marketplace/visual-studio-marketplace-version.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 const { withRegex } = require('../test-validators')
 
 const isMarketplaceVersion = withRegex(/^v(\d+\.\d+\.\d+)(\.\d+)?$/)
diff --git a/services/waffle/waffle.tester.js b/services/waffle/waffle.tester.js
index eb2c5f0d88d5df9436b8bb17c8d951b23ec5a9af..8bed1dff5996827ef0fb7b5e11ce93536f39402d 100644
--- a/services/waffle/waffle.tester.js
+++ b/services/waffle/waffle.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { invalidJSON } = require('../response-fixtures')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 const fakeData = [
   {
diff --git a/services/website/website.tester.js b/services/website/website.tester.js
index dd88a2a66ac686e98cbd372e30d09f344eb134ca..0fa6b981fa6dbc3b2b9e769f5fb62b40c697e6a8 100644
--- a/services/website/website.tester.js
+++ b/services/website/website.tester.js
@@ -1,6 +1,6 @@
 'use strict'
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('status of http://shields.io')
   .get('/website/http/shields.io.json?style=_shields_test')
diff --git a/services/wercker/wercker.tester.js b/services/wercker/wercker.tester.js
index d0c78bd01e5845157af64c7c89075c3d13abe29b..0058d9b7e237a7393790baf0f559c5392e1cfb52 100644
--- a/services/wercker/wercker.tester.js
+++ b/services/wercker/wercker.tester.js
@@ -3,7 +3,7 @@
 const Joi = require('joi')
 const { isBuildStatus } = require('../../lib/build-status')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 t.create('Build status')
   .get('/build/wercker/go-wercker-api.json')
diff --git a/services/wheelmap/wheelmap.tester.js b/services/wheelmap/wheelmap.tester.js
index 3311389460cc96a7d7083f1395863a3be7f37780..97d5c36a948d34ba8c053815bec7b5c5cfb59282 100644
--- a/services/wheelmap/wheelmap.tester.js
+++ b/services/wheelmap/wheelmap.tester.js
@@ -2,7 +2,7 @@
 
 const serverSecrets = require('../../lib/server-secrets')
 
-const t = (module.exports = require('..').createServiceTester())
+const t = (module.exports = require('../tester').createServiceTester())
 
 const noToken = !serverSecrets.wheelmap_token
 function logTokenWarning() {
diff --git a/services/wordpress/wordpress-downloads.tester.js b/services/wordpress/wordpress-downloads.tester.js
index cc9c8925e0a99d17fd6d2aba6d2838d5f5edb9a7..5033c91bd6ea3d752a42aa8139452fd9921ae64d 100644
--- a/services/wordpress/wordpress-downloads.tester.js
+++ b/services/wordpress/wordpress-downloads.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const { isMetric, isMetricOverTimePeriod } = require('../test-validators')
 
diff --git a/services/wordpress/wordpress-platform.tester.js b/services/wordpress/wordpress-platform.tester.js
index 2b329c5afb16ed9d15f9e2a3cc1691fe60d906bb..b5d62ccacedb18858debde7042a6996f2a85da32 100644
--- a/services/wordpress/wordpress-platform.tester.js
+++ b/services/wordpress/wordpress-platform.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isVPlusDottedVersionAtLeastOne } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({
diff --git a/services/wordpress/wordpress-rating.tester.js b/services/wordpress/wordpress-rating.tester.js
index 91108521d8c793c61fffc0f42dabb4c683f290a7..2a250032a40d2556cff3d43bdf93d3580ac8b7bd 100644
--- a/services/wordpress/wordpress-rating.tester.js
+++ b/services/wordpress/wordpress-rating.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 
 const { isStarRating } = require('../test-validators')
 
diff --git a/services/wordpress/wordpress-version.tester.js b/services/wordpress/wordpress-version.tester.js
index 3a06609d7ebc15ce1b0eaf27e4d290f80e1718df..a65a07d3ca4ebf4ab738c845829c9d10cc8efcc7 100644
--- a/services/wordpress/wordpress-version.tester.js
+++ b/services/wordpress/wordpress-version.tester.js
@@ -1,7 +1,7 @@
 'use strict'
 
 const Joi = require('joi')
-const { ServiceTester } = require('..')
+const { ServiceTester } = require('../tester')
 const { isVPlusDottedVersionAtLeastOne } = require('../test-validators')
 
 const t = (module.exports = new ServiceTester({