From 7f368954ef7d6b495bde843ce249383186269952 Mon Sep 17 00:00:00 2001 From: Saloni Yadav Date: Thu, 17 Nov 2022 12:29:00 -0700 Subject: [PATCH 1/5] Added ability to pass coverage api value from client app config --- .../lib/attach-middleware.js | 20 +++++++++++++++---- .../ember-cli-code-coverage/lib/config.js | 1 + 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/packages/ember-cli-code-coverage/lib/attach-middleware.js b/packages/ember-cli-code-coverage/lib/attach-middleware.js index 39b0887c..8eeff6a2 100644 --- a/packages/ember-cli-code-coverage/lib/attach-middleware.js +++ b/packages/ember-cli-code-coverage/lib/attach-middleware.js @@ -9,13 +9,22 @@ const path = require('path'); const crypto = require('crypto'); const fs = require('fs-extra'); -const WRITE_COVERAGE = '/write-coverage'; - function logError(err, req, res, next) { console.error(err.stack); next(err); } +/** + * This function fetches the API path to write coverage + * This can be passed from the client application using the key `coverageApiPath` in the file config/coverage.js + * Default value will be set to `/write-coverage` + */ + +function getCoverageApiPath(configPath) { + let config = getConfig(configPath); + return config.coverageApiPath; +} + /* * This function normalizes the relativePath to match what we get from a classical app. Its goal * is to change any in repo paths like: app-namespace/lib/in-repo-namespace/components/foo.js to @@ -183,8 +192,10 @@ function coverageHandler(map, options, req, res) { // Used when app is in dev mode (`ember serve`). // Creates a new coverage map on every request. function serverMiddleware(app, options) { + let coverageApiPath = getCoverageApiPath(options.configPath); + app.post( - WRITE_COVERAGE, + coverageApiPath, bodyParser, (req, res) => { let map = libCoverage.createCoverageMap(); @@ -199,9 +210,10 @@ function serverMiddleware(app, options) { // Collects the coverage on each request and merges it into the coverage map. function testMiddleware(app, options) { let map = libCoverage.createCoverageMap(); + let coverageApiPath = getCoverageApiPath(options.configPath); app.post( - WRITE_COVERAGE, + coverageApiPath, bodyParser, (req, res) => { coverageHandler(map, options, req, res); diff --git a/packages/ember-cli-code-coverage/lib/config.js b/packages/ember-cli-code-coverage/lib/config.js index dfbc0922..e359882d 100644 --- a/packages/ember-cli-code-coverage/lib/config.js +++ b/packages/ember-cli-code-coverage/lib/config.js @@ -40,6 +40,7 @@ function getDefaultConfig() { coverageFolder: 'coverage', excludes: ['*/mirage/**/*'], reporters: ['html', 'lcov'], + coverageApiPath: '/write-coverage', }; } From b03722b31d789be49da6d72b14ec0cc6c984051e Mon Sep 17 00:00:00 2001 From: Saloni Yadav Date: Wed, 23 Nov 2022 11:30:04 -0700 Subject: [PATCH 2/5] Passing endpoint for write-coverage api to sendCoverage --- packages/ember-cli-code-coverage/addon-test-support/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ember-cli-code-coverage/addon-test-support/index.js b/packages/ember-cli-code-coverage/addon-test-support/index.js index 4f7b91aa..4f96f743 100644 --- a/packages/ember-cli-code-coverage/addon-test-support/index.js +++ b/packages/ember-cli-code-coverage/addon-test-support/index.js @@ -64,7 +64,7 @@ export function forceModulesToBeLoaded(filterFunction) { }); } -export async function sendCoverage(callback) { +export async function sendCoverage(callback, coverageApiPath = '/write-coverage') { let coverageData = window.__coverage__; //eslint-disable-line no-undef if (coverageData === undefined) { @@ -77,7 +77,7 @@ export async function sendCoverage(callback) { let body = JSON.stringify(coverageData || {}); - let response = await fetch('/write-coverage', { + let response = await fetch(coverageApiPath, { method: 'POST', headers: { 'Content-Type': 'application/json', From 03de3adb6b2215bef846e079aa838155412d67b6 Mon Sep 17 00:00:00 2001 From: Saloni Yadav Date: Thu, 24 Nov 2022 19:44:45 -0700 Subject: [PATCH 3/5] added options for api path and report type --- .../addon-test-support/index.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/ember-cli-code-coverage/addon-test-support/index.js b/packages/ember-cli-code-coverage/addon-test-support/index.js index 4f96f743..fd09f24f 100644 --- a/packages/ember-cli-code-coverage/addon-test-support/index.js +++ b/packages/ember-cli-code-coverage/addon-test-support/index.js @@ -64,8 +64,12 @@ export function forceModulesToBeLoaded(filterFunction) { }); } -export async function sendCoverage(callback, coverageApiPath = '/write-coverage') { +export async function sendCoverage(callback, options) { let coverageData = window.__coverage__; //eslint-disable-line no-undef + let { coverageApiPath, isHtmlReport } = options; + if (!coverageApiPath) { + coverageApiPath = '/write-coverage'; + } if (coverageData === undefined) { if (callback) { @@ -85,7 +89,9 @@ export async function sendCoverage(callback, coverageApiPath = '/write-coverage' body, }); let responseData = await response.json(); - writeCoverageInfo(responseData); + if (isHtmlReport) { + writeCoverageInfo(responseData); + } if (callback) { callback(); From 869b45b3cd8d69a5cb5d61e1ce41ff1f463d2b78 Mon Sep 17 00:00:00 2001 From: Saloni Yadav Date: Thu, 24 Nov 2022 19:48:49 -0700 Subject: [PATCH 4/5] renamed flag --- packages/ember-cli-code-coverage/addon-test-support/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ember-cli-code-coverage/addon-test-support/index.js b/packages/ember-cli-code-coverage/addon-test-support/index.js index fd09f24f..0c0451a0 100644 --- a/packages/ember-cli-code-coverage/addon-test-support/index.js +++ b/packages/ember-cli-code-coverage/addon-test-support/index.js @@ -66,7 +66,7 @@ export function forceModulesToBeLoaded(filterFunction) { export async function sendCoverage(callback, options) { let coverageData = window.__coverage__; //eslint-disable-line no-undef - let { coverageApiPath, isHtmlReport } = options; + let { coverageApiPath, isHtmlReportGenerated } = options; if (!coverageApiPath) { coverageApiPath = '/write-coverage'; } @@ -89,7 +89,7 @@ export async function sendCoverage(callback, options) { body, }); let responseData = await response.json(); - if (isHtmlReport) { + if (isHtmlReportGenerated) { writeCoverageInfo(responseData); } From e0446ef101f3f1e2eaf9b63c8f1dc46e4181ad12 Mon Sep 17 00:00:00 2001 From: Saloni Yadav Date: Thu, 24 Nov 2022 19:51:09 -0700 Subject: [PATCH 5/5] Added explanation for flag --- packages/ember-cli-code-coverage/addon-test-support/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ember-cli-code-coverage/addon-test-support/index.js b/packages/ember-cli-code-coverage/addon-test-support/index.js index 0c0451a0..200e94b0 100644 --- a/packages/ember-cli-code-coverage/addon-test-support/index.js +++ b/packages/ember-cli-code-coverage/addon-test-support/index.js @@ -66,7 +66,7 @@ export function forceModulesToBeLoaded(filterFunction) { export async function sendCoverage(callback, options) { let coverageData = window.__coverage__; //eslint-disable-line no-undef - let { coverageApiPath, isHtmlReportGenerated } = options; + let { coverageApiPath, isHtmlReportNotGenerated } = options; // if isHtmlReportNotGenerated is null/undefined, writeCoverageInfo will be called; if it is explicitly passed as `true`, writeCoverageInfo will not be called if (!coverageApiPath) { coverageApiPath = '/write-coverage'; } @@ -89,7 +89,7 @@ export async function sendCoverage(callback, options) { body, }); let responseData = await response.json(); - if (isHtmlReportGenerated) { + if (!isHtmlReportNotGenerated) { writeCoverageInfo(responseData); }