mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-01 14:45:29 +00:00
127 lines
4.6 KiB
Java
127 lines
4.6 KiB
Java
package org.mozilla.gecko.tests;
|
|
|
|
import org.mozilla.gecko.Actions;
|
|
import org.mozilla.gecko.tests.helpers.GeckoHelper;
|
|
import org.mozilla.gecko.tests.helpers.NavigationHelper;
|
|
|
|
public class testHomeBanner extends UITest {
|
|
|
|
private static final String TEST_URL = "chrome://roboextender/content/robocop_home_banner.html";
|
|
private static final String TEXT = "The quick brown fox jumps over the lazy dog.";
|
|
|
|
public void testHomeBanner() {
|
|
GeckoHelper.blockForReady();
|
|
|
|
// Make sure the banner is not visible to start.
|
|
mAboutHome.assertVisible()
|
|
.assertBannerNotVisible();
|
|
|
|
// These test methods depend on being run in this order.
|
|
addBannerTest();
|
|
|
|
// Make sure the banner hides when the user starts interacting with the url bar.
|
|
hideOnToolbarFocusTest();
|
|
|
|
// TODO: API doesn't actually support this but it used to work due to how the banner was
|
|
// part of TopSitesPanel's lifecycle
|
|
// removeBannerTest();
|
|
|
|
// Make sure to test dismissing the banner after everything else, since dismissing
|
|
// the banner will prevent it from showing up again.
|
|
dismissBannerTest();
|
|
}
|
|
|
|
/**
|
|
* Adds a banner message, verifies that it appears when it should, and verifies that
|
|
* onshown/onclick handlers are called in JS.
|
|
*
|
|
* Note: This test does not remove the message after it is done.
|
|
*/
|
|
private void addBannerTest() {
|
|
// Load about:home and make sure the onshown handler is called.
|
|
Actions.EventExpecter eventExpecter = getActions().expectGeckoEvent("TestHomeBanner:MessageShown");
|
|
addBannerMessage();
|
|
NavigationHelper.enterAndLoadUrl(StringHelper.ABOUT_HOME_URL);
|
|
eventExpecter.blockForEvent();
|
|
|
|
// Verify that the banner is visible with the correct text.
|
|
mAboutHome.assertBannerText(TEXT);
|
|
|
|
// Test to make sure the onclick handler is called.
|
|
eventExpecter = getActions().expectGeckoEvent("TestHomeBanner:MessageClicked");
|
|
mAboutHome.clickOnBanner();
|
|
eventExpecter.blockForEvent();
|
|
|
|
// Verify that the banner isn't visible after navigating away from about:home.
|
|
NavigationHelper.enterAndLoadUrl(StringHelper.ABOUT_FIREFOX_URL);
|
|
|
|
mAboutHome.assertBannerNotVisible();
|
|
}
|
|
|
|
|
|
/**
|
|
* Removes a banner message, and verifies that it no longer appears on about:home.
|
|
*
|
|
* Note: This test expects for a message to have been added before it runs.
|
|
*/
|
|
private void removeBannerTest() {
|
|
removeBannerMessage();
|
|
|
|
// Verify that the banner no longer appears.
|
|
NavigationHelper.enterAndLoadUrl(StringHelper.ABOUT_HOME_URL);
|
|
mAboutHome.assertVisible()
|
|
.assertBannerNotVisible();
|
|
}
|
|
|
|
/**
|
|
* Adds a banner message, verifies that its ondismiss handler is called in JS,
|
|
* and verifies that the banner is no longer shown after it is dismissed.
|
|
*
|
|
* Note: This test does not remove the message after it is done.
|
|
*/
|
|
private void dismissBannerTest() {
|
|
// Add back the banner message to test the dismiss functionality.
|
|
addBannerMessage();
|
|
|
|
NavigationHelper.enterAndLoadUrl(StringHelper.ABOUT_HOME_URL);
|
|
mAboutHome.assertVisible();
|
|
|
|
// Test to make sure the ondismiss handler is called when the close button is clicked.
|
|
final Actions.EventExpecter eventExpecter = getActions().expectGeckoEvent("TestHomeBanner:MessageDismissed");
|
|
mAboutHome.dismissBanner();
|
|
eventExpecter.blockForEvent();
|
|
|
|
mAboutHome.assertBannerNotVisible();
|
|
}
|
|
|
|
private void hideOnToolbarFocusTest() {
|
|
NavigationHelper.enterAndLoadUrl(StringHelper.ABOUT_HOME_URL);
|
|
mAboutHome.assertVisible()
|
|
.assertBannerVisible();
|
|
|
|
mToolbar.enterEditingMode();
|
|
mAboutHome.assertBannerNotVisible();
|
|
|
|
mToolbar.dismissEditingMode();
|
|
mAboutHome.assertBannerVisible();
|
|
}
|
|
|
|
/**
|
|
* Loads the roboextender page to add a message to the banner.
|
|
*/
|
|
private void addBannerMessage() {
|
|
final Actions.EventExpecter eventExpecter = getActions().expectGeckoEvent("TestHomeBanner:MessageAdded");
|
|
NavigationHelper.enterAndLoadUrl(TEST_URL + "#addMessage");
|
|
eventExpecter.blockForEvent();
|
|
}
|
|
|
|
/**
|
|
* Loads the roboextender page to remove the message from the banner.
|
|
*/
|
|
private void removeBannerMessage() {
|
|
final Actions.EventExpecter eventExpecter = getActions().expectGeckoEvent("TestHomeBanner:MessageRemoved");
|
|
NavigationHelper.enterAndLoadUrl(TEST_URL + "#removeMessage");
|
|
eventExpecter.blockForEvent();
|
|
}
|
|
}
|