From 95788c4dbbfd70dfe4651bd1dbdb8222a6caaedd Mon Sep 17 00:00:00 2001 From: Gleb Bahmutov Date: Tue, 25 Jun 2019 15:10:36 -0400 Subject: [PATCH] feat: add hapi middleware --- README.md | 25 +++++++++++++------------ middleware.js => middleware/express.js | 1 + middleware/hapi.js | 14 ++++++++++++++ package.json | 3 ++- 4 files changed, 30 insertions(+), 13 deletions(-) rename middleware.js => middleware/express.js (93%) create mode 100644 middleware/hapi.js diff --git a/README.md b/README.md index f9607218..ea6cfaae 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ You can also instrument your server-side code and produce combined coverage repo ```js const express = require('express') const app = express() -require('@cypress/code-coverage/middleware')(app) +require('@cypress/code-coverage/middleware/express')(app) ``` **Tip:** you can register the endpoint only if there is global code coverage object, and you can exclude the middleware code from the coverage numbers @@ -82,24 +82,25 @@ require('@cypress/code-coverage/middleware')(app) // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md /* istanbul ignore next */ if (global.__coverage__) { - require('@cypress/code-coverage/middleware')(app) + require('@cypress/code-coverage/middleware/express')(app) } ``` If you use Hapi server, define the endpoint yourself and return the object ```js -// https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md -/* istanbul ignore next */ if (global.__coverage__) { - // https://hapijs.com/tutorials/routing?lang=en_US - server.route({ - method: 'GET', - path: '/__coverage__', - handler () { - return { coverage: global.__coverage__ } - } - }) + require('@cypress/code-coverage/middleware/hapi')(server) +} +``` + +For any other server, define the endpoint yourself and return the coverage object: + +```js +if (global.__coverage__) { + // add method "GET /__coverage__" and response with JSON + onRequest = (response) => + response.sendJSON({coverage: global.__coverage__ }) } ``` diff --git a/middleware.js b/middleware/express.js similarity index 93% rename from middleware.js rename to middleware/express.js index 560a529b..07f884ff 100644 --- a/middleware.js +++ b/middleware/express.js @@ -1,3 +1,4 @@ +// for Express.js module.exports = app => { // expose "GET __coverage__" endpoint that just returns // global coverage information (if the application has been instrumented) diff --git a/middleware/hapi.js b/middleware/hapi.js new file mode 100644 index 00000000..159dd972 --- /dev/null +++ b/middleware/hapi.js @@ -0,0 +1,14 @@ +// for Hapi.js +module.exports = server => { + // expose "GET __coverage__" endpoint that just returns + // global coverage information (if the application has been instrumented) + + // https://hapijs.com/tutorials/routing?lang=en_US + server.route({ + method: 'GET', + path: '/__coverage__', + handler () { + return { coverage: global.__coverage__ } + } + }) +} diff --git a/package.json b/package.json index fef5f96a..d9be0edb 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,8 @@ }, "homepage": "https://github.com/cypress-io/code-coverage#readme", "files": [ - "*.js" + "*.js", + "middleware" ], "publishConfig": { "access": "public"