diff --git a/lib/tasks/contracts.rake b/lib/tasks/contracts.rake
index 75c350f5be5d99b4809c60147de98aef959d6864..6bb7f30ad57d800ce73a2a49f316718d0c14f98b 100644
--- a/lib/tasks/contracts.rake
+++ b/lib/tasks/contracts.rake
@@ -10,24 +10,25 @@ provider = File.expand_path('provider', contracts)
 # rubocop:disable Rails/RakeEnvironment
 namespace :contracts do
   namespace :mr do
-    Pact::VerificationTask.new(:metadata) do |pact|
+    Pact::VerificationTask.new(:diffs_batch) do |pact|
       pact.uri(
-        "#{contracts}/contracts/merge_request_page-merge_request_metadata_endpoint.json",
-        pact_helper: "#{provider}/specs/metadata_helper.rb"
+        "#{contracts}/contracts/project/merge_request/show/mergerequest#show-merge_request_diffs_batch_endpoint.json",
+        pact_helper: "#{provider}/pact_helpers/project/merge_request/diffs_batch_helper.rb"
       )
     end
 
-    Pact::VerificationTask.new(:discussions) do |pact|
+    Pact::VerificationTask.new(:diffs_metadata) do |pact|
       pact.uri(
-        "#{contracts}/contracts/merge_request_page-merge_request_discussions_endpoint.json",
-        pact_helper: "#{provider}/specs/discussions_helper.rb"
+        "#{contracts}/contracts/project/merge_request/show/" \
+          "mergerequest#show-merge_request_diffs_metadata_endpoint.json",
+        pact_helper: "#{provider}/pact_helpers/project/merge_request/diffs_metadata_helper.rb"
       )
     end
 
-    Pact::VerificationTask.new(:diffs) do |pact|
+    Pact::VerificationTask.new(:discussions) do |pact|
       pact.uri(
-        "#{contracts}/contracts/merge_request_page-merge_request_diffs_endpoint.json",
-        pact_helper: "#{provider}/specs/diffs_helper.rb"
+        "#{contracts}/contracts/project/merge_request/show/mergerequest#show-merge_request_discussions_endpoint.json",
+        pact_helper: "#{provider}/pact_helpers/project/merge_request/discussions_helper.rb"
       )
     end
 
diff --git a/spec/contracts/consumer/endpoints/merge_requests.js b/spec/contracts/consumer/endpoints/project/merge_requests.js
similarity index 89%
rename from spec/contracts/consumer/endpoints/merge_requests.js
rename to spec/contracts/consumer/endpoints/project/merge_requests.js
index ae4d5544df6d8543b3759eb5905a1800bb04bc92..38773e5fb109ad0d8edaa97e60eae606ebf594c6 100644
--- a/spec/contracts/consumer/endpoints/merge_requests.js
+++ b/spec/contracts/consumer/endpoints/project/merge_requests.js
@@ -1,6 +1,6 @@
 import { request } from 'axios';
 
