Commit af549754 authored by Yue Zhang's avatar Yue Zhang Committed by Commit Bot

Add render tests for TabGridDialog

This CL adds e2e test to cover item 1.6.15 in
https://testtracker.googleplex.com/testplans/details/32981.

Bug: 1105511
Change-Id: Ib19c38b064d0fd201918af0bee0584170db72786
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2296343
Commit-Queue: Yue Zhang <yuezhanggg@chromium.org>
Reviewed-by: default avatarWei-Yin Chen (陳威尹) <wychen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#789712}
parent 0e57dc2f
...@@ -33,6 +33,7 @@ import static org.chromium.chrome.browser.flags.ChromeFeatureList.TAB_GRID_LAYOU ...@@ -33,6 +33,7 @@ import static org.chromium.chrome.browser.flags.ChromeFeatureList.TAB_GRID_LAYOU
import static org.chromium.chrome.browser.flags.ChromeFeatureList.TAB_GROUPS_ANDROID; import static org.chromium.chrome.browser.flags.ChromeFeatureList.TAB_GROUPS_ANDROID;
import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.clickFirstCardFromTabSwitcher; import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.clickFirstCardFromTabSwitcher;
import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.clickFirstTabInDialog; import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.clickFirstTabInDialog;
import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.clickNthTabInDialog;
import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.closeFirstTabInDialog; import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.closeFirstTabInDialog;
import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.closeNthTabInDialog; import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.closeNthTabInDialog;
import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.createTabs; import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.createTabs;
...@@ -41,6 +42,7 @@ import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.g ...@@ -41,6 +42,7 @@ import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.g
import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.mergeAllNormalTabsToAGroup; import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.mergeAllNormalTabsToAGroup;
import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.prepareTabsWithThumbnail; import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.prepareTabsWithThumbnail;
import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.rotateDeviceToOrientation; import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.rotateDeviceToOrientation;
import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.verifyAllTabsHaveThumbnail;
import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.verifyTabStripFaviconCount; import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.verifyTabStripFaviconCount;
import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.verifyTabSwitcherCardCount; import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.verifyTabSwitcherCardCount;
...@@ -64,33 +66,41 @@ import androidx.test.filters.MediumTest; ...@@ -64,33 +66,41 @@ import androidx.test.filters.MediumTest;
import org.junit.After; import org.junit.After;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule; import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.chromium.base.test.params.ParameterAnnotations;
import org.chromium.base.test.params.ParameterizedRunner;
import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.Restriction; import org.chromium.base.test.util.Restriction;
import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.ChromeTabbedActivity;
import org.chromium.chrome.browser.compositor.layouts.Layout; import org.chromium.chrome.browser.compositor.layouts.Layout;
import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.night_mode.ChromeNightModeTestUtils;
import org.chromium.chrome.browser.tasks.tab_groups.TabGroupModelFilter; import org.chromium.chrome.browser.tasks.tab_groups.TabGroupModelFilter;
import org.chromium.chrome.features.start_surface.StartSurfaceLayout; import org.chromium.chrome.features.start_surface.StartSurfaceLayout;
import org.chromium.chrome.tab_ui.R; import org.chromium.chrome.tab_ui.R;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4RunnerDelegate;
import org.chromium.chrome.test.ChromeTabbedActivityTestRule; import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
import org.chromium.chrome.test.util.ChromeRenderTestRule;
import org.chromium.chrome.test.util.browser.Features; import org.chromium.chrome.test.util.browser.Features;
import org.chromium.content_public.browser.test.util.CriteriaHelper; import org.chromium.content_public.browser.test.util.CriteriaHelper;
import org.chromium.content_public.browser.test.util.TestThreadUtils; import org.chromium.content_public.browser.test.util.TestThreadUtils;
import org.chromium.ui.test.util.NightModeTestUtils;
import org.chromium.ui.test.util.UiRestriction; import org.chromium.ui.test.util.UiRestriction;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
/** End-to-end tests for TabGridDialog component. */ /** End-to-end tests for TabGridDialog component. */
@RunWith(ChromeJUnit4ClassRunner.class)
// clang-format off // clang-format off
@RunWith(ParameterizedRunner.class)
@ParameterAnnotations.UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class)
@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
@Restriction(UiRestriction.RESTRICTION_TYPE_PHONE) @Restriction(UiRestriction.RESTRICTION_TYPE_PHONE)
@Features.EnableFeatures({TAB_GRID_LAYOUT_ANDROID, TAB_GROUPS_ANDROID}) @Features.EnableFeatures({TAB_GRID_LAYOUT_ANDROID, TAB_GROUPS_ANDROID})
...@@ -106,6 +116,10 @@ public class TabGridDialogTest { ...@@ -106,6 +116,10 @@ public class TabGridDialogTest {
@Rule @Rule
public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
@Rule
public ChromeRenderTestRule mRenderTestRule =
ChromeRenderTestRule.Builder.withPublicCorpus().build();
@Rule @Rule
public TestRule mProcessor = new Features.InstrumentationProcessor(); public TestRule mProcessor = new Features.InstrumentationProcessor();
...@@ -113,6 +127,17 @@ public class TabGridDialogTest { ...@@ -113,6 +127,17 @@ public class TabGridDialogTest {
public IntentsTestRule<ChromeActivity> mShareActivityTestRule = public IntentsTestRule<ChromeActivity> mShareActivityTestRule =
new IntentsTestRule<>(ChromeActivity.class, false, false); new IntentsTestRule<>(ChromeActivity.class, false, false);
@BeforeClass
public static void setUpBeforeActivityLaunched() {
ChromeNightModeTestUtils.setUpNightModeBeforeChromeActivityLaunched();
}
@ParameterAnnotations.UseMethodParameterBefore(NightModeTestUtils.NightModeParams.class)
public void setupNightMode(boolean nightModeEnabled) {
ChromeNightModeTestUtils.setUpNightModeForChromeActivity(nightModeEnabled);
mRenderTestRule.setNightModeEnabled(nightModeEnabled);
}
@Before @Before
public void setUp() { public void setUp() {
TabUiFeatureUtilities.setTabManagementModuleSupportedForTesting(true); TabUiFeatureUtilities.setTabManagementModuleSupportedForTesting(true);
...@@ -613,6 +638,73 @@ public class TabGridDialogTest { ...@@ -613,6 +638,73 @@ public class TabGridDialogTest {
verifyShowingDialog(cta, 1, null); verifyShowingDialog(cta, 1, null);
} }
@Test
@MediumTest
@Feature({"RenderTest"})
@ParameterAnnotations.UseMethodParameter(NightModeTestUtils.NightModeParams.class)
public void testRenderDialog_3Tabs_Portrait(boolean nightModeEnabled) throws Exception {
final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
prepareTabsWithThumbnail(mActivityTestRule, 3, 0, "about:blank");
enterTabSwitcher(cta);
verifyTabSwitcherCardCount(cta, 3);
verifyAllTabsHaveThumbnail(cta.getCurrentTabModel());
// Create a tab group.
mergeAllNormalTabsToAGroup(cta);
verifyTabSwitcherCardCount(cta, 1);
openDialogFromTabSwitcherAndVerify(cta, 3, null);
View dialogView = cta.findViewById(R.id.dialog_parent_view);
mRenderTestRule.render(dialogView, "3_tabs_portrait");
}
@Test
@MediumTest
@Feature({"RenderTest"})
@ParameterAnnotations.UseMethodParameter(NightModeTestUtils.NightModeParams.class)
public void testRenderDialog_3Tabs_Landscape(boolean nightModeEnabled) throws Exception {
final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
prepareTabsWithThumbnail(mActivityTestRule, 3, 0, "about:blank");
enterTabSwitcher(cta);
verifyTabSwitcherCardCount(cta, 3);
verifyAllTabsHaveThumbnail(cta.getCurrentTabModel());
// Rotate to landscape mode and create a tab group.
rotateDeviceToOrientation(cta, Configuration.ORIENTATION_LANDSCAPE);
mergeAllNormalTabsToAGroup(cta);
verifyTabSwitcherCardCount(cta, 1);
openDialogFromTabSwitcherAndVerify(cta, 3, null);
View dialogView = cta.findViewById(R.id.dialog_parent_view);
mRenderTestRule.render(dialogView, "3_tabs_landscape");
}
@Test
@MediumTest
@Feature({"RenderTest"})
@ParameterAnnotations.UseMethodParameter(NightModeTestUtils.NightModeParams.class)
public void testRenderDialog_5Tabs_InitialScroll(boolean nightModeEnabled) throws Exception {
final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
prepareTabsWithThumbnail(mActivityTestRule, 5, 0, "about:blank");
enterTabSwitcher(cta);
verifyTabSwitcherCardCount(cta, 5);
verifyAllTabsHaveThumbnail(cta.getCurrentTabModel());
// Create a tab group.
mergeAllNormalTabsToAGroup(cta);
verifyTabSwitcherCardCount(cta, 1);
openDialogFromTabSwitcherAndVerify(cta, 5, null);
// Select the last tab and reopen the dialog. Verify that the dialog has scrolled to the
// correct position.
clickNthTabInDialog(cta, 4);
enterTabSwitcher(cta);
openDialogFromTabSwitcherAndVerify(cta, 5, null);
View dialogView = cta.findViewById(R.id.dialog_parent_view);
mRenderTestRule.render(dialogView, "5_tabs_select_last");
}
private void openDialogFromTabSwitcherAndVerify( private void openDialogFromTabSwitcherAndVerify(
ChromeTabbedActivity cta, int tabCount, String customizedTitle) { ChromeTabbedActivity cta, int tabCount, String customizedTitle) {
clickFirstCardFromTabSwitcher(cta); clickFirstCardFromTabSwitcher(cta);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment