diff --git a/test/config/test-group-priority.yaml b/test/config/test-group-priority.yaml
new file mode 100644
index 0000000..ca5005f
--- /dev/null
+++ b/test/config/test-group-priority.yaml
@@ -0,0 +1,17 @@
+group1:
+    led1:
+        Action: "On"
+group2:
+    led1:
+        Action: "Off"
+group3:
+    led1:
+        Action: "Blink"
+        DutyOn: 50
+        Period: 1000
+group4:
+    Priority: 2
+    led1:
+        Action: "On"
+    led2:
+        Action: "Off"
diff --git a/test/config/test-led-priority.yaml b/test/config/test-led-priority.yaml
new file mode 100644
index 0000000..4dc755a
--- /dev/null
+++ b/test/config/test-led-priority.yaml
@@ -0,0 +1,22 @@
+group1:
+    led1:
+        Action: "On"
+        Priority: "On"
+group2:
+    led2:
+        Action: "Off"
+        Priority: "Off"
+group3:
+    led3:
+        Action: "Blink"
+        Priority: "Blink"
+group4:
+    led1:
+        Action: "Off"
+        Priority: "On"
+    led2:
+        Action: "On"
+        Priority: "Off"
+    led3:
+        Action: "On"
+        Priority: "Blink"
diff --git a/test/meson.build b/test/meson.build
index ae1b8e6..010f7f4 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -19,15 +19,37 @@
   endif
 endif
 
+test_yamls = [
+  'test-group-priority',
+  'test-led-priority'
+]
+
 test_sources = [
   '../manager/manager.cpp',
-  '../utils.cpp'
+  '../utils.cpp',
 ]
 
