diff --git a/testsuite/cibase.py b/testsuite/cibase.py
index 075535b1..6c66a193 100755
--- a/testsuite/cibase.py
+++ b/testsuite/cibase.py
@@ -77,6 +77,42 @@ class CIBaseTest(CIBuilder):
             process.run('gpgconf --kill gpg-agent')
             shutil.rmtree(gnupg_home, True)
 
+    def perform_installer_build_test(self, target, distro, machine, **kwargs):
+        self.configure(**kwargs)
+
+        # append ci_build.conf
+        with open(self.build_dir + '/conf/ci_build.conf', 'a') as f:
+            f.write('\n#Installer mage build configuration\n')
+            f.write(f'DISTRO ?= "{distro}"\n');
+            f.write(f'MACHINE ?= "{machine}"\n');
+            f.write('BBMULTICONFIG += "isar-installer installer-target"\n')
+            f.write('INSTALLER_TARGET_IMAGE = "isar-image-ci"\n')
+            f.write('INSTALLER_UNATTENDED = "1"\n')
+            f.write('INSTALLER_TARGET_DEVICE = "/dev/sda"\n')
+            f.write('INSTALLER_TARGET_OVERWRITE = "OVERWRITE"\n')
+
+        self.log.info("Starting build...")
+
+        self.bitbake(target, **kwargs)
+
+    def perform_installer_run_test(self, arch, distro, **kwargs):
+        install_target = CIUtils.getVars('DEPLOY_DIR_IMAGE') + '/install.wic'
+
+        # Create empty file installer will write to
+        with open(install_target, 'w') as f:
+            size = 4294967296 # 4GiB should be enough for the target
+            f.write("\0" * size)
+
+        # append ci_build.conf
+        with open(self.build_dir + '/conf/ci_build.conf', 'a') as f:
+            f.write('\n#Installer image boot configuration\n')
+            f.write(f'QEMU_DISK_ARGS = "-bios /usr/share/ovmf/OVMF.fd"\n')
+            f.write(f'QEMU_DISK_ARGS += "-hda {install_target}"\n')
+            f.write(f'QEMU_DISK_ARGS += "-hdb ##ROOTFS_IMAGE##"\n')
+
+        # Machine boots from sdb, writes image to sda and reboots to sda then
+        self.vm_start(arch, distro, image='isar-image-installer')
+
     def perform_ccache_test(self, targets, **kwargs):
         def ccache_stats(dir, field):
             # Look ccache source's 'src/core/Statistic.hpp' for field meanings
diff --git a/testsuite/citest.py b/testsuite/citest.py
index ee965278..2de547ad 100755
--- a/testsuite/citest.py
+++ b/testsuite/citest.py
@@ -122,6 +122,26 @@ class CcacheTest(CIBaseTest):
         self.perform_ccache_test(targets)
 
 
+class InstallerTest(CIBaseTest):
+
+    """
+    Installer test
+
+    :avocado: tags=installer,full
+    """
+
+    def test_installer_build(self):
+        self.init()
+        target = "mc:isar-installer:isar-image-installer"
+        distro = "debian-bookworm"
+        machine = "qemuamd64"
+        self.perform_installer_build_test(target, distro, machine)
+
+    def test_installer_run(self):
+        self.init()
+        self.perform_installer_run_test('amd64', 'bookworm')
+
+
 class CrossTest(CIBaseTest):
 
     """
