diff --git a/worker/test/src/RTC/RTCP/TestBye.cpp b/worker/test/src/RTC/RTCP/TestBye.cpp
index fa77458c35..2085e0791c 100644
--- a/worker/test/src/RTC/RTCP/TestBye.cpp
+++ b/worker/test/src/RTC/RTCP/TestBye.cpp
@@ -47,11 +47,11 @@ SCENARIO("RTCP BYE parsing", "[parser][rtcp][bye]")
 {
 	SECTION("parse BYE packet")
 	{
-		ByePacket* packet = ByePacket::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<ByePacket> packet{ ByePacket::Parse(buffer, sizeof(buffer)) };
 
 		REQUIRE(packet);
 
-		verify(packet);
+		verify(packet.get());
 
 		SECTION("serialize packet instance")
 		{
@@ -64,8 +64,6 @@ SCENARIO("RTCP BYE parsing", "[parser][rtcp][bye]")
 				REQUIRE(std::memcmp(buffer, serialized, sizeof(buffer)) == 0);
 			}
 		}
-
-		delete packet;
 	}
 
 	SECTION("create ByePacket")
diff --git a/worker/test/src/RTC/RTCP/TestFeedbackPsAfb.cpp b/worker/test/src/RTC/RTCP/TestFeedbackPsAfb.cpp
index cbea3a75cd..3d7f8227a1 100644
--- a/worker/test/src/RTC/RTCP/TestFeedbackPsAfb.cpp
+++ b/worker/test/src/RTC/RTCP/TestFeedbackPsAfb.cpp
@@ -39,11 +39,11 @@ SCENARIO("RTCP Feedback PS AFB parsing", "[parser][rtcp][feedback-ps][afb]")
 	{
 		using namespace TestFeedbackPsAfb;
 
-		FeedbackPsAfbPacket* packet = FeedbackPsAfbPacket::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<FeedbackPsAfbPacket> packet{ FeedbackPsAfbPacket::Parse(buffer, sizeof(buffer)) };
 
 		REQUIRE(packet);
 
-		verify(packet);
+		verify(packet.get());
 
 		SECTION("serialize packet instance")
 		{
@@ -56,7 +56,5 @@ SCENARIO("RTCP Feedback PS AFB parsing", "[parser][rtcp][feedback-ps][afb]")
 				REQUIRE(std::memcmp(buffer, serialized, sizeof(buffer)) == 0);
 			}
 		}
-
-		delete packet;
 	}
 }
diff --git a/worker/test/src/RTC/RTCP/TestFeedbackPsLei.cpp b/worker/test/src/RTC/RTCP/TestFeedbackPsLei.cpp
index 98196a2e0e..485a6382cc 100644
--- a/worker/test/src/RTC/RTCP/TestFeedbackPsLei.cpp
+++ b/worker/test/src/RTC/RTCP/TestFeedbackPsLei.cpp
@@ -41,11 +41,11 @@ SCENARIO("RTCP Feedback PS LEI parsing", "[parser][rtcp][feedback-ps][lei]")
 
 	SECTION("parse FeedbackPsLeiPacket")
 	{
-		FeedbackPsLeiPacket* packet = FeedbackPsLeiPacket::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<FeedbackPsLeiPacket> packet{ FeedbackPsLeiPacket::Parse(buffer, sizeof(buffer)) };
 
 		REQUIRE(packet);
 
-		verify(packet);
+		verify(packet.get());
 
 		SECTION("serialize packet instance")
 		{
@@ -58,8 +58,6 @@ SCENARIO("RTCP Feedback PS LEI parsing", "[parser][rtcp][feedback-ps][lei]")
 				REQUIRE(std::memcmp(buffer, serialized, sizeof(buffer)) == 0);
 			}
 		}
-
-		delete packet;
 	}
 
 	SECTION("create FeedbackPsLeiPacket")
