diff --git a/lib/services/karma-execution.ts b/lib/services/karma-execution.ts index c2314f6ff3..736b7c72ef 100644 --- a/lib/services/karma-execution.ts +++ b/lib/services/karma-execution.ts @@ -2,9 +2,10 @@ import * as path from "path"; process.on("message", (data: any) => { if (data.karmaConfig) { - const pathToKarma = path.join( - data.karmaConfig.projectDir, - "node_modules/karma" + const pathToKarma = path.dirname( + require.resolve("karma/package.json", { + paths: [data.karmaConfig.projectDir], + }) ); const KarmaServer = require(path.join(pathToKarma, "lib/server")); const karma = new KarmaServer(data.karmaConfig, (exitCode: number) => { diff --git a/lib/services/test-execution-service.ts b/lib/services/test-execution-service.ts index b244e40ce5..472bb06212 100644 --- a/lib/services/test-execution-service.ts +++ b/lib/services/test-execution-service.ts @@ -139,13 +139,20 @@ export class TestExecutionService implements ITestExecutionService { projectData: IProjectData ): Promise { let canStartKarmaServer = true; - const requiredDependencies = ["karma", "@nativescript/unit-test-runner"]; + const requiredDependencies = ["@nativescript/unit-test-runner"]; // we need @nativescript/unit-test-runner at the local level because of hooks! _.each(requiredDependencies, (dep) => { if (!projectData.dependencies[dep] && !projectData.devDependencies[dep]) { canStartKarmaServer = false; return; } }); + try { + require.resolve("karma/package.json", { + paths: [projectData.projectDir], + }); + } catch (ignore) { + canStartKarmaServer = false; + } return canStartKarmaServer; }