diff --git a/lib/config/common.ts b/lib/config/common.ts
index e8b0ec27c0f20c88acc13a03c5c57222c7f376ec..808756b354d3ee8509d507035442c0e533d255b9 100644
--- a/lib/config/common.ts
+++ b/lib/config/common.ts
@@ -52,6 +52,10 @@ export interface RenovateConfig
   description?: string[];
   dryRun?: boolean;
   errors?: ValidationMessage[];
+
+  /** TODO: Type? */
+  global?: Record<string, any>;
+
   includeForks?: boolean;
   isFork?: boolean;
   onboarding?: boolean;
diff --git a/lib/workers/repository/init/apis.js b/lib/workers/repository/init/apis.js
deleted file mode 100644
index a6b26845f82f400e629dd30973ed95174e2b9319..0000000000000000000000000000000000000000
--- a/lib/workers/repository/init/apis.js
+++ /dev/null
@@ -1,23 +0,0 @@
-const npmApi = require('../../../datasource/npm');
-const { platform } = require('../../../platform');
-
-async function getPlatformConfig(config) {
-  const platformConfig = await platform.initRepo(config);
-  return {
-    ...config,
-    ...platformConfig,
-  };
-}
-
-async function initApis(input) {
-  let config = { ...input };
-  config = await getPlatformConfig(config);
-  npmApi.resetMemCache();
-  npmApi.setNpmrc(config.npmrc);
-  delete config.gitPrivateKey;
-  return config;
-}
-
-module.exports = {
-  initApis,
-};
diff --git a/lib/workers/repository/init/apis.ts b/lib/workers/repository/init/apis.ts
new file mode 100644
index 0000000000000000000000000000000000000000..53f99fa8a26b956b18db01c3938830778005f77a
--- /dev/null
+++ b/lib/workers/repository/init/apis.ts
@@ -0,0 +1,29 @@
+import * as npmApi from '../../../datasource/npm';
+import { platform, RepoConfig } from '../../../platform';
+import { RenovateConfig } from '../../../config';
+
+// TODO: fix types
+export type WorkerPlatformConfig = RepoConfig &
+  RenovateConfig &
+  Record<string, any>;
+
+// TODO: fix types
+async function getPlatformConfig(config): Promise<WorkerPlatformConfig> {
+  const platformConfig = await platform.initRepo(config);
+  return {
+    ...config,
+    ...platformConfig,
+  };
+}
+
+// TODO: fix types
+export async function initApis(
+  input: RenovateConfig
+): Promise<WorkerPlatformConfig> {
+  let config: WorkerPlatformConfig = { ...input } as never;
+  config = await getPlatformConfig(config);
+  npmApi.resetMemCache();
+  npmApi.setNpmrc(config.npmrc);
+  delete config.gitPrivateKey;
+  return config;
+}
diff --git a/lib/workers/repository/init/base.js b/lib/workers/repository/init/base.ts
similarity index 74%
rename from lib/workers/repository/init/base.js
rename to lib/workers/repository/init/base.ts
index 5137a5821cbac531bbff4095708ab74f22b9017a..d9b12ff1828d10b6989fcdfa4386fdef84d4c2cd 100644
--- a/lib/workers/repository/init/base.js
+++ b/lib/workers/repository/init/base.ts
@@ -1,7 +1,10 @@
-const { logger } = require('../../../logger');
-const { platform } = require('../../../platform');
+import { logger } from '../../../logger';
+import { platform } from '../../../platform';
+import { RenovateConfig } from '../../../config';
 
