diff --git a/src/IIIF/IIIF.Tests/Serialisation/CookbookDeserialization.cs b/src/IIIF/IIIF.Tests/Serialisation/CookbookDeserialization.cs
new file mode 100644
index 0000000..48e112e
--- /dev/null
+++ b/src/IIIF/IIIF.Tests/Serialisation/CookbookDeserialization.cs
@@ -0,0 +1,17 @@
+using IIIF.Presentation.V3;
+using IIIF.Tests.Serialisation.Data;
+
+namespace IIIF.Tests.Serialisation;
+
+[Trait("Category", "Cookbook")]
+public class CookbookDeserialization
+{
+ [Theory]
+ [ClassData(typeof(CookbookManifestData))]
+ public void Can_Deserialize_Cookbook_Manifest(string manifestId, Manifest manifest)
+ {
+ // perfunctory assertion
+ manifest.Should().NotBeNull($"{manifestId} is a valid cookbook manifest");
+ manifest.Id.Should().Be(manifestId);
+ }
+}
\ No newline at end of file
diff --git a/src/IIIF/IIIF.Tests/Serialisation/Data/CookbookManifestData.cs b/src/IIIF/IIIF.Tests/Serialisation/Data/CookbookManifestData.cs
new file mode 100644
index 0000000..b2f4735
--- /dev/null
+++ b/src/IIIF/IIIF.Tests/Serialisation/Data/CookbookManifestData.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Net.Http;
+using IIIF.Presentation.V3;
+using IIIF.Serialisation;
+
+namespace IIIF.Tests.Serialisation.Data;
+
+///
+/// Used as [ClassData] - contains Manifests from IIIF Cookbook to validate deserialisation
+///
+public class CookbookManifestData : IEnumerable