Change showMoreMenuItem() to showMenuIten() and make the logic to find menu right and clear. Fix issues when run on emulator 2.3.3.

This commit is contained in:
youtaol
2012-07-17 14:14:19 +08:00
parent a64a51bc16
commit 56663c53a4
4 changed files with 101 additions and 60 deletions
@@ -117,8 +117,10 @@ public class CreateAndSendTrackTest extends ActivityInstrumentationTestCase2<Tra
// If no account is binded with this device. // If no account is binded with this device.
if (EndToEndTestUtils.SOLO.waitForText(activityMyTracks if (EndToEndTestUtils.SOLO.waitForText(activityMyTracks
.getString(R.string.send_google_no_account_title), 1, EndToEndTestUtils.NORMAL_WAIT_TIME)) { .getString(R.string.send_google_no_account_title), 1, EndToEndTestUtils.SHORT_WAIT_TIME)) {
EndToEndTestUtils.getButtonOnScreen(activityMyTracks.getString(R.string.generic_ok), true, true); EndToEndTestUtils.getButtonOnScreen(activityMyTracks.getString(R.string.generic_ok), true, true);
} else if (EndToEndTestUtils.SOLO.waitForText(activityMyTracks
.getString(R.string.send_google_no_account_permission), 1, EndToEndTestUtils.SHORT_WAIT_TIME)) {
} else { } else {
assertTrue(EndToEndTestUtils.SOLO.waitForText(activityMyTracks assertTrue(EndToEndTestUtils.SOLO.waitForText(activityMyTracks
.getString(R.string.generic_progress_title))); .getString(R.string.generic_progress_title)));
@@ -312,6 +312,7 @@ public class EndToEndTestUtils {
if (EndToEndTestUtils.isTrackListEmpty(!showTrackList)) { if (EndToEndTestUtils.isTrackListEmpty(!showTrackList)) {
// Create a simple track. // Create a simple track.
EndToEndTestUtils.createSimpleTrack(gpsNumber); EndToEndTestUtils.createSimpleTrack(gpsNumber);
instrumentation.waitForIdleSync();
if (showTrackList) { if (showTrackList) {
EndToEndTestUtils.SOLO.goBack(); EndToEndTestUtils.SOLO.goBack();
} }
@@ -331,7 +332,7 @@ public class EndToEndTestUtils {
} }
SOLO.clickOnView(startButton); SOLO.clickOnView(startButton);
} else { } else {
showMoreMenuItem(0); showMenuItem();
if (!SOLO.searchText(activityMytracks.getString(R.string.menu_record_track))) { if (!SOLO.searchText(activityMytracks.getString(R.string.menu_record_track))) {
// Check if in TrackDetailActivity. // Check if in TrackDetailActivity.
if (SOLO.searchText(activityMytracks.getString(R.string.menu_play))) { if (SOLO.searchText(activityMytracks.getString(R.string.menu_play))) {
@@ -339,7 +340,7 @@ public class EndToEndTestUtils {
} else { } else {
// In case a track is recording. // In case a track is recording.
stopRecording(true); stopRecording(true);
showMoreMenuItem(0); showMenuItem();
} }
} }
instrumentation.waitForIdleSync(); instrumentation.waitForIdleSync();
@@ -358,7 +359,7 @@ public class EndToEndTestUtils {
return getButtonOnScreen(activityMytracks return getButtonOnScreen(activityMytracks
.getString(R.string.menu_record_track), false, false) == null; .getString(R.string.menu_record_track), false, false) == null;
} }
showMoreMenuItem(0); showMenuItem();
if (SOLO.searchText(activityMytracks.getString(R.string.menu_record_track)) if (SOLO.searchText(activityMytracks.getString(R.string.menu_record_track))
|| SOLO.searchText(activityMytracks.getString(R.string.menu_play))) { || SOLO.searchText(activityMytracks.getString(R.string.menu_play))) {
SOLO.goBack(); SOLO.goBack();
@@ -377,7 +378,7 @@ public class EndToEndTestUtils {
if (hasActionBar) { if (hasActionBar) {
getButtonOnScreen(activityMytracks.getString(R.string.menu_stop_recording), false, true); getButtonOnScreen(activityMytracks.getString(R.string.menu_stop_recording), false, true);
} else { } else {
showMoreMenuItem(0); showMenuItem();
instrumentation.waitForIdleSync(); instrumentation.waitForIdleSync();
SOLO.clickOnText(activityMytracks.getString(R.string.menu_stop_recording)); SOLO.clickOnText(activityMytracks.getString(R.string.menu_stop_recording));
} }
@@ -494,7 +495,7 @@ public class EndToEndTestUtils {
if (startButton != null || stopButton != null) { if (startButton != null || stopButton != null) {
hasActionBar = true; hasActionBar = true;
} else { } else {
showMoreMenuItem(0); showMenuItem();
if (SOLO.searchText(activityMytracks.getString(R.string.menu_record_track)) if (SOLO.searchText(activityMytracks.getString(R.string.menu_record_track))
|| SOLO.searchText(activityMytracks.getString(R.string.menu_stop_recording))) { || SOLO.searchText(activityMytracks.getString(R.string.menu_stop_recording))) {
hasActionBar = false; hasActionBar = false;
@@ -518,12 +519,14 @@ public class EndToEndTestUtils {
* Rotates all activities. * Rotates all activities.
*/ */
static void rotateAllActivities() { static void rotateAllActivities() {
ArrayList<Activity> allActivities = SOLO.getAllOpenedActivities(); if(hasActionBar) {
for (Activity activity : allActivities) { ArrayList<Activity> allActivities = SOLO.getAllOpenedActivities();
EndToEndTestUtils.rotateActivity(activity); for (Activity activity : allActivities) {
EndToEndTestUtils.rotateActivity(activity);
}
instrumentation.waitForIdleSync();
} }
instrumentation.waitForIdleSync();
} }
/** /**
@@ -535,35 +538,54 @@ public class EndToEndTestUtils {
*/ */
static boolean findMenuItem(String menuName, boolean click) { static boolean findMenuItem(String menuName, boolean click) {
boolean findResult = false; boolean findResult = false;
boolean isMoreMenuOpened = false;
// Firstly find in action bar.
Button button = getButtonOnScreen(menuName, false, false); // ICS phone.
if (button != null) { if(hasActionBar) {
findResult = true; // Firstly find in action bar.
if (click) { Button button = getButtonOnScreen(menuName, false, false);
SOLO.clickOnView(button); if (button != null) {
instrumentation.waitForIdleSync(); findResult = true;
if (click) {
SOLO.clickOnView(button);
instrumentation.waitForIdleSync();
}
return findResult;
} }
return findResult; showMenuItem();
}
showMoreMenuItem(0);
if (SOLO.searchText(menuName)) {
findResult = true;
} else if (SOLO.searchText(MENU_MORE)) {
SOLO.clickOnText(MENU_MORE);
findResult = SOLO.searchText(menuName); findResult = SOLO.searchText(menuName);
} else {
// Non-ICS phone.
SOLO.sendKey(KeyEvent.KEYCODE_MENU);
if (SOLO.searchText(menuName)) {
findResult = true;
} else if (SOLO.searchText(MENU_MORE)) {
SOLO.clickOnText(MENU_MORE);
findResult = SOLO.searchText(menuName);
isMoreMenuOpened = true;
}
} }
if (findResult && click) { if (findResult && click) {
SOLO.clickOnText(menuName); SOLO.clickOnText(menuName);
instrumentation.waitForIdleSync(); instrumentation.waitForIdleSync();
} else { } else {
// Quit more menu list if opened.
if (isMoreMenuOpened) {
SOLO.goBack();
}
// Quit menu list.
SOLO.goBack(); SOLO.goBack();
} }
return findResult; return findResult;
} }
/**
* Show menu item list.
*/
public static void showMenuItem() {
showMenuItem(0);
}
/** /**
* Gets more menu items operation is different for different Android OS. When * Gets more menu items operation is different for different Android OS. When
* get overflow button view on action, it usually be able to click. But in * get overflow button view on action, it usually be able to click. But in
@@ -572,22 +594,29 @@ public class EndToEndTestUtils {
* *
* @param depth control the depth of recursion to prevent dead circulation * @param depth control the depth of recursion to prevent dead circulation
*/ */
public static void showMoreMenuItem(int depth) { private static void showMenuItem(int depth) {
// ICS phone.
if (hasActionBar) { if (hasActionBar) {
instrumentation.waitForIdleSync(); instrumentation.waitForIdleSync();
View moreButton = getMoreOptionView(); View moreButton = getMoreOptionView();
// ICS phone without menu key.
if (moreButton != null) { if (moreButton != null) {
try { try {
SOLO.clickOnView(moreButton); SOLO.clickOnView(moreButton);
} catch (Throwable e) { } catch (Throwable e) {
if (depth < 5 && e.getMessage().indexOf("Click can not be completed") > -1) { if (depth < 5 && e.getMessage().indexOf("Click can not be completed") > -1) {
showMoreMenuItem(depth++); showMenuItem(depth++);
} }
} }
return; return;
} else {
// ICS phone with menu key.
SOLO.sendKey(KeyEvent.KEYCODE_MENU);
} }
} else {
// Non-ICS phone with menu key.
SOLO.sendKey(KeyEvent.KEYCODE_MENU);
} }
SOLO.sendKey(KeyEvent.KEYCODE_MENU);
} }
/** /**
@@ -22,6 +22,9 @@ import android.annotation.TargetApi;
import android.app.Instrumentation; import android.app.Instrumentation;
import android.test.ActivityInstrumentationTestCase2; import android.test.ActivityInstrumentationTestCase2;
import android.view.View; import android.view.View;
import android.widget.ImageButton;
import java.util.ArrayList;
/** /**
* Tests the function of go to my location. * Tests the function of go to my location.
@@ -55,10 +58,23 @@ public class GoToMyLocationTest extends ActivityInstrumentationTestCase2<TrackLi
instrumentation.waitForIdleSync(); instrumentation.waitForIdleSync();
View myLocation = EndToEndTestUtils.SOLO.getCurrentActivity() View myLocation = EndToEndTestUtils.SOLO.getCurrentActivity()
.findViewById(R.id.map_my_location); .findViewById(R.id.map_my_location);
// Find the My Location button in another if null.
if (myLocation == null) {
ArrayList<ImageButton> aa = EndToEndTestUtils.SOLO.getCurrentImageButtons();
for (ImageButton imageButton : aa) {
if (imageButton.getContentDescription() != null
&& imageButton.getContentDescription().equals(
activityMyTracks.getString(R.string.icon_my_location))) {
myLocation = imageButton;
break;
}
}
}
EndToEndTestUtils.SOLO.clickOnView(myLocation); EndToEndTestUtils.SOLO.clickOnView(myLocation);
if (EndToEndTestUtils.isEmulator) { if (EndToEndTestUtils.isEmulator) {
EndToEndTestUtils.SOLO.waitForText( EndToEndTestUtils.SOLO.waitForText(
activityMyTracks.getString(R.string.my_location_no_location), 1, EndToEndTestUtils.SHORT_WAIT_TIME); activityMyTracks.getString(R.string.my_location_no_location), 1,
EndToEndTestUtils.SHORT_WAIT_TIME);
} else { } else {
// TODO How to verify the location is shown on the map. // TODO How to verify the location is shown on the map.
} }
@@ -23,7 +23,6 @@ import com.google.android.maps.mytracks.R;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.app.Instrumentation; import android.app.Instrumentation;
import android.test.ActivityInstrumentationTestCase2; import android.test.ActivityInstrumentationTestCase2;
import android.view.KeyEvent;
import android.view.View; import android.view.View;
import java.util.ArrayList; import java.util.ArrayList;
@@ -57,38 +56,33 @@ public class ViewsTest extends ActivityInstrumentationTestCase2<TrackListActivit
* menus in these views. * menus in these views.
*/ */
public void testSwitchViewsAndMenusOfView() { public void testSwitchViewsAndMenusOfView() {
EndToEndTestUtils.createTrackIfEmpty(3, false); EndToEndTestUtils.createTrackIfEmpty(3, true);
EndToEndTestUtils.SOLO.goBack(); EndToEndTestUtils.SOLO.scrollUp();
EndToEndTestUtils.SOLO.clickOnText(EndToEndTestUtils.trackName); EndToEndTestUtils.SOLO.clickOnText(EndToEndTestUtils.trackName, 1, true);
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_chart_tab)); EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_chart_tab));
EndToEndTestUtils.rotateAllActivities(); EndToEndTestUtils.rotateAllActivities();
EndToEndTestUtils.showMoreMenuItem(0); assertTrue(EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_settings),
assertTrue(EndToEndTestUtils.SOLO.waitForText( false));
activityMyTracks.getString(R.string.menu_settings), 1, EndToEndTestUtils.NORMAL_WAIT_TIME)); assertFalse(EndToEndTestUtils.findMenuItem(
assertFalse(EndToEndTestUtils.SOLO.waitForText( activityMyTracks.getString(R.string.menu_satellite_mode), false));
activityMyTracks.getString(R.string.menu_satellite_mode), 1, 0)); assertFalse(EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_map_mode),
assertFalse(EndToEndTestUtils.SOLO.waitForText( false));
activityMyTracks.getString(R.string.menu_map_mode), 1, 0));
EndToEndTestUtils.SOLO.goBack();
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_stats_tab)); EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_stats_tab));
EndToEndTestUtils.SOLO.sendKey(KeyEvent.KEYCODE_MENU); assertTrue(EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_settings),
assertTrue(EndToEndTestUtils.SOLO.waitForText( false));
activityMyTracks.getString(R.string.menu_settings), 1, EndToEndTestUtils.NORMAL_WAIT_TIME)); assertFalse(EndToEndTestUtils.findMenuItem(
assertFalse(EndToEndTestUtils.SOLO.waitForText( activityMyTracks.getString(R.string.menu_satellite_mode), false));
activityMyTracks.getString(R.string.menu_satellite_mode), 1, 0)); assertFalse(EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_map_mode),
assertFalse(EndToEndTestUtils.SOLO.waitForText( false));
activityMyTracks.getString(R.string.menu_map_mode), 1, 0));
EndToEndTestUtils.SOLO.goBack();
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_map_tab)); EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_map_tab));
EndToEndTestUtils.showMoreMenuItem(0); assertTrue(EndToEndTestUtils.findMenuItem(
assertTrue(EndToEndTestUtils.SOLO.waitForText( activityMyTracks.getString(R.string.menu_settings), false));
activityMyTracks.getString(R.string.menu_settings), 1, EndToEndTestUtils.NORMAL_WAIT_TIME)); assertTrue(EndToEndTestUtils.findMenuItem(EndToEndTestUtils.VIEW_MODE, false));
assertTrue(EndToEndTestUtils.SOLO.searchText(EndToEndTestUtils.VIEW_MODE, 1, true, false));
} }
/** /**
@@ -105,7 +99,7 @@ public class ViewsTest extends ActivityInstrumentationTestCase2<TrackListActivit
false)) { false)) {
isMapMode = false; isMapMode = false;
} }
EndToEndTestUtils.showMoreMenuItem(0); EndToEndTestUtils.showMenuItem();
// Switch to satellite mode if it's map mode now.. // Switch to satellite mode if it's map mode now..
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks EndToEndTestUtils.SOLO.clickOnText(activityMyTracks
.getString(isMapMode ? R.string.menu_satellite_mode : R.string.menu_map_mode)); .getString(isMapMode ? R.string.menu_satellite_mode : R.string.menu_map_mode));
@@ -125,7 +119,7 @@ public class ViewsTest extends ActivityInstrumentationTestCase2<TrackListActivit
EndToEndTestUtils.rotateAllActivities(); EndToEndTestUtils.rotateAllActivities();
// Switch back. // Switch back.
EndToEndTestUtils.showMoreMenuItem(0); EndToEndTestUtils.showMenuItem();
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks EndToEndTestUtils.SOLO.clickOnText(activityMyTracks
.getString(isMapMode ? R.string.menu_satellite_mode : R.string.menu_map_mode)); .getString(isMapMode ? R.string.menu_satellite_mode : R.string.menu_map_mode));
isMapMode = !isMapMode; isMapMode = !isMapMode;