Meziantou.Framework.SnapshotTesting 1.0.2

Prefix Reserved
dotnet add package Meziantou.Framework.SnapshotTesting --version 1.0.2
                    
NuGet\Install-Package Meziantou.Framework.SnapshotTesting -Version 1.0.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Meziantou.Framework.SnapshotTesting" Version="1.0.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Meziantou.Framework.SnapshotTesting" Version="1.0.2" />
                    
Directory.Packages.props
<PackageReference Include="Meziantou.Framework.SnapshotTesting" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Meziantou.Framework.SnapshotTesting --version 1.0.2
                    
#r "nuget: Meziantou.Framework.SnapshotTesting, 1.0.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Meziantou.Framework.SnapshotTesting@1.0.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Meziantou.Framework.SnapshotTesting&version=1.0.2
                    
Install as a Cake Addin
#tool nuget:?package=Meziantou.Framework.SnapshotTesting&version=1.0.2
                    
Install as a Cake Tool

Meziantou.Framework.SnapshotTesting

Meziantou.Framework.SnapshotTesting validates serialized values against snapshot files stored on disk.

Basic usage

public sealed class SampleTests
{
    [Fact]
    public void ValidateUser()
    {
        var value = new { Name = "John", Age = 42 };
        Snapshot.Validate(value);
    }
}

For typed snapshots:

Snapshot.Validate(imageBytes, SnapshotType.Png);
Snapshot.Validate(svgText, SnapshotType.Svg);

File naming convention

Snapshots are stored in a __snapshots__ directory next to the test source file:

  • expected snapshots: *.verified.<extension>
  • mismatch output: *.actual.<extension>

Example:

  • __snapshots__/SampleTest.verified.txt
  • __snapshots__/SampleTest.actual.txt

Notes:

  • .actual files are always written when a snapshot does not match.
  • If a single assertion serializes multiple files, an index suffix (_0, _1, ...) is appended.
  • If names are too long (or already end with .verified / .actual), a stable hash is added.

Snapshot types

SnapshotType controls extension and optional metadata (MimeType, DisplayName). This can also affect the serializer.

Test context

Snapshot naming uses test context when available:

  • Snapshot.TestContext (AsyncLocal<SnapshotTestContext?>) can be set explicitly.
  • Xunit v3, TUnit, and NUnit display names are auto-detected to improve generated file names.

Customization

Use SnapshotSettings to customize behavior:

  • Serializers (SnapshotSerializerCollection)
  • Comparers (SnapshotComparerCollection)
  • SnapshotUpdateStrategy (Disallow, Overwrite, OverwriteWithoutFailure, MergeTool, MergeToolSync)
  • AssertionExceptionCreator and ErrorMessageFormatter
  • SnapshotPathStrategy for full path generation

You can also set the default strategy using the SNAPSHOTTESTING_STRATEGY environment variable. The value is case-insensitive and must match one of the SnapshotUpdateStrategy static property names (for example: DISALLOW, MergeTool, overwritewithoutfailure).

var settings = SnapshotSettings.Default with
{
    SnapshotUpdateStrategy = SnapshotUpdateStrategy.Disallow,
};

Snapshot.Validate(value, SnapshotType.Default, settings);

The default serializers handle human-readable objects, byte[], and Stream.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Meziantou.Framework.SnapshotTesting:

Package Downloads
Meziantou.Framework.SnapshotTesting.ImageSharp

Enables verification of objects using file-based snapshots

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.2 0 4/25/2026
1.0.1 43 4/23/2026
1.0.0 37 4/21/2026