Полное руководство: преобразование TRX в HTML в Azure DevOps
Узнайте, как преобразовать файлы TRX в читаемые HTML‑отчёты в конвейерах Azure DevOps. Полное руководство с пошаговыми инструкциями для совместной работы команды.
Как преобразовать файлы TRX в HTML‑отчёты в конвейере тестов Azure DevOps?
У нас есть ночные конвейеры тестов, которые запускают тесты, написанные в Visual Studio на C#, Playwright и VSTest. Хотя я могу читать полученные файлы TRX при расследовании неудач, другим членам команды формат TRX трудно воспринимать, и они попросили HTML‑отчёты вместо него.
Ниже приведён наш YAML‑конвейер с задачами:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
- task: VSBuild@1
- script: pwsh D:\a\1\s\PelicanPiRegression\bin\Release\net9.0\playwright.ps1 install chromium --with-deps --only-shell
- task: VSTest@3
Файлы TRX генерируются в разделах Test Plans и Test Runs Azure DevOps.
Можно ли преобразовать эти файлы TRX в формат HTML и включить их в качестве вложений в конвейер? Если да, то какие шаги или дополнительные задачи потребуются для реализации этого преобразования?
Да, вы можете преобразовать файлы TRX в отчёты HTML в Azure DevOps Test Pipeline, используя несколько подходов. Самый надёжный способ — использовать глобальный инструмент .NET trxlog2html, который специально предназначен для преобразования TRX в формат HTML и легко интегрируется в ваш существующий YAML‑pipeline.
Содержание
- Использование инструмента trxlog2html
- Альтернативные методы преобразования
- Интеграция с существующим pipeline
- Публикация HTML‑отчётов как артефактов
- Лучшие практики и устранение неполадок
Использование инструмента trxlog2html
Инструмент trxlog2html специально разработан для преобразования файлов TRX в формат HTML и хорошо работает с современными форматами результатов тестов Visual Studio. Вот как его реализовать:
Установка и шаги преобразования
- Установите инструмент trxlog2html как глобальный инструмент .NET:
- script: dotnet tool install -g trxlog2html
displayName: 'Установить trxlog2html'
- Преобразуйте TRX в HTML:
- script: trxlog2html -i $(System.DefaultWorkingDirectory)/**/*.trx -o $(Build.ArtifactStagingDirectory)/TestReport.html
displayName: 'Преобразовать TRX в HTML'
Полная интеграция в pipeline
Вот как интегрировать это в ваш существующий pipeline:
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
- task: VSBuild@1
- script: pwsh D:\a\1\s\PelicanPiRegression\bin\Release\net9.0\playwright.ps1 install chromium --with-deps --only-shell
- task: VSTest@3
# Добавьте эти шаги для преобразования TRX в HTML
- script: dotnet tool install -g trxlog2html
displayName: 'Установить trxlog2html'
- script: trxlog2html -i $(System.DefaultWorkingDirectory)/**/*.trx -o $(Build.ArtifactStagingDirectory)/TestReport.html
displayName: 'Преобразовать TRX в HTML'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/TestReport.html'
ArtifactName: 'TestResultsHTML'
Согласно обсуждениям сообщества Stack Overflow, этот подход успешно реализован многими командами и обеспечивает надёжное преобразование HTML, сохраняющее все детали результатов тестов.
Альтернативные методы преобразования
Использование встроенных возможностей Azure DevOps
Хотя Azure DevOps напрямую не преобразует TRX в HTML, вы можете воспользоваться встроенными возможностями публикации тестов:
- task: PublishTestResults@2
inputs:
testResultsFormat: 'VSTest' # Важно: установить VSTest для файлов TRX
testResultsFiles: '**/*.trx'
mergeTestResults: true
failTaskOnFailedTests: true
displayName: 'Публиковать результаты тестов'
Использование XSLT‑трансформации
Для более гибкого управления выводом HTML вы можете использовать XSLT для преобразования XML TRX в HTML:
- script: |
# Загрузите или включите файл XSLT для преобразования TRX в HTML
xsltproc -o $(Build.ArtifactStagingDirectory)/TestReport.html your-stylesheet.xsl $(System.DefaultWorkingDirectory)/**/*.trx
displayName: 'Преобразовать TRX в HTML с помощью XSLT'
Интеграция с существующим pipeline
Модифицированный pipeline со всеми компонентами
Ниже приведён полный пример интеграции с вашей существующей структурой pipeline:
trigger:
- main
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'x64'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
displayName: 'Установить NuGet'
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
displayName: 'Восстановить NuGet'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
displayName: 'Собрать решение'
- script: pwsh D:\a\1\s\PelicanPiRegression\bin\Release\net9.0\playwright.ps1 install chromium --with-deps --only-shell
displayName: 'Установить Playwright Chromium'
- task: VSTest@3
inputs:
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
testAssemblyVer2: '**/*Tests.dll'
searchFolder: '$(System.DefaultWorkingDirectory)'
vsTestVersion: 'latest'
runInParallel: true
runSettings: 'RunSettings.runsettings'
displayName: 'Запустить unit‑тесты'
# Преобразование TRX в HTML
- script: dotnet tool install -g trxlog2html
displayName: 'Установить trxlog2html'
- script: trxlog2html -i $(System.DefaultWorkingDirectory)/**/*.trx -o $(Build.ArtifactStagingDirectory)/TestReport.html
displayName: 'Преобразовать TRX в HTML'
# Публикация результатов тестов и HTML‑отчёта
- task: PublishTestResults@2
inputs:
testResultsFormat: 'VSTest'
testResultsFiles: '**/*.trx'
mergeTestResults: true
failTaskOnFailedTests: true
testRunTitle: 'Nightly Test Results'
displayName: 'Публиковать результаты тестов'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/TestReport.html'
ArtifactName: 'TestResultsHTML'
displayName: 'Публиковать HTML‑отчёт'
Публикация HTML‑отчётов как артефактов
Доступ к HTML‑отчётам в Azure DevOps
После публикации HTML‑отчёта как артефакта члены команды могут получить к нему доступ через:
- Сводку выполнения pipeline: После завершения pipeline нажмите на выпадающий список «Artifacts»
- Скачать: Нажмите на артефакт «TestResultsHTML», чтобы скачать HTML‑отчёт
- Просмотр онлайн: Некоторые конфигурации Azure DevOps позволяют просматривать HTML‑отчёты напрямую в браузере
Расширенные варианты публикации
Для лучшей организации вы можете публиковать несколько отчётов:
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'TestResults'
publishLocation: 'Container'
displayName: 'Публиковать все результаты тестов'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/TestReport.html'
ArtifactName: 'TestResultsHTML'
publishLocation: 'Container'
displayName: 'Публиковать HTML‑отчёт'
Лучшие практики и устранение неполадок
Распространённые проблемы и решения
- Неудачная установка инструмента: Если
trxlog2htmlне удаётся установить, убедитесь, что у вас установлена последняя версия .NET SDK:
- script: dotnet tool install -g trxlog2html
displayName: 'Установить trxlog2html'
env:
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
- Отсутствие файлов TRX: Если файлы TRX не найдены, проверьте шаблон поиска:
- script: |
dir $(System.DefaultWorkingDirectory)/**/*.trx
trxlog2html -i $(System.DefaultWorkingDirectory)/**/*.trx -o $(Build.ArtifactStagingDirectory)/TestReport.html
displayName: 'Список файлов TRX и преобразование'
- Большие файлы TRX: Для больших наборов тестов рассмотрите разделение преобразования:
- script: trxlog2html -i $(System.DefaultWorkingDirectory)/**/UnitTests*.trx -o $(Build.ArtifactStagingDirectory)/UnitTestsReport.html
displayName: 'Преобразовать unit‑тесты в HTML'
- script: trxlog2html -i $(System.DefaultWorkingDirectory)/**/IntegrationTests*.trx -o $(Build.ArtifactStagingDirectory)/IntegrationTestsReport.html
displayName: 'Преобразовать интеграционные тесты в HTML'
Расширенные HTML‑отчёты
Для более полных отчётов рассмотрите добавление дополнительной метаданных:
- script: |
# Добавьте информацию о pipeline в HTML‑отчёт
$pipelineInfo = @{
BuildNumber = "$(Build.BuildNumber)"
BuildId = "$(Build.BuildId)"
SourceBranch = "$(Build.SourceBranch)"
Date = "$(Build.BuildStartTime)"
} | ConvertTo-Json
# Добавьте как комментарий в файл HTML
Add-Content -Path "$(Build.ArtifactStagingDirectory)/TestReport.html" -Value "<!-- Pipeline Info: $pipelineInfo -->"
displayName: 'Добавить метаданные pipeline в HTML‑отчёт'
Как отмечено в обсуждениях сообщества, некоторые старые инструменты преобразования могут не поддерживать последние форматы результатов тестов Visual Studio 2019+, поэтому рекомендуется использовать
trxlog2htmlдля современных pipeline.
Источники
- Stack Overflow - Как преобразовать файл TRX в HTML в Azure Test Pipeline
- Microsoft Learn - Publish Test Results v2 task
- Stack Overflow - Экспорт результатов тестов из Azure DevOps
- Microsoft Learn - Review test results
- Stack Overflow - publish UT results (TRX) to azure devops
Заключение
Преобразование файлов TRX в отчёты HTML в Azure DevOps Test Pipeline простое с использованием инструмента trxlog2html. Ключевые выводы:
- Основное решение: Использовать глобальный инструмент .NET
trxlog2htmlс простыми командами установки и преобразования - Интеграция в pipeline: Добавьте шаги преобразования после задачи VSTest и до публикации артефактов
- Доступность: Члены команды могут получить HTML‑отчёты через раздел артефактов pipeline
- Совместимость: Этот подход работает с современными форматами результатов тестов Visual Studio и поддерживает C#, Playwright и VSTest, как указано в вашей настройке
Для ваших ночных тестовых pipeline реализуйте шаги преобразования trxlog2html, чтобы предоставить команде читаемые HTML‑отчёты, сохраняя при этом подробные данные TRX для технического анализа. HTML‑отчёты будут гораздо более доступными для заинтересованных сторон, которые не работают напрямую с сырым форматом TRX.