diff --git a/tests/src/test_report_manager.cpp b/tests/src/test_report_manager.cpp
index 83c0a1a..be199c7 100644
--- a/tests/src/test_report_manager.cpp
+++ b/tests/src/test_report_manager.cpp
@@ -234,7 +234,7 @@
     EXPECT_THAT(path, Eq("/"s + reportParams.reportId()));
 }
 
-TEST_F(TestReportManager, DISABLED_failToAddReportWithTooLongFullId)
+TEST_F(TestReportManager, failToAddReportWithTooLongFullId)
 {
     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(0);
@@ -248,7 +248,7 @@
     EXPECT_THAT(path, Eq(std::string()));
 }
 
-TEST_F(TestReportManager, DISABLED_failToAddReportWithTooLongId)
+TEST_F(TestReportManager, failToAddReportWithTooLongId)
 {
     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(0);
@@ -261,7 +261,7 @@
     EXPECT_THAT(path, Eq(std::string()));
 }
 
-TEST_F(TestReportManager, DISABLED_failToAddReportWithTooLongPrefix)
+TEST_F(TestReportManager, failToAddReportWithTooLongPrefix)
 {
     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(0);
@@ -274,7 +274,7 @@
     EXPECT_THAT(path, Eq(std::string()));
 }
 
-TEST_F(TestReportManager, DISABLED_failToAddReportWithTooManyPrefixes)
+TEST_F(TestReportManager, failToAddReportWithTooManyPrefixes)
 {
     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(0);
@@ -294,7 +294,7 @@
     EXPECT_THAT(path, Eq(std::string()));
 }
 
-TEST_F(TestReportManager, DISABLED_failToAddReportWithTooLongName)
+TEST_F(TestReportManager, failToAddReportWithTooLongName)
 {
     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(0);
@@ -307,7 +307,7 @@
     EXPECT_THAT(path, Eq(std::string()));
 }
 
-TEST_F(TestReportManager, DISABLED_failToAddReportTwice)
+TEST_F(TestReportManager, failToAddReportTwice)
 {
     reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock))
         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
@@ -320,7 +320,7 @@
     EXPECT_THAT(path, Eq(std::string()));
 }
 
-TEST_F(TestReportManager, DISABLED_failToAddReportWithInvalidInterval)
+TEST_F(TestReportManager, failToAddReportWithInvalidInterval)
 {
     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(0);
@@ -334,7 +334,7 @@
     EXPECT_THAT(path, Eq(std::string()));
 }
 
-TEST_F(TestReportManager, DISABLED_failToAddReportWithInvalidReportingType)
+TEST_F(TestReportManager, failToAddReportWithInvalidReportingType)
 {
     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(0);
@@ -348,8 +348,7 @@
     EXPECT_THAT(path, Eq(std::string()));
 }
 
-TEST_F(TestReportManager,
-       DISABLED_failToAddReportWithMoreMetricPropertiesThanExpected)
+TEST_F(TestReportManager, failToAddReportWithMoreMetricPropertiesThanExpected)
 {
     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(0);
@@ -381,7 +380,7 @@
     EXPECT_THAT(path, Eq(std::string()));
 }
 
-TEST_F(TestReportManager, DISABLED_failToAddReportWithMoreMetricsThanExpected)
+TEST_F(TestReportManager, failToAddReportWithMoreMetricsThanExpected)
 {
     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(0);
@@ -405,7 +404,7 @@
     EXPECT_THAT(path, Eq(std::string()));
 }
 
-TEST_F(TestReportManager, DISABLED_failToAddReportWithAppendLimitGreaterThanMax)
+TEST_F(TestReportManager, failToAddReportWithAppendLimitGreaterThanMax)
 {
     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(0);
@@ -432,7 +431,7 @@
     EXPECT_THAT(path, Eq(reportMock.getPath()));
 }
 
-TEST_F(TestReportManager, DISABLED_failToAddReportWhenMaxReportIsReached)
+TEST_F(TestReportManager, failToAddReportWhenMaxReportIsReached)
 {
     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(ReportManager::maxReports);
diff --git a/tests/src/test_trigger.cpp b/tests/src/test_trigger.cpp
index cfe0e15..9c68d94 100644
--- a/tests/src/test_trigger.cpp
+++ b/tests/src/test_trigger.cpp
@@ -228,7 +228,7 @@
 }
 
 TEST_F(TestTrigger,
-       DISABLED_settingPropertyReportNamesThrowsExceptionWhenDuplicateReportIds)
+       settingPropertyReportNamesThrowsExceptionWhenDuplicateReportIds)
 {
     std::vector<object_path> newPropertyVal{
         utils::constants::reportDirPath / "report1",
@@ -241,9 +241,8 @@
                 Eq(boost::system::errc::invalid_argument));
 }
 
-TEST_F(
-    TestTrigger,
-    DISABLED_settingPropertyReportNamesThrowsExceptionWhenReportWithTooManyPrefixes)
+TEST_F(TestTrigger,
+       settingPropertyReportNamesThrowsExceptionWhenReportWithTooManyPrefixes)
 {
     std::vector<object_path> newPropertyVal{
         object_path("/xyz/openbmc_project/Telemetry/Reports/P1/P2/MyReport")};
@@ -254,9 +253,8 @@
                 Eq(boost::system::errc::invalid_argument));
 }
 