diff --git a/worker/test/src/RTC/RTCP/TestFeedbackPsPli.cpp b/worker/test/src/RTC/RTCP/TestFeedbackPsPli.cpp
index 3182ddcf04..c5559cd1bb 100644
--- a/worker/test/src/RTC/RTCP/TestFeedbackPsPli.cpp
+++ b/worker/test/src/RTC/RTCP/TestFeedbackPsPli.cpp
@@ -2,6 +2,7 @@
 #include "RTC/RTCP/FeedbackPsPli.hpp"
 #include <catch2/catch_test_macros.hpp>
 #include <cstring> // std::memcmp()
+#include <memory>
 
 using namespace RTC::RTCP;
 
@@ -35,11 +36,11 @@ SCENARIO("RTCP Feeback RTP PLI parsing", "[parser][rtcp][feedback-ps][pli]")
 
 	SECTION("parse FeedbackPsPliPacket")
 	{
-		FeedbackPsPliPacket* packet = FeedbackPsPliPacket::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<FeedbackPsPliPacket> packet{ FeedbackPsPliPacket::Parse(buffer, sizeof(buffer)) };
 
 		REQUIRE(packet);
 
-		verify(packet);
+		verify(packet.get());
 
 		SECTION("serialize packet instance")
 		{
@@ -52,8 +53,6 @@ SCENARIO("RTCP Feeback RTP PLI parsing", "[parser][rtcp][feedback-ps][pli]")
 				REQUIRE(std::memcmp(buffer, serialized, sizeof(buffer)) == 0);
 			}
 		}
-
-		delete packet;
 	}
 
 	SECTION("create FeedbackPsPliPacket")
diff --git a/worker/test/src/RTC/RTCP/TestFeedbackPsRemb.cpp b/worker/test/src/RTC/RTCP/TestFeedbackPsRemb.cpp
index c0c9b21f88..e71eb05f95 100644
--- a/worker/test/src/RTC/RTCP/TestFeedbackPsRemb.cpp
+++ b/worker/test/src/RTC/RTCP/TestFeedbackPsRemb.cpp
@@ -43,11 +43,11 @@ SCENARIO("RTCP Feedback PS parsing", "[parser][rtcp][feedback-ps][remb]")
 
 	SECTION("parse FeedbackPsRembPacket")
 	{
-		FeedbackPsRembPacket* packet = FeedbackPsRembPacket::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<FeedbackPsRembPacket> packet{ FeedbackPsRembPacket::Parse(buffer, sizeof(buffer)) };
 
 		REQUIRE(packet);
 
-		verify(packet);
+		verify(packet.get());
 
 		SECTION("serialize packet instance")
 		{
@@ -60,8 +60,6 @@ SCENARIO("RTCP Feedback PS parsing", "[parser][rtcp][feedback-ps][remb]")
 				REQUIRE(std::memcmp(buffer, serialized, sizeof(buffer)) == 0);
 			}
 		}
-
-		delete packet;
 	}
 
 	SECTION("create FeedbackPsRembPacket")
diff --git a/worker/test/src/RTC/RTCP/TestFeedbackPsRpsi.cpp b/worker/test/src/RTC/RTCP/TestFeedbackPsRpsi.cpp
index 796868ad50..2b5fe999af 100644
--- a/worker/test/src/RTC/RTCP/TestFeedbackPsRpsi.cpp
+++ b/worker/test/src/RTC/RTCP/TestFeedbackPsRpsi.cpp
@@ -49,11 +49,11 @@ SCENARIO("RTCP Feedback PS RPSI parsing", "[parser][rtcp][feedback-ps][rpsi]")
 
 	SECTION("parse FeedbackPsRpsiPacket")
 	{
-		FeedbackPsRpsiPacket* packet = FeedbackPsRpsiPacket::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<FeedbackPsRpsiPacket> packet{ FeedbackPsRpsiPacket::Parse(buffer, sizeof(buffer)) };
 
 		REQUIRE(packet);
 
-		verify(packet);
+		verify(packet.get());
 
 		SECTION("serialize packet instance")
 		{
@@ -66,7 +66,5 @@ SCENARIO("RTCP Feedback PS RPSI parsing", "[parser][rtcp][feedback-ps][rpsi]")
 				REQUIRE(std::memcmp(buffer, serialized, sizeof(buffer)) == 0);
 			}
 		}
