startGhost = async (options = {}) => {
    await mentionsJobsService.allSettled();
    await jobsService.allSettled();
    await DomainEvents.allSettled();

    /**
     * We never use the root content folder for testing!
     * We use a tmp folder.
     */
    const contentFolder = path.join(os.tmpdir(), crypto.randomUUID(), 'ghost-test');
    await prepareContentFolder({contentFolder});

    // NOTE: need to pass this config to the server instance
    configUtils.set('paths:contentPath', contentFolder);

    // Adapter cache has to be cleared to avoid reusing cached adapter instances between restarts
    adapterManager.clearCache();

    // Reset the URL service so we clear out all the listeners
    urlServiceUtils.resetGenerators();

    const defaults = {
        backend: true,
        frontend: false,
        server: false
    };

    // Ensure the state of all data, including DB and caches
    const resetDataNow = Date.now();
    await resetData();
    totalResetTime += Date.now() - resetDataNow;

    const bootOptions = Object.assign({}, defaults, options);

    const bootNow = Date.now();
    const ghostServer = await boot(bootOptions);
    const bootTime = Date.now() - bootNow;
    totalStartTime += bootTime;
    totalBoots += 1;

    if (bootOptions.frontend) {
        await urlServiceUtils.isFinished();
    }

    // Disable network in tests at the start
    mockManager.disableNetwork();

    debug(`[e2e-framework] Started Ghost in ${bootTime / 1000}s`);
    debug(`[e2e-framework] Accumulated start time across ${totalBoots} boots is ${totalStartTime / 1000}s (average = ${Math.round(totalStartTime / totalBoots)}ms)`);
    debug(`[e2e-framework] Accumulated reset time across ${totalBoots} boots is ${totalResetTime / 1000}s (average = ${Math.round(totalResetTime / totalBoots)}ms)`);

    return ghostServer;
}
@param {Object} [options={}]
@param {Boolean} [options.backend] Boot the backend
@param {Boolean} [options.frontend] Boot the frontend
@param {Boolean} [options.server] Start a server
@returns {Promise<Express.Application>} ghost