A Baking App that displays recipes and resources provided by Udacity on this link.
-
When the user first launches the app, available recipes will load. (If the device is a phone, they will display on a single column. Else if it's a tablet, they will display in two columns). Each recipe will display an image, its name and number of servings.
-
The user can swipe to the left to access the "Favorites" tab. If the user has previously selected favorite recipes, they will appear on this tab. Else, if the user has not selected any favorite recipes, a screen with a message will be displayed.
-
If the user clicks on a recipe, he/she will be taken to a details screen (if the device is a phone, a list of the recipe steps will be displayed. If it's a tablet, a details screen will be displayed with the list of steps on the left and the recipe ingredients (by default) on the right).
-
If the user is on a phone and clicks on a step, he/she will be taken to an activity where he/she can navigate through the steps by swiping to change tabs or clicking on the desired tab.
-
The ingredients screen will display the recipe image and a list of the ingredients, its quantity and unit.
-
Each step will display a video using ExoPlayer or if there is no video available, an image. If none of these are available, a placeholder image will be displayed. Additionally, a description of the step will be displayed.
-
The video can be toggled from full screen mode back to normal mode and vice versa.
-
To select a favorite recipe, the user must click on the heart icon on the top right corner of the details screen. An empty heart means that the recipe is not selected as favorite and a full heart means that the recipe has been selected as favorite.
-
The user can add a widget to the homescreen that will display the recipe's name, image, servings and a scrollable list of ingredients with their quantity and units.
-
The user can select a recipe to display on a widget by clicking on the overflow menu at the top right corner of the screen and checking the "Add to widget" option.
-
The user can toggle between an empty widget and a recipe to be displayed on the home screen widget.
-
If the user selects another recipe for the widget, it will automatically be updated.
-
All widgets will be updated with the same recipe data.
-
The widget is resizable horizontally.
-
Tests are divided into Test Suites. A test suite for phones, a test suite for tablets and a test suite with general tests.
-
UI Testing uses the Espresso library .
- If there is no internet connection, a dialog will be displayed warning the user to reconnect. If the user had loaded data previously, it the app will retain it and the user will be able to access the elements that don't require internet connection.
These were very helpful resources from which I found inspiration for elements in my code:
- Danny roa RecyclerView matcher
- Danny roa RecyclerView matcher code
- Using child fragment manager in nested fragments
- Convert dp to px
- Exoplayer full screen mode
- Retaining fragment on rotation
- Creating an overflow menu
- Placeholder image
- Chef hat image
- Girl chef image
- Change widget name
- Change icon from action bar programatically
- Hide remote view
- Add no connection and no favorites screen programatically
- Espresso intents
- Testing intents
- Open overflow menu in espresso
- Test suites documentation
- Idling resources
- Espresso contrib
- Espresso change timeout time
- Espresso for ImageView
- Espresso and ImageVIew
- Setting tags
- Settings tags to Menu Items
- AdapterViews and Espresso
- Sending extras with Espresso
- Custom assertions with Espresso
- Match multiple views
- Testing espresso using Shared Preferences
- Disable widget update
- Start activity with unique extras
- ActionBar style
- Tabs
- Tabs FragmentPager
- Full Screen video
- Full screen button
- Creating Overflow Menu
Images from Pixabay