-
-		delete packet;
 	}
 }
diff --git a/worker/test/src/RTC/RTCP/TestFeedbackPsSli.cpp b/worker/test/src/RTC/RTCP/TestFeedbackPsSli.cpp
index f01999a39d..d3def79324 100644
--- a/worker/test/src/RTC/RTCP/TestFeedbackPsSli.cpp
+++ b/worker/test/src/RTC/RTCP/TestFeedbackPsSli.cpp
@@ -46,11 +46,11 @@ SCENARIO("RTCP Feedback PS SLI parsing", "[parser][rtcp][feedback-ps][sli]")
 
 	SECTION("parse FeedbackPsSliPacket")
 	{
-		FeedbackPsSliPacket* packet = FeedbackPsSliPacket::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<FeedbackPsSliPacket> packet{ FeedbackPsSliPacket::Parse(buffer, sizeof(buffer)) };
 
 		REQUIRE(packet);
 
-		verify(packet);
+		verify(packet.get());
 
 		SECTION("serialize packet instance")
 		{
@@ -63,7 +63,5 @@ SCENARIO("RTCP Feedback PS SLI parsing", "[parser][rtcp][feedback-ps][sli]")
 				REQUIRE(std::memcmp(buffer, serialized, sizeof(buffer)) == 0);
 			}
 		}
-
-		delete packet;
 	}
 }
diff --git a/worker/test/src/RTC/RTCP/TestFeedbackPsTst.cpp b/worker/test/src/RTC/RTCP/TestFeedbackPsTst.cpp
index de8fc4d1ef..99427598ee 100644
--- a/worker/test/src/RTC/RTCP/TestFeedbackPsTst.cpp
+++ b/worker/test/src/RTC/RTCP/TestFeedbackPsTst.cpp
@@ -45,11 +45,11 @@ SCENARIO("RTCP Feedback PS TSTN parsing", "[parser][rtcp][feedback-ps][tstn]")
 
 	SECTION("parse FeedbackPsTstPacket")
 	{
-		FeedbackPsTstnPacket* packet = FeedbackPsTstnPacket::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<FeedbackPsTstnPacket> packet{ FeedbackPsTstnPacket::Parse(buffer, sizeof(buffer)) };
 
 		REQUIRE(packet);
 
-		verify(packet);
+		verify(packet.get());
 
 		SECTION("serialize packet instance")
 		{
@@ -62,8 +62,6 @@ SCENARIO("RTCP Feedback PS TSTN parsing", "[parser][rtcp][feedback-ps][tstn]")
 				REQUIRE(std::memcmp(buffer, serialized, sizeof(buffer)) == 0);
 			}
 		}
-
-		delete packet;
 	}
 
 	SECTION("create FeedbackPsTstPacket")
diff --git a/worker/test/src/RTC/RTCP/TestFeedbackPsVbcm.cpp b/worker/test/src/RTC/RTCP/TestFeedbackPsVbcm.cpp
index 3067c7367c..9743091158 100644
--- a/worker/test/src/RTC/RTCP/TestFeedbackPsVbcm.cpp
+++ b/worker/test/src/RTC/RTCP/TestFeedbackPsVbcm.cpp
@@ -55,11 +55,11 @@ SCENARIO("RTCP Feedback PS VBCM parsing", "[parser][rtcp][feedback-ps][vbcm]")
 
 	SECTION("parse FeedbackPsVbcmPacket")
 	{
-		FeedbackPsVbcmPacket* packet = FeedbackPsVbcmPacket::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<FeedbackPsVbcmPacket> packet{ FeedbackPsVbcmPacket::Parse(buffer, sizeof(buffer)) };
 
 		REQUIRE(packet);
 
-		verify(packet);
+		verify(packet.get());
 
 		SECTION("serialize packet instance")
 		{
@@ -72,7 +72,5 @@ SCENARIO("RTCP Feedback PS VBCM parsing", "[parser][rtcp][feedback-ps][vbcm]")
 				REQUIRE(std::memcmp(buffer, serialized, sizeof(buffer)) == 0);
 			}
 		}
-
-		delete packet;
 	}
 }
