Skip to content

[Pipeline] Add Code Coverage Report #105

[Pipeline] Add Code Coverage Report

[Pipeline] Add Code Coverage Report #105

Workflow file for this run

# This workflow will build a .NET project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net
name: Build and Test Core Lib
on:
# Allow manually running the workflow
workflow_dispatch:
push:
branches:
- dev
paths-ignore:
- '**/*.gitignore'
- '**/*.gitattributes'
pull_request:
types: [opened, synchronize, reopened, closed]
branches:
- dev
paths-ignore:
- '**/*.gitignore'
- '**/*.gitattributes'
env:
PROJECTS: "./src/Core/Microsoft.FluentUI.AspNetCore.Components.csproj"
TESTS: "./tests/Core/Microsoft.FluentUI.AspNetCore.Components.Tests.csproj"
jobs:
Build:
runs-on: windows-latest
permissions:
checks: write
pull-requests: write
steps:
- name: Checkout source
uses: actions/checkout@v4
- name: Setup .NET 8.0
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
# Build
- name: Restore
run: dotnet restore
- name: Build
run: dotnet build ${{ env.PROJECTS }} --configuration Release
working-directory: ${{ github.workspace }}
# Unit Tests
- name: Tests
run: dotnet test ${{ env.TESTS }} --logger:trx --results-directory ./TestResults --verbosity normal --configuration Release /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:DebugType=Full
working-directory: ${{ github.workspace }}
- name: Publish Unit Tests
if: success() || failure()
uses: dorny/test-reporter@v1
with:
name: DotNet Tests # Name of the check run which will be created
path: '**/*.trx' # Path to test results (inside artifact .zip)
reporter: dotnet-trx # Format of test results
# - name: Extract Failed Tests
# if: always()
# shell: pwsh
# run: |
# $xxx = ((Select-Xml -Path ./TestResults/*.trx -XPath "//ns:UnitTestResult[@outcome='Failed']/@testName" -Namespace @{"ns"="http://microsoft.com/schemas/VisualStudio/TeamTest/2010"}).Node.Value) -join " - ❌ "
# Write-Host $xxx
# Write-Host "---------------------"
# # Get the latest TRX file in the TestResults folder
# $latestTrxFile = Get-ChildItem -Path ./TestResults -Filter *.trx | Sort-Object LastWriteTime | Select-Object -Last 1
# $trxContent = Get-Content -Path $latestTrxFile.FullName
# # Load the content of the latest TRX file
# $trxContent = Get-Content -Path $latestTrxFile.FullName
# # Extract failed test names
# $failedTests = $trxContent | Select-String -Pattern 'outcome="Failed"' | ForEach-Object {
# $_.Line -match 'testName="([^"]+)"'
# $matches[1]
# }
# # Check if any failed tests were found
# if ($failedTests.Count -eq 0) {
# $TestResults = "All tests have been successfully completed."
# } else {
# $TestResults = "# Failed tests: `n " + ($failedTests | ForEach-Object { "- $_" }) -join "`n"
# }
# Write-Host "$TestResults"
# echo "test_results=$TestResults" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
# working-directory: ${{ github.workspace }}
# - name: Publish unit tests summary
# if: always()
# uses: marocchino/sticky-pull-request-comment@v2
# with:
# header: Test Results
# message: |
# ${{ env.test_results }}
# Test Coverage
- name: Report Generator
uses: danielpalme/[email protected]
with:
reports: '**/coverage.cobertura.xml'
targetdir: 'CoverageReports'
title: 'Unit Tests Code Coverage'
classfilters: '-Microsoft.FluentUI.AspNetCore.Components.DesignTokens.*'
reporttypes: 'HtmlInline;MarkdownSummaryGithub'
- name: Upload coverage report
uses: actions/upload-artifact@v2
with:
name: CoverageReports
path: CoverageReports
- name: Publish coverage summary
uses: marocchino/sticky-pull-request-comment@v2
with:
path: CoverageReports/SummaryGithub.md