diff --git a/heat_tempest_plugin/common/test.py b/heat_tempest_plugin/common/test.py
index 4fdfb8e..f75385f 100644
--- a/heat_tempest_plugin/common/test.py
+++ b/heat_tempest_plugin/common/test.py
@@ -34,6 +34,7 @@
 
 LOG = logging.getLogger(__name__)
 _LOG_FORMAT = "%(levelname)8s [%(name)s] %(message)s"
+_resource_types = None
 
 
 def call_until_true(duration, sleep_for, func, *args, **kwargs):
@@ -86,7 +87,31 @@
     return skipper(test_method)
 
 
-class HeatIntegrationTest(testscenarios.WithScenarios,
+def requires_resource_type(resource_type):
+    '''Decorator for tests requiring a resource type.
+
+    The decorated test will be skipped when the resource type is not available.
+    '''
+    def decorator(test_method):
+        conf = getattr(config.CONF, 'heat_plugin', None)
+        if not conf or conf.auth_url is None:
+            return test_method
+
+        global _resource_types
+        if not _resource_types:
+            manager = clients.ClientManager(conf)
+            obj_rtypes = manager.orchestration_client.resource_types.list()
+            _resource_types = list(t.resource_type for t in obj_rtypes)
+        rtype_available = resource_type and resource_type in _resource_types
+        skipper = testtools.skipUnless(
+            rtype_available,
+            "%s resource type not available, skipping test." % resource_type)
+        return skipper(test_method)
+    return decorator
+
+
+class HeatIntegrationTest(testtools.testcase.WithAttributes,
+                          testscenarios.WithScenarios,
                           testtools.TestCase):
 
     def setUp(self):
diff --git a/heat_tempest_plugin/tests/api/gabbits/environments.yaml b/heat_tempest_plugin/tests/api/gabbits/environments.yaml
index 17ac476..fe1dc04 100644
--- a/heat_tempest_plugin/tests/api/gabbits/environments.yaml
+++ b/heat_tempest_plugin/tests/api/gabbits/environments.yaml
@@ -4,6 +4,7 @@
 
 tests:
 - name: environment with parameter
+  desc: 8281d088-0c80-4071-a13d-333b309be6ca
   POST: /stacks
   request_headers:
     content-type: application/json
@@ -34,15 +35,17 @@
     location: //stacks/$ENVIRON['PREFIX']-envstack/[a-f0-9-]+/
 
 - name: poll for envstack CREATE_COMPLETE
+  desc: 29899c70-9c94-4e24-8988-df76f7eaaa70
   GET: $LOCATION
   redirects: True
   poll:
-    count: 5
+    count: 10
     delay: 1.0
   response_json_paths:
     $.stack.stack_status: CREATE_COMPLETE
 
 - name: get stack output
+  desc: f60dd8df-82d1-4228-8926-54d65ebd12e1
   GET: $LAST_URL/outputs/output_value
   redirects: True
   status: 200
@@ -50,6 +53,7 @@
     $.output.output_value: test
 
 - name: delete envstack
+  desc: 0efde180-cc0e-4f2c-bb18-fa345e8d21ad
   DELETE: /stacks/$ENVIRON['PREFIX']-envstack
   redirects: True
   status: 204
diff --git a/heat_tempest_plugin/tests/api/gabbits/resources.yaml b/heat_tempest_plugin/tests/api/gabbits/resources.yaml
index 41da444..c20333b 100644
--- a/heat_tempest_plugin/tests/api/gabbits/resources.yaml
+++ b/heat_tempest_plugin/tests/api/gabbits/resources.yaml
@@ -4,6 +4,7 @@
 
 tests:
 - name: create stack with resources
+  desc: 947be7b2-503d-41f5-9843-61be50954f13
   POST: /stacks
   request_headers:
     content-type: application/json
@@ -29,15 +30,17 @@
     location: //stacks/$ENVIRON['PREFIX']-rsrcstack/[a-f0-9-]+/
 
 - name: poll for rsrcstack CREATE_COMPLETE
+  desc: e9eac22f-c3e7-450f-a087-08a8655a6e8e
   GET: $LOCATION
   redirects: True
   poll:
-    count: 5
+    count: 10
     delay: 1.0
   response_json_paths:
     $.stack.stack_status: CREATE_COMPLETE
 
 - name: list resources
+  desc: ec53f10d-a89a-4243-8706-629a01ea890f
   GET: $LAST_URL/resources
   request_headers:
     content-type: application/json
@@ -47,6 +50,7 @@
     $.resources[0].resource_status: CREATE_COMPLETE
 
 - name: list filtered resources
+  desc: da07d3d2-9ccc-4fa1-9b1b-9cb3074fe9b9
   GET: $LAST_URL
   request_headers:
     content-type: application/json
@@ -57,6 +61,7 @@
     $.resources: []
 
 - name: show resource
+  desc: 2cbcedc5-0aa7-454e-bf89-a3dd5d379dc1
   GET: $LAST_URL/test
   request_headers:
     content-type: application/json
@@ -65,6 +70,7 @@
     $.resource.attributes.output: test
 
 - name: mark resource unhealthy
+  desc: 6031516b-3a8f-4d1b-8990-81a571b5f956
   PATCH: $LAST_URL
   request_headers:
     content-type: application/json
@@ -74,6 +80,7 @@
   status: 200
 
 - name: show unhealthy resource
+  desc: 9e784490-2e88-49af-8ee7-c4c6aba2be64
   GET: $LAST_URL
   status: 200
   response_json_paths:
@@ -81,10 +88,12 @@
     $.resource.resource_status_reason: 'resource deleted'
 
 - name: signal resource
+  desc: c65a047c-8c7b-4b44-9f5f-bf1069751c5c
   POST: $LAST_URL/signal
   status: 400
 
 - name: delete stack with resources
+  desc: 0edc4fdc-811d-4d27-a0dd-6ec4db2bda6e
   DELETE: /stacks/$ENVIRON['PREFIX']-rsrcstack
   redirects: True
   status: 204
diff --git a/heat_tempest_plugin/tests/api/gabbits/resourcetypes.yaml b/heat_tempest_plugin/tests/api/gabbits/resourcetypes.yaml
index 0730cc8..a259214 100644
--- a/heat_tempest_plugin/tests/api/gabbits/resourcetypes.yaml
+++ b/heat_tempest_plugin/tests/api/gabbits/resourcetypes.yaml
@@ -4,10 +4,12 @@
 
 tests:
 - name: list resource types
+  desc: 5b4db88b-d171-4400-b7a7-a7dc8f597d31
   GET: /resource_types
   status: 200
 
 - name: show resource type
+  desc: cc05d1ef-17f1-430e-bea1-0f6766f7d0b4
   GET: /resource_types/OS::Heat::TestResource
   status: 200
   response_json_paths:
@@ -15,6 +17,7 @@
     $.properties.wait_secs.default: 0
 
 - name: resource type template
+  desc: 5a2164eb-645a-4245-acd7-b222a715fc09
   GET: /resource_types/OS::Heat::TestResource/template
   query_parameters:
     template_type: hot
diff --git a/heat_tempest_plugin/tests/api/gabbits/stacks.yaml b/heat_tempest_plugin/tests/api/gabbits/stacks.yaml
index cb67e71..9d9328e 100644
--- a/heat_tempest_plugin/tests/api/gabbits/stacks.yaml
+++ b/heat_tempest_plugin/tests/api/gabbits/stacks.yaml
@@ -4,12 +4,14 @@
 
 tests:
 - name: stack list
+  desc: 39c0245e-6055-41cf-9f0e-15adfe55ded6
   GET: /stacks
   status: 200
   response_headers:
     content-type: application/json
 
 - name: create empty stack
+  desc: bde1b827-65fb-47ea-909f-82537e6260d3
   POST: /stacks
   request_headers:
     content-type: application/json
@@ -28,25 +30,29 @@
 
 
 - name: poll for empty CREATE_COMPLETE
+  desc: f575e5c4-2aed-4381-9f0d-2dfcb0640c4b
   GET: $LOCATION
   redirects: True
   poll:
-    count: 5
+    count: 10
     delay: 1.0
   response_json_paths:
     $.stack.stack_status: CREATE_COMPLETE
 
 - name: show empty stack
+  desc: 89b233fe-0d55-4959-9289-0b5dabe4e4c9
   GET: $LAST_URL
   redirects: True
   status: 200
 
 - name: delete empty stack
+  desc: 7eca55fe-8300-43b6-a6b8-fb2d99b51911
   DELETE: $LAST_URL
   redirects: True
   status: 204
 
 - name: create stack
+  desc: 56ac2173-97c5-4347-bd32-529a260cfac3
   POST: /stacks
   request_headers:
     content-type: application/json
@@ -74,20 +80,23 @@
     location: //stacks/$ENVIRON['PREFIX']-stack/[a-f0-9-]+/
 
 - name: poll for stack CREATE_COMPLETE
+  desc: 6a0fe2dc-2822-4af3-b606-321ff7ad3de9
   GET: $LOCATION
   redirects: True
   poll:
-    count: 5
+    count: 10
     delay: 1.0
   response_json_paths:
     $.stack.stack_status: CREATE_COMPLETE
 
 - name: show stack
+  desc: 9b268607-0335-4667-a613-bccf81e66f8f
   GET: $LAST_URL
   redirects: True
   status: 200
 
 - name: update stack
+  desc: 6bb1ec02-dd19-4b2c-9a6d-866ce666650f
   PUT: $LAST_URL
   request_headers:
     content-type: application/json
@@ -115,15 +124,17 @@
   status: 202
 
 - name: poll for stack UPDATE_COMPLETE
+  desc: 3e280fb3-02b6-44fb-84dd-e04921d47733
   GET: $LAST_URL
   redirects: True
   poll:
-    count: 5
+    count: 10
     delay: 1.0
   response_json_paths:
     $.stack.stack_status: UPDATE_COMPLETE
 
 - name: patch update stack
+  desc: 927cea42-a35b-4664-b209-ab2cb34e6ef4
   PATCH: $LAST_URL
   request_headers:
     content-type: application/json
@@ -133,16 +144,18 @@
   status: 202
 
 - name: poll for stack patch UPDATE_COMPLETE
+  desc: a1cfd3b4-2536-4c54-94f4-12093f2ccf3b
   GET: $LAST_URL
   redirects: True
   poll:
-    count: 5
+    count: 10
     delay: 1.0
   response_json_paths:
     $.stack.stack_status: UPDATE_COMPLETE
     $.stack.updated_time: /^(?!$HISTORY['poll for stack UPDATE_COMPLETE'].$RESPONSE['$.stack.updated_time'])/
 
 - name: list stack outputs
+  desc: bbd98b50-b75b-44a1-b7e8-0a68fd7c6d33
   GET: $LAST_URL/outputs
   redirects: True
   status: 200
@@ -150,6 +163,7 @@
     $.outputs[0].output_key: output_value
 
 - name: get stack output
+  desc: e761f5d7-70f6-4d95-a11b-e5fa0ecb43d2
   GET: $LAST_URL/output_value
   redirects: True
   status: 200
@@ -157,6 +171,7 @@
     $.output.output_value: new_patched_value
 
 - name: delete stack
+  desc: bcf4c359-0a64-4652-b465-df3f688a9d4d
   DELETE: /stacks/$ENVIRON['PREFIX']-stack
   redirects: True
   status: 204
diff --git a/heat_tempest_plugin/tests/api/gabbits/templates.yaml b/heat_tempest_plugin/tests/api/gabbits/templates.yaml
index 7b67054..0533f4a 100644
--- a/heat_tempest_plugin/tests/api/gabbits/templates.yaml
+++ b/heat_tempest_plugin/tests/api/gabbits/templates.yaml
@@ -4,12 +4,14 @@
 
 tests:
 - name: list template versions
+  desc: cbc28c20-e740-43ef-a01b-b1a39f4a0db3
   GET: /template_versions
   status: 200
   response_json_paths:
     $.template_versions[?(@.version='heat_template_version.2017-02-24')].type: hot
 
 - name: list template functions
+  desc: 721ff23c-8527-480f-a090-1c915b4f8430
   GET: /template_versions/heat_template_version.2016-10-14/functions
   status: 200
   response_json_paths:
@@ -17,6 +19,7 @@
       A function for including a file inline.
 
 - name: template validate
+  desc: f307139b-03d0-4006-92b7-81c86c949727
   POST: /validate
   request_headers:
     content-type: application/json
diff --git a/heat_tempest_plugin/tests/api/test_heat_api.py b/heat_tempest_plugin/tests/api/test_heat_api.py
index bf86839..0a44621 100644
--- a/heat_tempest_plugin/tests/api/test_heat_api.py
+++ b/heat_tempest_plugin/tests/api/test_heat_api.py
@@ -14,13 +14,14 @@
 """A test module to exercise the Heat API with gabbi.  """
 
 import os
+import unittest
 
 from gabbi import driver
 from six.moves.urllib import parse as urlparse
+from tempest import config
 
 from heat_tempest_plugin.common import test
 from heat_tempest_plugin.services import clients
-from tempest import config
 
 TESTS_DIR = 'gabbits'
 
@@ -40,5 +41,26 @@
     os.environ['OS_TOKEN'] = manager.identity_client.auth_token
     os.environ['PREFIX'] = test.rand_name('api')
 
-    return driver.build_tests(test_dir, loader, host=host,
-                              url=endpoint, test_loader_name=__name__)
+    def register_test_case_id(test_case):
+        tempest_id = test_case.test_data.get('desc')
+        test_name = test_case.id()
+        if not tempest_id:
+            raise AssertionError(
+                "No Tempest ID registered for API test %s" % test_name)
+
+        def test_id():
+            return test_name + '[id-%s]' % tempest_id
+
+        test_case.id = test_id
+
+    def register_test_suite_ids(test_suite):
+        for test_case in test_suite:
+            if isinstance(test_case, unittest.TestSuite):
+                register_test_suite_ids(test_case)
+            else:
+                register_test_case_id(test_case)
+
+    api_tests = driver.build_tests(test_dir, loader, host=host,
+                                   url=endpoint, test_loader_name=__name__)
+    register_test_suite_ids(api_tests)
+    return api_tests
diff --git a/heat_tempest_plugin/tests/functional/test_create_update_neutron_trunk.py b/heat_tempest_plugin/tests/functional/test_create_update_neutron_trunk.py
index ff5bcaf..bdcb58e 100644
--- a/heat_tempest_plugin/tests/functional/test_create_update_neutron_trunk.py
+++ b/heat_tempest_plugin/tests/functional/test_create_update_neutron_trunk.py
@@ -17,6 +17,7 @@
 
 from tempest.lib import decorators
 
+from heat_tempest_plugin.common import test
 from heat_tempest_plugin.tests.functional import functional_base
 
 
@@ -72,6 +73,7 @@
 '''
 
 
+@test.requires_resource_type('OS::Neutron::Trunk')
 class UpdateTrunkTest(functional_base.FunctionalTestsBase):
 
     @staticmethod
diff --git a/heat_tempest_plugin/tests/scenario/test_server_signal.py b/heat_tempest_plugin/tests/scenario/test_server_signal.py
index a43c74a..1823087 100644
--- a/heat_tempest_plugin/tests/scenario/test_server_signal.py
+++ b/heat_tempest_plugin/tests/scenario/test_server_signal.py
@@ -29,6 +29,7 @@
             'key_name': self.keypair_name,
             'flavor': flavor,
             'image': image,
+            'public_net': self.conf.floating_network_name,
             'timeout': self.conf.build_timeout,
             'user_data_format': user_data_format
         }
diff --git a/requirements.txt b/requirements.txt
index 34fa1fd..d5dbc36 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,7 +2,7 @@
 # of appearance. Changing the order has an impact on the overall integration
 # process, which may cause wedges in the gate later.
 eventlet!=0.18.3,!=0.20.1,<0.21.0,>=0.18.2 # MIT
-keystoneauth1>=3.3.0 # Apache-2.0
+keystoneauth1>=3.4.0 # Apache-2.0
 oslo.config>=5.1.0 # Apache-2.0
 oslo.log>=3.36.0 # Apache-2.0
 oslo.messaging>=5.29.0 # Apache-2.0
@@ -11,7 +11,7 @@
 python-cinderclient>=3.3.0 # Apache-2.0
 gnocchiclient>=3.3.1 # Apache-2.0
 python-heatclient>=1.10.0 # Apache-2.0
-python-neutronclient>=6.3.0 # Apache-2.0
+python-neutronclient>=6.7.0 # Apache-2.0
 python-novaclient>=9.1.0 # Apache-2.0
 python-swiftclient>=3.2.0 # Apache-2.0
 python-zaqarclient>=1.0.0 # Apache-2.0
diff --git a/test-requirements.txt b/test-requirements.txt
index 9f37a05..90882be 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -4,5 +4,5 @@
 
 # Hacking already pins down pep8, pyflakes and flake8
 hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0
-openstackdocstheme>=1.17.0 # Apache-2.0
+openstackdocstheme>=1.18.1 # Apache-2.0
 sphinx!=1.6.6,>=1.6.2 # BSD