diff --git a/worker/test/src/RTC/RTCP/TestFeedbackRtpEcn.cpp b/worker/test/src/RTC/RTCP/TestFeedbackRtpEcn.cpp
index 06c1d93dd9..1536de5130 100644
--- a/worker/test/src/RTC/RTCP/TestFeedbackRtpEcn.cpp
+++ b/worker/test/src/RTC/RTCP/TestFeedbackRtpEcn.cpp
@@ -61,11 +61,11 @@ SCENARIO("RTCP Feeback RTP ECN parsing", "[parser][rtcp][feedback-rtp][ecn]")
 	{
 		using namespace TestFeedbackRtpEcn;
 
-		FeedbackRtpEcnPacket* packet = FeedbackRtpEcnPacket::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<FeedbackRtpEcnPacket> packet{ FeedbackRtpEcnPacket::Parse(buffer, sizeof(buffer)) };
 
 		REQUIRE(packet);
 
-		verify(packet);
+		verify(packet.get());
 
 		SECTION("serialize packet instance")
 		{
@@ -78,7 +78,5 @@ SCENARIO("RTCP Feeback RTP ECN parsing", "[parser][rtcp][feedback-rtp][ecn]")
 				REQUIRE(std::memcmp(buffer, serialized, sizeof(buffer)) == 0);
 			}
 		}
-
-		delete packet;
 	}
 }
diff --git a/worker/test/src/RTC/RTCP/TestFeedbackRtpNack.cpp b/worker/test/src/RTC/RTCP/TestFeedbackRtpNack.cpp
index 64ed4ee994..2d62caa2bd 100644
--- a/worker/test/src/RTC/RTCP/TestFeedbackRtpNack.cpp
+++ b/worker/test/src/RTC/RTCP/TestFeedbackRtpNack.cpp
@@ -45,11 +45,12 @@ SCENARIO("RTCP Feeback RTP NACK parsing", "[parser][rtcp][feedback-rtp][nack]")
 
 	SECTION("parse FeedbackRtpNackItem")
 	{
-		FeedbackRtpNackPacket* packet = FeedbackRtpNackPacket::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<FeedbackRtpNackPacket> packet{ FeedbackRtpNackPacket::Parse(
+			buffer, sizeof(buffer)) };
 
 		REQUIRE(packet);
 
-		verify(packet);
+		verify(packet.get());
 
 		SECTION("serialize packet instance")
 		{
@@ -62,8 +63,6 @@ SCENARIO("RTCP Feeback RTP NACK parsing", "[parser][rtcp][feedback-rtp][nack]")
 				REQUIRE(std::memcmp(buffer, serialized, sizeof(buffer)) == 0);
 			}
 		}
-
-		delete packet;
 	}
 
 	SECTION("create FeedbackRtpNackPacket")
