如何配置Azure Pipeline在取消运行时发布失败Cypress测试截图?
解决Azure DevOps Pipeline取消运行时发布Cypress失败测试截图的问题
要让流水线在测试失败或手动取消时都能发布失败测试的截图,核心是调整发布步骤的执行条件,确保取消状态下步骤仍能运行。以下是具体配置方案:
关键原理
Azure Pipeline默认仅在作业成功时执行后续步骤,被取消的作业状态为Canceled,不会触发默认步骤。因此需要显式指定步骤的执行条件,包含失败和取消两种场景。
YAML流水线配置示例
假设你的Cypress测试截图默认保存在cypress/screenshots目录,调整后的完整YAML片段如下:
steps: # 1. 安装Node.js(根据你的Cypress版本选择对应Node版本) - task: NodeTool@0 inputs: versionSpec: '18.x' displayName: 'Install Node.js' # 2. 安装依赖 - script: npm install displayName: 'Install project dependencies' # 3. 运行Cypress测试 - script: npx cypress run displayName: 'Execute Cypress tests' continueOnError: true # 确保测试失败后,后续发布步骤仍能执行 # 4. 发布失败测试截图(核心配置) - task: PublishBuildArtifacts@1 displayName: 'Publish Cypress failure screenshots' inputs: PathtoPublish: 'cypress/screenshots' # 对应你的截图保存路径 ArtifactName: 'cypress-failure-screenshots' publishLocation: 'Container' condition: or(failed(), canceled()) # 失败或取消时执行此步骤 continueOnError: true # 避免发布步骤自身失败影响流水线状态
经典编辑器(可视化界面)配置步骤
如果你使用经典编辑器配置流水线,按以下步骤调整:
- 找到负责发布截图的任务(如「发布构建构件」)。
- 展开任务的控制选项(Control Options)。
- 在「运行此任务」下拉菜单中选择「自定义条件」。
- 输入条件表达式:
or(failed(), canceled())。 - 保存流水线配置并测试。
额外注意事项
- 确认Cypress在测试失败时会立即保存截图:Cypress默认会在每个测试失败时生成截图并写入指定目录,即使流水线被取消,已失败测试的截图已经存在,不会丢失。
- 若你修改过Cypress的截图保存路径,需同步调整
PathtoPublish的路径值。
内容的提问来源于stack exchange,提问作者Kieran M
相关产品推荐
相关产品推荐

