From ce64f5352b963202031f9ed7320f5ffecf1628c9 Mon Sep 17 00:00:00 2001 From: Tommy Markley Date: Tue, 19 Apr 2022 16:48:47 -0500 Subject: [PATCH] Adds code coverage reporting (#1478) * Renames build and test workflow to eliminate ambiguity. * Adds coverage generation for jest and mocha tests. * Expands coverage collection for jest tests. * Utilizes `lcov` reporter as well as text summary reporter. Resolves #1339 Prerequisite for #1035 Signed-off-by: Tommy Markley (cherry picked from commit 1caf90752d8e34ceece81d8a69f6ec79aabfa9c1) --- ...ck_workflow.yml => build_and_test_workflow.yml} | 14 ++++++++++---- package.json | 5 +++-- src/dev/jest/config.js | 13 ++----------- 3 files changed, 15 insertions(+), 17 deletions(-) rename .github/workflows/{pr_check_workflow.yml => build_and_test_workflow.yml} (95%) diff --git a/.github/workflows/pr_check_workflow.yml b/.github/workflows/build_and_test_workflow.yml similarity index 95% rename from .github/workflows/pr_check_workflow.yml rename to .github/workflows/build_and_test_workflow.yml index 7a877937262f..ef74537ad53d 100644 --- a/.github/workflows/pr_check_workflow.yml +++ b/.github/workflows/build_and_test_workflow.yml @@ -53,13 +53,19 @@ jobs: id: linter run: yarn lint - - name: Run unit tests + - name: Run unit tests with coverage id: unit-tests - run: yarn test:jest:ci + run: yarn test:jest:ci:coverage - - name: Run mocha tests + - name: Run mocha tests with coverage id: mocha-tests - run: yarn test:mocha + run: yarn test:mocha:coverage + + - name: Upload Code Coverage + id: upload-code-coverage + uses: codecov/codecov-action@v3 + with: + directory: ./target/opensearch-dashboards-coverage - name: Run integration tests id: integration-tests diff --git a/package.json b/package.json index b5086af4fe5e..3fb254f6a3fd 100644 --- a/package.json +++ b/package.json @@ -43,15 +43,16 @@ "test": "grunt test", "test:bwc": "./scripts/bwctest_osd.sh", "test:jest": "node scripts/jest", + "test:jest:coverage": "node scripts/jest --coverage", "test:jest:ci": "node scripts/jest --ci --colors --runInBand", + "test:jest:ci:coverage": "node scripts/jest --ci --colors --runInBand --coverage", "test:jest_integration": "node scripts/jest_integration", "test:jest_integration:ci": "node scripts/jest_integration --ci --colors --max-old-space-size=5120", "test:mocha": "node scripts/mocha", - "test:mocha:coverage": "grunt test:mochaCoverage", + "test:mocha:coverage": "yarn nyc --reporter=text-summary --reporter=lcov --report-dir=./target/opensearch-dashboards-coverage/mocha node scripts/mocha", "test:ftr": "node scripts/functional_tests", "test:ftr:server": "node scripts/functional_tests_server", "test:ftr:runner": "node scripts/functional_test_runner", - "test:coverage": "grunt test:coverage", "checkLicenses": "node scripts/check_licenses --dev", "build-platform": "node scripts/build", "build": "node scripts/build --all-platforms", diff --git a/src/dev/jest/config.js b/src/dev/jest/config.js index 295a1a276741..e0730cc0d916 100644 --- a/src/dev/jest/config.js +++ b/src/dev/jest/config.js @@ -49,16 +49,6 @@ export default { '/src/test_utils', '/test/functional/services/remote', ], - collectCoverageFrom: [ - 'src/plugins/**/*.{ts,tsx}', - '!src/plugins/**/*.d.ts', - 'packages/osd-ui-framework/src/components/**/*.js', - '!packages/osd-ui-framework/src/components/index.js', - '!packages/osd-ui-framework/src/components/**/*/index.js', - 'packages/osd-ui-framework/src/services/**/*.js', - '!packages/osd-ui-framework/src/services/index.js', - '!packages/osd-ui-framework/src/services/**/*/index.js', - ], moduleNameMapper: { '@elastic/eui$': '/node_modules/@elastic/eui/test-env', '@elastic/eui/lib/(.*)?': '/node_modules/@elastic/eui/test-env/$1', @@ -82,7 +72,8 @@ export default { '/src/dev/jest/setup/react_testing_library.js', ], coverageDirectory: '/target/opensearch-dashboards-coverage/jest', - coverageReporters: ['html', 'text', 'text-summary'], + coveragePathIgnorePatterns: ['/node_modules/', '.*\\.d\\.ts'], + coverageReporters: ['lcov', 'text-summary'], moduleFileExtensions: ['js', 'mjs', 'json', 'ts', 'tsx', 'node'], modulePathIgnorePatterns: ['__fixtures__/', 'target/', '/src/plugins/maps_legacy'], testEnvironment: 'jest-environment-jsdom',