-export function getMetadata(endpoint) {
+export function getDiffsMetadata(endpoint) {
   const { url } = endpoint;
 
   return request({
@@ -22,7 +22,7 @@ export function getDiscussions(endpoint) {
   }).then((response) => response.data);
 }
 
-export function getDiffs(endpoint) {
+export function getDiffsBatch(endpoint) {
   const { url } = endpoint;
 
   return request({
diff --git a/spec/contracts/consumer/fixtures/diffs.fixture.js b/spec/contracts/consumer/fixtures/project/merge_request/diffs_batch.fixture.js
similarity index 98%
rename from spec/contracts/consumer/fixtures/diffs.fixture.js
rename to spec/contracts/consumer/fixtures/project/merge_request/diffs_batch.fixture.js
index cc2c054b08f49efbab63e3af678cdeea15f4ef3b..b53e4bb335db6431d7e0f7abfe93997515ab3973 100644
--- a/spec/contracts/consumer/fixtures/diffs.fixture.js
+++ b/spec/contracts/consumer/fixtures/project/merge_request/diffs_batch.fixture.js
@@ -62,7 +62,7 @@ const body = {
   },
 };
 
-const Diffs = {
+const DiffsBatch = {
   body: Matchers.extractPayload(body),
 
   success: {
@@ -86,5 +86,6 @@ const Diffs = {
   },
 };
 
-export { Diffs };
+export { DiffsBatch };
+
 /* eslint-enable @gitlab/require-i18n-strings */
diff --git a/spec/contracts/consumer/fixtures/metadata.fixture.js b/spec/contracts/consumer/fixtures/project/merge_request/diffs_metadata.fixture.js
similarity index 97%
rename from spec/contracts/consumer/fixtures/metadata.fixture.js
rename to spec/contracts/consumer/fixtures/project/merge_request/diffs_metadata.fixture.js
index c19ca2175b3c53dedf9258eaaaae723747b32c89..39dbcf78ee70b62035ca39351d9515326f955907 100644
--- a/spec/contracts/consumer/fixtures/metadata.fixture.js
+++ b/spec/contracts/consumer/fixtures/project/merge_request/diffs_metadata.fixture.js
@@ -70,7 +70,7 @@ const body = {
   project_name: Matchers.string('contract-testing'),
 };
 
-const Metadata = {
+const DiffsMetadata = {
   body: Matchers.extractPayload(body),
 
   success: {
@@ -82,7 +82,7 @@ const Metadata = {
   },
 
   request: {
-    uponReceiving: 'a request for Metadata',
+    uponReceiving: 'a request for Diffs Metadata',
     withRequest: {
       method: 'GET',
       path: '/gitlab-org/gitlab-qa/-/merge_requests/1/diffs_metadata.json',
@@ -93,5 +93,6 @@ const Metadata = {
   },
 };
 
-export { Metadata };
+export { DiffsMetadata };
+
 /* eslint-enable @gitlab/require-i18n-strings */
diff --git a/spec/contracts/consumer/fixtures/discussions.fixture.js b/spec/contracts/consumer/fixtures/project/merge_request/discussions.fixture.js
similarity index 99%
rename from spec/contracts/consumer/fixtures/discussions.fixture.js
rename to spec/contracts/consumer/fixtures/project/merge_request/discussions.fixture.js
index 26f1d65f6630bad9f5f846f11109a9e8d0baee49..af0962a01cb97d096c781d3d2ee5f18f06d49867 100644
--- a/spec/contracts/consumer/fixtures/discussions.fixture.js
+++ b/spec/contracts/consumer/fixtures/project/merge_request/discussions.fixture.js
@@ -83,4 +83,5 @@ const Discussions = {
 };
 
 export { Discussions };
+
 /* eslint-enable @gitlab/require-i18n-strings */
diff --git a/spec/contracts/consumer/specs/diffs.spec.js b/spec/contracts/consumer/specs/diffs.spec.js
deleted file mode 100644
index 6b1cefdbdbc5c2aea8d79497092d8e15ecd71fa8..0000000000000000000000000000000000000000
--- a/spec/contracts/consumer/specs/diffs.spec.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/* eslint-disable @gitlab/require-i18n-strings */
-
-import { pactWith } from 'jest-pact';
-
-import { Diffs } from '../fixtures/diffs.fixture';
-import { getDiffs } from '../endpoints/merge_requests';
-
-pactWith(
-  {
-    consumer: 'Merge Request Page',
-    provider: 'Merge Request Diffs Endpoint',
-    log: '../logs/consumer.log',
-    dir: '../contracts',
-  },
-
-  (provider) => {
-    describe('Diffs Endpoint', () => {
-      beforeEach(() => {
-        const interaction = {
-          state: 'a merge request with diffs exists',
-          ...Diffs.request,
-          willRespondWith: Diffs.success,
-        };
-        provider.addInteraction(interaction);
-      });
-
-      it('return a successful body', () => {
-        return getDiffs({
-          url: provider.mockService.baseUrl,
-        }).then((diffs) => {
-          expect(diffs).toEqual(Diffs.body);
-        });
-      });
-    });
-  },
-);
-/* eslint-enable @gitlab/require-i18n-strings */
diff --git a/spec/contracts/consumer/specs/discussions.spec.js b/spec/contracts/consumer/specs/discussions.spec.js
deleted file mode 100644
index 2a5d0ba6267a894f3ccae9d4befa3a123d6214a5..0000000000000000000000000000000000000000
--- a/spec/contracts/consumer/specs/discussions.spec.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/* eslint-disable @gitlab/require-i18n-strings */
-
-import { pactWith } from 'jest-pact';
-
-import { Discussions } from '../fixtures/discussions.fixture';
-import { getDiscussions } from '../endpoints/merge_requests';
-
-pactWith(
-  {
-    consumer: 'Merge Request Page',
-    provider: 'Merge Request Discussions Endpoint',
-    log: '../logs/consumer.log',
-    dir: '../contracts',
-  },
-
-  (provider) => {
-    describe('Discussions Endpoint', () => {
-      beforeEach(() => {
-        const interaction = {
-          state: 'a merge request with discussions exists',
-          ...Discussions.request,
-          willRespondWith: Discussions.success,
-        };
-        provider.addInteraction(interaction);
-      });
-
-      it('return a successful body', () => {
-        return getDiscussions({
-          url: provider.mockService.baseUrl,
-        }).then((discussions) => {
-          expect(discussions).toEqual(Discussions.body);
-        });
-      });
-    });
-  },
-);
-/* eslint-enable @gitlab/require-i18n-strings */
diff --git a/spec/contracts/consumer/specs/metadata.spec.js b/spec/contracts/consumer/specs/metadata.spec.js
deleted file mode 100644
index fc082cb6a4668f0b5fda062263d846e088b033a8..0000000000000000000000000000000000000000
--- a/spec/contracts/consumer/specs/metadata.spec.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/* eslint-disable @gitlab/require-i18n-strings */
-
-import { pactWith } from 'jest-pact';
-
-import { Metadata } from '../fixtures/metadata.fixture';
-import { getMetadata } from '../endpoints/merge_requests';
-
-pactWith(
-  {
-    consumer: 'Merge Request Page',
-    provider: 'Merge Request Metadata Endpoint',
-    log: '../logs/consumer.log',
-    dir: '../contracts',
-  },
-
-  (provider) => {
-    describe('Metadata Endpoint', () => {
-      beforeEach(() => {
-        const interaction = {
-          state: 'a merge request exists',
-          ...Metadata.request,
-          willRespondWith: Metadata.success,
-        };
-        provider.addInteraction(interaction);
-      });
-
-      it('return a successful body', () => {
-        return getMetadata({
-          url: provider.mockService.baseUrl,
-        }).then((metadata) => {
-          expect(metadata).toEqual(Metadata.body);
-        });
-      });
-    });
-  },
-);
-/* eslint-enable @gitlab/require-i18n-strings */
diff --git a/spec/contracts/consumer/specs/project/merge_request/show.spec.js b/spec/contracts/consumer/specs/project/merge_request/show.spec.js
new file mode 100644
index 0000000000000000000000000000000000000000..8c6e029cb12da9a012452978c1c84aa39b4a5c63
--- /dev/null
+++ b/spec/contracts/consumer/specs/project/merge_request/show.spec.js
@@ -0,0 +1,112 @@
+/* eslint-disable @gitlab/require-i18n-strings */
+
+import { pactWith } from 'jest-pact';
+
+import { DiffsBatch } from '../../../fixtures/project/merge_request/diffs_batch.fixture';
+import { Discussions } from '../../../fixtures/project/merge_request/discussions.fixture';
+import { DiffsMetadata } from '../../../fixtures/project/merge_request/diffs_metadata.fixture';
+import {
+  getDiffsBatch,
+  getDiffsMetadata,
+  getDiscussions,
+} from '../../../endpoints/project/merge_requests';
+
+const CONSUMER_NAME = 'MergeRequest#show';
+const CONSUMER_LOG = '../logs/consumer.log';
+const CONTRACT_DIR = '../contracts/project/merge_request/show';
+const DIFFS_BATCH_PROVIDER_NAME = 'Merge Request Diffs Batch Endpoint';
+const DISCUSSIONS_PROVIDER_NAME = 'Merge Request Discussions Endpoint';
+const DIFFS_METADATA_PROVIDER_NAME = 'Merge Request Diffs Metadata Endpoint';
+
+// API endpoint: /merge_requests/:id/diffs_batch.json
+pactWith(
+  {
+    consumer: CONSUMER_NAME,
+    provider: DIFFS_BATCH_PROVIDER_NAME,
+    log: CONSUMER_LOG,
+    dir: CONTRACT_DIR,
+  },
+
+  (provider) => {
+    describe(DIFFS_BATCH_PROVIDER_NAME, () => {
+      beforeEach(() => {
+        const interaction = {
+          state: 'a merge request with diffs exists',
+          ...DiffsBatch.request,
+          willRespondWith: DiffsBatch.success,
+        };
+        provider.addInteraction(interaction);
+      });
+
+      it('returns a successful body', () => {
+        return getDiffsBatch({
+          url: provider.mockService.baseUrl,
+        }).then((diffsBatch) => {
+          expect(diffsBatch).toEqual(DiffsBatch.body);
+        });
+      });
+    });
+  },
+);
+
+pactWith(
+  {
+    consumer: CONSUMER_NAME,
+    provider: DISCUSSIONS_PROVIDER_NAME,
+    log: CONSUMER_LOG,
+    dir: CONTRACT_DIR,
+  },
+
+  (provider) => {
+    describe(DISCUSSIONS_PROVIDER_NAME, () => {
+      beforeEach(() => {
+        const interaction = {
+          state: 'a merge request with discussions exists',
+          ...Discussions.request,
+          willRespondWith: Discussions.success,
+        };
+        provider.addInteraction(interaction);
+      });
+
+      it('return a successful body', () => {
+        return getDiscussions({
+          url: provider.mockService.baseUrl,
+        }).then((discussions) => {
+          expect(discussions).toEqual(Discussions.body);
+        });
+      });
+    });
+  },
+);
+
+pactWith(
+  {
+    consumer: CONSUMER_NAME,
+    provider: DIFFS_METADATA_PROVIDER_NAME,
+    log: CONSUMER_LOG,
+    dir: CONTRACT_DIR,
+  },
+
+  (provider) => {
+    describe(DIFFS_METADATA_PROVIDER_NAME, () => {
+      beforeEach(() => {
+        const interaction = {
+          state: 'a merge request exists',
+          ...DiffsMetadata.request,
+          willRespondWith: DiffsMetadata.success,
+        };
+        provider.addInteraction(interaction);
+      });
+
+      it('return a successful body', () => {
+        return getDiffsMetadata({
+          url: provider.mockService.baseUrl,
+        }).then((diffsMetadata) => {
+          expect(diffsMetadata).toEqual(DiffsMetadata.body);
+        });
+      });
+    });
+  },
+);
+
+/* eslint-enable @gitlab/require-i18n-strings */
diff --git a/spec/contracts/contracts/merge_request_page-merge_request_diffs_endpoint.json b/spec/contracts/contracts/project/merge_request/show/mergerequest#show-merge_request_diffs_batch_endpoint.json
similarity index 98%
rename from spec/contracts/contracts/merge_request_page-merge_request_diffs_endpoint.json
rename to spec/contracts/contracts/project/merge_request/show/mergerequest#show-merge_request_diffs_batch_endpoint.json
index 2f097d8eb24ff25cd672291c7312a14c8849b0d1..3fa13766766e3a8f675ecb6064a1f7347e2610d8 100644
--- a/spec/contracts/contracts/merge_request_page-merge_request_diffs_endpoint.json
+++ b/spec/contracts/contracts/project/merge_request/show/mergerequest#show-merge_request_diffs_batch_endpoint.json
@@ -1,9 +1,9 @@
 {
   "consumer": {
-    "name": "Merge Request Page"
+    "name": "MergeRequest#show"
   },
   "provider": {
-    "name": "Merge Request Diffs Endpoint"
+    "name": "Merge Request Diffs Batch Endpoint"
   },
   "interactions": [
     {
@@ -226,4 +226,4 @@
       "version": "2.0.0"
     }
   }
-}
+}
\ No newline at end of file
diff --git a/spec/contracts/contracts/merge_request_page-merge_request_metadata_endpoint.json b/spec/contracts/contracts/project/merge_request/show/mergerequest#show-merge_request_diffs_metadata_endpoint.json
similarity index 98%
rename from spec/contracts/contracts/merge_request_page-merge_request_metadata_endpoint.json
rename to spec/contracts/contracts/project/merge_request/show/mergerequest#show-merge_request_diffs_metadata_endpoint.json
index eb22b7d2e3c5c595f98b8baf079550c23db74f94..b98a0127e545edd2248498d172f701f192754d1c 100644
--- a/spec/contracts/contracts/merge_request_page-merge_request_metadata_endpoint.json
+++ b/spec/contracts/contracts/project/merge_request/show/mergerequest#show-merge_request_diffs_metadata_endpoint.json
@@ -1,13 +1,13 @@
 {
   "consumer": {
-    "name": "Merge Request Page"
+    "name": "MergeRequest#show"
   },
   "provider": {
-    "name": "Merge Request Metadata Endpoint"
+    "name": "Merge Request Diffs Metadata Endpoint"
   },
   "interactions": [
     {
-      "description": "a request for Metadata",
+      "description": "a request for Diffs Metadata",
       "providerState": "a merge request exists",
       "request": {
         "method": "GET",
@@ -220,4 +220,4 @@
       "version": "2.0.0"
     }
   }
-}
+}
\ No newline at end of file
diff --git a/spec/contracts/contracts/merge_request_page-merge_request_discussions_endpoint.json b/spec/contracts/contracts/project/merge_request/show/mergerequest#show-merge_request_discussions_endpoint.json
similarity index 99%
rename from spec/contracts/contracts/merge_request_page-merge_request_discussions_endpoint.json
rename to spec/contracts/contracts/project/merge_request/show/mergerequest#show-merge_request_discussions_endpoint.json
index 819d95276b38ecd5df6c9b113eb009ed63fd6639..ecaf9c123afcdae358db2bf19c464ea15922ba9f 100644
--- a/spec/contracts/contracts/merge_request_page-merge_request_discussions_endpoint.json
+++ b/spec/contracts/contracts/project/merge_request/show/mergerequest#show-merge_request_discussions_endpoint.json
@@ -1,6 +1,6 @@
 {
   "consumer": {
-    "name": "Merge Request Page"
+    "name": "MergeRequest#show"
   },
   "provider": {
     "name": "Merge Request Discussions Endpoint"
@@ -233,4 +233,4 @@
       "version": "2.0.0"
     }
   }
-}
+}
\ No newline at end of file
diff --git a/spec/contracts/provider/pact_helpers/project/merge_request/diffs_batch_helper.rb b/spec/contracts/provider/pact_helpers/project/merge_request/diffs_batch_helper.rb
new file mode 100644
index 0000000000000000000000000000000000000000..7d1fbe91e86ab34754fe6f43a5a63b09be214cf9
--- /dev/null
+++ b/spec/contracts/provider/pact_helpers/project/merge_request/diffs_batch_helper.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require_relative '../../../spec_helper'
+require_relative '../../../states/project/merge_request/diffs_batch_state'
+
+module Provider
+  module DiffsBatchHelper
+    Pact.service_provider "Merge Request Diffs Batch Endpoint" do
+      app { Environments::Test.app }
+
+      honours_pact_with 'MergeRequest#show' do
+        pact_uri '../contracts/project/merge_request/show/mergerequest#show-merge_request_diffs_batch_endpoint.json'
+      end
+    end
+  end
+end
diff --git a/spec/contracts/provider/pact_helpers/project/merge_request/diffs_metadata_helper.rb b/spec/contracts/provider/pact_helpers/project/merge_request/diffs_metadata_helper.rb
new file mode 100644
index 0000000000000000000000000000000000000000..5f0c58d18d4fd6d950c9f273fb95c5b8e502eda1
--- /dev/null
+++ b/spec/contracts/provider/pact_helpers/project/merge_request/diffs_metadata_helper.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require_relative '../../../spec_helper'
+require_relative '../../../states/project/merge_request/diffs_metadata_state'
+
+module Provider
+  module DiffsMetadataHelper
+    Pact.service_provider "Merge Request Diffs Metadata Endpoint" do
+      app { Environments::Test.app }
+
+      honours_pact_with 'MergeRequest#show' do
+        pact_uri '../contracts/project/merge_request/show/mergerequest#show-merge_request_diffs_metadata_endpoint.json'
+      end
+    end
+  end
+end
diff --git a/spec/contracts/provider/pact_helpers/project/merge_request/discussions_helper.rb b/spec/contracts/provider/pact_helpers/project/merge_request/discussions_helper.rb
new file mode 100644
index 0000000000000000000000000000000000000000..0f4244ba40abe303a699e1935cd95158f42dade4
--- /dev/null
+++ b/spec/contracts/provider/pact_helpers/project/merge_request/discussions_helper.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require_relative '../../../spec_helper'
+require_relative '../../../states/project/merge_request/discussions_state'
+
+module Provider
+  module DiscussionsHelper
+    Pact.service_provider "Merge Request Discussions Endpoint" do
+      app { Environments::Test.app }
+
+      honours_pact_with 'MergeRequest#show' do
+        pact_uri '../contracts/project/merge_request/show/mergerequest#show-merge_request_discussions_endpoint.json'
+      end
+    end
+  end
+end
diff --git a/spec/contracts/provider/specs/diffs_helper.rb b/spec/contracts/provider/specs/diffs_helper.rb
deleted file mode 100644
index 24bdd00dbaeb0b1d6ac821ed5cee1184edf01bd7..0000000000000000000000000000000000000000
--- a/spec/contracts/provider/specs/diffs_helper.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# frozen_string_literal: true
-
-require_relative '../spec_helper'
-require_relative '../states/diffs_state'
-
-module Provider
-  module DiffsHelper
-    Pact.service_provider "Merge Request Diffs Endpoint" do
-      app { Environments::Test.app }
-
-      honours_pact_with 'Merge Request Page' do
-        pact_uri '../contracts/merge_request_page-merge_request_diffs_endpoint.json'
-      end
-    end
-  end
-end
diff --git a/spec/contracts/provider/specs/discussions_helper.rb b/spec/contracts/provider/specs/discussions_helper.rb
deleted file mode 100644
index 135ccf48276f58817870df8c61b4a0d880c4ee32..0000000000000000000000000000000000000000
--- a/spec/contracts/provider/specs/discussions_helper.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# frozen_string_literal: true
-
-require_relative '../spec_helper'
-require_relative '../states/discussions_state'
-
-module Provider
-  module DiscussionsHelper
-    Pact.service_provider "Merge Request Discussions Endpoint" do
-      app { Environments::Test.app }
-
-      honours_pact_with 'Merge Request Page' do
-        pact_uri '../contracts/merge_request_page-merge_request_discussions_endpoint.json'
-      end
-    end
-  end
-end
diff --git a/spec/contracts/provider/specs/metadata_helper.rb b/spec/contracts/provider/specs/metadata_helper.rb
deleted file mode 100644
index e73b993a31a03ba64eb31ef3957d3413254f101c..0000000000000000000000000000000000000000
--- a/spec/contracts/provider/specs/metadata_helper.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# frozen_string_literal: true
-
-require_relative '../spec_helper'
-require_relative '../states/metadata_state'
-
-module Provider
-  module MetadataHelper
-    Pact.service_provider "Merge Request Metadata Endpoint" do
-      app { Environments::Test.app }
-
-      honours_pact_with 'Merge Request Page' do
-        pact_uri '../contracts/merge_request_page-merge_request_metadata_endpoint.json'
-      end
-    end
-  end
-end
diff --git a/spec/contracts/provider/states/diffs_state.rb b/spec/contracts/provider/states/project/merge_request/diffs_batch_state.rb
similarity index 93%
rename from spec/contracts/provider/states/diffs_state.rb
rename to spec/contracts/provider/states/project/merge_request/diffs_batch_state.rb
index d959cde5f5ec852c0aede07447c1f71b2413c82a..ac20c17c187999c387364c12d62da7c103a1cee2 100644
--- a/spec/contracts/provider/states/diffs_state.rb
+++ b/spec/contracts/provider/states/project/merge_request/diffs_batch_state.rb
@@ -1,6 +1,6 @@
 # frozen_string_literal: true
 
-Pact.provider_states_for "Merge Request Page" do
+Pact.provider_states_for "MergeRequest#show" do
   provider_state "a merge request with diffs exists" do
     set_up do
       user = User.find_by(name: Provider::UsersHelper::CONTRACT_USER_NAME)
diff --git a/spec/contracts/provider/states/metadata_state.rb b/spec/contracts/provider/states/project/merge_request/diffs_metadata_state.rb
similarity index 92%
rename from spec/contracts/provider/states/metadata_state.rb
rename to spec/contracts/provider/states/project/merge_request/diffs_metadata_state.rb
index 59b290ce2fed0267315f1fe9345b4939eec4ead6..8754232690cff6d9b62187cb45d03e9679277910 100644
--- a/spec/contracts/provider/states/metadata_state.rb
+++ b/spec/contracts/provider/states/project/merge_request/diffs_metadata_state.rb
@@ -1,6 +1,6 @@
 # frozen_string_literal: true
 
-Pact.provider_states_for "Merge Request Page" do
+Pact.provider_states_for "MergeRequest#show" do
   provider_state "a merge request exists" do
     set_up do
       user = User.find_by(name: Provider::UsersHelper::CONTRACT_USER_NAME)
diff --git a/spec/contracts/provider/states/discussions_state.rb b/spec/contracts/provider/states/project/merge_request/discussions_state.rb
similarity index 92%
rename from spec/contracts/provider/states/discussions_state.rb
rename to spec/contracts/provider/states/project/merge_request/discussions_state.rb
index ddbcf80f2c820100f9be53e4807de4c693a9e56d..2d64f85eedfd10416e909d7cbd513f532c4b7a34 100644
--- a/spec/contracts/provider/states/discussions_state.rb
+++ b/spec/contracts/provider/states/project/merge_request/discussions_state.rb
@@ -1,6 +1,6 @@
 # frozen_string_literal: true
 
-Pact.provider_states_for "Merge Request Page" do
+Pact.provider_states_for "MergeRequest#show" do
   provider_state "a merge request with discussions exists" do
     set_up do
       user = User.find_by(name: Provider::UsersHelper::CONTRACT_USER_NAME)