Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
6e56015
Find recyclerview by getting child of the RelativeLayout
JavonDavis Sep 29, 2020
d98ae73
fix unwanted changes
JavonDavis Sep 29, 2020
fc74963
fix unwanted changes
JavonDavis Sep 29, 2020
02b074a
fix unwanted changes
JavonDavis Sep 29, 2020
58e2cde
fix linter error
JavonDavis Sep 29, 2020
7008088
add comment and put workaround in if check
JavonDavis Oct 2, 2020
9239ddf
fix linter error
JavonDavis Oct 5, 2020
bbc9111
Merge branch 'fix/screenshot-ui-tests' of github.com:wordpress-mobile…
designsimply Oct 5, 2020
4431537
Update Screenshot UI Tests with New Designs
designsimply Oct 8, 2020
dd95396
Merge branch 'develop' of github.com:wordpress-mobile/WordPress-Andro…
JavonDavis Oct 8, 2020
4c9d135
Get the add block button to click (add_block_diff.txt)
designsimply Oct 9, 2020
3549f7a
Merge branch 'develop' of github.com:wordpress-mobile/WordPress-Andro…
JavonDavis Oct 12, 2020
b589b21
Merge branch 'develop' of github.com:wordpress-mobile/WordPress-Andro…
JavonDavis Oct 13, 2020
ba06cd9
Merge branch 'update/screenshot-ui-tests-with-new-designs' of github.…
JavonDavis Oct 13, 2020
1ca5ac9
updated mocks for post
JavonDavis Oct 13, 2020
c7ba0e7
updated mocks for discover
JavonDavis Oct 13, 2020
f6dc873
updated mocks for stats
JavonDavis Oct 13, 2020
eb8eb9e
updated mocks for notifications
JavonDavis Oct 13, 2020
ef5780d
updated mocks for notifications
JavonDavis Oct 13, 2020
af3e7d7
undo xml change
JavonDavis Oct 13, 2020
435e560
navigate to try county site before stats
JavonDavis Oct 13, 2020
ddf3166
fix missing stubs
JavonDavis Oct 14, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.wordpress.android.e2e.pages;

import android.view.ViewGroup;

import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;