diff --git a/worker/test/src/RTC/RTCP/TestFeedbackRtpSrReq.cpp b/worker/test/src/RTC/RTCP/TestFeedbackRtpSrReq.cpp
index 8b1e4036cd..1604dfabc4 100644
--- a/worker/test/src/RTC/RTCP/TestFeedbackRtpSrReq.cpp
+++ b/worker/test/src/RTC/RTCP/TestFeedbackRtpSrReq.cpp
@@ -35,11 +35,12 @@ SCENARIO("RTCP Feeback RTP SR-REQ parsing", "[parser][rtcp][feedback-rtp][sr-req
 
 	SECTION("parse FeedbackRtpSrReqPacket")
 	{
-		FeedbackRtpSrReqPacket* packet = FeedbackRtpSrReqPacket::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<FeedbackRtpSrReqPacket> packet{ FeedbackRtpSrReqPacket::Parse(
+			buffer, sizeof(buffer)) };
 
 		REQUIRE(packet);
 
-		verify(packet);
+		verify(packet.get());
 
 		SECTION("serialize packet instance")
 		{
@@ -52,8 +53,6 @@ SCENARIO("RTCP Feeback RTP SR-REQ parsing", "[parser][rtcp][feedback-rtp][sr-req
 				REQUIRE(std::memcmp(buffer, serialized, sizeof(buffer)) == 0);
 			}
 		}
-
-		delete packet;
 	}
 
 	SECTION("create FeedbackRtpSrReqPacket")
diff --git a/worker/test/src/RTC/RTCP/TestFeedbackRtpTllei.cpp b/worker/test/src/RTC/RTCP/TestFeedbackRtpTllei.cpp
index 654a11d251..f39ff48e7a 100644
--- a/worker/test/src/RTC/RTCP/TestFeedbackRtpTllei.cpp
+++ b/worker/test/src/RTC/RTCP/TestFeedbackRtpTllei.cpp
@@ -45,11 +45,12 @@ SCENARIO("RTCP Feeback RTP TLLEI parsing", "[parser][rtcp][feedback-rtp][tllei]"
 	{
 		using namespace TestFeedbackRtpTllei;
 
-		FeedbackRtpTlleiPacket* packet = FeedbackRtpTlleiPacket::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<FeedbackRtpTlleiPacket> packet{ FeedbackRtpTlleiPacket::Parse(
+			buffer, sizeof(buffer)) };
 
 		REQUIRE(packet);
 
-		verify(packet);
+		verify(packet.get());
 
 		SECTION("serialize packet instance")
 		{
@@ -62,7 +63,5 @@ SCENARIO("RTCP Feeback RTP TLLEI parsing", "[parser][rtcp][feedback-rtp][tllei]"
 				REQUIRE(std::memcmp(buffer, serialized, sizeof(buffer)) == 0);
 			}
 		}
-
-		delete packet;
 	}
 }
diff --git a/worker/test/src/RTC/RTCP/TestFeedbackRtpTmmb.cpp b/worker/test/src/RTC/RTCP/TestFeedbackRtpTmmb.cpp
index fc17fcf23f..b099aa448e 100644
--- a/worker/test/src/RTC/RTCP/TestFeedbackRtpTmmb.cpp
+++ b/worker/test/src/RTC/RTCP/TestFeedbackRtpTmmb.cpp
@@ -48,11 +48,12 @@ SCENARIO("RTCP Feeback RTP TMMBR parsing", "[parser][rtcp][feedback-rtp][tmmb]")
 
 	SECTION("parse FeedbackRtpTmmbrPacket")
 	{
-		FeedbackRtpTmmbrPacket* packet = FeedbackRtpTmmbrPacket::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<FeedbackRtpTmmbrPacket> packet{ FeedbackRtpTmmbrPacket::Parse(
+			buffer, sizeof(buffer)) };
 
 		REQUIRE(packet);
 
-		verify(packet);
+		verify(packet.get());
 
 		SECTION("serialize packet instance")
 		{
@@ -64,15 +65,12 @@ SCENARIO("RTCP Feeback RTP TMMBR parsing", "[parser][rtcp][feedback-rtp][tmmb]")
 			// represent the same content.
 			SECTION("create a packet out of the serialized buffer")
 			{
-				FeedbackRtpTmmbrPacket* packet = FeedbackRtpTmmbrPacket::Parse(buffer, sizeof(buffer));
+				std::unique_ptr<FeedbackRtpTmmbrPacket> packet{ FeedbackRtpTmmbrPacket::Parse(
+					buffer, sizeof(buffer)) };
 
-				verify(packet);
-
-				delete packet;
+				verify(packet.get());
 			}
 		}
-
-		delete packet;
 	}
 
 	SECTION("create FeedbackRtpTmmbrPacket")
diff --git a/worker/test/src/RTC/RTCP/TestPacket.cpp b/worker/test/src/RTC/RTCP/TestPacket.cpp
index 7755e0be38..48218dbb12 100644
--- a/worker/test/src/RTC/RTCP/TestPacket.cpp
+++ b/worker/test/src/RTC/RTCP/TestPacket.cpp
@@ -18,11 +18,9 @@ SCENARIO("RTCP parsing", "[parser][rtcp][packet]")
 
 	SECTION("a RTCP packet may only contain the RTCP common header")
 	{
-		Packet* packet = Packet::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<Packet> packet{ Packet::Parse(buffer, sizeof(buffer)) };
 
 		REQUIRE(packet);
-
-		delete packet;
 	}
 
 	SECTION("a too small RTCP packet should fail")
@@ -30,11 +28,9 @@ SCENARIO("RTCP parsing", "[parser][rtcp][packet]")
 		// Provide a wrong packet length.
 		size_t length = sizeof(buffer) - 1;
 
-		Packet* packet = Packet::Parse(buffer, length);
+		std::unique_ptr<Packet> packet{ Packet::Parse(buffer, length) };
 
 		REQUIRE_FALSE(packet);
-
-		delete packet;
 	}
 
 	SECTION("a RTCP packet with incorrect version should fail")
