From 66d64b33078fa4a961c328cce3ac7e37fa7a34c8 Mon Sep 17 00:00:00 2001 From: Gleb Bahmutov Date: Tue, 7 Apr 2020 19:51:00 -0400 Subject: [PATCH 1/4] rename to backend --- examples/backend/README.md | 3 +++ examples/backend/cypress.json | 9 +++++++++ .../backend/cypress/integration}/spec.js | 0 examples/backend/cypress/plugins/index.js | 5 +++++ examples/backend/cypress/support/index.js | 1 + examples/backend/package.json | 11 +++++++++++ {test-backend => examples/backend/server}/index.html | 0 .../index.js => examples/backend/server/server.js | 2 +- 8 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 examples/backend/README.md create mode 100644 examples/backend/cypress.json rename {cypress/test-backend => examples/backend/cypress/integration}/spec.js (100%) create mode 100644 examples/backend/cypress/plugins/index.js create mode 100644 examples/backend/cypress/support/index.js create mode 100644 examples/backend/package.json rename {test-backend => examples/backend/server}/index.html (100%) rename test-backend/index.js => examples/backend/server/server.js (92%) diff --git a/examples/backend/README.md b/examples/backend/README.md new file mode 100644 index 00000000..65c8eac4 --- /dev/null +++ b/examples/backend/README.md @@ -0,0 +1,3 @@ +# example: backend + +> Getting code coverage from backend diff --git a/examples/backend/cypress.json b/examples/backend/cypress.json new file mode 100644 index 00000000..3fdedda2 --- /dev/null +++ b/examples/backend/cypress.json @@ -0,0 +1,9 @@ +{ + "fixturesFolder": false, + "baseUrl": "http://localhost:3003", + "env": { + "codeCoverage": { + "url": "http://localhost:3003/__coverage__" + } + } +} diff --git a/cypress/test-backend/spec.js b/examples/backend/cypress/integration/spec.js similarity index 100% rename from cypress/test-backend/spec.js rename to examples/backend/cypress/integration/spec.js diff --git a/examples/backend/cypress/plugins/index.js b/examples/backend/cypress/plugins/index.js new file mode 100644 index 00000000..b17c48db --- /dev/null +++ b/examples/backend/cypress/plugins/index.js @@ -0,0 +1,5 @@ +module.exports = (on, config) => { + require('../../../../task')(on, config) + on('file:preprocessor', require('../../../../use-babelrc')) + return config +} diff --git a/examples/backend/cypress/support/index.js b/examples/backend/cypress/support/index.js new file mode 100644 index 00000000..dd60efa2 --- /dev/null +++ b/examples/backend/cypress/support/index.js @@ -0,0 +1 @@ +import '../../../../support' diff --git a/examples/backend/package.json b/examples/backend/package.json new file mode 100644 index 00000000..b6217341 --- /dev/null +++ b/examples/backend/package.json @@ -0,0 +1,11 @@ +{ + "name": "example-backend", + "description": "Code coverage for backend", + "devDependencies": {}, + "scripts": { + "start": "../../node_modules/.bin/nyc --silent node server/server", + "cy:open": "../../node_modules/.bin/cypress open", + "dev": "../../node_modules/.bin/start-test 3003 cy:open", + "report": "../../node_modules/.bin/nyc report" + } +} diff --git a/test-backend/index.html b/examples/backend/server/index.html similarity index 100% rename from test-backend/index.html rename to examples/backend/server/index.html diff --git a/test-backend/index.js b/examples/backend/server/server.js similarity index 92% rename from test-backend/index.js rename to examples/backend/server/server.js index 542860a9..7e4786e7 100644 --- a/test-backend/index.js +++ b/examples/backend/server/server.js @@ -8,7 +8,7 @@ const port = 3003 if (global.__coverage__) { console.log('have code coverage, will add middleware for express') console.log(`to fetch: GET :${port}/__coverage__`) - require('../middleware/express')(app) + require('../../../middleware/express')(app) } app.use(express.static(__dirname)) From fca0c2036b2ac26ccb057e4f5c9a5b38d7f06f47 Mon Sep 17 00:00:00 2001 From: Gleb Bahmutov Date: Tue, 7 Apr 2020 19:54:56 -0400 Subject: [PATCH 2/4] update circle file --- .circleci/config.yml | 26 ++++++++++++++------------ examples/backend/package.json | 2 +- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index bccc2604..ee1ec09f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -75,16 +75,15 @@ workflows: - run: npx nyc report --check-coverage true --lines 100 --include cypress/unit.js - cypress/run: - # TODO switch to separate example in "examples/..." name: backend coverage requires: - cypress/install - # grab the workspace created by cypress/install job attach-workspace: true - - start: npm run start:test:backend - command: npx cypress run --config-file cypress-backend.json + working_directory: examples/backend + start: npm start + wait-on: 'http://localhost:3003' + command: '../../node_modules/.bin/cypress run' # there are no jobs to follow this one # so no need to save the workspace files (saves time) @@ -94,12 +93,16 @@ workflows: # you can click on it in the CircleCI UI # to see live static HTML site - store_artifacts: - path: coverage - # print code coverage summary to the terminal - # and make sure there the coverage is above certain limit - - run: npx nyc report --check-coverage true --lines 72 - # and look at the server index file - should be fully covered - - run: npx nyc report --check-coverage true --lines 100 --include test-backend/index.js + path: examples/backend/coverage + - run: + command: npm run coverage:report + working_directory: examples/backend + - run: + name: Check code coverage 📈 + command: | + node ../../scripts/check-coverage server.js + node ../../scripts/only-covered server.js + working_directory: examples/backend - cypress/run: attach-workspace: true @@ -180,7 +183,6 @@ workflows: - run: command: npm run coverage:check working_directory: examples/ts-example - - run: name: Check code coverage 📈 command: | diff --git a/examples/backend/package.json b/examples/backend/package.json index b6217341..c39c662f 100644 --- a/examples/backend/package.json +++ b/examples/backend/package.json @@ -6,6 +6,6 @@ "start": "../../node_modules/.bin/nyc --silent node server/server", "cy:open": "../../node_modules/.bin/cypress open", "dev": "../../node_modules/.bin/start-test 3003 cy:open", - "report": "../../node_modules/.bin/nyc report" + "coverage:report": "../../node_modules/.bin/nyc report" } } From ac466ae93ac7cb443d4e288665b63c2c3d3c5d9c Mon Sep 17 00:00:00 2001 From: Gleb Bahmutov Date: Tue, 7 Apr 2020 19:56:41 -0400 Subject: [PATCH 3/4] fix circle yml --- .circleci/config.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index ee1ec09f..733dc283 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -98,11 +98,11 @@ workflows: command: npm run coverage:report working_directory: examples/backend - run: - name: Check code coverage 📈 - command: | - node ../../scripts/check-coverage server.js - node ../../scripts/only-covered server.js - working_directory: examples/backend + name: Check code coverage 📈 + command: | + node ../../scripts/check-coverage server.js + node ../../scripts/only-covered server.js + working_directory: examples/backend - cypress/run: attach-workspace: true From e74250c40de177c6941807c6a0ad87efe11ad0e4 Mon Sep 17 00:00:00 2001 From: Gleb Bahmutov Date: Tue, 7 Apr 2020 20:01:26 -0400 Subject: [PATCH 4/4] remove extra package scripts --- README.md | 6 ++++-- package.json | 3 --- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 5cdc0009..4d1eb56d 100644 --- a/README.md +++ b/README.md @@ -134,7 +134,9 @@ module.exports = (on, config) => { ## Instrument backend code -You can also instrument your server-side code and produce combined coverage report that covers both the backend and frontend code. +Example in [examples/backend](examples/backend) folder. + +You can also instrument your server-side code and produce combined coverage report that covers both the backend and frontend code 1. Run the server code with instrumentation. The simplest way is to use [nyc](https://github.com/istanbuljs/nyc). If normally you run `node src/server` then to run instrumented version you can do `nyc --silent node src/server`. 2. Add an endpoint that returns collected coverage. If you are using Express, you can simply do @@ -184,7 +186,7 @@ if (global.__coverage__) { } ``` -That should be enough - the code coverage from the server will be requested at the end of the test run and merged with the client-side code coverage, producing a combined report +That should be enough - the code coverage from the server will be requested at the end of the test run and merged with the client-side code coverage, producing a combined report. ## Custom report folder diff --git a/package.json b/package.json index b5dd7179..a0ac8603 100644 --- a/package.json +++ b/package.json @@ -14,9 +14,6 @@ "dev:no:coverage": "start-test 1234 'cypress open --env coverage=false'", "format": "prettier --write '*.js'", "format:check": "prettier --check '*.js'", - "start:test:backend": "nyc --silent node test-backend", - "cy:backend": "cypress open --config-file cypress-backend.json", - "dev:backend": "start-test start:test:backend 3003 cy:backend", "check:markdown": "find *.md -exec npx markdown-link-check {} \\;", "effective:config": "circleci config process .circleci/config.yml | sed /^#/d" },