Expand All @@ -22,6 +24,13 @@ public static void scrollToTop() {

private static RecyclerView getRecyclerView() {
ViewPager pager = getCurrentActivity().findViewById(R.id.postPager);
return (RecyclerView) pager.getChildAt(pager.getCurrentItem()).findViewById(R.id.recycler_view);
RecyclerView recyclerView = (RecyclerView) pager.getChildAt(pager.getCurrentItem())
.findViewById(R.id.recycler_view);
if (recyclerView == null) {
// Workaround for cases when recyclerview id missing
recyclerView = (RecyclerView) ((ViewGroup) ((ViewGroup) (pager.getChildAt(pager.getCurrentItem()))
.findViewById(R.id.ptr_layout)).getChildAt(0)).getChildAt(0);
}
return recyclerView;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,12 @@
import androidx.test.espresso.UiController;
import androidx.test.espresso.ViewAction;
import androidx.test.espresso.ViewInteraction;
import androidx.test.espresso.action.CoordinatesProvider;
import androidx.test.espresso.action.GeneralClickAction;
import androidx.test.espresso.action.GeneralLocation;
import androidx.test.espresso.action.GeneralSwipeAction;
import androidx.test.espresso.action.Press;
import androidx.test.espresso.action.Swipe;
import androidx.test.espresso.action.Tap;
import androidx.test.espresso.action.ViewActions;
import androidx.test.runner.lifecycle.ActivityLifecycleMonitorRegistry;
Expand All @@ -39,6 +42,9 @@
import static androidx.test.espresso.action.ViewActions.closeSoftKeyboard;
import static androidx.test.espresso.action.ViewActions.longClick;
import static androidx.test.espresso.action.ViewActions.replaceText;
import static androidx.test.espresso.action.ViewActions.swipeDown;
import static androidx.test.espresso.action.ViewActions.swipeUp;
import static androidx.test.espresso.matcher.ViewMatchers.withContentDescription;
import static org.wordpress.android.support.BetterScrollToAction.scrollTo;
import static androidx.test.espresso.action.ViewActions.swipeLeft;
import static androidx.test.espresso.action.ViewActions.swipeRight;
Expand Down Expand Up @@ -111,6 +117,10 @@ public static void clickOn(ViewInteraction viewInteraction) {
idleFor(500); // allow for transitions
}

public static void clickOnViewWithContentDescription(String contentDescription) {
clickOn(onView(withContentDescription(contentDescription)));
}

/**
* Returns an action that performs a single click on the view.
*
Expand Down Expand Up @@ -359,6 +369,23 @@ public static void selectItemWithTitleInTabLayout(String string, Integer element
clickOn(tabItemInTabLayoutWithTitle(elementID, string));
}

private static ViewAction swipeFromBottomToTop(float yFactor) {
return new GeneralSwipeAction(Swipe.SLOW,
view -> {
float[] coordinates = GeneralLocation.CENTER.calculateCoordinates(view);
coordinates[1] *= yFactor;
return coordinates;
}, GeneralLocation.TOP_CENTER, Press.FINGER);
}

public static void swipeUpOnView(Integer elementID, float yFactor) {
onView(withId(elementID)).perform(swipeFromBottomToTop(yFactor));
}

public static void swipeDownOnView(Integer elementID) {
onView(withId(elementID)).perform(swipeDown());
}

private static Boolean tabLayoutHasTextDisplayed(Integer elementID, String text) {
return isElementCompletelyDisplayed(tabItemInTabLayoutWithTitle(elementID, text));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,15 @@
import org.wordpress.android.util.image.ImageType;

import static org.wordpress.android.support.WPSupportUtils.clickOn;
import static org.wordpress.android.support.WPSupportUtils.clickOnViewWithContentDescription;
import static org.wordpress.android.support.WPSupportUtils.dialogExistsWithTitle;
import static org.wordpress.android.support.WPSupportUtils.getCurrentActivity;
import static org.wordpress.android.support.WPSupportUtils.getTranslatedString;
import static org.wordpress.android.support.WPSupportUtils.idleFor;
import static org.wordpress.android.support.WPSupportUtils.pressBackUntilElementIsDisplayed;
import static org.wordpress.android.support.WPSupportUtils.scrollToThenClickOn;
import static org.wordpress.android.support.WPSupportUtils.selectItemWithTitleInTabLayout;
import static org.wordpress.android.support.WPSupportUtils.swipeUpOnView;
import static org.wordpress.android.support.WPSupportUtils.tapButtonInDialogWithTitle;
import static org.wordpress.android.support.WPSupportUtils.waitForAtLeastOneElementWithIdToBeDisplayed;
import static org.wordpress.android.support.WPSupportUtils.waitForElementToBeDisplayed;
Expand Down Expand Up @@ -62,62 +64,46 @@ public void wPScreenshotTest() {

wpLogin();

idleFor(1000);
takeScreenshot("1-build-and-manage-your-website");

navigateMySite();
editBlogPost();
manageMedia();
navigateNotifications();
navigateDiscover();
navigateMySite();
navigateStats();
navigateNotifications();
manageMedia();

// Turn Demo Mode off on the emulator when we're done
mDemoModeEnabler.disable();
logoutIfNecessary();
}

private void navigateMySite() {
// Click on the "Sites" tab and take a screenshot
clickOn(R.id.nav_sites);

waitForElementToBeDisplayedWithoutFailure(R.id.row_blog_posts);

takeScreenshot("4-keep-tabs-on-your-site");
}

private void editBlogPost() {
// Choose the "sites" tab in the nav
clickOn(R.id.nav_sites);

// Choose "Switch Site"
clickOn(R.id.switch_site);

(new SitePickerPage()).chooseSiteWithURL("infocusphotographers.com");
(new SitePickerPage()).chooseSiteWithURL("fourpawsdoggrooming.wordpress.com");

// Choose "Blog Posts"
scrollToThenClickOn(R.id.quick_action_posts_button);

// Choose "Drafts"
selectItemWithTitleInTabLayout(getTranslatedString(R.string.post_list_tab_drafts), R.id.tabLayout);

// Get a screenshot of the writing feature (without image)
String name = "2-create-beautiful-posts-and-pages";
screenshotPostWithName("Time to Book Summer Sessions", name, false);

// Get a screenshot of the drafts feature
screenshotPostWithName("Ideas", "6-capture-ideas-on-the-go", false);
// Get a screenshot of the editor with the block library expanded
String name = "1-create-a-site-or-start-a-blog";

// Get a screenshot of the drafts feature
screenshotPostWithName("Summer Band Jam", "7-create-beautiful-posts-and-pages", true);

// Get a screenshot for "write without compromises"
screenshotPostWithName("Now Booking Summer Sessions", "8-write-without-compromises", true);
screenshotPostWithName("Our Services", name, false, true);

// Exit back to the main activity
pressBackUntilElementIsDisplayed(R.id.nav_sites);
}

private void screenshotPostWithName(String name, String screenshotName, boolean hideKeyboard) {
private void screenshotPostWithName(String name,
String screenshotName,
boolean hideKeyboard,
boolean openBlockList) {
idleFor(2000);

PostsListPage.scrollToTop();
Expand All @@ -137,20 +123,57 @@ private void screenshotPostWithName(String name, String screenshotName, boolean
Espresso.closeSoftKeyboard();
}

if (openBlockList) {
clickOnViewWithContentDescription("Add block, Double tap to add a block");
}

takeScreenshot(screenshotName);
pressBackUntilElementIsDisplayed(R.id.tabLayout);
}

private void manageMedia() {
// Click on the "Sites" tab in the nav, then choose "Media"
private void navigateDiscover() {
// Click on the "Reader" tab and take a screenshot
clickOn(R.id.nav_reader);

waitForElementToBeDisplayedWithoutFailure(R.id.interests_fragment_container);

swipeUpOnView(R.id.interests_fragment_container, (float) 1.15);
swipeUpOnView(R.id.fragment_container, (float) 0.5);
takeScreenshot("2-discover-new-reads");

// Exit back to the main activity
pressBackUntilElementIsDisplayed(R.id.nav_sites);
}

private void navigateStats() {
// Click on the "Sites" tab in the nav, then choose "Stats"
clickOn(R.id.nav_sites);
clickOn(R.id.quick_action_media_button);
clickOn(R.id.row_stats);

waitForElementToBeDisplayedWithoutFailure(R.id.media_grid_item_image);
// Show the months view
selectItemWithTitleInTabLayout(getTranslatedString(R.string.stats_timeframe_months), R.id.tabLayout);

takeScreenshot("5-share-from-anywhere");
// Wait for the stats to load
idleFor(5000);

pressBackUntilElementIsDisplayed(R.id.quick_action_media_button);
takeScreenshot("3-build-an-audience");

// Exit the Stats Activity
pressBackUntilElementIsDisplayed(R.id.nav_sites);
}

private void navigateMySite() {
// Click on the "Sites" tab and take a screenshot
clickOn(R.id.nav_sites);

// Choose "Switch Site"
clickOn(R.id.switch_site);

(new SitePickerPage()).chooseSiteWithURL("tricountyrealestate.wordpress.com");

waitForElementToBeDisplayedWithoutFailure(R.id.row_blog_posts);

takeScreenshot("4-keep-tabs-on-your-site");
}

private void navigateNotifications() {
Expand All @@ -161,27 +184,22 @@ private void navigateNotifications() {
waitForImagesOfTypeWithPlaceholder(R.id.note_avatar, ImageType.AVATAR);


takeScreenshot("4-check-whats-happening-in-real-time");
takeScreenshot("5-reply-in-real-time");

// Exit the notifications activity
pressBackUntilElementIsDisplayed(R.id.nav_sites);
}

private void navigateStats() {
// Click on the "Sites" tab in the nav, then choose "Stats"
private void manageMedia() {
// Click on the "Sites" tab in the nav, then choose "Media"
clickOn(R.id.nav_sites);
clickOn(R.id.row_stats);

// Show the year view – it'll have the best layout
selectItemWithTitleInTabLayout(getTranslatedString(R.string.stats_timeframe_years), R.id.tabLayout);
clickOn(R.id.quick_action_media_button);

// Wait for the stats to load
idleFor(5000);
waitForElementToBeDisplayedWithoutFailure(R.id.media_grid_item_image);

takeScreenshot("3-track-what-your-visitors-love");
takeScreenshot("6-upload-on-the-go");

// Exit the Stats Activity
pressBackUntilElementIsDisplayed(R.id.nav_sites);
pressBackUntilElementIsDisplayed(R.id.quick_action_media_button);
}

private void takeScreenshot(String screenshotName) {
Expand Down
Loading