Add device firmware in regression test report

PiperOrigin-RevId: 602584371
diff --git a/ui_automator/ui_automator.py b/ui_automator/ui_automator.py
index 663e6b7..953d659 100644
--- a/ui_automator/ui_automator.py
+++ b/ui_automator/ui_automator.py
@@ -98,6 +98,15 @@
         ' regression test report. e.g. `--hub 10.1.3`.'
     ),
 )
+_DEVICE_FIRMWARE_KEY = 'device_firmware'
+_DEVICE_FIRMWARE = flags.DEFINE_string(
+    name='fw',
+    default=None,
+    help=(
+        'Use --fw {DeviceFirmware} to include this field in regression test'
+        ' report. e.g. `--fw 10.20.12`.'
+    ),
+)
 
 
 class RegTestSuiteType(enum.Enum):
@@ -421,6 +430,9 @@
     if _HUB.value:
       temp_info[_HUB_VERSION_KEY] = _HUB.value
 
+    if _DEVICE_FIRMWARE.value:
+      temp_info[_DEVICE_FIRMWARE_KEY] = _DEVICE_FIRMWARE.value
+
     report_info: test_reporter.ReportInfo = {**temp_info}
 
     return report_info
diff --git a/ui_automator/ui_automator_test.py b/ui_automator/ui_automator_test.py
index 661bd67..da990fd 100644
--- a/ui_automator/ui_automator_test.py
+++ b/ui_automator/ui_automator_test.py
@@ -1040,6 +1040,8 @@
         'gha_version': '0.0.0',
         'gms_core_version': '0.0.1',
         'hub_version': '10.1.3',
+        'dut': 'm5stack',
+        'device_firmware': '10.20.12',
     }
     mock_get_report_info.return_value = fake_report_info
     mock_get_all_instances.return_value = [self.mock_android_device]
@@ -1091,5 +1093,20 @@
 
     self.assertDictEqual(report_info, {})
 
+  @flagsaver.flagsaver((ui_automator._DEVICE_FIRMWARE, '10.20.12'))
+  def test_get_report_info_includes_device_firmware_from_flag_input(self):
+    report_info = self.ui_automator.get_report_info()
+
+    self.assertEqual(len(report_info), 1)
+    self.assertEqual(report_info.get('device_firmware'), '10.20.12')
+
+  @flagsaver.flagsaver((ui_automator._DEVICE_FIRMWARE, None))
+  def test_get_report_info_returns_empty_dict_without_device_firmware_flag(
+      self,
+  ):
+    report_info = self.ui_automator.get_report_info()
+
+    self.assertDictEqual(report_info, {})
+
 if __name__ == '__main__':
   unittest.main()