@@ -833,9 +833,6 @@ TEST_F(FirebaseGmaTest, TestRewardedAdLoad) {
833833 SKIP_TEST_ON_DESKTOP;
834834 SKIP_TEST_ON_SIMULATOR;
835835
836- // TODO(@drsanta): remove when GMA whitelists CI devices.
837- TEST_REQUIRES_USER_INTERACTION_ON_IOS;
838-
839836 firebase::gma::RewardedAd* rewarded = new firebase::gma::RewardedAd ();
840837
841838 WaitForCompletion (rewarded->Initialize (app_framework::GetWindowContext ()),
@@ -845,16 +842,30 @@ TEST_F(FirebaseGmaTest, TestRewardedAdLoad) {
845842 firebase::Future<firebase::gma::AdResult> load_ad_future =
846843 rewarded->LoadAd (kRewardedAdUnit , GetAdRequest ());
847844
848- WaitForCompletion (load_ad_future, " LoadAd" );
849- const firebase::gma::AdResult* result_ptr = load_ad_future.result ();
850- ASSERT_NE (result_ptr, nullptr );
851- EXPECT_TRUE (result_ptr->is_successful ());
852- EXPECT_FALSE (result_ptr->response_info ().adapter_responses ().empty ());
853- EXPECT_FALSE (
854- result_ptr->response_info ().mediation_adapter_class_name ().empty ());
855- EXPECT_FALSE (result_ptr->response_info ().response_id ().empty ());
856- EXPECT_FALSE (result_ptr->response_info ().ToString ().empty ());
857-
845+ // This test behaves differently if it's running in UI mode
846+ // (manually on a device) or in non-UI mode (via automated tests).
847+ if (ShouldRunUITests ()) {
848+ // Run in manual mode: fail if any error occurs.
849+ WaitForCompletion (load_ad_future, " LoadAd" );
850+ } else {
851+ // Run in automated test mode: don't fail if NoFill occurred.
852+ WaitForCompletionAnyResult (load_ad_future,
853+ " LoadAd (ignoring NoFill error)" );
854+ EXPECT_TRUE (load_ad_future.error () == firebase::gma::kAdErrorCodeNone ||
855+ load_ad_future.error () == firebase::gma::kAdErrorCodeNoFill );
856+ }
857+ if (load_ad_future.error () == firebase::gma::kAdErrorCodeNone ) {
858+ // In UI mode, or in non-UI mode if a NoFill error didn't occur, check that
859+ // the ad loaded correctly.
860+ const firebase::gma::AdResult* result_ptr = load_ad_future.result ();
861+ ASSERT_NE (result_ptr, nullptr );
862+ EXPECT_TRUE (result_ptr->is_successful ());
863+ EXPECT_FALSE (result_ptr->response_info ().adapter_responses ().empty ());
864+ EXPECT_FALSE (
865+ result_ptr->response_info ().mediation_adapter_class_name ().empty ());
866+ EXPECT_FALSE (result_ptr->response_info ().response_id ().empty ());
867+ EXPECT_FALSE (result_ptr->response_info ().ToString ().empty ());
868+ }
858869 load_ad_future.Release ();
859870 delete rewarded;
860871}
@@ -1795,9 +1806,6 @@ TEST_F(FirebaseGmaTest, TestRewardedAdLoadEmptyRequest) {
17951806 SKIP_TEST_ON_DESKTOP;
17961807 SKIP_TEST_ON_SIMULATOR;
17971808
1798- // TODO(@drsanta): remove when GMA whitelists CI devices.
1799- TEST_REQUIRES_USER_INTERACTION_ON_IOS;
1800-
18011809 // Note: while showing an ad requires user interaction in another test,
18021810 // this test is mean as a baseline loadAd functionality test.
18031811 firebase::gma::RewardedAd* rewarded = new firebase::gma::RewardedAd ();
@@ -1810,16 +1818,31 @@ TEST_F(FirebaseGmaTest, TestRewardedAdLoadEmptyRequest) {
18101818 firebase::Future<firebase::gma::AdResult> load_ad_future =
18111819 rewarded->LoadAd (kRewardedAdUnit , request);
18121820
1813- WaitForCompletion (load_ad_future, " LoadAd" );
1814- const firebase::gma::AdResult* result_ptr = load_ad_future.result ();
1815- ASSERT_NE (result_ptr, nullptr );
1816- EXPECT_TRUE (result_ptr->is_successful ());
1817- EXPECT_FALSE (result_ptr->response_info ().adapter_responses ().empty ());
1818- EXPECT_FALSE (
1819- result_ptr->response_info ().mediation_adapter_class_name ().empty ());
1820- EXPECT_FALSE (result_ptr->response_info ().response_id ().empty ());
1821- EXPECT_FALSE (result_ptr->response_info ().ToString ().empty ());
1822-
1821+ // This test behaves differently if it's running in UI mode
1822+ // (manually on a device) or in non-UI mode (via automated tests).
1823+ if (ShouldRunUITests ()) {
1824+ // Run in manual mode: fail if any error occurs.
1825+ WaitForCompletion (load_ad_future, " LoadAd" );
1826+ } else {
1827+ // Run in automated test mode: don't fail if NoFill occurred.
1828+ WaitForCompletionAnyResult (load_ad_future,
1829+ " LoadAd (ignoring NoFill error)" );
1830+ EXPECT_TRUE (load_ad_future.error () == firebase::gma::kAdErrorCodeNone ||
1831+ load_ad_future.error () == firebase::gma::kAdErrorCodeNoFill );
1832+ }
1833+ if (load_ad_future.error () == firebase::gma::kAdErrorCodeNone ) {
1834+ // In UI mode, or in non-UI mode if a NoFill error didn't occur, check that
1835+ // the ad loaded correctly.
1836+ const firebase::gma::AdResult* result_ptr = load_ad_future.result ();
1837+ ASSERT_NE (result_ptr, nullptr );
1838+ EXPECT_TRUE (result_ptr->is_successful ());
1839+ EXPECT_FALSE (result_ptr->response_info ().adapter_responses ().empty ());
1840+ EXPECT_FALSE (
1841+ result_ptr->response_info ().mediation_adapter_class_name ().empty ());
1842+ EXPECT_FALSE (result_ptr->response_info ().response_id ().empty ());
1843+ EXPECT_FALSE (result_ptr->response_info ().ToString ().empty ());
1844+ }
1845+ load_ad_future.Release ();
18231846 delete rewarded;
18241847}
18251848
0 commit comments