@@ -833,9 +833,6 @@ TEST_F(FirebaseGmaTest, TestRewardedAdLoad) {
833
833
SKIP_TEST_ON_DESKTOP;
834
834
SKIP_TEST_ON_SIMULATOR;
835
835
836
- // TODO(@drsanta): remove when GMA whitelists CI devices.
837
- TEST_REQUIRES_USER_INTERACTION_ON_IOS;
838
-
839
836
firebase::gma::RewardedAd* rewarded = new firebase::gma::RewardedAd ();
840
837
841
838
WaitForCompletion (rewarded->Initialize (app_framework::GetWindowContext ()),
@@ -845,16 +842,30 @@ TEST_F(FirebaseGmaTest, TestRewardedAdLoad) {
845
842
firebase::Future<firebase::gma::AdResult> load_ad_future =
846
843
rewarded->LoadAd (kRewardedAdUnit , GetAdRequest ());
847
844
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
+ }
858
869
load_ad_future.Release ();
859
870
delete rewarded;
860
871
}
@@ -1795,9 +1806,6 @@ TEST_F(FirebaseGmaTest, TestRewardedAdLoadEmptyRequest) {
1795
1806
SKIP_TEST_ON_DESKTOP;
1796
1807
SKIP_TEST_ON_SIMULATOR;
1797
1808
1798
- // TODO(@drsanta): remove when GMA whitelists CI devices.
1799
- TEST_REQUIRES_USER_INTERACTION_ON_IOS;
1800
-
1801
1809
// Note: while showing an ad requires user interaction in another test,
1802
1810
// this test is mean as a baseline loadAd functionality test.
1803
1811
firebase::gma::RewardedAd* rewarded = new firebase::gma::RewardedAd ();
@@ -1810,16 +1818,31 @@ TEST_F(FirebaseGmaTest, TestRewardedAdLoadEmptyRequest) {
1810
1818
firebase::Future<firebase::gma::AdResult> load_ad_future =
1811
1819
rewarded->LoadAd (kRewardedAdUnit , request);
1812
1820
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 ();
1823
1846
delete rewarded;
1824
1847
}
1825
1848
0 commit comments