mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-10-22 07:29:46 +02:00
chore: add coverage configuration and update GitHub Actions for improved artifact handling
This commit is contained in:
65
.github/workflows/e2e.yml
vendored
65
.github/workflows/e2e.yml
vendored
@@ -150,24 +150,24 @@ jobs:
|
|||||||
ls -la coverage/cypress/ || echo "No coverage/cypress directory"
|
ls -la coverage/cypress/ || echo "No coverage/cypress directory"
|
||||||
echo "Looking for any .info files:"
|
echo "Looking for any .info files:"
|
||||||
find . -name "*.info" -type f | head -10 || echo "No .info files found"
|
find . -name "*.info" -type f | head -10 || echo "No .info files found"
|
||||||
- name: Prepare unique lcov filename
|
- name: Prepare coverage artifacts
|
||||||
if: ${{ steps.cypress.conclusion == 'success' }}
|
if: ${{ steps.cypress.conclusion == 'success' }}
|
||||||
run: |
|
run: |
|
||||||
mkdir -p coverage/cypress
|
mkdir -p coverage/cypress
|
||||||
if [ -f coverage/cypress/lcov.info ]; then
|
if [ -f coverage/cypress/coverage-final.json ]; then
|
||||||
cp coverage/cypress/lcov.info coverage/cypress/lcov-${{ matrix.containers }}.info
|
cp coverage/cypress/coverage-final.json coverage/cypress/coverage-final-${{ matrix.containers }}.json
|
||||||
echo "Created lcov-${{ matrix.containers }}.info"
|
echo "Created coverage-final-${{ matrix.containers }}.json"
|
||||||
ls -la coverage/cypress/lcov-${{ matrix.containers }}.info
|
ls -la coverage/cypress/coverage-final-${{ matrix.containers }}.json
|
||||||
else
|
else
|
||||||
echo "Error: coverage/cypress/lcov.info not found"
|
echo "Error: coverage/cypress/coverage-final.json not found"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
- name: Upload e2e lcov artifact
|
- name: Upload e2e coverage artifact
|
||||||
if: ${{ steps.cypress.conclusion == 'success' }}
|
if: ${{ steps.cypress.conclusion == 'success' }}
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: e2e-lcov-${{ matrix.containers }}
|
name: e2e-coverage-${{ matrix.containers }}
|
||||||
path: coverage/cypress/lcov-${{ matrix.containers }}.info
|
path: coverage/cypress/coverage-final-${{ matrix.containers }}.json
|
||||||
|
|
||||||
coverage-merge:
|
coverage-merge:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -181,10 +181,10 @@ jobs:
|
|||||||
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
|
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
|
||||||
with:
|
with:
|
||||||
node-version-file: '.node-version'
|
node-version-file: '.node-version'
|
||||||
- name: Download e2e lcov shards
|
- name: Download e2e coverage shards
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
pattern: e2e-lcov-*
|
pattern: e2e-coverage-*
|
||||||
path: coverage/e2e-shards
|
path: coverage/e2e-shards
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
- name: Debug downloaded artifacts
|
- name: Debug downloaded artifacts
|
||||||
@@ -195,38 +195,39 @@ jobs:
|
|||||||
ls -la coverage/e2e-shards/
|
ls -la coverage/e2e-shards/
|
||||||
echo "Directory structure:"
|
echo "Directory structure:"
|
||||||
find coverage/e2e-shards -type f | head -20
|
find coverage/e2e-shards -type f | head -20
|
||||||
|
echo "Looking for coverage-final.json files:"
|
||||||
|
find coverage/e2e-shards -name "coverage-final.json" | head -20
|
||||||
- name: Install dependencies for merging
|
- name: Install dependencies for merging
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
env:
|
env:
|
||||||
CYPRESS_CACHE_FOLDER: .cache/Cypress
|
CYPRESS_CACHE_FOLDER: .cache/Cypress
|
||||||
- name: Merge LCOV files
|
- name: Prepare coverage files for merge script
|
||||||
run: |
|
run: |
|
||||||
mkdir -p coverage/combined
|
mkdir -p coverage/vitest coverage/cypress
|
||||||
# Check if we have LCOV files to merge
|
# Copy E2E coverage-final.json files to the structure expected by scripts/coverage.ts
|
||||||
if ls coverage/e2e-shards/**/lcov-*.info 1> /dev/null 2>&1; then
|
for i in {1..5}; do
|
||||||
echo "Found LCOV files to merge:"
|
if [ -f "coverage/e2e-shards/coverage-final-$i.json" ]; then
|
||||||
ls -la coverage/e2e-shards/**/lcov-*.info
|
cp "coverage/e2e-shards/coverage-final-$i.json" "coverage/cypress/coverage-final.json"
|
||||||
# Simple concatenation of LCOV files
|
break
|
||||||
cat coverage/e2e-shards/**/lcov-*.info > coverage/combined/lcov.info
|
fi
|
||||||
echo "Merged LCOV file size:"
|
done
|
||||||
wc -l coverage/combined/lcov.info
|
# Create a dummy vitest coverage-final.json if none exists
|
||||||
else
|
echo '{"type":"Coverage","version":"1.1","data":{}}' > coverage/vitest/coverage-final.json
|
||||||
echo "No LCOV files found to merge"
|
echo "Prepared coverage files:"
|
||||||
exit 1
|
ls -la coverage/vitest/
|
||||||
fi
|
ls -la coverage/cypress/
|
||||||
- name: Verify merged LCOV file
|
- name: Run coverage merge script
|
||||||
run: |
|
run: |
|
||||||
echo "Merged LCOV file contents (first 10 lines):"
|
npx tsx scripts/coverage.ts
|
||||||
head -10 coverage/combined/lcov.info
|
echo "Coverage merge completed. Checking output:"
|
||||||
echo "File size and line count:"
|
ls -la coverage/combined/ || echo "No combined directory"
|
||||||
ls -lh coverage/combined/lcov.info
|
ls -la coverage/html/ || echo "No html directory"
|
||||||
wc -l coverage/combined/lcov.info
|
|
||||||
- name: Upload Coverage to Codecov
|
- name: Upload Coverage to Codecov
|
||||||
uses: codecov/codecov-action@13ce06bfc6bbe3ecf90edbbf1bc32fe5978ca1d3 # v5.3.1
|
uses: codecov/codecov-action@13ce06bfc6bbe3ecf90edbbf1bc32fe5978ca1d3 # v5.3.1
|
||||||
# Run step only pushes to develop and pull_requests
|
# Run step only pushes to develop and pull_requests
|
||||||
if: ${{ github.event_name == 'pull_request' || github.ref == 'refs/heads/develop'}}
|
if: ${{ github.event_name == 'pull_request' || github.ref == 'refs/heads/develop'}}
|
||||||
with:
|
with:
|
||||||
files: coverage/combined/lcov.info
|
files: coverage/html/lcov.info
|
||||||
flags: e2e
|
flags: e2e
|
||||||
name: mermaid-codecov
|
name: mermaid-codecov
|
||||||
fail_ci_if_error: false
|
fail_ci_if_error: false
|
||||||
|
19
.nycrc
Normal file
19
.nycrc
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"reporter": [
|
||||||
|
"text",
|
||||||
|
"lcov",
|
||||||
|
"json",
|
||||||
|
"html"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"node_modules/**/*",
|
||||||
|
"cypress/**/*",
|
||||||
|
"coverage/**/*",
|
||||||
|
"**/*.spec.js",
|
||||||
|
"**/*.spec.ts",
|
||||||
|
"**/*.test.js",
|
||||||
|
"**/*.test.ts"
|
||||||
|
],
|
||||||
|
"all": true,
|
||||||
|
"check-coverage": false
|
||||||
|
}
|
@@ -15,6 +15,13 @@ export default eyesPlugin(
|
|||||||
setupNodeEvents(on, config) {
|
setupNodeEvents(on, config) {
|
||||||
coverage(on, config);
|
coverage(on, config);
|
||||||
cypressSplit(on, config);
|
cypressSplit(on, config);
|
||||||
|
|
||||||
|
// Ensure coverage generates LCOV format
|
||||||
|
on('task', {
|
||||||
|
coverage: () => {
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
});
|
||||||
on('before:browser:launch', (browser, launchOptions) => {
|
on('before:browser:launch', (browser, launchOptions) => {
|
||||||
if (browser.name === 'chrome' && browser.isHeadless) {
|
if (browser.name === 'chrome' && browser.isHeadless) {
|
||||||
launchOptions.args.push('--window-size=1440,1024', '--force-device-scale-factor=1');
|
launchOptions.args.push('--window-size=1440,1024', '--force-device-scale-factor=1');
|
||||||
|
Reference in New Issue
Block a user