Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3216)

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/ModalDialogTest.java

Issue 2858933002: Reland: Convert ChromeActivityTestCaseBase direct children to JUnit4 (Closed)
Patch Set: Patch takes out flaky tests Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/javatests/src/org/chromium/chrome/browser/ModalDialogTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ModalDialogTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ModalDialogTest.java
index 3d4ef143066c62c39c49f0b7b5a422d26901c8f8..71628c9ed7dd69edee0a3d561ed9f13f81a712c0 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/ModalDialogTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ModalDialogTest.java
@@ -13,12 +13,20 @@ import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
import org.chromium.base.ThreadUtils;
+import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.RetryOnFailure;
import org.chromium.base.test.util.UrlUtils;
import org.chromium.chrome.R;
-import org.chromium.chrome.test.ChromeActivityTestCaseBase;
+import org.chromium.chrome.test.ChromeActivityTestRule;
+import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.content.browser.test.util.Criteria;
import org.chromium.content.browser.test.util.CriteriaHelper;
import org.chromium.content.browser.test.util.TestCallbackHelperContainer;
@@ -31,8 +39,15 @@ import java.util.concurrent.TimeoutException;
/**
* Test suite for displaying and functioning of modal dialogs.
*/
+@RunWith(ChromeJUnit4ClassRunner.class)
@RetryOnFailure
-public class ModalDialogTest extends ChromeActivityTestCaseBase<ChromeActivity> {
+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
+ ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG})
+public class ModalDialogTest {
+ @Rule
+ public ChromeActivityTestRule<ChromeActivity> mActivityTestRule =
+ new ChromeActivityTestRule<>(ChromeActivity.class);
+
private static final String TAG = "ModalDialogTest";
private static final String EMPTY_PAGE = UrlUtils.encodeHtmlDataUri(
"<html><title>Modal Dialog Test</title><p>Testcase.</p></title></html>");
@@ -41,19 +56,16 @@ public class ModalDialogTest extends ChromeActivityTestCaseBase<ChromeActivity>
+ "return 'Are you sure?';"
+ "};</script></head></html>");
- public ModalDialogTest() {
- super(ChromeActivity.class);
- }
-
- @Override
- public void startMainActivity() throws InterruptedException {
- startMainActivityWithURL(EMPTY_PAGE);
+ @Before
+ public void setUp() throws InterruptedException {
+ mActivityTestRule.startMainActivityWithURL(EMPTY_PAGE);
}
/**
* Verifies modal alert-dialog appearance and that JavaScript execution is
* able to continue after dismissal.
*/
+ @Test
@MediumTest
@Feature({"Browser", "Main"})
public void testAlertModalDialog()
@@ -62,16 +74,17 @@ public class ModalDialogTest extends ChromeActivityTestCaseBase<ChromeActivity>
executeJavaScriptAndWaitForDialog("alert('Hello Android!');");
JavascriptAppModalDialog jsDialog = getCurrentDialog();
- assertNotNull("No dialog showing.", jsDialog);
+ Assert.assertNotNull("No dialog showing.", jsDialog);
clickOk(jsDialog);
- assertTrue("JavaScript execution should continue after closing prompt.",
+ Assert.assertTrue("JavaScript execution should continue after closing prompt.",
scriptEvent.waitUntilHasValue());
}
/**
* Verifies that clicking on a button twice doesn't crash.
*/
+ @Test
@MediumTest
@Feature({"Browser", "Main"})
public void testAlertModalDialogWithTwoClicks()
@@ -79,12 +92,12 @@ public class ModalDialogTest extends ChromeActivityTestCaseBase<ChromeActivity>
OnEvaluateJavaScriptResultHelper scriptEvent =
executeJavaScriptAndWaitForDialog("alert('Hello Android');");
JavascriptAppModalDialog jsDialog = getCurrentDialog();
- assertNotNull("No dialog showing.", jsDialog);
+ Assert.assertNotNull("No dialog showing.", jsDialog);
clickOk(jsDialog);
clickOk(jsDialog);
- assertTrue("JavaScript execution should continue after closing prompt.",
+ Assert.assertTrue("JavaScript execution should continue after closing prompt.",
scriptEvent.waitUntilHasValue());
}
@@ -92,6 +105,7 @@ public class ModalDialogTest extends ChromeActivityTestCaseBase<ChromeActivity>
* Verifies that modal confirm-dialogs display, two buttons are visible and
* the return value of [Ok] equals true, [Cancel] equals false.
*/
+ @Test
@MediumTest
@Feature({"Browser", "Main"})
public void testConfirmModalDialog()
@@ -100,41 +114,43 @@ public class ModalDialogTest extends ChromeActivityTestCaseBase<ChromeActivity>
executeJavaScriptAndWaitForDialog("confirm('Android');");
JavascriptAppModalDialog jsDialog = getCurrentDialog();
- assertNotNull("No dialog showing.", jsDialog);
+ Assert.assertNotNull("No dialog showing.", jsDialog);
Button[] buttons = getAlertDialogButtons(jsDialog.getDialogForTest());
- assertNotNull("No cancel button in confirm dialog.", buttons[0]);
- assertEquals("Cancel button is not visible.", View.VISIBLE, buttons[0].getVisibility());
+ Assert.assertNotNull("No cancel button in confirm dialog.", buttons[0]);
+ Assert.assertEquals(
+ "Cancel button is not visible.", View.VISIBLE, buttons[0].getVisibility());
if (buttons[1] != null) {
- assertNotSame("Neutral button visible when it should not.",
- View.VISIBLE, buttons[1].getVisibility());
+ Assert.assertNotSame("Neutral button visible when it should not.", View.VISIBLE,
+ buttons[1].getVisibility());
}
- assertNotNull("No OK button in confirm dialog.", buttons[2]);
- assertEquals("OK button is not visible.", View.VISIBLE, buttons[2].getVisibility());
+ Assert.assertNotNull("No OK button in confirm dialog.", buttons[2]);
+ Assert.assertEquals("OK button is not visible.", View.VISIBLE, buttons[2].getVisibility());
clickOk(jsDialog);
- assertTrue("JavaScript execution should continue after closing dialog.",
+ Assert.assertTrue("JavaScript execution should continue after closing dialog.",
scriptEvent.waitUntilHasValue());
String resultString = scriptEvent.getJsonResultAndClear();
- assertEquals("Invalid return value.", "true", resultString);
+ Assert.assertEquals("Invalid return value.", "true", resultString);
// Try again, pressing cancel this time.
scriptEvent = executeJavaScriptAndWaitForDialog("confirm('Android');");
jsDialog = getCurrentDialog();
- assertNotNull("No dialog showing.", jsDialog);
+ Assert.assertNotNull("No dialog showing.", jsDialog);
clickCancel(jsDialog);
- assertTrue("JavaScript execution should continue after closing dialog.",
+ Assert.assertTrue("JavaScript execution should continue after closing dialog.",
scriptEvent.waitUntilHasValue());
resultString = scriptEvent.getJsonResultAndClear();
- assertEquals("Invalid return value.", "false", resultString);
+ Assert.assertEquals("Invalid return value.", "false", resultString);
}
/**
* Verifies that modal prompt-dialogs display and the result is returned.
*/
+ @Test
@MediumTest
@Feature({"Browser", "Main"})
public void testPromptModalDialog()
@@ -144,7 +160,7 @@ public class ModalDialogTest extends ChromeActivityTestCaseBase<ChromeActivity>
executeJavaScriptAndWaitForDialog("prompt('Android', 'default');");
final JavascriptAppModalDialog jsDialog = getCurrentDialog();
- assertNotNull("No dialog showing.", jsDialog);
+ Assert.assertNotNull("No dialog showing.", jsDialog);
// Set the text in the prompt field of the dialog.
boolean result = ThreadUtils.runOnUiThreadBlocking(new Callable<Boolean>() {
@@ -157,38 +173,42 @@ public class ModalDialogTest extends ChromeActivityTestCaseBase<ChromeActivity>
return true;
}
});
- assertTrue("Failed to find prompt view in prompt dialog.", result);
+ Assert.assertTrue("Failed to find prompt view in prompt dialog.", result);
clickOk(jsDialog);
- assertTrue("JavaScript execution should continue after closing prompt.",
+ Assert.assertTrue("JavaScript execution should continue after closing prompt.",
scriptEvent.waitUntilHasValue());
String resultString = scriptEvent.getJsonResultAndClear();
- assertEquals("Invalid return value.", '"' + promptText + '"', resultString);
+ Assert.assertEquals("Invalid return value.", '"' + promptText + '"', resultString);
}
/**
* Verifies beforeunload dialogs are shown and they block/allow navigation
* as appropriate.
*/
+ @Test
@MediumTest
@Feature({"Browser", "Main"})
public void testBeforeUnloadDialog()
throws InterruptedException, TimeoutException, ExecutionException {
- loadUrl(BEFORE_UNLOAD_URL);
+ mActivityTestRule.loadUrl(BEFORE_UNLOAD_URL);
executeJavaScriptAndWaitForDialog("history.back();");
JavascriptAppModalDialog jsDialog = getCurrentDialog();
- assertNotNull("No dialog showing.", jsDialog);
+ Assert.assertNotNull("No dialog showing.", jsDialog);
checkButtonPresenceVisibilityText(jsDialog, 0, R.string.cancel, "Cancel");
clickCancel(jsDialog);
- assertEquals(BEFORE_UNLOAD_URL, getActivity().getCurrentContentViewCore()
- .getWebContents().getUrl());
+ Assert.assertEquals(BEFORE_UNLOAD_URL,
+ mActivityTestRule.getActivity()
+ .getCurrentContentViewCore()
+ .getWebContents()
+ .getUrl());
executeJavaScriptAndWaitForDialog("history.back();");
jsDialog = getCurrentDialog();
- assertNotNull("No dialog showing.", jsDialog);
+ Assert.assertNotNull("No dialog showing.", jsDialog);
checkButtonPresenceVisibilityText(jsDialog, 2, R.string.leave, "Leave");
final TestCallbackHelperContainer.OnPageFinishedHelper onPageLoaded =
@@ -196,22 +216,26 @@ public class ModalDialogTest extends ChromeActivityTestCaseBase<ChromeActivity>
int callCount = onPageLoaded.getCallCount();
clickOk(jsDialog);
onPageLoaded.waitForCallback(callCount);
- assertEquals(EMPTY_PAGE, getActivity().getCurrentContentViewCore()
- .getWebContents().getUrl());
+ Assert.assertEquals(EMPTY_PAGE,
+ mActivityTestRule.getActivity()
+ .getCurrentContentViewCore()
+ .getWebContents()
+ .getUrl());
}
/**
* Verifies that when showing a beforeunload dialogs as a result of a page
* reload, the correct UI strings are used.
*/
+ @Test
@MediumTest
@Feature({"Browser", "Main"})
public void testBeforeUnloadOnReloadDialog() throws InterruptedException, ExecutionException {
- loadUrl(BEFORE_UNLOAD_URL);
+ mActivityTestRule.loadUrl(BEFORE_UNLOAD_URL);
executeJavaScriptAndWaitForDialog("window.location.reload();");
JavascriptAppModalDialog jsDialog = getCurrentDialog();
- assertNotNull("No dialog showing.", jsDialog);
+ Assert.assertNotNull("No dialog showing.", jsDialog);
checkButtonPresenceVisibilityText(jsDialog, 0, R.string.cancel, "Cancel");
checkButtonPresenceVisibilityText(jsDialog, 2, R.string.reload, "Reload");
@@ -221,6 +245,7 @@ public class ModalDialogTest extends ChromeActivityTestCaseBase<ChromeActivity>
* Verifies that repeated dialogs give the option to disable dialogs
* altogether and then that disabling them works.
*/
+ @Test
@MediumTest
@Feature({"Browser", "Main"})
public void testDisableRepeatedDialogs()
@@ -230,7 +255,7 @@ public class ModalDialogTest extends ChromeActivityTestCaseBase<ChromeActivity>
// Show a dialog once.
JavascriptAppModalDialog jsDialog = getCurrentDialog();
- assertNotNull("No dialog showing.", jsDialog);
+ Assert.assertNotNull("No dialog showing.", jsDialog);
clickCancel(jsDialog);
scriptEvent.waitUntilHasValue();
@@ -238,7 +263,7 @@ public class ModalDialogTest extends ChromeActivityTestCaseBase<ChromeActivity>
// Show it again, it should have the option to suppress subsequent dialogs.
scriptEvent = executeJavaScriptAndWaitForDialog("alert('Android');");
jsDialog = getCurrentDialog();
- assertNotNull("No dialog showing.", jsDialog);
+ Assert.assertNotNull("No dialog showing.", jsDialog);
final AlertDialog dialog = jsDialog.getDialogForTest();
String errorMessage = ThreadUtils.runOnUiThreadBlocking(new Callable<String>() {
@Override
@@ -253,14 +278,15 @@ public class ModalDialogTest extends ChromeActivityTestCaseBase<ChromeActivity>
return null;
}
});
- assertNull(errorMessage, errorMessage);
+ Assert.assertNull(errorMessage, errorMessage);
clickCancel(jsDialog);
scriptEvent.waitUntilHasValue();
scriptEvent.evaluateJavaScriptForTests(
- getActivity().getCurrentContentViewCore().getWebContents(),
+ mActivityTestRule.getActivity().getCurrentContentViewCore().getWebContents(),
"alert('Android');");
- assertTrue("No further dialog boxes should be shown.", scriptEvent.waitUntilHasValue());
+ Assert.assertTrue(
+ "No further dialog boxes should be shown.", scriptEvent.waitUntilHasValue());
}
/**
@@ -268,6 +294,7 @@ public class ModalDialogTest extends ChromeActivityTestCaseBase<ChromeActivity>
* to accept the dialog. Verifies that the dialog is dismissed when the tab
* is closed.
*/
+ @Test
@MediumTest
@Feature({"Browser", "Main"})
public void testDialogDismissedAfterClosingTab() {
@@ -276,7 +303,7 @@ public class ModalDialogTest extends ChromeActivityTestCaseBase<ChromeActivity>
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
public void run() {
- ChromeActivity activity = getActivity();
+ ChromeActivity activity = mActivityTestRule.getActivity();
activity.getCurrentTabModel().closeTab(activity.getActivityTab());
}
});
@@ -301,7 +328,7 @@ public class ModalDialogTest extends ChromeActivityTestCaseBase<ChromeActivity>
private OnEvaluateJavaScriptResultHelper executeJavaScriptAndWaitForDialog(
final OnEvaluateJavaScriptResultHelper helper, String script) {
helper.evaluateJavaScriptForTests(
- getActivity().getCurrentContentViewCore().getWebContents(),
+ mActivityTestRule.getActivity().getCurrentContentViewCore().getWebContents(),
script);
CriteriaHelper.pollInstrumentationThread(new JavascriptAppModalDialogShownCriteria(
"Could not spawn or locate a modal dialog.", true));
@@ -393,16 +420,16 @@ public class ModalDialogTest extends ChromeActivityTestCaseBase<ChromeActivity>
int expectedTextResourceId, String readableName) throws ExecutionException {
final Button[] buttons = getAlertDialogButtons(jsDialog.getDialogForTest());
final Button button = buttons[buttonIndex];
- assertNotNull("No '" + readableName + "' button in confirm dialog.", button);
- assertEquals("'" + readableName + "' button is not visible.",
- View.VISIBLE,
+ Assert.assertNotNull("No '" + readableName + "' button in confirm dialog.", button);
+ Assert.assertEquals("'" + readableName + "' button is not visible.", View.VISIBLE,
button.getVisibility());
- assertEquals("'" + readableName + "' button has wrong text",
- getActivity().getResources().getString(expectedTextResourceId),
+ Assert.assertEquals("'" + readableName + "' button has wrong text",
+ mActivityTestRule.getActivity().getResources().getString(expectedTextResourceId),
button.getText().toString());
}
private TestCallbackHelperContainer getActiveTabTestCallbackHelperContainer() {
- return new TestCallbackHelperContainer(getActivity().getCurrentContentViewCore());
+ return new TestCallbackHelperContainer(
+ mActivityTestRule.getActivity().getCurrentContentViewCore());
}
}

Powered by Google App Engine
This is Rietveld 408576698