User Stories demonstrate the functionality of a feature from the perspective of a user, while the Acceptance Criteria defines our boundaries for each one.
As an unauthorized user, I want to be able to create an account via a signup form to have full access to all the features of hotpotato.
Acceptance Criteria ✅
Given I am at a sign up form
with all these mandatory fields: First Name, Last Name, Email Address, Password, and Confirm Password
Success
Scenario:
User enters valid data
When
I enter valid inputs for all of the required fields
And
I submit the form
Then
the new user account will be created
And
the user will be redirected to the user's feed
Failure 1
Scenario
User enters existing email/username
When
I fill out all form fields
And
I enter an existing email or username
And
I submit the form
Then
an error message should appear "email or username field is already in use"
Failure 2
Scenario
User enters non-matching passwords
When
I fill out all form fields
And
I enter a password doesn't match the confirm password
And
I submit the form
Then
an error message should appear "password field is not matching"
Failure 3
Scenario
User enters a weak password
When
I fill out all form fields
And
I enter a password that doesn't meet the criteria, at least:
8 characters long
one lowercase and uppercase alpha character
one number
one symbol
And
I submit the form
Then
an error message should appear "password is not strong because of certain criteria"
Demo User 👤
As a Demo User, I would like to have full access in order to see if hotpotato fits my needs and to quickly test all of the features.
Acceptance Criteria ✅
Given that I am at the home page
Success
Scenario:
User signs in as Demo
When
I press the Demo Login button
Then
I will log in to a pre-seeded account
And
I will be redirected to the user's feed
So That
I will have full access to all features
Login 🔑
As user, I want to be able to login and access my account.
Acceptance Criteria ✅
Given that I'm at the login page:
with the mandatory fields: Email Address and Password
Success
Scenario:
User enters a valid username and password
When
I enter valid inputs
And
I submit the form
Then
I will be redirected to the users dashboard
Failure 1
Scenario
User enters invalid email/username combination
When
I fill out the form fields
And
I enter an invalid username and/or password
And
I submit the form
Then
an error message should appear "Invalid Login. Please Try Again."
Failure 2
Scenario
User enters a non-existent username/email
When
I fill out the form fields
And
I enter an invalid username and/or password
And
I submit the form
Then
an error message should appear "Invalid Login. Please Try Again."
Logout
As a logged-in user, I want to be able to end my session and log out of my account to protect my privacy and information when I am not using the application.
Acceptance Criteria ✅
Given that I'm logged in:
Success 1
Scenario:
User is able to log out on any page
When
I navigate to any page
And
I press the Logout button
Then
I will be logged out
And
I will be redirected to the feed page
Profile 👤
As a logged-in user, I want to be able to access my recipes and view my followers.
Acceptance Criteria ✅
Given that I'm logged in:
Success 1
Scenario:
Logged in User will have full CRUD access to recipes and comments.
When
I navigate to any page
Then
I will be able to see a create Recipe or Comment button
So That
I can add my own Recipe or Comment
Success 2
Scenario:
Logged in User will have full CRUD access to recipes and comments.
When
I navigate to a recipe
Then
I will be able to see an edit and delete Recipe or Comment button
So That
I can edit and delete my own Recipes or Comment
Failure
Scenario:
User can't edit, or delete Recipe or Comment that are not owned
When
I navigate to another Recipe or Comment that I do not own
Then
I will not see any of the buttons:
Edit
Delete
Given that I'm logged out:
Success
Scenario:
Logged out User can't add, edit, or delete a Recipe or Comment
When
I navigate to any page
Then
I will be redirected Login or Signup page
Following
As a logged-in user, I want to be able to follow other users and have other users follow me.
Acceptance Criteria ✅
Given that I'm logged in:
Success 1
Scenario:
User can follow other users
When
a user follows me
Then
I receive a notification
So That
I know that I have a new follower
Success 2
Scenario:
User can follow other users
When
I follow a user
Then
the follow button will noticeably change
So That
I know I am following this user
Recipes 📝
As a logged-in user, I want to be able to add, edit, or delete a recipe.
Acceptance Criteria ✅
Given that I'm logged in:
And I'm on any page
Success 1
Scenario:
User can add a Recipe
When
I press the Add a Recipe
Then
I will see a form with the fields:
title/name
description
Success 2
Scenario:
User can delete a Recipe
When
I press the Delete button on a Recipe
Then
the Recipe will be deleted dynamically
Success 3
Scenario:
User can edit a Recipe
When
I press the Edit button on a Recipe
And
Change the text
And
I press Enter or Finish
Then
the Recipe will be edited dynamically
Feed
As a logged in users, I want to be able to see the recipes of the people that I follow.
As a logged out users, I want to be able to see the feed of recipes.
Acceptance Criteria ✅
Given that I'm at the feed page:
Success
Scenario:
All Users can see the feed
When
I first navigate to the home page
Then
I will see the Feed page
So That
I will be able see tiles of
Recipes
Likes ❤️
As a logged-in user, I want to be able to like recipes.
Acceptance Criteria ✅
Given that I'm a logged-in user:
And I'm at another user's recipe page
Success 1
Scenario:
User can like a recipe
When
I press the Like button
Then
it will add to the recipe's likes count
Success 2
Scenario:
User can unlike a recipe
When
I press the Unlike button
Then
it will subtract from the recipe's likes count
Comments
As a logged-in user, I want to be able to add, edit, or delete a comment.
Acceptance Criteria ✅
Given that I'm logged in:
And I'm on any recipe page
Success 1
Scenario:
User can add a Comment
When
I press the Add a Comment
Then
I will see a form with the fields:
comment
Success 2
Scenario:
User can delete a Comment
When
I press the Delete button on a Comment
Then
the Comment will be deleted dynamically
Success 3
Scenario:
User can edit a Comment
When
I press the Edit button on a Comment
And
Change the text
And
I press Enter or Finish
Then
the Comment will be edited dynamically
Bonuses 🏆
Search 🔍
As a user, I want to be able to search for other recipes.
Acceptance Criteria ✅
Given that I'm logged-in and/or logged-out:
Scenario:
All Users can search for a recipe
When
I click into the search bar
And
I will be able to see
Recipes
Tags
Then
I will hit enter
And
Be sent to another page with pertinent search results