diff --git a/test/fixtures/files/dan-gold@2x.jpeg b/test/fixtures/files/dan-gold@2x.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..fa7d780d32b9b1fe005c1c8b5095c73b5e7b8f16
Binary files /dev/null and b/test/fixtures/files/dan-gold@2x.jpeg differ
diff --git a/test/fixtures/files/dan-gold_1000x500_crop_left.jpeg b/test/fixtures/files/dan-gold_1000x500_crop_left.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..f4a61171a60daed86d1e30ad8cfab794972d1b73
Binary files /dev/null and b/test/fixtures/files/dan-gold_1000x500_crop_left.jpeg differ
diff --git a/test/fixtures/files/dan-gold_200x300_crop_top.jpeg b/test/fixtures/files/dan-gold_200x300_crop_top.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..7c88f0b7c3efb649d9c21bc5983f5fe999571877
Binary files /dev/null and b/test/fixtures/files/dan-gold_200x300_crop_top.jpeg differ
diff --git a/test/fixtures/files/dan-gold_250x250@3x.jpeg b/test/fixtures/files/dan-gold_250x250@3x.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..ecc69a63b3d8e104ab12b87e560301ed0f177f1b
Binary files /dev/null and b/test/fixtures/files/dan-gold_250x250@3x.jpeg differ
diff --git a/test/fixtures/files/dan-gold_250x250_crop_left@2x.jpeg b/test/fixtures/files/dan-gold_250x250_crop_left@2x.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..333f56f1e55a10803a34c3f5a7212fcc8ce59dc7
Binary files /dev/null and b/test/fixtures/files/dan-gold_250x250_crop_left@2x.jpeg differ
diff --git a/test/fixtures/files/dan-gold_300x200_crop_right@2x.jpeg b/test/fixtures/files/dan-gold_300x200_crop_right@2x.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..913a88e31bee7ab83a4015c905a6c479a41a6f47
Binary files /dev/null and b/test/fixtures/files/dan-gold_300x200_crop_right@2x.jpeg differ
diff --git a/test/fixtures/files/dan-gold_500x.jpeg b/test/fixtures/files/dan-gold_500x.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..f76faa7f34bce93604f1214aa829cb0c859877d8
Binary files /dev/null and b/test/fixtures/files/dan-gold_500x.jpeg differ
diff --git a/test/fixtures/files/dan-gold_500x500.jpeg b/test/fixtures/files/dan-gold_500x500.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..f76faa7f34bce93604f1214aa829cb0c859877d8
Binary files /dev/null and b/test/fixtures/files/dan-gold_500x500.jpeg differ
diff --git a/test/fixtures/files/dan-gold_500x500@2x.jpeg b/test/fixtures/files/dan-gold_500x500@2x.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..cd36765b3ca370b2308f01a665fa47b87022a87e
Binary files /dev/null and b/test/fixtures/files/dan-gold_500x500@2x.jpeg differ
diff --git a/test/fixtures/files/dan-gold_500x500_crop_left.jpeg b/test/fixtures/files/dan-gold_500x500_crop_left.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..333f56f1e55a10803a34c3f5a7212fcc8ce59dc7
Binary files /dev/null and b/test/fixtures/files/dan-gold_500x500_crop_left.jpeg differ
diff --git a/test/fixtures/files/dan-gold_crop_left.jpeg b/test/fixtures/files/dan-gold_crop_left.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..fa7d780d32b9b1fe005c1c8b5095c73b5e7b8f16
Binary files /dev/null and b/test/fixtures/files/dan-gold_crop_left.jpeg differ
diff --git a/test/fixtures/files/dan-gold_crop_left@2x.jpeg b/test/fixtures/files/dan-gold_crop_left@2x.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..fa7d780d32b9b1fe005c1c8b5095c73b5e7b8f16
Binary files /dev/null and b/test/fixtures/files/dan-gold_crop_left@2x.jpeg differ
diff --git a/test/fixtures/files/dan-gold_x500.jpeg b/test/fixtures/files/dan-gold_x500.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..f14613500c3afad6097982cd8b5d8d15fe3a1bf3
Binary files /dev/null and b/test/fixtures/files/dan-gold_x500.jpeg differ
diff --git a/test/models/variant_service_test.rb b/test/models/variant_service_test.rb
index 378d957b58ca3d38ec0e0ba3d0e50b8287e1bbf1..c3054492f0f55cb2f058d4b76a54bfd0b58120d7 100644
--- a/test/models/variant_service_test.rb
+++ b/test/models/variant_service_test.rb
@@ -143,106 +143,212 @@ class VariantServiceTest < ActiveSupport::TestCase
 
   # Transformations tests
 
