diff --git a/services/github/github-top-language.tester.js b/services/github/github-top-language.tester.js
index 5bfea8d71299ab6c9520c33d56325fe2456ea70b..e4d84e1f5a4396d3ec5a00538cff900d62efcd7b 100644
--- a/services/github/github-top-language.tester.js
+++ b/services/github/github-top-language.tester.js
@@ -1,13 +1,12 @@
-import Joi from 'joi'
 import { createServiceTester } from '../tester.js'
+import { isDecimalPercentage } from '../test-validators.js'
+
 export const t = await createServiceTester()
 
-t.create('top language')
-  .get('/badges/shields.json')
-  .expectBadge({
-    label: 'javascript',
-    message: Joi.string().regex(/^([1-9]?[0-9]\.[0-9]|100\.0)%$/),
-  })
+t.create('top language').get('/badges/shields.json').expectBadge({
+  label: 'javascript',
+  message: isDecimalPercentage,
+})
 
 t.create('top language (empty repo)')
   .get('/pyvesb/emptyrepo.json')
diff --git a/services/gitlab/gitlab-top-language.tester.js b/services/gitlab/gitlab-top-language.tester.js
index 4fe19b38d80a75fbffdee87538ba1d4e42c67edd..43951fd615bbc1337fc92928f4c310813b743793 100644
--- a/services/gitlab/gitlab-top-language.tester.js
+++ b/services/gitlab/gitlab-top-language.tester.js
@@ -1,14 +1,12 @@
-import Joi from 'joi'
 import { createServiceTester } from '../tester.js'
+import { isDecimalPercentage } from '../test-validators.js'
 
 export const t = await createServiceTester()
 
-t.create('Valid Repository')
-  .get('/wireshark/wireshark.json')
-  .expectBadge({
-    label: 'c',
-    message: Joi.string().regex(/^([1-9]?[0-9]\.[0-9]|100\.0)%$/),
-  })
+t.create('Valid Repository').get('/wireshark/wireshark.json').expectBadge({
+  label: 'c',
+  message: isDecimalPercentage,
+})
 
 t.create('Valid Blank Repo')
   .get('/KoruptTinker/gitlab-blank-repo.json')