SpecSync Documentation
Getting StartedConfigurationGuidesDownloads
Azure DevOps
Azure DevOps
  • Introduction to SpecSync for Azure DevOps
  • Getting started
    • Getting started using SpecFlow
    • Getting started using Cucumber or other Gherkin-based BDD tool
  • Installation & Setup
    • Install as .NET tool
    • Install as .NET Console App
    • Install as native binaries for Linux or macOS
    • Install as Docker image
    • Setup and Configure
  • Features
    • Push features
      • Pushing scenario changes to Test Cases
      • Configuring the format of the synchronized test cases
      • Synchronizing Scenario Outlines
      • Add new Test Cases to an Area or an Iteration
      • Mark Test Cases as Automated
      • Setting Test Case state on change
      • Update Test Case fields
      • Attach files to Test Cases using tags
      • Customization: Setting Test Case fields with default values
      • Customization: Update custom Test Case fields on push
      • Customization: Ignoring marked Test Case steps
      • Customization: Ignoring Test Case Tags
      • Customization: Ignore non-supported local tags
      • Customization: Mapping tags
      • Customization: Synchronizing scenarios from feature branches
      • Customization: Reset Test Case state after change
      • Customization: Automatically link changed Test Cases
      • Customization: Synchronize linked artifact titles
      • Customization: Add Test Cases to Suites
      • Customization: Do not synchronize title
    • Pull features
      • Pulling Test Case changes to local scenarios
    • Common synchronization features
      • Configuration key
      • Remote scope
      • Linking Work Items using tags
      • Synchronizing Test Case hierarchies using Test Suites
      • Include synchronized Test Cases to a Test Suite (deprecated)
      • Excluding scenarios from synchronization
      • Synchronization conflict resolution
      • Re-link scenarios to new Test Cases
    • Test result publishing features
      • Publishing test result files
      • Support for Azure DevOps Test Plan / Test Suite based test execution
      • Customization: Publishing test results to multiple Test Suites
    • General features
      • Azure DevOps authentication options
      • Configuration file
      • Hierarchical configuration files
      • Local test case conditions
      • Configuration wizards
      • SpecSync plugins
    • Customizations
    • Plugin list
  • Licensing
  • Guides
    • What is my Azure DevOps project URL?
    • How to define the local feature-set to be synchronized
    • Filters and scopes
    • How to synchronize automated test cases
    • How to use SpecSync from build or release pipeline
    • How to publish test results from pipelines using the VSTest task
    • How to use the SpecSync Azure DevOps pipeline tasks
    • How to link GitHub pull requests
    • How to upgrade to a newer version of SpecSync
    • How to attach files to test results
    • Using SpecSync with SpecFlow+
    • Using SpecSync with Cucumber
    • Using SpecSync with Cypress
    • Using SpecSync with Postman
    • Using SpecSync with TestNG
    • Using SpecSync on macOS or Linux
    • Using SpecSync inside a Docker container
    • How to handle Test Cases of multiple parallel application releases
    • Migrating from SpecSync v3 to v5
    • Migrating from SpecSync v2 to v3
    • Migrating from SpecSync v1 to v2
  • Changelog
  • Release Model and Roadmap
  • Downloads
  • Reference
    • Command line reference
      • init
      • upgrade
      • push
      • pull
      • publish-test-results
      • re-link
      • version
    • Configuration reference
      • toolSettings
      • local
      • remote
      • knownRemotes
      • synchronization
        • push
        • pull
        • automation
        • state
        • areaPath
        • iterationPath
        • links
        • attachments
        • format
        • fieldUpdates
      • hierarchies
      • publishTestResults
      • specFlow
      • reqnroll
      • customizations
    • Compatibility
    • Older versions
  • Contact
    • SpecSync Support
    • Troubleshooting
    • FAQ
  • Project Website
Powered by GitBook
On this page
  • Attaching files to test results with .NET tests & NUnit
  • Attaching files to test results with .NET tests & MsTest
  • Test execution frameworks that do not support test attachments

Was this helpful?

  1. Guides

How to attach files to test results

PreviousHow to upgrade to a newer version of SpecSyncNextUsing SpecSync with SpecFlow+

Last updated 3 months ago

Was this helpful?

The publish-test-results command loads and publishes test results from the test result output file of your test execution tool (e.g. a TRX or XML file). These files might not only contain test execution outcome, error messages and other execution details, but might also contain a reference to additional files called test result attachments (e.g. a screenshot of the execution when the test failed). When SpecSync detects such an attachment, it attaches the files to the test result, so you can also browse the file in Azure DevOps along with the other test results.

The different test execution tools provide different methods for attaching files to the current test execution, and unfortunately there are some such an option. The aim to this guide is to provide help about how this can be achieved with the different tools. The list might not be complete. If you have found a way to attach files with a tool that is not listed here, please so that we can extend the list.

Attaching files to test results with .NET tests & NUnit

With NUnit you need to save the attachment file to the file system and then report the file path to NUnit using the TestContext.AddTestAttachment method:

NUnit.Framework.TestContext.AddTestAttachment(attachmentPath, "My attachment");

Attaching files to test results with .NET tests & MsTest

With MsTest you need to save the attachment file to the file system and then report the file path to MsTest using the current TestContext instance. To obtain the current TestContext instance, you need to specify it among the constructor parameters of your step definition class and save it to an instance field. (In case of hooks, you can list the TestContext in the hook method parameters.)

[Binding]
public class MyStepDefinitions
{
  private readonly TestContext _testContext;

  public MyStepDefinitions(TestContext testContext)
  {
    _testContext = testContext;
  }

  [When(@"a test attachment is saved")]
  public void WhenATestAttachmentIsSaved()
  {
    string attachmentPath = // save attachment & calculate attachment path

    _testContext.AddResultFile(attachmentPath);
  }
}

Test execution frameworks that do not support test attachments

  • SpecFlow & xUnit (xUnit does not support test attachments)

For the frameworks that do not support recording test result attachments, you can use the following workaround: Save all files to be attached in a new folder and then attach all files to the published Test Run using the --attachedFiles option of the . Unfortunately in this case the files will not be attached to a particular test result but to the entire Test Run, so it is advised to use file names that contain identifiable information about the scenario.

publish-test-results command
contact us
test execution tools that do not support