-  # test "transformations for dan-gold.jpeg" do
-  #   blob = create_file_blob(filename: "dan-gold.jpeg")
-  #   expected_transformations = {}
-  #   variant_service = VariantService.compute(blob, 'dan-gold', 'jpeg')
-  #   assert_equal expected_transformations, variant_service.transformations
-  # end
-  #
-  # test "transformations for dan-gold.webp" do
-  #   blob = create_file_blob(filename: "dan-gold.jpeg")
-  #   expected_transformations = { format: 'webp' }
-  #   variant_service = VariantService.compute(blob, 'dan-gold', 'webp')
-  #   assert_equal expected_transformations, variant_service.transformations
-  # end
-  #
-  # test "transformations for dan-gold_500x500.jpeg" do
-  #   blob = create_file_blob(filename: "dan-gold.jpeg")
-  #   expected_transformations = { resize_to_limit: [500, 500] }
-  #   variant_service = VariantService.compute(blob, 'dan-gold_500x500', 'jpeg')
-  #   assert_equal expected_transformations, variant_service.transformations
-  # end
-  #
-  # test "transformations for dan-gold_500x.jpeg" do
-  #   blob = create_file_blob(filename: "dan-gold.jpeg")
-  #   expected_transformations = { resize_to_limit: [500, nil] }
-  #   variant_service = VariantService.compute(blob, 'dan-gold_500x', 'jpeg')
-  #   assert_equal expected_transformations, variant_service.transformations
-  # end
-  #
-  # test "transformations for dan-gold_x500.jpeg" do
-  #   blob = create_file_blob(filename: "dan-gold.jpeg")
-  #   expected_transformations = { resize_to_limit: [nil, 836] }
-  #   variant_service = VariantService.compute(blob, 'dan-gold_x500', 'jpeg')
-  #   assert_equal expected_transformations, variant_service.transformations
-  # end
-  #
-  # test "transformations for dan-gold_500x500_crop_left.jpeg" do
-  #   blob = create_file_blob(filename: "dan-gold.jpeg")
-  #   expected_transformations = {
-  #     resize_to_fill: [500, 836, { gravity: 'West' }],
-  #     crop: '500x836+0+0'
-  #   }
-  #   variant_service = VariantService.compute(blob, 'dan-gold_500x500_crop_left', 'jpeg')
-  #   assert_equal expected_transformations, variant_service.transformations
-  # end
-  #
-  # test "transformations for dan-gold_500x500_crop_left@2x.jpeg" do
-  #   blob = create_file_blob(filename: "dan-gold.jpeg")
-  #   expected_transformations = {
-  #     resize_to_fill: [2000, 836, { gravity: 'West' }],
-  #     crop: '2000x2000+0+0'
-  #   }
-  #   variant_service = VariantService.compute(blob, 'dan-gold_500x500_crop_left@2x', 'jpeg')
-  #   assert_equal expected_transformations, variant_service.transformations
-  # end
-  #
-  # test "transformations for dan-gold_crop_left.jpeg" do
-  #   blob = create_file_blob(filename: "dan-gold.jpeg")
-  #   expected_transformations = {}
-  #   variant_service = VariantService.compute(blob, 'dan-gold_crop_left', 'jpeg')
-  #   assert_equal expected_transformations, variant_service.transformations
-  # end
-  #
-  # test "transformations for dan-gold@2x.jpeg" do
-  #   blob = create_file_blob(filename: "dan-gold.jpeg")
-  #   expected_transformations = {}
-  #   variant_service = VariantService.compute(blob, 'dan-gold@2x', 'jpeg')
-  #   assert_equal expected_transformations, variant_service.transformations
-  # end
-  #
-  # test "transformations for dan-gold_crop_left@2x.jpeg" do
-  #   blob = create_file_blob(filename: "dan-gold.jpeg")
-  #   expected_transformations = {}
-  #   variant_service = VariantService.compute(blob, 'dan-gold_crop_left@2x', 'jpeg')
-  #   assert_equal expected_transformations, variant_service.transformations
-  # end
+  test "transformations for dan-gold.jpeg" do
+    blob = create_file_blob(filename: "dan-gold.jpeg")
+    expected_transformations = {}
+    variant_service = VariantService.compute(blob, 'dan-gold', 'jpeg')
+    assert_equal expected_transformations, variant_service.transformations
+  end
+
+  test "transformations for dan-gold.webp" do
+    blob = create_file_blob(filename: "dan-gold.jpeg")
+    expected_transformations = { format: 'webp' }
+    variant_service = VariantService.compute(blob, 'dan-gold', 'webp')
+    assert_equal expected_transformations, variant_service.transformations
+  end
+
+  test "transformations for dan-gold_500x500.jpeg" do
+    blob = create_file_blob(filename: "dan-gold.jpeg")
+    expected_transformations = { resize_to_limit: [500, 500] }
+    variant_service = VariantService.compute(blob, 'dan-gold_500x500', 'jpeg')
+    assert_equal expected_transformations, variant_service.transformations
+  end
+
+  test "transformations for dan-gold_500x.jpeg" do
+    blob = create_file_blob(filename: "dan-gold.jpeg")
+    expected_transformations = { resize_to_limit: [500, nil] }
+    variant_service = VariantService.compute(blob, 'dan-gold_500x', 'jpeg')
+    assert_equal expected_transformations, variant_service.transformations
+  end
+
+  test "transformations for dan-gold_x500.jpeg" do
+    blob = create_file_blob(filename: "dan-gold.jpeg")
+    expected_transformations = { resize_to_limit: [nil, 500] }
+    variant_service = VariantService.compute(blob, 'dan-gold_x500', 'jpeg')
+    assert_equal expected_transformations, variant_service.transformations
+  end
+
+  test "transformations for dan-gold_crop_left.jpeg" do
+    blob = create_file_blob(filename: "dan-gold.jpeg")
+    expected_transformations = {}
+    variant_service = VariantService.compute(blob, 'dan-gold_crop_left', 'jpeg')
+    assert_equal expected_transformations, variant_service.transformations
+  end
+
+  test "transformations for dan-gold@2x.jpeg" do
+    blob = create_file_blob(filename: "dan-gold.jpeg")
+    expected_transformations = {}
+    variant_service = VariantService.compute(blob, 'dan-gold@2x', 'jpeg')
+    assert_equal expected_transformations, variant_service.transformations
+  end
+
+  test "transformations for dan-gold_500x500_crop_left.jpeg" do
+    blob = create_file_blob(filename: "dan-gold.jpeg")
+    expected_transformations = {
+      resize_to_fill: [500, 500, { gravity: 'West' }],
+      crop: '500x500+0+0'
+    }
+    variant_service = VariantService.compute(blob, 'dan-gold_500x500_crop_left', 'jpeg')
+    assert_equal expected_transformations, variant_service.transformations
+  end
+
+  test "transformations for dan-gold_500x500@2x.jpeg" do
+    blob = create_file_blob(filename: "dan-gold.jpeg")
+    expected_transformations = { resize_to_limit: [1000, 1000] }
+    variant_service = VariantService.compute(blob, 'dan-gold_500x500@2x', 'jpeg')
+    assert_equal expected_transformations, variant_service.transformations
+  end
+
+  test "transformations for dan-gold_250x250@3x.jpeg" do
+    blob = create_file_blob(filename: "dan-gold.jpeg")
+    expected_transformations = { resize_to_limit: [750, 750] }
+    variant_service = VariantService.compute(blob, 'dan-gold_250x250@3x', 'jpeg')
+    assert_equal expected_transformations, variant_service.transformations
+  end
+
+  test "transformations for dan-gold_crop_left@2x.jpeg" do
+    blob = create_file_blob(filename: "dan-gold.jpeg")
+    expected_transformations = {}
+    variant_service = VariantService.compute(blob, 'dan-gold_crop_left@2x', 'jpeg')
+    assert_equal expected_transformations, variant_service.transformations
+  end
+
+  test "transformations for dan-gold_250x250_crop_left@2x.jpeg" do
+    blob = create_file_blob(filename: "dan-gold.jpeg")
+    expected_transformations = {
+      resize_to_fill: [500, 500, { gravity: 'West' }],
+      crop: '500x500+0+0'
+    }
+    variant_service = VariantService.compute(blob, 'dan-gold_250x250_crop_left@2x', 'jpeg')
+    assert_equal expected_transformations, variant_service.transformations
+  end
+
+  test "transformations for dan-gold_200x300_crop_top.jpeg" do
+    blob = create_file_blob(filename: "dan-gold.jpeg")
+    expected_transformations = {
+      resize_to_fill: [200, 300, { gravity: 'North' }],
+      crop: '200x300+0+0'
+    }
+    variant_service = VariantService.compute(blob, 'dan-gold_200x300_crop_top', 'jpeg')
+    assert_equal expected_transformations, variant_service.transformations
+  end
+
+  test "transformations for dan-gold_300x200_crop_right@2x.jpeg" do
+    blob = create_file_blob(filename: "dan-gold.jpeg")
+    expected_transformations = {
+      resize_to_fill: [600, 400, { gravity: 'East' }],
+      crop: '600x400+0+0'
+    }
+    variant_service = VariantService.compute(blob, 'dan-gold_300x200_crop_right@2x', 'jpeg')
+    assert_equal expected_transformations, variant_service.transformations
+  end
+
+  test "transformations for dan-gold_1000x500_crop_left.jpeg" do
+    blob = create_file_blob(filename: "dan-gold.jpeg")
+    expected_transformations = {
+      resize_to_fill: [1000, 500, { gravity: 'West' }],
+      crop: '1000x500+0+0'
+    }
+    variant_service = VariantService.compute(blob, 'dan-gold_1000x500_crop_left', 'jpeg')
+    assert_equal expected_transformations, variant_service.transformations
+  end
 
   # Variants tests
 
   test "variant for dan-gold.webp" do
     expected_blob = create_file_blob(filename: "dan-gold.webp")