-TEST_F(
-    TestTrigger,
-    DISABLED_settingPropertyReportNamesThrowsExceptionWhenReportWithTooLongPrefix)
+TEST_F(TestTrigger,
+       settingPropertyReportNamesThrowsExceptionWhenReportWithTooLongPrefix)
 {
     std::vector<object_path> newPropertyVal{
         object_path("/xyz/openbmc_project/Telemetry/Reports/" +
@@ -268,9 +266,8 @@
                 Eq(boost::system::errc::invalid_argument));
 }
 
-TEST_F(
-    TestTrigger,
-    DISABLED_settingPropertyReportNamesThrowsExceptionWhenReportWithTooLongId)
+TEST_F(TestTrigger,
+       settingPropertyReportNamesThrowsExceptionWhenReportWithTooLongId)
 {
     std::vector<object_path> newPropertyVal{
         object_path("/xyz/openbmc_project/Telemetry/Reports/Prefix/" +
@@ -283,7 +280,7 @@
 }
 
 TEST_F(TestTrigger,
-       DISABLED_settingPropertyReportNamesThrowsExceptionWhenReportWithBadPath)
+       settingPropertyReportNamesThrowsExceptionWhenReportWithBadPath)
 {
     std::vector<object_path> newPropertyVal{
         object_path("/xyz/openbmc_project/Telemetry/NotReports/MyReport")};
diff --git a/tests/src/test_trigger_manager.cpp b/tests/src/test_trigger_manager.cpp
index 945c411..a7651ef 100644
--- a/tests/src/test_trigger_manager.cpp
+++ b/tests/src/test_trigger_manager.cpp
@@ -106,7 +106,7 @@
     EXPECT_THAT(path, Eq(triggerMock.getPath()));
 }
 
-TEST_F(TestTriggerManager, DISABLED_failToAddTriggerTwice)
+TEST_F(TestTriggerManager, failToAddTriggerTwice)
 {
     triggerFactoryMock.expectMake(TriggerParams(), Ref(*sut), Ref(storageMock))
         .WillOnce(Return(ByMove(std::move(triggerMockPtr))));
@@ -118,7 +118,7 @@
     EXPECT_THAT(path, Eq(std::string()));
 }
 
-TEST_F(TestTriggerManager, DISABLED_failToAddTriggerWithInvalidId)
+TEST_F(TestTriggerManager, failToAddTriggerWithInvalidId)
 {
     triggerFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(0);
@@ -128,7 +128,7 @@
     EXPECT_THAT(path, Eq(std::string()));
 }
 
-TEST_F(TestTriggerManager, DISABLED_failToAddTriggerWithDuplicatesInReportsIds)
+TEST_F(TestTriggerManager, failToAddTriggerWithDuplicatesInReportsIds)
 {
     triggerFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(0);
@@ -149,7 +149,7 @@
     EXPECT_THAT(path, Eq(triggerMock.getPath()));
 }
 
-TEST_F(TestTriggerManager, DISABLED_failToAddTriggerWithBadReportsPath)
+TEST_F(TestTriggerManager, failToAddTriggerWithBadReportsPath)
 {
     triggerFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(0);
@@ -160,7 +160,7 @@
     EXPECT_THAT(path, Eq(std::string()));
 }
 
-TEST_F(TestTriggerManager, DISABLED_failToAddTriggerWithTooManyReportPrefixes)
+TEST_F(TestTriggerManager, failToAddTriggerWithTooManyReportPrefixes)
 {
     triggerFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(0);
@@ -276,7 +276,7 @@
     EXPECT_THAT(path, Eq("/"s + triggerParams.id()));
 }
 
-TEST_F(TestTriggerManager, DISABLED_failToAddTriggerWithTooLongFullId)
+TEST_F(TestTriggerManager, failToAddTriggerWithTooLongFullId)
 {
     triggerFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(0);
@@ -290,7 +290,7 @@
     EXPECT_THAT(path, Eq(std::string()));
 }
 
-TEST_F(TestTriggerManager, DISABLED_failToAddTriggerWithTooLongId)
+TEST_F(TestTriggerManager, failToAddTriggerWithTooLongId)
 {
     triggerFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(0);
@@ -303,7 +303,7 @@
     EXPECT_THAT(path, Eq(std::string()));
 }
 
-TEST_F(TestTriggerManager, DISABLED_failToAddTriggerWithTooLongPrefix)
+TEST_F(TestTriggerManager, failToAddTriggerWithTooLongPrefix)
 {
     triggerFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(0);
@@ -316,7 +316,7 @@
     EXPECT_THAT(path, Eq(std::string()));
 }
 
-TEST_F(TestTriggerManager, DISABLED_failToAddTriggerWithTooManyPrefixes)
+TEST_F(TestTriggerManager, failToAddTriggerWithTooManyPrefixes)
 {
     triggerFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(0);
@@ -336,7 +336,7 @@
     EXPECT_THAT(path, Eq(std::string()));
 }
 
-TEST_F(TestTriggerManager, DISABLED_failToAddTriggerWithTooLongName)
+TEST_F(TestTriggerManager, failToAddTriggerWithTooLongName)
 {
     triggerFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
         .Times(0);
@@ -349,7 +349,7 @@
     EXPECT_THAT(path, Eq(std::string()));
 }
 
-TEST_F(TestTriggerManager, DISABLED_failToAddTriggerWithTooLongMetricId)
+TEST_F(TestTriggerManager, failToAddTriggerWithTooLongMetricId)
 {
     namespace ts = utils::tstring;
 
@@ -372,7 +372,7 @@
     EXPECT_THAT(path, Eq(std::string()));
 }
 
-TEST_F(TestTriggerManager, DISABLED_failToAddTriggerWhenMaxTriggerIsReached)
+TEST_F(TestTriggerManager, failToAddTriggerWhenMaxTriggerIsReached)
 {
     auto triggerParams = TriggerParams();
 
