Microsoft.Testing.Platform telemetry

Microsoft.Testing.Platform collects telemetry data, which is used to help understand how to improve the product. For example, this usage data helps to debug issues, such as slow start-up times, and to prioritize new features. While these insights are appreciated, you're free to disable telemetry. For more information on telemetry, see privacy statement.

Types of telemetry data

Microsoft.Testing.Platform only collects telemetry of type Usage Data. The usage data is used to understand how features are consumed and where time is spent when executing the test app. This helps prioritize product improvements.

Disable telemetry reporting

To disable telemetry, set either TESTINGPLATFORM_TELEMETRY_OPTOUT or DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1.

Disclosure

Microsoft.Testing.Platform displays text similar to the following when you first run your executable. The output text might vary slightly depending on the version Microsoft.Testing.Platform you're running. This "first run" experience is how Microsoft notifies you about data collection.

Telemetry
---------
Microsoft.Testing.Platform collects usage data in order to help us improve your experience.
The data is collected by Microsoft and are not shared.
You can opt-out of telemetry by setting the TESTINGPLATFORM_TELEMETRY_OPTOUT
or DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.

Read more about Microsoft.Testing.Platform telemetry: https://aka.ms/testingplatform-telemetry

Data points

The telemetry feature doesn't collect personal data, such as usernames or email addresses. It doesn't scan your code and doesn't extract project-level data, such as repository, or author, it extracts the name of your executable and sends it in hashed form.

It doesn't extract the contents of any data files accessed or created by your apps, dumps of any memory occupied by your apps' objects, or the contents of the clipboard.

The data is sent securely to Microsoft servers using Azure Monitor technology, held under restricted access, and published under strict security controls from secure Azure Storage systems.

Protecting your privacy is important to Microsoft! If you suspect the telemetry is collecting sensitive data or the data is being insecurely or inappropriately handled, file an issue in the microsoft/testfx GitHub repository or send an email to dotnet@microsoft.com for investigation.

The telemetry feature collects the following data points:

Version Data
All .NET Runtime version.
All Application mode, such as 'server'.
All Count of test retries that failed.
All Count of test retries that passed.
All Count of tests that failed.
All Count of tests that passed.
All Count of tests that ran.
All The DisplayName of the extensions you're using, as a hashed value.
All If debug build of platform is used.
All If debugger was attached to the process.
All If filter of tests was used.
All If Hot reload is enabled.
All If the application crashed.
All If the application is running as NativeAOT.
All If the repository is our own repository. Based on the telemetry:isDevelopmentRepository setting in testingplatformconfig.json.
All Name of the test framework you're using, as a hashed value.
All Name of your executable (which is usually the same as the name of the project), as a hashed value.
All Operating system, version and architecture.
All Process architecture.
All Runtime ID (RID). For more information, see .NET RID Catalog.
All The exit code of the application.
All Three octet IP address used to determine the geographical location.
All Timestamp of invocation, timestamp of start and end of various steps in the execution.
All Version of the platform.
All Version of your extensions.
All Version of your test adapter.
All Guid to correlate events from a single runner.
1.0.3 Guid to correlate events from a single test run.

Continuous integration detection

In order to detect if the .NET CLI is running in a continuous integration environment, the .NET CLI probes for the presence and values of several well-known environment variables that common CI providers set.

The full list of environment variables, and what is done with their values, is detailed in the following table:

Environment variable(s) Provider Action
APPVEYOR Appveyor Parse boolean value.
BUILD_ID, BUILD_URL Jenkins Check if all are present and non-null.
BUILD_ID, PROJECT_ID Google Cloud Build Check if all are present and non-null.
CI Many/Most Parse boolean value.
CIRCLECI Circle CI Parse boolean value.
CODEBUILD_BUILD_ID, AWS_REGION Amazon Web Services CodeBuild Check if all are present and non-null.
GITHUB_ACTIONS GitHub Actions Parse boolean value.
JB_SPACE_API_URL JetBrains Space Check if present and non-null.
TEAMCITY_VERSION TeamCity Check if present and non-null.
TF_BUILD Azure Pipelines Parse boolean value.
TRAVIS Travis CI Parse boolean value.