@@ -42,11 +38,9 @@ SCENARIO("RTCP parsing", "[parser][rtcp][packet]")
 		// Set an incorrect version value (0).
 		buffer[0] &= 0b00111111;
 
-		Packet* packet = Packet::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<Packet> packet{ Packet::Parse(buffer, sizeof(buffer)) };
 
 		REQUIRE_FALSE(packet);
-
-		delete packet;
 	}
 
 	SECTION("a RTCP packet with incorrect length should fail")
@@ -54,11 +48,9 @@ SCENARIO("RTCP parsing", "[parser][rtcp][packet]")
 		// Set the packet length to zero.
 		buffer[3] = 1;
 
-		Packet* packet = Packet::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<Packet> packet{ Packet::Parse(buffer, sizeof(buffer)) };
 
 		REQUIRE_FALSE(packet);
-
-		delete packet;
 	}
 
 	SECTION("a RTCP packet with unknown type should fail")
@@ -66,10 +58,8 @@ SCENARIO("RTCP parsing", "[parser][rtcp][packet]")
 		// Set and unknown packet type (0).
 		buffer[1] = 0;
 
-		Packet* packet = Packet::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<Packet> packet{ Packet::Parse(buffer, sizeof(buffer)) };
 
 		REQUIRE_FALSE(packet);
-
-		delete packet;
 	}
 }
diff --git a/worker/test/src/RTC/RTCP/TestReceiverReport.cpp b/worker/test/src/RTC/RTCP/TestReceiverReport.cpp
index a184856ab6..914d4c1de8 100644
--- a/worker/test/src/RTC/RTCP/TestReceiverReport.cpp
+++ b/worker/test/src/RTC/RTCP/TestReceiverReport.cpp
@@ -53,7 +53,7 @@ SCENARIO("RTCP RR parsing", "[parser][rtcp][rr]")
 {
 	SECTION("parse RR packet with a single report")
 	{
-		ReceiverReportPacket* packet = ReceiverReportPacket::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<ReceiverReportPacket> packet{ ReceiverReportPacket::Parse(buffer, sizeof(buffer)) };
 
 		REQUIRE(packet->GetCount() == 1);
 
@@ -67,7 +67,8 @@ SCENARIO("RTCP RR parsing", "[parser][rtcp][rr]")
 
 			packet->Serialize(serialized);
 
-			ReceiverReportPacket* packet2 = ReceiverReportPacket::Parse(serialized, sizeof(buffer));
+			std::unique_ptr<ReceiverReportPacket> packet2{ ReceiverReportPacket::Parse(
+				serialized, sizeof(buffer)) };
 
 			REQUIRE(packet2->GetType() == Type::RR);
 			REQUIRE(packet2->GetCount() == 1);
@@ -81,26 +82,21 @@ SCENARIO("RTCP RR parsing", "[parser][rtcp][rr]")
 
 			verify(report);
 
-			delete packet2;
-
 			SECTION("compare serialized packet with original buffer")
 			{
 				REQUIRE(std::memcmp(buffer, serialized, sizeof(buffer)) == 0);
 			}
 		}
-
-		delete packet;
 	}
 
 	SECTION("parse RR")
 	{
-		ReceiverReport* report = ReceiverReport::Parse(rrBuffer, ReceiverReport::HeaderSize);
+		std::unique_ptr<ReceiverReport> report{ ReceiverReport::Parse(
+			rrBuffer, ReceiverReport::HeaderSize) };
 
 		REQUIRE(report);
 
-		verify(report);
-
-		delete report;
+		verify(report.get());
 	}
 
 	SECTION("create RR packet with more than 31 reports")
