diff --git a/designate_tempest_plugin/tests/api/v2/test_recordset.py b/designate_tempest_plugin/tests/api/v2/test_recordset.py
index f4ce02b..eb167af 100644
--- a/designate_tempest_plugin/tests/api/v2/test_recordset.py
+++ b/designate_tempest_plugin/tests/api/v2/test_recordset.py
@@ -12,6 +12,7 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 from oslo_log import log as logging
+from oslo_utils import versionutils
 from tempest import config
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
@@ -178,7 +179,82 @@
     @decorators.idempotent_id('8e7ecedb-5c35-46f8-ae0e-39e4aaabc97d')
     def test_create_recordset_type_TXT(self):
         self._test_create_recordset_type(
-            "www", "TXT", ["\"Any Old Text Goes Here\""])
+            "sample", "TXT", ["\"Any Old Text Goes Here\""])
+
+    @decorators.idempotent_id('521ae1b0-f115-4d3c-8bcd-e54ef53bb2b9')
+    def test_create_recordset_type_SVCB(self):
+        if not versionutils.is_compatible('2.2', self.api_version,
+                                          same_major=False):
+            raise self.skipException(
+                'SVCB record tests require Designate API version 2.2 or '
+                'newer. Skipping test_create_recordset_type_SVCB test.')
+
+        ipv61 = '2001:db8:3333:4444:5555:6666:7777:8888'
+        ipv6hint = f'{ipv61},2001:db8:3333:4444:cccc:dddd:eeee:ffff'
+        ipv4hint = "1.2.3.4,9.8.7.6"
+        alpn = "h3,h2,http/1.1"
+        port = "888"
+        target = "sample.example.org."
+        doh = '/dns-query{?dns}'
+        self._test_create_recordset_type(
+            None,
+            "SVCB",
+            [f"1 {target} alpn={alpn} ipv4hint={ipv4hint}"
+             f" ipv6hint={ipv6hint} port={port} dohpath={doh}"]
+        )
+
+    @decorators.idempotent_id('ebb3c1e2-fa33-4520-bba5-2888886d84f5')
+    def test_create_recordset_type_HTTPS(self):
+        if not versionutils.is_compatible('2.2', self.api_version,
+                                          same_major=False):
+            raise self.skipException(
+                'HTTPS record tests require Designate API version 2.2 or '
+                'newer. Skipping test_create_recordset_type_HTTPS test.')
+
+        ipv61 = '2001:db8:3333:4444:5555:6666:7777:8888'
+        ipv6hint = f'{ipv61},2001:db8:3333:4444:cccc:dddd:eeee:ffff'
+        ipv4hint = "1.2.3.4,9.8.7.6"
+        alpn = "h3,h2,http/1.1"
+        port = "888"
+        target = "sample.example.org."
+        self._test_create_recordset_type(
+            "sample",
+            "HTTPS",
+            [f"1 {target} alpn={alpn} ipv4hint={ipv4hint}"
+             f" ipv6hint={ipv6hint} port={port}"]
+        )
+
+    @decorators.idempotent_id('64f3a41b-065c-47f8-8a73-2a0cd62ed196')
+    def test_create_recordset_type_HTTPS_no_default_alpn(self):
+        if not versionutils.is_compatible('2.2', self.api_version,
+                                          same_major=False):
+            raise self.skipException(
+                'HTTPS record tests require Designate API version 2.2 or '
+                'newer. Skipping '
+                'test_create_recordset_type_HTTPS_no_default_alpntest.')
+
+        self._test_create_recordset_type(
+            "sample", "HTTPS", ['1 sample.example.org. alpn=http/1.1 '
+                                'no-default-alpn port=8000']
+        )
+
+    @decorators.idempotent_id('4d399592-5d37-43ba-99ac-e7665c2c1f8f')
+    def test_create_recordset_type_HTTPS_mandatory(self):
+        if not versionutils.is_compatible('2.2', self.api_version,
+                                          same_major=False):
+            raise self.skipException(
+                'HTTPS record tests require Designate API version 2.2 or '
+                'newer. Skipping test_create_recordset_type_HTTPS_mandatory '
+                'test.')
+
+        ipv6 = "2001:db8:3333:4444:5555:6666:7777:8888"
+        self._test_create_recordset_type(
+            "sample",
+            "HTTPS",
+            [f'1 sample.example.org. ipv4hint=192.168.1.2 ipv6hint={ipv6}'
+             f' alpn=h2 mandatory=alpn'
+             ]
+        )
 
     def _test_create_wildcard_recordset(self, name, type, records):
         if name is not None:
@@ -731,6 +807,85 @@
             lib_exc.NotFound, lambda: self.alt_client.create_recordset(
                 self.zone['id'], recordset_data))
 
