You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure DevOps中通过TypeScript版Playwright发布测试图片附件?

TypeScript版Playwright实现Azure DevOps测试结果中展示截图

完全可行,以下是具体实现步骤:

1. 确保测试中正确附加截图

在Playwright测试用例里,使用testInfo.attach()时必须指定正确的contentType,让Azure DevOps识别为图片格式:

test('示例测试用例', async ({ page }, testInfo) => {
  await page.goto('https://your-test-url.com');
  
  // 执行测试操作...
  
  // 截图并附加到测试结果
  const screenshotBuffer = await page.screenshot();
  await testInfo.attach('测试截图', {
    body: screenshotBuffer,
    contentType: 'image/png' // 必须指定,否则Azure可能无法识别为图片
  });
});

2. 配置Playwright生成JUnit格式报告

Azure DevOps对JUnit格式的测试报告支持更好,能自动关联附件。在playwright.config.ts中添加JUnit报告配置:

import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
  reporter: [
    ['html', { outputFolder: 'tests-out/html' }], // 保留HTML报告方便本地查看
    ['junit', { outputFile: 'tests-out/results.xml' }] // 生成JUnit报告给Azure DevOps
  ],
  use: {
    screenshot: 'on', // 你已配置的自动截图
    // 其他配置...
  },
  // 其他配置...
});

3. 更新Azure DevOps YAML流水线配置

替换原有的仅发布artifacts的步骤,添加发布测试结果任务(该任务会自动处理附件关联):

- task: PublishTestResults@2
  displayName: '发布测试结果及截图'
  inputs:
    testResultsFormat: 'JUnit'
    testResultsFiles: '**/results.xml'
    searchFolder: '$(System.DefaultWorkingDirectory)/tests-out'
    publishRunAttachments: true # 关键:启用附件发布,让截图关联到测试用例
  condition: always() # 不管测试成功失败都执行

关键说明

  • 原理和C# NUnit一致:都是通过标准测试报告格式(JUnit/TRX)将附件与测试用例绑定,Azure DevOps解析报告后自动在测试详情页展示图片。
  • 无需单独发布artifacts,PublishTestResults@2任务会自动上传报告关联的附件到测试结果中。
  • 如果保留原有的artifacts发布步骤也没问题,但核心是通过测试报告关联截图到测试详情。

内容的提问来源于stack exchange,提问作者Patrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 05:46:10