@@ -132,7 +128,8 @@ SCENARIO("RTCP RR parsing", "[parser][rtcp][rr]")
 		// Serialization must contain 2 RR packets since report count exceeds 31.
 		packet.Serialize(buffer);
 
-		auto* packet2 = static_cast<ReceiverReportPacket*>(Packet::Parse(buffer, sizeof(buffer)));
+		std::unique_ptr<ReceiverReportPacket> packet2{ static_cast<ReceiverReportPacket*>(
+			Packet::Parse(buffer, sizeof(buffer))) };
 
 		REQUIRE(packet2 != nullptr);
 		REQUIRE(packet2->GetCount() == 31);
@@ -172,7 +169,6 @@ SCENARIO("RTCP RR parsing", "[parser][rtcp][rr]")
 			REQUIRE(report->GetDelaySinceLastSenderReport() == 31 + i);
 		}
 
-		delete packet2;
 		delete packet3;
 	}
 
diff --git a/worker/test/src/RTC/RTCP/TestSenderReport.cpp b/worker/test/src/RTC/RTCP/TestSenderReport.cpp
index 38f7862e8f..790160bc4f 100644
--- a/worker/test/src/RTC/RTCP/TestSenderReport.cpp
+++ b/worker/test/src/RTC/RTCP/TestSenderReport.cpp
@@ -2,6 +2,7 @@
 #include "RTC/RTCP/SenderReport.hpp"
 #include <catch2/catch_test_macros.hpp>
 #include <cstring> // std::memcmp()
+#include <memory>
 
 using namespace RTC::RTCP;
 
@@ -50,7 +51,7 @@ SCENARIO("RTCP SR parsing", "[parser][rtcp][sr]")
 {
 	SECTION("parse SR packet")
 	{
-		SenderReportPacket* packet = SenderReportPacket::Parse(buffer, sizeof(buffer));
+		std::unique_ptr<SenderReportPacket> packet{ SenderReportPacket::Parse(buffer, sizeof(buffer)) };
 
 		auto* report = *(packet->Begin());
 
@@ -67,17 +68,15 @@ SCENARIO("RTCP SR parsing", "[parser][rtcp][sr]")
 				REQUIRE(std::memcmp(buffer, serialized, sizeof(buffer)) == 0);
 			}
 		}
-
-		delete packet;
 	}
 
 	SECTION("parse SR")
 	{
-		SenderReport* report = SenderReport::Parse(srBuffer, SenderReport::HeaderSize);
+		std::unique_ptr<SenderReport> report{ SenderReport::Parse(srBuffer, SenderReport::HeaderSize) };
 
 		REQUIRE(report);
 
-		verify(report);
+		verify(report.get());
 
 		SECTION("serialize SenderReport instance")
 		{
@@ -90,8 +89,6 @@ SCENARIO("RTCP SR parsing", "[parser][rtcp][sr]")
 				REQUIRE(std::memcmp(srBuffer, serialized, SenderReport::HeaderSize) == 0);
 			}
 		}
-
-		delete report;
 	}
 
 	SECTION("create SR packet multiple reports")
@@ -122,7 +119,8 @@ SCENARIO("RTCP SR parsing", "[parser][rtcp][sr]")
 
 		SenderReport* reports[count]{ nullptr };
 
-		auto* packet2 = static_cast<SenderReportPacket*>(Packet::Parse(buffer, sizeof(buffer)));
+		std::unique_ptr<SenderReportPacket> packet2{ static_cast<SenderReportPacket*>(
+			Packet::Parse(buffer, sizeof(buffer))) };
 
 		REQUIRE(packet2 != nullptr);
 
@@ -154,7 +152,6 @@ SCENARIO("RTCP SR parsing", "[parser][rtcp][sr]")
 			REQUIRE(report->GetOctetCount() == i);
 		}
 
-		delete packet2;
 		delete packet3;
 		delete packet4;
 	}