+    @decorators.idempotent_id('f236a24a-a3c6-4a0c-a54c-ebf8a312b908')
+    def test_create_recordset_invalid_HTTPS_alpn(self):
+        if not versionutils.is_compatible('2.2', self.api_version,
+                                          same_major=False):
+            raise self.skipException(
+                'HTTPS record tests require Designate API version 2.2 or '
+                'newer. Skipping test_create_recordset_invalid_HTTPS_alpn '
+                'test.')
+
+        self._test_create_recordset_invalid(
+            None, 'HTTPS', ["1 sample.example.org. alpn=foo"])
+
+    @decorators.idempotent_id('d680ef3a-4406-47c5-a994-483138c5e975')
+    def test_create_recordset_invalid_HTTPS_port(self):
+        if not versionutils.is_compatible('2.2', self.api_version,
+                                          same_major=False):
+            raise self.skipException(
+                'HTTPS record tests require Designate API version 2.2 or '
+                'newer. Skipping test_create_recordset_invalid_HTTPS_port '
+                'test.')
+
+        self._test_create_recordset_invalid(
+            None, 'HTTPS', ["1 sample.example.org. port=foo"])
+
+    @decorators.idempotent_id('a33fc327-8d37-4582-9d2b-be83f6ee38d3')
+    def test_create_recordset_invalid_HTTPS_ech(self):
+        if not versionutils.is_compatible('2.2', self.api_version,
+                                          same_major=False):
+            raise self.skipException(
+                'HTTPS record tests require Designate API version 2.2 or '
+                'newer. Skipping test_create_recordset_invalid_HTTPS_ech '
+                'test.')
+
+        self._test_create_recordset_invalid(
+            None, 'HTTPS', ["1 sample.example.org. port=8888 ech=foo//"])
+
+    @decorators.idempotent_id('1869737f-1a1b-4712-93da-2d680cd45cd8')
+    def test_create_recordset_invalid_SVCB_mandatory(self):
+        if not versionutils.is_compatible('2.2', self.api_version,
+                                          same_major=False):
+            raise self.skipException(
+                'SVCB record tests require Designate API version 2.2 or '
+                'newer. Skipping test_create_recordset_invalid_SVCB_mandatory '
+                'test.')
+
+        ipv6hint = "2001:db8:3333:4444:5555:6666:7777:8888"
+        self._test_create_recordset_invalid(
+            None, 'SVCB', [
+                f"1 sample.example.org."
+                f" ipv6hint={ipv6hint} mandatory=alpn,ipv4hint"
+            ]
+        )
+
+    @decorators.idempotent_id('5bae6c22-7a37-48a5-b6b3-089d83a8f2ce')
+    def test_create_recordset_invalid_SVCB_ipv4hint(self):
+        if not versionutils.is_compatible('2.2', self.api_version,
+                                          same_major=False):
+            raise self.skipException(
+                'SVCB record tests require Designate API version 2.2 or '
+                'newer. Skipping test_create_recordset_invalid_SVCB_ipv4hint '
+                'test.')
+
+        self._test_create_recordset_invalid(
+            None, 'SVCB',
+            ['1 sample.example.org. ipv4hint=foo,192.168.1.2'])
+
+    @decorators.idempotent_id('72dce8ca-f2fa-4054-b2b7-7bccfe3a02c1')
+    def test_create_recordset_invalid_SVCB_ipv6hint(self):
+        if not versionutils.is_compatible('2.2', self.api_version,
+                                          same_major=False):
+            raise self.skipException(
+                'SVCB record tests require Designate API version 2.2 or '
+                'newer. Skipping test_create_recordset_invalid_SVCB_ipv6hint'
+                'test.')
+
+        self._test_create_recordset_invalid(
+            None, 'SVCB', ['1 sample.example.org. ipv6hint=foo']
+        )
+
 
 class RootRecordsetsTests(BaseRecordsetsTest):
     credentials = ["admin", "primary", "alt"]
diff --git a/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py b/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py
index 8675b66..22174a6 100644
--- a/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py
+++ b/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py
@@ -14,6 +14,7 @@
 limitations under the License.
 """
 from oslo_log import log as logging
+from oslo_utils import versionutils
 
 from tempest import config
 from tempest.lib import decorators
@@ -222,3 +223,52 @@
                 self.recordset_client.create_recordset,
                 self.zone['id'], post_model,
             )
+
+    @decorators.idempotent_id('193be0fb-ac25-44a3-ae12-f7776048c31a')
+    def test_create_SVCB_with(self):
+        if not versionutils.is_compatible('2.2', self.api_version,
+                                          same_major=False):
+            raise self.skipException(
+                'SVCB record tests require Designate API version 2.2 or '
+                'newer. Skipping test_create_SVCB_with test.')
+
+        ipv4hint = "1.2.3.4,9.8.7.6"
+        alpn = "h3,h2,http/1.1"
+        port = "888"
+        target = f"sample.{self.zone['name']}"
+        doh = '/dns-query{?dns}'
+        svcb_data_records = [f"1 {target} alpn={alpn} ipv4hint={ipv4hint}"
+                             f" port={port} dohpath={doh}"]
+        recordset_data = {
+            'name': "svcb" + "." + self.zone['name'],
+            'type': "SVCB",
+            'records': svcb_data_records,
+        }
+        recordset = self.create_recordset(recordset_data)
+        waiters.wait_for_recordset_status(
+            self.recordset_client, self.zone['id'],
+            recordset['id'], 'ACTIVE')
+
+    @decorators.idempotent_id('758c4367-88a6-4657-908e-4c0785428cf9')
+    def test_create_HTTPS_with(self):
+        if not versionutils.is_compatible('2.2', self.api_version,
+                                          same_major=False):
+            raise self.skipException(
+                'HTTPS record tests require Designate API version 2.2 or '
+                'newer. Skipping test_create_HTTPS_with test.')
+
+        ipv4hint = "1.2.3.4,9.8.7.6"
+        alpn = "h3,h2,http/1.1"
+        port = "4443"
+        target = f"sample.{self.zone['name']}"
+        https_data_records = [f"1 {target} alpn={alpn} ipv4hint={ipv4hint}"
+                              f" port={port}"]
+        recordset_data = {
+            'name': "https" + "." + self.zone['name'],
+            'type': "HTTPS",
+            'records': https_data_records,
+        }
+        recordset = self.create_recordset(recordset_data)
+        waiters.wait_for_recordset_status(
+            self.recordset_client, self.zone['id'],
+            recordset['id'], 'ACTIVE')