-async function checkBaseBranch(config) {
+export async function checkBaseBranch(
+  config: RenovateConfig
+): Promise<RenovateConfig> {
   logger.debug('checkBaseBranch()');
   logger.debug(`config.repoIsOnboarded=${config.repoIsOnboarded}`);
   let error = [];
@@ -23,7 +26,3 @@ async function checkBaseBranch(config) {
   }
   return { ...config, errors: config.errors.concat(error) };
 }
-
-module.exports = {
-  checkBaseBranch,
-};
diff --git a/lib/workers/repository/init/config.js b/lib/workers/repository/init/config.ts
similarity index 87%
rename from lib/workers/repository/init/config.js
rename to lib/workers/repository/init/config.ts
index 558e9647e2babd9773c72aa0dac8c37141d8bea9..06f5422cb90919d4e3cad172369effc85bba63c4 100644
--- a/lib/workers/repository/init/config.js
+++ b/lib/workers/repository/init/config.ts
@@ -1,23 +1,25 @@
-const jsonValidator = require('json-dup-key-validator');
-const JSON5 = require('json5');
-const path = require('path');
+import jsonValidator from 'json-dup-key-validator';
+import JSON5 from 'json5';
+import path from 'path';
 
-const { logger } = require('../../../logger');
-const { mergeChildConfig } = require('../../../config');
-const { migrateAndValidate } = require('../../../config/migrate-validate');
-const { decryptConfig } = require('../../../config/decrypt');
-const presets = require('../../../config/presets');
-const npmApi = require('../../../datasource/npm');
-const { flattenPackageRules } = require('./flatten');
-const hostRules = require('../../../util/host-rules');
-const { configFileNames } = require('../../../config/app-strings');
-const { platform } = require('../../../platform');
+import { logger } from '../../../logger';
+import { mergeChildConfig, RenovateConfig } from '../../../config';
+import { migrateAndValidate } from '../../../config/migrate-validate';
+import { decryptConfig } from '../../../config/decrypt';
+import * as presets from '../../../config/presets';
+import * as npmApi from '../../../datasource/npm';
+import { flattenPackageRules } from './flatten';
+import * as hostRules from '../../../util/host-rules';
+import { configFileNames } from '../../../config/app-strings';
+import { platform } from '../../../platform';
 
 // Check for repository config
-async function mergeRenovateConfig(config) {
+export async function mergeRenovateConfig(
+  config: RenovateConfig
+): Promise<RenovateConfig> {
   let returnConfig = { ...config };
   const fileList = await platform.getFileList();
-  async function detectConfigFile() {
+  async function detectConfigFile(): Promise<string | null> {
     for (const fileName of configFileNames) {
       if (fileName === 'package.json') {
         try {
@@ -180,7 +182,3 @@ async function mergeRenovateConfig(config) {
   }
   return returnConfig;
 }
-
-module.exports = {
-  mergeRenovateConfig,
-};
diff --git a/lib/workers/repository/init/flatten.js b/lib/workers/repository/init/flatten.ts
similarity index 67%
rename from lib/workers/repository/init/flatten.js
rename to lib/workers/repository/init/flatten.ts
index e52af19fef2f06810e818c1791f058c59c805c15..fed4e685e41726ff588d6e1cbe285914efc39672 100644
--- a/lib/workers/repository/init/flatten.js
+++ b/lib/workers/repository/init/flatten.ts
@@ -1,8 +1,10 @@
-const { logger } = require('../../../logger');
-const { mergeChildConfig } = require('../../../config');
+import { logger } from '../../../logger';
+import { mergeChildConfig, PackageRule } from '../../../config';
 
-function flattenPackageRules(packageRules) {
-  const res = [];
+export function flattenPackageRules(
+  packageRules: PackageRule[]
+): PackageRule[] {
+  const res: PackageRule[] = [];
   if (!(packageRules && packageRules.length)) {
     return res;
   }
@@ -20,7 +22,3 @@ function flattenPackageRules(packageRules) {
   }
   return res;
 }
-
-module.exports = {
-  flattenPackageRules,
-};
diff --git a/lib/workers/repository/init/index.js b/lib/workers/repository/init/index.ts
similarity index 52%
rename from lib/workers/repository/init/index.js
rename to lib/workers/repository/init/index.ts
index 68eb56c234f3446320be20d952bf54911b2fa1a6..2f8d8dc970cbbd2b2f5026c28817f01bc5f73859 100644
--- a/lib/workers/repository/init/index.js
+++ b/lib/workers/repository/init/index.ts
@@ -1,16 +1,17 @@
-const { logger } = require('../../../logger');
-const { checkOnboardingBranch } = require('../onboarding/branch');
-const { checkIfConfigured } = require('../configured');
-const { initApis } = require('../init/apis');
-const { checkBaseBranch } = require('./base');
-const { mergeRenovateConfig } = require('./config');
-const { detectSemanticCommits } = require('./semantic');
-const { detectVulnerabilityAlerts } = require('./vulnerability');
-const { platform } = require('../../../platform');
+import { logger } from '../../../logger';
+import { checkOnboardingBranch } from '../onboarding/branch';
+import { checkIfConfigured } from '../configured';
+import { initApis } from './apis';
+import { checkBaseBranch } from './base';
+import { mergeRenovateConfig } from './config';
+import { detectSemanticCommits } from './semantic';
+import { detectVulnerabilityAlerts } from './vulnerability';
+import { platform } from '../../../platform';
+import { RenovateConfig } from '../../../config';
 
-async function initRepo(input) {
+export async function initRepo(input: RenovateConfig): Promise<RenovateConfig> {
   global.repoCache = {};
-  let config = {
+  let config: RenovateConfig = {
     ...input,
     errors: [],
     warnings: [],
@@ -31,7 +32,3 @@ async function initRepo(input) {
   }
   return config;
 }
-
-module.exports = {
-  initRepo,
-};
diff --git a/lib/workers/repository/init/semantic.js b/lib/workers/repository/init/semantic.ts
similarity index 71%
rename from lib/workers/repository/init/semantic.js
rename to lib/workers/repository/init/semantic.ts
index d39dc4a3505c1a8758b19a194f286cda0d7d84a2..98b3697d122da3b8a32d1ecbc028aa6c23668909 100644
--- a/lib/workers/repository/init/semantic.js
+++ b/lib/workers/repository/init/semantic.ts
@@ -1,8 +1,11 @@
-const conventionalCommitsDetector = require('conventional-commits-detector');
-const { logger } = require('../../../logger');
-const { platform } = require('../../../platform');
+import conventionalCommitsDetector from 'conventional-commits-detector';
+import { logger } from '../../../logger';
+import { platform } from '../../../platform';
+import { RenovateConfig } from '../../../config';
 
-async function detectSemanticCommits(config) {
+export async function detectSemanticCommits(
+  config: RenovateConfig
+): Promise<boolean> {
   logger.debug('detectSemanticCommits()');
   logger.trace({ config });
   if (config.semanticCommits !== null) {
@@ -26,7 +29,3 @@ async function detectSemanticCommits(config) {
   logger.debug('No semantic commits detected');
   return false;
 }
-
-module.exports = {
-  detectSemanticCommits,
-};
diff --git a/lib/workers/repository/init/vulnerability.js b/lib/workers/repository/init/vulnerability.ts
similarity index 94%
rename from lib/workers/repository/init/vulnerability.js
rename to lib/workers/repository/init/vulnerability.ts
index ef08ed45fecfc0f6cd2ceb897291cd5eebf2d450..6ccb90a5860cad558458a6f3180e59363523a5f6 100644
--- a/lib/workers/repository/init/vulnerability.js
+++ b/lib/workers/repository/init/vulnerability.ts
@@ -1,12 +1,11 @@
-const { logger } = require('../../../logger');
-const versioning = require('../../../versioning');
-const { platform } = require('../../../platform');
+import { logger } from '../../../logger';
+import * as versioning from '../../../versioning';
+import { platform } from '../../../platform';
+import { RenovateConfig } from '../../../config';
 
-module.exports = {
-  detectVulnerabilityAlerts,
-};
-
-async function detectVulnerabilityAlerts(input) {
+export async function detectVulnerabilityAlerts(
+  input: RenovateConfig
+): Promise<RenovateConfig> {
   if (!(input && input.vulnerabilityAlerts)) {
     return input;
   }
diff --git a/test/util.ts b/test/util.ts
index 69d8ec1e606753ff7b7f15bcc2443e18ea819c25..b1272e4a9d3ea60390d45fd0fa83df4f615c5316 100644
--- a/test/util.ts
+++ b/test/util.ts
@@ -1,5 +1,6 @@
 import { platform as _platform } from '../lib/platform';
 import { getConfig } from '../lib/config/defaults';
+import { RenovateConfig as _RenovateConfig } from '../lib/config';
 
 /**
  * Simple wrapper for getting mocked version of a module
@@ -11,4 +12,9 @@ export function mocked<T>(module: T): jest.Mocked<T> {
 
 export const platform = mocked(_platform);
 
+// Required because of isolatedModules
+export type RenovateConfig = _RenovateConfig;
+
 export const defaultConfig = getConfig();
+
+export { getConfig };
diff --git a/test/workers/repository/init/__snapshots__/config.spec.js.snap b/test/workers/repository/init/__snapshots__/config.spec.ts.snap
similarity index 100%
rename from test/workers/repository/init/__snapshots__/config.spec.js.snap
rename to test/workers/repository/init/__snapshots__/config.spec.ts.snap
diff --git a/test/workers/repository/init/__snapshots__/flatten.spec.js.snap b/test/workers/repository/init/__snapshots__/flatten.spec.ts.snap
similarity index 100%
rename from test/workers/repository/init/__snapshots__/flatten.spec.js.snap
rename to test/workers/repository/init/__snapshots__/flatten.spec.ts.snap
diff --git a/test/workers/repository/init/__snapshots__/vulnerability.spec.js.snap b/test/workers/repository/init/__snapshots__/vulnerability.spec.ts.snap
similarity index 100%
rename from test/workers/repository/init/__snapshots__/vulnerability.spec.js.snap
rename to test/workers/repository/init/__snapshots__/vulnerability.spec.ts.snap
diff --git a/test/workers/repository/init/apis.spec.js b/test/workers/repository/init/apis.spec.ts
similarity index 62%
rename from test/workers/repository/init/apis.spec.js
rename to test/workers/repository/init/apis.spec.ts
index 7bf16e3ebd9c664ae2348aaad5161b8b6eb0158d..408faff326e4791de9735cbb511c67d0bb0bb002 100644
--- a/test/workers/repository/init/apis.spec.js
+++ b/test/workers/repository/init/apis.spec.ts
@@ -1,13 +1,13 @@
-const { initApis } = require('../../../../lib/workers/repository/init/apis');
+import { initApis } from '../../../../lib/workers/repository/init/apis';
+import { RenovateConfig, getConfig } from '../../../util';
 
 jest.mock('../../../../lib/platform/github');
 
 describe('workers/repository/init/apis', () => {
   describe('initApis', () => {
-    /** @type any */
-    let config;
+    let config: RenovateConfig;
     beforeEach(() => {
-      config = require('../../../config/config/_fixtures');
+      config = { ...getConfig() };
       config.errors = [];
       config.warnings = [];
       config.token = 'some-token';
diff --git a/test/workers/repository/init/base.spec.js b/test/workers/repository/init/base.spec.ts
similarity index 66%
rename from test/workers/repository/init/base.spec.js
rename to test/workers/repository/init/base.spec.ts
index 36fca20aadd02f6b45aba7914f98193a16a86161..a5801ea37f6cd2760cf2ca8ef64268b9c4cc3d1a 100644
--- a/test/workers/repository/init/base.spec.js
+++ b/test/workers/repository/init/base.spec.ts
@@ -1,19 +1,14 @@
-/** @type any */
-let config;
+import { checkBaseBranch } from '../../../../lib/workers/repository/init/base';
+import { platform, getConfig, RenovateConfig } from '../../../util';
+
+let config: RenovateConfig;
 beforeEach(() => {
   jest.resetAllMocks();
-  config = require('../../../config/config/_fixtures');
+  config = { ...getConfig() };
   config.errors = [];
   config.warnings = [];
 });
 
-const {
-  checkBaseBranch,
-} = require('../../../../lib/workers/repository/init/base');
-
-/** @type any */
-const { platform } = require('../../../../lib/platform');
-
 describe('workers/repository/init/base', () => {
   describe('checkBaseBranch()', () => {
     it('errors', async () => {
@@ -23,7 +18,7 @@ describe('workers/repository/init/base', () => {
     });
     it('sets baseBranch', async () => {
       config.baseBranch = 'ssome-base';
-      platform.branchExists.mockReturnValue(true);
+      platform.branchExists.mockResolvedValue(true);
       const res = await checkBaseBranch(config);
       expect(res.errors).toHaveLength(0);
       expect(platform.setBaseBranch).toHaveBeenCalledTimes(1);
diff --git a/test/workers/repository/init/config.spec.js b/test/workers/repository/init/config.spec.ts
similarity index 59%
rename from test/workers/repository/init/config.spec.js
rename to test/workers/repository/init/config.spec.ts
index 5cf425d211fe65250269438b9e468c0806d64350..e3a273b2bb56ca8b56b95b8dbc14dbc68dac479e 100644
--- a/test/workers/repository/init/config.spec.js
+++ b/test/workers/repository/init/config.spec.ts
@@ -1,50 +1,47 @@
-/** @type any */
-let config;
+import { mergeRenovateConfig } from '../../../../lib/workers/repository/init/config';
+import * as _migrateAndValidate from '../../../../lib/config/migrate-validate';
+import { platform, mocked, getConfig, RenovateConfig } from '../../../util';
+
+const migrateAndValidate = mocked(_migrateAndValidate);
+
+let config: RenovateConfig;
 beforeEach(() => {
   jest.resetAllMocks();
-  config = require('../../../config/config/_fixtures');
+  config = getConfig();
   config.errors = [];
   config.warnings = [];
 });
 
-const {
-  mergeRenovateConfig,
-} = require('../../../../lib/workers/repository/init/config');
-/** @type any */
-const migrateValidate = require('../../../../lib/config/migrate-validate');
-/** @type any */
-const { platform } = require('../../../../lib/platform');
-
 jest.mock('../../../../lib/config/migrate-validate');
 
 describe('workers/repository/init/config', () => {
   describe('mergeRenovateConfig()', () => {
     beforeEach(() => {
-      migrateValidate.migrateAndValidate.mockReturnValue({
+      migrateAndValidate.migrateAndValidate.mockResolvedValue({
         warnings: [],
         errors: [],
       });
     });
     it('returns config if not found', async () => {
-      platform.getFileList.mockReturnValue(['package.json']);
-      platform.getFile.mockReturnValue('{}');
+      platform.getFileList.mockResolvedValue(['package.json']);
+      platform.getFile.mockResolvedValue('{}');
       const res = await mergeRenovateConfig(config);
       expect(res).toMatchObject(config);
     });
     it('uses package.json config if found', async () => {
-      platform.getFileList.mockReturnValue(['package.json']);
+      platform.getFileList.mockResolvedValue(['package.json']);
       const pJson = JSON.stringify({
         name: 'something',
         renovate: {
           prHourlyLimit: 10,
         },
       });
-      platform.getFile.mockReturnValue(pJson);
+      platform.getFile.mockResolvedValue(pJson);
       await mergeRenovateConfig(config);
     });
     it('returns error if cannot parse', async () => {
-      platform.getFileList.mockReturnValue(['package.json', 'renovate.json']);
-      platform.getFile.mockReturnValue('cannot parse');
+      platform.getFileList.mockResolvedValue(['package.json', 'renovate.json']);
+      platform.getFile.mockResolvedValue('cannot parse');
       let e;
       try {
         await mergeRenovateConfig(config);
@@ -57,8 +54,10 @@ describe('workers/repository/init/config', () => {
       expect(e.validationMessage).toMatchSnapshot();
     });
     it('throws error if duplicate keys', async () => {
-      platform.getFileList.mockReturnValue(['package.json', '.renovaterc']);
-      platform.getFile.mockReturnValue('{ "enabled": true, "enabled": false }');
+      platform.getFileList.mockResolvedValue(['package.json', '.renovaterc']);
+      platform.getFile.mockResolvedValue(
+        '{ "enabled": true, "enabled": false }'
+      );
       let e;
       try {
         await mergeRenovateConfig(config);
@@ -71,38 +70,41 @@ describe('workers/repository/init/config', () => {
       expect(e.validationMessage).toMatchSnapshot();
     });
     it('finds and parse renovate.json5', async () => {
-      platform.getFileList.mockReturnValue(['package.json', 'renovate.json5']);
-      platform.getFile.mockReturnValue(`{
+      platform.getFileList.mockResolvedValue([
+        'package.json',
+        'renovate.json5',
+      ]);
+      platform.getFile.mockResolvedValue(`{
         // this is json5 format
       }`);
       await mergeRenovateConfig(config);
     });
     it('finds .github/renovate.json', async () => {
-      platform.getFileList.mockReturnValue([
+      platform.getFileList.mockResolvedValue([
         'package.json',
         '.github/renovate.json',
       ]);
-      platform.getFile.mockReturnValue('{}');
+      platform.getFile.mockResolvedValue('{}');
       await mergeRenovateConfig(config);
     });
     it('finds .renovaterc.json', async () => {
-      platform.getFileList.mockReturnValue([
+      platform.getFileList.mockResolvedValue([
         'package.json',
         '.renovaterc.json',
       ]);
-      platform.getFile.mockReturnValue('{}');
+      platform.getFile.mockResolvedValue('{}');
       await mergeRenovateConfig(config);
     });
     it('throws error if misconfigured', async () => {
-      platform.getFileList.mockReturnValue([
+      platform.getFileList.mockResolvedValue([
         'package.json',
         '.renovaterc.json',
       ]);
-      platform.getFile.mockReturnValue('{}');
-      migrateValidate.migrateAndValidate.mockReturnValueOnce({
-        errors: [{}],
+      platform.getFile.mockResolvedValue('{}');
+      migrateAndValidate.migrateAndValidate.mockResolvedValueOnce({
+        errors: [{ depName: 'dep', message: 'test error' }],
       });
-      let e;
+      let e: Error;
       try {
         await mergeRenovateConfig(config);
       } catch (err) {
diff --git a/test/workers/repository/init/flatten.spec.js b/test/workers/repository/init/flatten.spec.ts
similarity index 86%
rename from test/workers/repository/init/flatten.spec.js
rename to test/workers/repository/init/flatten.spec.ts
index 63a920e534b58cae4434a94706a00352dd742546..2d55e0c59970c0ec032e713c89d47b3163a4b5dc 100644
--- a/test/workers/repository/init/flatten.spec.js
+++ b/test/workers/repository/init/flatten.spec.ts
@@ -1,11 +1,9 @@
-const {
-  flattenPackageRules,
-} = require('../../../../lib/workers/repository/init/flatten');
+import { flattenPackageRules } from '../../../../lib/workers/repository/init/flatten';
 
 describe('workers/repository/init/flatten', () => {
   describe('flattenPackageRules()', () => {
     it('returns empty', () => {
-      expect(flattenPackageRules({})).toEqual([]);
+      expect(flattenPackageRules([])).toEqual([]);
     });
     it('flattens some and returns others', () => {
       const packageRules = [
diff --git a/test/workers/repository/init/index.spec.js b/test/workers/repository/init/index.spec.ts
similarity index 55%
rename from test/workers/repository/init/index.spec.js
rename to test/workers/repository/init/index.spec.ts
index 8972907ecd1d13e3c28563c084419f61cf9a3a1b..c3408fb8a5a654c7b1414612511939b690ce6412 100644
--- a/test/workers/repository/init/index.spec.js
+++ b/test/workers/repository/init/index.spec.ts
@@ -1,8 +1,7 @@
-/** @type any */
-const base = require('../../../../lib/workers/repository/init/base');
-/** @type any */
-const apis = require('../../../../lib/workers/repository/init/apis');
-const { initRepo } = require('../../../../lib/workers/repository/init');
+import * as _base from '../../../../lib/workers/repository/init/base';
+import * as _apis from '../../../../lib/workers/repository/init/apis';
+import { initRepo } from '../../../../lib/workers/repository/init';
+import { mocked } from '../../../util';
 
 jest.mock('../../../../lib/workers/repository/onboarding/branch');
 jest.mock('../../../../lib/workers/repository/configured');
@@ -11,11 +10,14 @@ jest.mock('../../../../lib/workers/repository/init/base');
 jest.mock('../../../../lib/workers/repository/init/config');
 jest.mock('../../../../lib/workers/repository/init/semantic');
 
+const base = mocked(_base);
+const apis = mocked(_apis);
+
 describe('workers/repository/init', () => {
   describe('initRepo', () => {
     it('runs', async () => {
-      base.checkBaseBranch.mockReturnValue({});
-      apis.initApis.mockReturnValue({});
+      base.checkBaseBranch.mockResolvedValue({});
+      apis.initApis.mockResolvedValue({} as never);
       await initRepo({});
     });
   });
diff --git a/test/workers/repository/init/semantic.spec.js b/test/workers/repository/init/semantic.spec.ts
similarity index 64%
rename from test/workers/repository/init/semantic.spec.js
rename to test/workers/repository/init/semantic.spec.ts
index 5867ab583076ba8909df2af0c4b2b98d29fa8e25..72c43954a8ce4fb0f0eaae0f8409375129c4602b 100644
--- a/test/workers/repository/init/semantic.spec.js
+++ b/test/workers/repository/init/semantic.spec.ts
@@ -1,19 +1,14 @@
-/** @type any */
-let config;
+import { detectSemanticCommits } from '../../../../lib/workers/repository/init/semantic';
+import { platform, getConfig, RenovateConfig } from '../../../util';
+
+let config: RenovateConfig;
 beforeEach(() => {
   jest.resetAllMocks();
-  config = require('../../../config/config/_fixtures');
+  config = getConfig();
   config.errors = [];
   config.warnings = [];
 });
 
-const {
-  detectSemanticCommits,
-} = require('../../../../lib/workers/repository/init/semantic');
-
-/** @type any */
-const { platform } = require('../../../../lib/platform');
-
 describe('workers/repository/init/semantic', () => {
   describe('detectSemanticCommits()', () => {
     it('returns config if already set', async () => {
@@ -23,13 +18,16 @@ describe('workers/repository/init/semantic', () => {
     });
     it('detects false if unknown', async () => {
       config.semanticCommits = null;
-      platform.getCommitMessages.mockReturnValue(['foo', 'bar']);
+      platform.getCommitMessages.mockResolvedValue(['foo', 'bar']);
       const res = await detectSemanticCommits(config);
       expect(res).toBe(false);
     });
     it('detects true if known', async () => {
       config.semanticCommits = null;
-      platform.getCommitMessages.mockReturnValue(['fix: foo', 'refactor: bar']);
+      platform.getCommitMessages.mockResolvedValue([
+        'fix: foo',
+        'refactor: bar',
+      ]);
       const res = await detectSemanticCommits(config);
       expect(res).toBe(true);
     });
diff --git a/test/workers/repository/init/vulnerability.spec.js b/test/workers/repository/init/vulnerability.spec.ts
similarity index 96%
rename from test/workers/repository/init/vulnerability.spec.js
rename to test/workers/repository/init/vulnerability.spec.ts
index 764beb40b2c30172ed2d8e8610382c067aac13b2..715af5e5e032050306536744988219fb439a3342 100644
--- a/test/workers/repository/init/vulnerability.spec.js
+++ b/test/workers/repository/init/vulnerability.spec.ts
@@ -1,18 +1,12 @@
-let config;
+import { detectVulnerabilityAlerts } from '../../../../lib/workers/repository/init/vulnerability';
+import { platform, defaultConfig, RenovateConfig } from '../../../util';
+
+let config: RenovateConfig;
 beforeEach(() => {
   jest.resetAllMocks();
-  config = JSON.parse(
-    JSON.stringify(require('../../../config/config/_fixtures'))
-  );
+  config = JSON.parse(JSON.stringify(defaultConfig));
 });
 
-const {
-  detectVulnerabilityAlerts,
-} = require('../../../../lib/workers/repository/init/vulnerability');
-
-/** @type any */
-const { platform } = require('../../../../lib/platform');
-
 describe('workers/repository/init/vulnerability', () => {
   describe('detectVulnerabilityAlerts()', () => {
     it('returns if alerts are missing', async () => {
@@ -25,19 +19,19 @@ describe('workers/repository/init/vulnerability', () => {
     });
     it('returns if no alerts', async () => {
       delete config.vulnerabilityAlerts.enabled;
-      platform.getVulnerabilityAlerts.mockReturnValue([]);
+      platform.getVulnerabilityAlerts.mockResolvedValue([]);
       expect(await detectVulnerabilityAlerts(config)).toEqual(config);
     });
     it('throws if no alerts and vulnerabilityAlertsOnly', async () => {
       config.vulnerabilityAlertsOnly = true;
-      platform.getVulnerabilityAlerts.mockReturnValue([]);
+      platform.getVulnerabilityAlerts.mockResolvedValue([]);
       await expect(detectVulnerabilityAlerts(config)).rejects.toThrow(
         /no-vulnerability-alerts/
       );
     });
     it('returns alerts', async () => {
       delete config.vulnerabilityAlerts.enabled;
-      platform.getVulnerabilityAlerts.mockReturnValue([
+      platform.getVulnerabilityAlerts.mockResolvedValue([
         {},
         {
           dismissReason: null,