diff --git a/ironic_tempest_plugin/config.py b/ironic_tempest_plugin/config.py
index 8d10b00..3594b5b 100644
--- a/ironic_tempest_plugin/config.py
+++ b/ironic_tempest_plugin/config.py
@@ -120,6 +120,9 @@
     cfg.ListOpt('enabled_hardware_types',
                 default=['ipmi'],
                 help="List of Ironic enabled hardware types."),
+    cfg.ListOpt('enabled_bios_interfaces',
+                default=['fake'],
+                help="List of Ironic enabled bios interfaces."),
     cfg.ListOpt('enabled_deploy_interfaces',
                 default=['iscsi', 'direct'],
                 help="List of Ironic enabled deploy interfaces."),
diff --git a/ironic_tempest_plugin/services/baremetal/v1/json/baremetal_client.py b/ironic_tempest_plugin/services/baremetal/v1/json/baremetal_client.py
index 11fdebf..25420bc 100644
--- a/ironic_tempest_plugin/services/baremetal/v1/json/baremetal_client.py
+++ b/ironic_tempest_plugin/services/baremetal/v1/json/baremetal_client.py
@@ -89,6 +89,11 @@
         return self._list_request('/nodes/%s/states' % uuid)
 
     @base.handle_errors
+    def list_node_bios_settings(self, uuid):
+        """List node bios settings."""
+        return self._list_request('/nodes/%s/bios' % uuid)
+
+    @base.handle_errors
     def list_ports_detail(self, **kwargs):
         """Details list all existing ports."""
         return self._list_request('/ports/detail', **kwargs)
@@ -410,6 +415,7 @@
                            'properties/local_gb',
                            'properties/memory_mb',
                            'driver',
+                           'bios_interface',
                            'deploy_interface',
                            'rescue_interface',
                            'instance_uuid',
diff --git a/ironic_tempest_plugin/tests/scenario/baremetal_standalone_manager.py b/ironic_tempest_plugin/tests/scenario/baremetal_standalone_manager.py
index 74367f9..c7d6b50 100644
--- a/ironic_tempest_plugin/tests/scenario/baremetal_standalone_manager.py
+++ b/ironic_tempest_plugin/tests/scenario/baremetal_standalone_manager.py
@@ -359,6 +359,38 @@
         # was actually removing the metadata, because there was not a good
         # way to achieve that check for vms and baremetal
 
+    def check_bios_apply_and_reset_configuration(self, node, settings):
+        clean_steps = [
+            {
+                "interface": "bios",
+                "step": "apply_configuration",
+                "args": {"settings": settings}
+            }
+        ]
+        self.manual_cleaning(node, clean_steps=clean_steps)
+
+        # query the api to check node bios settings
+        _, bios_settings = self.baremetal_client.list_node_bios_settings(
+            node['uuid'])
+
+        for setting in settings:
+            self.assertIn(setting['name'],
+                          [i['name'] for i in bios_settings['bios']])
+            self.assertIn(setting['value'],
+                          [i['value'] for i in bios_settings['bios']])
+
+        # reset bios and ensure that the settings are not there
+        clean_steps = [
+            {
+                "interface": "bios",
+                "step": "factory_reset"
+            }
+        ]
+        self.manual_cleaning(node, clean_steps=clean_steps)
+        _, bios_settings = self.baremetal_client.list_node_bios_settings(
+            node['uuid'])
+        self.assertEqual([], bios_settings['bios'])
+
 
 class BaremetalStandaloneScenarioTest(BaremetalStandaloneManager):
 
@@ -368,6 +400,12 @@
     # The node driver to use in the test
     driver = None
 
+    # The bios interface to use by the HW type. The bios interface of the
+    # node used in the test will be set to this value. If set to None, the
+    # node will retain its existing bios_interface value (which may have been
+    # set via a different test).
+    bios_interface = None
+
     # The deploy interface to use by the HW type. The deploy interface of
     # the node used in the test will be set to this value. If set to None,
     # the node will retain its existing deploy_interface value (which may have
@@ -404,6 +442,13 @@
                     'driver': cls.driver,
                     'enabled_drivers': CONF.baremetal.enabled_drivers,
                     'enabled_hw_types': CONF.baremetal.enabled_hardware_types})
+        if (cls.bios_interface and cls.bios_interface not in
+                CONF.baremetal.enabled_bios_interfaces):
+            raise cls.skipException(
+                "Bios interface %(iface)s required by the test is not in the "
+                "list of enabled bios interfaces %(enabled)s" % {
+                    'iface': cls.bios_interface,
+                    'enabled': CONF.baremetal.enabled_bios_interfaces})
         if (cls.deploy_interface and cls.deploy_interface not in
                 CONF.baremetal.enabled_deploy_interfaces):
             raise cls.skipException(
@@ -446,6 +491,8 @@
         if not uuidutils.is_uuid_like(cls.image_ref):
             image_checksum = cls.image_checksum
         boot_kwargs = {'image_checksum': image_checksum}
+        if cls.bios_interface:
+            boot_kwargs['bios_interface'] = cls.bios_interface
         if cls.deploy_interface:
             boot_kwargs['deploy_interface'] = cls.deploy_interface
         if cls.rescue_interface:
diff --git a/ironic_tempest_plugin/tests/scenario/ironic_standalone/test_bios.py b/ironic_tempest_plugin/tests/scenario/ironic_standalone/test_bios.py
new file mode 100644
index 0000000..be92c16
--- /dev/null
+++ b/ironic_tempest_plugin/tests/scenario/ironic_standalone/test_bios.py
@@ -0,0 +1,51 @@
+#
+# Copyright 2018 Red Hat Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from oslo_log import log as logging
+from tempest import config
+from tempest.lib import decorators
+
+from ironic_tempest_plugin.tests.scenario import \
+    baremetal_standalone_manager as bsm
+
+LOG = logging.getLogger(__name__)
+CONF = config.CONF
+
+
+class BaremetalFakeBios(
+        bsm.BaremetalStandaloneScenarioTest):
+
+    driver = 'fake-hardware'
+    bios_interface = 'fake'
+    deploy_interface = 'iscsi'
+    image_ref = CONF.baremetal.whole_disk_image_ref
+    wholedisk_image = True
+    delete_node = False
+    api_microversion = '1.40'
+
+    @decorators.idempotent_id('ef55c44a-cc10-4cf6-8fda-85f0c0793150')
+    def test_bios_apply_and_reset_configuration(self):
+        settings = [
+            {
+                "name": "setting1_name",
+                "value": "setting1_value"
+            },
+            {
+                "name": "setting2_name",
+                "value": "setting2_value"
+            }
+        ]
+
+        self.check_bios_apply_and_reset_configuration(self.node, settings)
