diff --git a/AUTHORS b/AUTHORS
index 47c7538..4ddeb4d 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -11,6 +11,7 @@
 # Please keep the list sorted.
 
 # BEGIN individuals section.
+AbdAlRahman Gad <abdobngad@gmail.com>
 Abdelkarim Sellamna <abdelkarim.se@gmail.com>
 Aleksei Skotnikov <fineaskotnikov@gmail.com>
 Antonio Gomes <tonikitoo@igalia.com>
diff --git a/fpdfsdk/fpdf_doc_embeddertest.cpp b/fpdfsdk/fpdf_doc_embeddertest.cpp
index 0f9f38d..5797c09 100644
--- a/fpdfsdk/fpdf_doc_embeddertest.cpp
+++ b/fpdfsdk/fpdf_doc_embeddertest.cpp
@@ -209,7 +209,7 @@
   EXPECT_EQ(1, zoom);
 }
 
-TEST_F(FPDFDocEmbedderTest, BUG_1506_1) {
+TEST_F(FPDFDocEmbedderTest, Bug1506First) {
   ASSERT_TRUE(OpenDocument("bug_1506.pdf"));
 
   FPDF_DEST dest = FPDF_GetNamedDestByName(document(), "First");
@@ -217,7 +217,7 @@
   EXPECT_EQ(3, FPDFDest_GetDestPageIndex(document(), dest));
 }
 
-TEST_F(FPDFDocEmbedderTest, BUG_1506_2) {
+TEST_F(FPDFDocEmbedderTest, Bug1506Second) {
   ASSERT_TRUE(OpenDocument("bug_1506.pdf"));
 
   std::vector<FPDF_PAGE> pages;
@@ -232,7 +232,7 @@
     UnloadPage(page);
 }
 
-TEST_F(FPDFDocEmbedderTest, BUG_1506_3) {
+TEST_F(FPDFDocEmbedderTest, Bug1506Third) {
   ASSERT_TRUE(OpenDocument("bug_1506.pdf"));
 
   std::vector<FPDF_PAGE> pages;
@@ -247,7 +247,7 @@
     UnloadPage(page);
 }
 
-TEST_F(FPDFDocEmbedderTest, BUG_680376) {
+TEST_F(FPDFDocEmbedderTest, Bug680376) {
   ASSERT_TRUE(OpenDocument("bug_680376.pdf"));
 
   // Page number directly in item from Dests NameTree.
@@ -256,7 +256,7 @@
   EXPECT_EQ(-1, FPDFDest_GetDestPageIndex(document(), dest));
 }
 
-TEST_F(FPDFDocEmbedderTest, BUG_821454) {
+TEST_F(FPDFDocEmbedderTest, Bug821454) {
   ASSERT_TRUE(OpenDocument("bug_821454.pdf"));
 
   FPDF_PAGE page = LoadPage(0);
@@ -912,7 +912,7 @@
   EXPECT_EQ(L"Titlè 1", GetPlatformWString(buf));
 }
 
-TEST_F(FPDFDocEmbedderTest, Bug_182) {
+TEST_F(FPDFDocEmbedderTest, Bug182) {
   ASSERT_TRUE(OpenDocument("bug_182.pdf"));
 
   unsigned short buf[128];
diff --git a/fpdfsdk/fpdf_flatten_embeddertest.cpp b/fpdfsdk/fpdf_flatten_embeddertest.cpp
index df8b88b..26fafc6 100644
--- a/fpdfsdk/fpdf_flatten_embeddertest.cpp
+++ b/fpdfsdk/fpdf_flatten_embeddertest.cpp
@@ -39,7 +39,7 @@
   UnloadPage(page);
 }
 
-TEST_F(FPDFFlattenEmbedderTest, BUG_861842) {
+TEST_F(FPDFFlattenEmbedderTest, Bug861842) {
   const char* checkbox_checksum = []() {
     if (CFX_DefaultRenderDevice::UseSkiaRenderer()) {
 #if BUILDFLAG(IS_APPLE)
@@ -72,7 +72,7 @@
   VerifySavedDocument(100, 120, kBlankPageHash);
 }
 
-TEST_F(FPDFFlattenEmbedderTest, BUG_889099) {
+TEST_F(FPDFFlattenEmbedderTest, Bug889099) {
   const char* page_checksum = []() {
     if (CFX_DefaultRenderDevice::UseSkiaRenderer()) {
 #if BUILDFLAG(IS_WIN)
@@ -122,7 +122,7 @@
   VerifySavedDocument(300, 400, flattened_page_checksum);
 }
 
-TEST_F(FPDFFlattenEmbedderTest, BUG_890322) {
+TEST_F(FPDFFlattenEmbedderTest, Bug890322) {
   const char* checksum = []() {
     if (CFX_DefaultRenderDevice::UseSkiaRenderer()) {
       return "793689536cf64fe792c2f241888c0cf3";
@@ -144,7 +144,7 @@
   VerifySavedDocument(200, 200, checksum);
 }
 
-TEST_F(FPDFFlattenEmbedderTest, BUG_896366) {
+TEST_F(FPDFFlattenEmbedderTest, Bug896366) {
   const char* checksum = []() {
     if (CFX_DefaultRenderDevice::UseSkiaRenderer()) {
       return "c3cccfadc4c5249e6aa0675e511fa4c3";
diff --git a/fpdfsdk/fpdf_formfill_embeddertest.cpp b/fpdfsdk/fpdf_formfill_embeddertest.cpp
index 66921a2..2607ff7 100644
--- a/fpdfsdk/fpdf_formfill_embeddertest.cpp
+++ b/fpdfsdk/fpdf_formfill_embeddertest.cpp
@@ -610,7 +610,7 @@
   UnloadPage(page);
 }
 
-TEST_F(FPDFFormFillEmbedderTest, BUG_487928) {
+TEST_F(FPDFFormFillEmbedderTest, Bug487928) {
   EmbedderTestTimerHandlingDelegate delegate;
   SetDelegate(&delegate);
 
@@ -622,7 +622,7 @@
   UnloadPage(page);
 }
 
-TEST_F(FPDFFormFillEmbedderTest, BUG_507316) {
+TEST_F(FPDFFormFillEmbedderTest, Bug507316) {
   EmbedderTestTimerHandlingDelegate delegate;
   SetDelegate(&delegate);
 
@@ -634,7 +634,7 @@
   UnloadPage(page);
 }
 
-TEST_F(FPDFFormFillEmbedderTest, BUG_514690) {
+TEST_F(FPDFFormFillEmbedderTest, Bug514690) {
   ASSERT_TRUE(OpenDocument("hello_world.pdf"));
   FPDF_PAGE page = LoadPage(0);
   EXPECT_TRUE(page);
@@ -646,7 +646,7 @@
   UnloadPage(page);
 }
 
-TEST_F(FPDFFormFillEmbedderTest, BUG_900552) {
+TEST_F(FPDFFormFillEmbedderTest, Bug900552) {
   EmbedderTestTimerHandlingDelegate delegate;
   SetDelegate(&delegate);
 
@@ -664,7 +664,7 @@
   UnloadPage(page);
 }
 
-TEST_F(FPDFFormFillEmbedderTest, BUG_901654) {
+TEST_F(FPDFFormFillEmbedderTest, Bug901654) {
   EmbedderTestTimerHandlingDelegate delegate;
   SetDelegate(&delegate);
 
@@ -683,7 +683,7 @@
   UnloadPage(page);
 }
 
-TEST_F(FPDFFormFillEmbedderTest, BUG_901654_2) {
+TEST_F(FPDFFormFillEmbedderTest, Bug901654_2) {
   EmbedderTestTimerHandlingDelegate delegate;
   SetDelegate(&delegate);
 
@@ -997,7 +997,7 @@
   }
 };
 
-TEST_F(FPDFFormFillEmbedderTest, BUG_851821) {
+TEST_F(FPDFFormFillEmbedderTest, Bug851821) {
   DoURIActionBlockedDelegate delegate;
   SetDelegate(&delegate);
 
@@ -1153,7 +1153,7 @@
   ASSERT_EQ(0U, alerts.size());
 }
 
-TEST_F(FPDFFormFillEmbedderTest, BUG_551248) {
+TEST_F(FPDFFormFillEmbedderTest, Bug551248) {
   // Test that timers fire once and intervals fire repeatedly.
   EmbedderTestTimerHandlingDelegate delegate;
   SetDelegate(&delegate);
@@ -1205,7 +1205,7 @@
   EXPECT_EQ(0, alerts[3].icon);
 }
 
-TEST_F(FPDFFormFillEmbedderTest, BUG_620428) {
+TEST_F(FPDFFormFillEmbedderTest, Bug620428) {
   // Test that timers and intervals are cancelable.
   EmbedderTestTimerHandlingDelegate delegate;
   SetDelegate(&delegate);
@@ -1222,7 +1222,7 @@
   EXPECT_EQ(L"done", alerts[0].message);
 }
 
-TEST_F(FPDFFormFillEmbedderTest, BUG_634394) {
+TEST_F(FPDFFormFillEmbedderTest, Bug634394) {
   // Cancel timer inside timer callback.
   EmbedderTestTimerHandlingDelegate delegate;
   SetDelegate(&delegate);
@@ -1245,7 +1245,7 @@
   EXPECT_EQ(2U, alerts.size());
 }
 
-TEST_F(FPDFFormFillEmbedderTest, BUG_634716) {
+TEST_F(FPDFFormFillEmbedderTest, Bug634716) {
   EmbedderTestTimerHandlingDelegate delegate;
   SetDelegate(&delegate);
 
@@ -1267,7 +1267,7 @@
   EXPECT_EQ(2U, alerts.size());
 }
 
-TEST_F(FPDFFormFillEmbedderTest, BUG_679649) {
+TEST_F(FPDFFormFillEmbedderTest, Bug679649) {
   EmbedderTestTimerHandlingDelegate delegate;
   SetDelegate(&delegate);
 
@@ -1284,7 +1284,7 @@
   EXPECT_EQ(0u, alerts.size());
 }
 
-TEST_F(FPDFFormFillEmbedderTest, BUG_707673) {
+TEST_F(FPDFFormFillEmbedderTest, Bug707673) {
   EmbedderTestTimerHandlingDelegate delegate;
   SetDelegate(&delegate);
 
@@ -1302,7 +1302,7 @@
   EXPECT_EQ(0u, alerts.size());
 }
 
-TEST_F(FPDFFormFillEmbedderTest, BUG_765384) {
+TEST_F(FPDFFormFillEmbedderTest, Bug765384) {
   ASSERT_TRUE(OpenDocument("bug_765384.pdf"));
   FPDF_PAGE page = LoadPage(0);
   EXPECT_TRUE(page);
@@ -1314,7 +1314,7 @@
 }
 
 // Test passes if DCHECK() not hit.
-TEST_F(FPDFFormFillEmbedderTest, BUG_1477093) {
+TEST_F(FPDFFormFillEmbedderTest, Bug1477093) {
   EmbedderTestTimerHandlingDelegate delegate;
   SetDelegate(&delegate);
 
@@ -1412,7 +1412,7 @@
 
 // Tests using FPDF_REVERSE_BYTE_ORDER with FPDF_FFLDraw(). The two rendered
 // bitmaps should be different.
-TEST_F(FPDFFormFillEmbedderTest, BUG_1281) {
+TEST_F(FPDFFormFillEmbedderTest, Bug1281) {
   const char* reverse_byte_order_checksum = []() {
     if (CFX_DefaultRenderDevice::UseSkiaRenderer()) {
       return "8077970bbd10333f18186a9bb459bbe6";