+    image = load_image_from_variant_name(expected_blob.filename.base, format: 'webp')
+    assert_equal "WEBP", image.type
+    assert_equal expected_blob.checksum, image_checksum(image)
+  end
 
-    blob = create_file_blob(filename: "dan-gold.jpeg")
-    variant_service = VariantService.compute(blob, 'dan-gold', 'webp')
-    variant = blob.variant(variant_service.transformations).processed
-    image = read_image(variant)
+  test "variant for dan-gold_500x500.jpeg" do
+    expected_blob = create_file_blob(filename: "dan-gold_500x500.jpeg")
+    image = load_image_from_variant_name(expected_blob.filename.base)
+    assert_equal expected_blob.checksum, image_checksum(image)
+  end
 
-    assert_equal "WEBP", image.type
-    assert_equal 1486, image.width
-    assert_equal 836, image.height
+  test "variant for dan-gold_500x.jpeg" do
+    expected_blob = create_file_blob(filename: "dan-gold_500x.jpeg")
+    image = load_image_from_variant_name(expected_blob.filename.base)
     assert_equal expected_blob.checksum, image_checksum(image)
   end
 
-  # test "variant for dan-gold_500x500.jpeg" do
-  #   blob = create_file_blob(filename: "dan-gold.jpeg")
-  #   variant_service = VariantService.compute(blob, 'dan-gold_500x500', 'jpeg')
-  #   variant = blob.variant(variant_service.transformations).processed
-  #   image = read_image(variant)
-  #   assert_equal 500, image.width
-  #   assert_equal 563, image.height
-  # end
+  test "variant for dan-gold_x500.jpeg" do
+    expected_blob = create_file_blob(filename: "dan-gold_x500.jpeg")
+    image = load_image_from_variant_name(expected_blob.filename.base)
+    assert_equal expected_blob.checksum, image_checksum(image)
+  end
+
+  test "variant for dan-gold_crop_left.jpeg" do
+    expected_blob = create_file_blob(filename: "dan-gold_crop_left.jpeg")
+    image = load_image_from_variant_name(expected_blob.filename.base)
+    assert_equal expected_blob.checksum, image_checksum(image)
+  end
+
+  test "variant for dan-gold@2x.jpeg" do
+    expected_blob = create_file_blob(filename: "dan-gold@2x.jpeg")
+    image = load_image_from_variant_name(expected_blob.filename.base)
+    assert_equal expected_blob.checksum, image_checksum(image)
+  end
+
+  test "variant for dan-gold_500x500_crop_left.jpeg" do
+    expected_blob = create_file_blob(filename: "dan-gold_500x500_crop_left.jpeg")
+    image = load_image_from_variant_name(expected_blob.filename.base)
+    assert_equal expected_blob.checksum, image_checksum(image)
+  end
+
+  test "variant for dan-gold_500x500@2x.jpeg" do
+    expected_blob = create_file_blob(filename: "dan-gold_500x500@2x.jpeg")
+    image = load_image_from_variant_name(expected_blob.filename.base)
+    assert_equal expected_blob.checksum, image_checksum(image)
+  end
+
+  test "variant for dan-gold_250x250@3x.jpeg" do
+    expected_blob = create_file_blob(filename: "dan-gold_250x250@3x.jpeg")
+    image = load_image_from_variant_name(expected_blob.filename.base)
+    assert_equal expected_blob.checksum, image_checksum(image)
+  end
+
+  test "variant for dan-gold_crop_left@2x.jpeg" do
+    expected_blob = create_file_blob(filename: "dan-gold_crop_left@2x.jpeg")
+    image = load_image_from_variant_name(expected_blob.filename.base)
+    assert_equal expected_blob.checksum, image_checksum(image)
+  end
+
+  test "variant for dan-gold_250x250_crop_left@2x.jpeg" do
+    expected_blob = create_file_blob(filename: "dan-gold_250x250_crop_left@2x.jpeg")
+    image = load_image_from_variant_name(expected_blob.filename.base)
+    assert_equal expected_blob.checksum, image_checksum(image)
+  end
+
+  test "variant for dan-gold_200x300_crop_top.jpeg" do
+    expected_blob = create_file_blob(filename: "dan-gold_200x300_crop_top.jpeg")
+    image = load_image_from_variant_name(expected_blob.filename.base)
+    assert_equal expected_blob.checksum, image_checksum(image)
+  end
+
+  test "variant for dan-gold_300x200_crop_right@2x.jpeg" do
+    expected_blob = create_file_blob(filename: "dan-gold_300x200_crop_right@2x.jpeg")
+    image = load_image_from_variant_name(expected_blob.filename.base)
+    assert_equal expected_blob.checksum, image_checksum(image)
+  end
+
+  test "variant for dan-gold_1000x500_crop_left.jpeg" do
+    expected_blob = create_file_blob(filename: "dan-gold_1000x500_crop_left.jpeg")
+    image = load_image_from_variant_name(expected_blob.filename.base)
+    assert_equal expected_blob.checksum, image_checksum(image)
+  end
 
   private
 
@@ -254,6 +360,14 @@ class VariantServiceTest < ActiveSupport::TestCase
     MiniMagick::Image.open blob_or_variant.service.send(:path_for, blob_or_variant.key)
   end
 
+  def load_image_from_variant_name(variant_name, format: 'jpeg')
+    blob = create_file_blob(filename: "dan-gold.jpeg")
+    variant_service = VariantService.compute(blob, variant_name, format)
+    transformations = variant_service.transformations
+    blob_or_variant = transformations.empty? ? blob : blob.variant(variant_service.transformations).processed
+    read_image(blob_or_variant)
+  end
+
   def image_checksum(image)
     OpenSSL::Digest::MD5.base64digest(image.to_blob)
   end