+foreach yaml : test_yamls
+  gen_hpp = custom_target(
+    yaml + '.hpp',
+    command : [
+        prog_python,
+        meson.project_source_root() + '/scripts/parse_led.py',
+        '--filename', meson.project_source_root() + '/test/config/' + yaml + '.yaml',
+        '-o', meson.current_build_dir(),
+        '--output-filename', yaml + '.hpp'
+    ],
+    output : yaml + '.hpp')
+
+  test_sources += [ gen_hpp ]
+endforeach
+
 tests = [
   'utest.cpp',
   'utest-led-json.cpp',
   'utest-group-priority.cpp',
+  'utest-led-yaml-group-priority.cpp',
+  'utest-led-yaml-led-priority.cpp',
 ]
 if get_option('persistent-led-asserted').allowed()
   test_sources += [
diff --git a/test/utest-led-yaml-group-priority.cpp b/test/utest-led-yaml-group-priority.cpp
new file mode 100644
index 0000000..e48a199
--- /dev/null
+++ b/test/utest-led-yaml-group-priority.cpp
@@ -0,0 +1,101 @@
+#include "group.hpp"
+#include "ledlayout.hpp"
+#include "manager.hpp"
+#include "test-group-priority.hpp"
+
+#include <sdbusplus/bus.hpp>
+
+#include <algorithm>
+#include <set>
+
+#include <gtest/gtest.h>
+
+using namespace phosphor::led;
+
+using Action = phosphor::led::Layout::Action;
+
+// systemLedMap is generated code
+// static const phosphor::led::GroupMap systemLedMap = {};
+
+const std::string basePath = "/xyz/openbmc_project/led/groups/";
+
+TEST(YamlGroupPriorityTest, assertYAMLLedOn)
+{
+    const std::string groupPath = basePath + "group1";
+    EXPECT_EQ(systemLedMap.contains(groupPath), true);
+
+    phosphor::led::Layout::GroupLayout group = systemLedMap.at(groupPath);
+
+    EXPECT_EQ(group.priority, 0);
+    EXPECT_EQ(group.actionSet.size(), 1);
+
+    for (auto& led : group.actionSet)
+    {
+        EXPECT_EQ(led.name, "led1");
+        EXPECT_EQ(led.action, Action::On);
+    }
+}
+
+TEST(YamlGroupPriorityTest, assertYAMLLedOff)
+{
+    const std::string groupPath = basePath + "group2";
+    EXPECT_EQ(systemLedMap.contains(groupPath), true);
+
+    phosphor::led::Layout::GroupLayout group = systemLedMap.at(groupPath);
+
+    EXPECT_EQ(group.priority, 0);
+    EXPECT_EQ(group.actionSet.size(), 1);
+
+    for (auto& led : group.actionSet)
+    {
+        EXPECT_EQ(led.name, "led1");
+        EXPECT_EQ(led.action, Action::Off);
+    }
+}
+
+TEST(YamlGroupPriorityTest, assertYAMLLedBlink)
+{
+    const std::string groupPath = basePath + "group3";
+    EXPECT_EQ(systemLedMap.contains(groupPath), true);
+
+    phosphor::led::Layout::GroupLayout group = systemLedMap.at(groupPath);
+
+    EXPECT_EQ(group.priority, 0);
+    EXPECT_EQ(group.actionSet.size(), 1);
+
+    for (auto& led : group.actionSet)
+    {
+        EXPECT_EQ(led.name, "led1");
+        EXPECT_EQ(led.action, Action::Blink);
+        EXPECT_EQ(led.dutyOn, 50);
+        EXPECT_EQ(led.period, 1000);
+    }
+}
+
+TEST(YamlGroupPriorityTest, assertYAMLGroupPriority)
+{
+    const std::string groupPath = basePath + "group4";
+    EXPECT_EQ(systemLedMap.contains(groupPath), true);
+
+    phosphor::led::Layout::GroupLayout group = systemLedMap.at(groupPath);
+
+    EXPECT_EQ(group.priority, 2);
+    EXPECT_EQ(group.actionSet.size(), 2);
+
+    int found = 0;
+    for (auto& led : group.actionSet)
+    {
+        if (led.name == "led1")
+        {
+            EXPECT_EQ(led.action, Action::On);
+            found++;
+        }
+        if (led.name == "led2")
+        {
+            EXPECT_EQ(led.action, Action::Off);
+            found++;
+        }
+    }
+
+    EXPECT_EQ(found, group.actionSet.size());
+}
diff --git a/test/utest-led-yaml-led-priority.cpp b/test/utest-led-yaml-led-priority.cpp
new file mode 100644
index 0000000..4cee0f0
--- /dev/null
+++ b/test/utest-led-yaml-led-priority.cpp
@@ -0,0 +1,74 @@
+#include "group.hpp"
+#include "ledlayout.hpp"
+#include "manager.hpp"
+#include "test-led-priority.hpp"
+
+#include <sdbusplus/bus.hpp>
+
+#include <algorithm>
+#include <set>
+
+#include <gtest/gtest.h>
+
+using namespace phosphor::led;
+
+using Action = phosphor::led::Layout::Action;
+
+// systemLedMap is generated code
+// static const phosphor::led::GroupMap systemLedMap = {};
+
+const std::string basePath = "/xyz/openbmc_project/led/groups/";
+
+TEST(YamlLedPriorityTest, assertPriorityOn)
+{
+    const std::string groupPath = basePath + "group1";
+    EXPECT_EQ(systemLedMap.contains(groupPath), true);
+
+    phosphor::led::Layout::GroupLayout group = systemLedMap.at(groupPath);
+
+    EXPECT_EQ(group.priority, 0);
+    EXPECT_EQ(group.actionSet.size(), 1);
+
+    for (auto& led : group.actionSet)
+    {
+        EXPECT_EQ(led.name, "led1");
+        EXPECT_EQ(led.action, Action::On);
+        EXPECT_EQ(led.priority, Action::On);
+    }
+}
+
+TEST(YamlLedPriorityTest, assertPriorityOff)
+{
+    const std::string groupPath = basePath + "group2";
+    EXPECT_EQ(systemLedMap.contains(groupPath), true);
+
+    phosphor::led::Layout::GroupLayout group = systemLedMap.at(groupPath);
+
+    EXPECT_EQ(group.priority, 0);
+    EXPECT_EQ(group.actionSet.size(), 1);
+
+    for (auto& led : group.actionSet)
+    {
+        EXPECT_EQ(led.name, "led2");
+        EXPECT_EQ(led.action, Action::Off);
+        EXPECT_EQ(led.priority, Action::Off);
+    }
+}
+
+TEST(YamlLedPriorityTest, assertPriorityBlink)
+{
+    const std::string groupPath = basePath + "group3";
+    EXPECT_EQ(systemLedMap.contains(groupPath), true);
+
+    phosphor::led::Layout::GroupLayout group = systemLedMap.at(groupPath);
+
+    EXPECT_EQ(group.priority, 0);
+    EXPECT_EQ(group.actionSet.size(), 1);
+
+    for (auto& led : group.actionSet)
+    {
+        EXPECT_EQ(led.name, "led3");
+        EXPECT_EQ(led.action, Action::Blink);
+        EXPECT_EQ(led.priority, Action::Blink);
+    }
+}
