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
  • User-specific configuration files
  • Example
  • Parent configuration files
  • Example: Project with different feature file sets
  • Example: Project with different synchronization settings

Was this helpful?

  1. Features
  2. General features

Hierarchical configuration files

PreviousConfiguration fileNextLocal test case conditions

Last updated 2 years ago

Was this helpful?

SpecSync can compose the necessary configuration settings from multiple configuration files. Using multiple configuration files are useful to separate user-specific settings, like credentials () or when the project requires multiple synchronization configurations without duplicating the common settings ().

User-specific configuration files

SpecSync requires to connect to the Azure DevOps server. In many cases the authentication credentials are user-specific and therefore they cannot be included into the project-specific SpecSync configuration files (because those are typically added to source-control and shared with other team members).

These settings can be specified in the user-specific SpecSync configuration file. The user-specific configuration file is stored in the local application data folder of the current user. See locations on the different operating systems below.

C:\Users\<username>\AppData\Local\SpecSync\specsync.json

/Users/<username>/.local/share/SpecSync/specsync.json

$HOME/.local/share/SpecSync/specsync.json

User-specific configuration files are created automatically when you ask to save the credentials during the or during interactive authentication. Alternatively the files can also be created manually using the examples below.

User-specific configuration files can be used to specify configurations of and configuration sections.

To store the authentication credentials for the different Azure DevOps projects, the can be specified.

You can also copy the SpecSync license file to the same folder and specify the default license file location in the user-specific configuration file using the setting.

Example

The following example shows a user-specific configuration file that specifies an authentication credential for all projects within an Azure DevOps organization and another one for a specific project. It also specifies the default location of the license file.

specsync.json
{
  "$schema": "https://schemas.specsolutions.eu/specsync-user-config-latest.json",

  "toolSettings": {
    "licensePath": "specsync.lic" // in the same folder as the user-specific setting
  },
  "knownRemotes": [
    {
      "projectUrl": "https://dev.azure.com/myorg/*",
      "user": "g2x.....................ac2vx57i4a"
    },
    {
      "projectUrl": "https://dev.azure.com/otherorg/OtherProject",
      "user": "y6s.....................ksuc7tsts"
    }
  ]
}

Parent configuration files

In bigger projects you might need to create multiple synchronization configurations (e.g. different parts of the project has to be synchronized to different Test Suites or the synchronization on the CI pipeline requires different settings).

Example: Project with different feature file sets

If the project has multiple feature-file sets (folders containing feature files, e.g. multiple SpecFlow projects), you can create a specsync.json file in the repository root and override the default settings with configuration files in the specific feature-file set. So the folder and configuration hierarchy would look like this:

repository-root/
  area-a/
    features/
      f1.feature
      f2.feature
    specync.json // specific settings for area "A"
  area-b/    
    features/
      f3.feature
      f4.feature
    specync.json // specific settings for area "B"
  specync.json // common settings

Example: Project with different synchronization settings

If the project requires different synchronization settings for the CI pipeline, the default settings can be overwritten using a specific configuration file that uses the default configuration file as parent. The specific configuration file could look like this:

specsync-ci.json
{
  "$schema": "http://schemas.specsolutions.eu/specsync4azuredevops-config-latest.json",

  "toolSettings": {
    "parentConfig": "specsync.json", // default config file in the same folder
  },
  "synchronization": {
    "disableLocalChanges": true  // overridden setting
  }
}

To support these cases, SpecSync can load the common settings from parent configuration files. SpecSync considers any specsync.json file in one of the parent folders of the current configuration file as parent, but the parent configuration file can also be specified explicitly using the setting.

Loading parent configuration files can be disabled using the setting.

toolSettings/parentConfig
toolSettings/ignoreParentConfig
init command
toolSettings
knownRemotes
knownRemotes setting
toolSettings/licensePath
User-specific configuration files
Parent configuration files