Skip to content
Bugwise
Menu
Capstone · FoodDash 2.0

Phase 1 of 5 · about 10–15 min

The project brief

Everything the FoodDash team gave you on day one. Read it like a tester: every acceptance criterion is an oracle you can test against, and every gap is a question to ask.

Product

FoodDash

Version

2.0.0 (build 412)

Target release

Friday, after go / no-go

QA contact

You (lead: Sara)

Product overview

FoodDash is a food delivery app for iOS and Android. Customers find a restaurant, fill a cart, choose a delivery address and time, pay, and follow the courier until the food arrives. Most orders are placed in the evening, on a phone, often in a hurry and one-handed.

The app has seven main screens:

  • Login: email and password.
  • Home: restaurant list with search and filters.
  • Restaurant menu: dishes with quantity controls.
  • Cart: items, coupon code, delivery fee and total.
  • Checkout: address, delivery time and Place order.
  • Order tracking: progress of the current order, plus push notifications.
  • Profile and settings: personal data, language, notifications and Log out.

Goals of 2.0: raise checkout conversion with the redesigned checkout, and launch in Germany, Austria and Serbia. Checkout and payment are where the money is, so problems there hurt the most.

Release notes: FoodDash 2.0.0 (build 412)

New

  • Redesigned checkout with 30-minute delivery slots and one-tap Place order.
  • Address autocomplete: suggestions as you type.
  • Coupon codes in the cart. Launch code: WELCOME10 (10% off).
  • Free delivery from €20.00 after discounts; otherwise €2.99.
  • Deutsch and Srpski next to English. Srpski shows prices in RSD.
  • Dark mode that follows the system setting.
  • Push notifications for order status, and new notification settings with a separate switch for promotions.

Improved

  • Search ignores capitalization and accents.
  • Restaurant cards show the rating next to the name.
  • Menu buttons have screen reader labels.
  • A limit of 10 per dish, requested by restaurant partners.

Fixed since 1.9

  • The cart badge showed the wrong count after removing an item.
  • On small phones, the keyboard covered the password field on Login.

User stories and acceptance criteria

Written by Product (Lena) and refined with the developers. If the app behaves differently from an acceptance criterion (AC), that is a bug. Need a refresher? See user stories and acceptance criteria.

US-01Login

As a returning customer, I want to log in with my email and password, so that I see my saved addresses and past orders.

Acceptance criteria

  1. AC1The email is not case-sensitive and spaces before or after it are ignored: Mia@fooddash.test logs in like mia@fooddash.test.
  2. AC2A wrong email or a wrong password shows the same generic message, e.g. "Email or password is incorrect". The message never reveals whether an account exists.
  3. AC3After a successful login, the Home screen opens.

US-02Search and filters

As a hungry customer, I want to search and filter restaurants, so that I quickly find something I like that delivers to me.

Acceptance criteria

  1. AC1Search matches restaurant and dish names and ignores capitalization and accents: "cevapi" finds "Ćevapi", "creme" finds "Crème brûlée".
  2. AC2The "N restaurants" label always equals the number of restaurant cards shown, for every combination of search and filters.
  3. AC3Long restaurant names are truncated or wrap. They never cover the rating or other card content, on any supported screen size.

US-03Restaurant menu

As a customer, I want to add dishes from a restaurant menu to my cart, so that I can order a meal for myself or a group.

Acceptance criteria

  1. AC1A customer can order up to 10 of each dish. At 10, the + button is disabled and a short message explains the limit (the kitchen can't prepare more per order).
  2. AC2Every Add, + and − button has an accessible name with the dish and its price, e.g. "Add Margherita, €9.50".

US-04Cart and coupon

As a customer, I want to apply a coupon code in my cart, so that I get the discount I was promised.

Acceptance criteria

  1. AC1The code WELCOME10 gives 10% off the items in the cart.
  2. AC2Only one coupon per order. Applying the same code again shows a message such as "This code is already applied" and does not change the total.
  3. AC3An unknown or misspelled code shows an error and does not change the total.
  4. AC4Every amount shows exactly two decimals: €23.90, never €23.9 or €23.900000001.

US-05Delivery fee

As a customer, I want free delivery on bigger orders, so that ordering for the family feels worth it.

Acceptance criteria

  1. AC1Delivery costs €2.99.
  2. AC2Delivery is free when the cart total after discounts is at least €20.00.
  3. AC3Example: €21.00 of food with WELCOME10 is €18.90 after the discount, so the €2.99 delivery fee still applies.

US-06Checkout: delivery time

As a customer, I want to pick when my food arrives, so that it is hot when I get home.

Acceptance criteria

  1. AC1Delivery times are offered as 30-minute slots.
  2. AC2Only slots that are still in the future can be chosen. Slots that have already started or passed are not offered.

US-07Checkout: address

As a customer, I want address suggestions while I type, so that the courier finds me on the first try.

Acceptance criteria

  1. AC1As the customer types, matching address suggestions appear.
  2. AC2An order can only be placed with an address picked from the suggestions. Otherwise a clear error appears next to the address field.
  3. AC3Everything typed in checkout is kept when the phone is rotated.

US-08Checkout: place order

As a customer, I want to place my order with one tap, so that checkout is fast and I am charged exactly once.

Acceptance criteria

  1. AC1Tapping Place order disables the button and shows progress until the order is confirmed.
  2. AC2Exactly one order and one payment are created per checkout, even after a double tap or on a slow network.
  3. AC3When the order is confirmed, order tracking starts.

US-09Tracking and notifications

As a customer waiting for food, I want to see where my order is, so that I know when to go to the door.

Acceptance criteria

  1. AC1Each progress step (e.g. Confirmed, Preparing, On the way, Delivered) has a text label. The current step is not shown by color alone and is announced by screen readers.
  2. AC2The status updates automatically, including when the customer returns to the app from the background.
  3. AC3Tapping an order-status push notification opens that order's tracking screen, even when the app was closed.

US-10Profile, settings and logout

As a customer, I want to control notifications and log out safely, so that the app respects my choices and my privacy.

Acceptance criteria

  1. AC1Notification settings have separate switches for order updates and promotions. With promotions off, no promo notifications arrive; order updates still do.
  2. AC2Log out ends the session. After logging out, going Back (button or gesture) shows the Login screen, and no personal data (name, address, phone) is visible.

US-11Localization

As a customer in Germany or Serbia, I want to use FoodDash in my language, so that I understand every step and every price.

Acceptance criteria

  1. AC1The app is available in English, Deutsch, Srpski. Changing the language updates all text right away.
  2. AC2Buttons and labels fit or wrap in every language; text is never cut off.
  3. AC3English and Deutsch show prices in EUR. Srpski shows prices in RSD with Serbian number formatting, e.g. 1.299,00 RSD.

Non-functional requirements

These apply to every screen and every story above.

Accessibility (target: WCAG 2.2 AA)

  • Text contrast of at least 4.5:1 for normal text and 3:1 for large text and UI parts (WCAG 1.4.3 Contrast (Minimum), AA, and 1.4.11 Non-text Contrast, AA), in light and dark mode.
  • Every control has an accessible name (WCAG 4.1.2 Name, Role, Value, A).
  • Information is never conveyed by color alone (WCAG 1.4.1 Use of Color, A).
  • Supports large text (iOS Dynamic Type, Android font size): labels stay readable and are not clipped (WCAG 1.4.4 Resize Text, AA).
  • Touch targets are at least 44×44 pt on iOS and 48×48 dp on Android.

Dark mode

  • The app follows the system appearance setting.
  • Every screen is fully readable in both themes.

Device behavior

  • Portrait and landscape are supported on phones. Rotating never loses what the customer typed.
  • Returning from the background shows fresh data.

Network

  • Offline or on a failing network, the app shows a clear message and a way to retry. No endless spinners.
  • Screens load in under 2 seconds on "Fast 4G".

Test environment

BuildFoodDash 2.0.0 (build 412), staging
Test accountEmail mia@fooddash.test
Password Tasty-2024
CouponWELCOME10
ClockFrozen at Friday, October 16, 2026, 18:10, so time-based behavior is repeatable.

The build runs in a simulated phone on the Test the app page. Use its device controls to change things a real phone would, such as orientation, appearance, text size, network and notifications. File bugs from the app's own bug report panel.

Supported devices

PlatformVersionsTop devices (analytics)
iOS17 and lateriPhone SE (3rd gen), iPhone 15, iPhone 16 Pro Max
Android10 and laterGalaxy A15, Pixel 8, Galaxy S24
TabletsNot supportedRuns in phone layout; not tested for 2.0

About 60% of orders come from Android, 40% from iOS. The smallest supported screen is the iPhone SE (4.7 inch). The website is not part of this release.

Known issues (won't fix in 2.0)

These are known, accepted by Product and tracked for later. You don't need to report them.

  • KI-1: Placeholder images. Restaurant photos are placeholder illustrations on staging, and dishes have no photos yet. Real photos come from the production image service.
  • KI-2: Payment is simulated. On staging every order is paid with the saved test card (Visa ending 4242) and no money moves. Changing the payment method is planned for 2.1.

Open questions

Not everything is decided yet. When the brief is silent, a tester asks instead of guessing, and notes the gap as a risk.

  • OQ-1: Who may use WELCOME10? Marketing's launch email calls it "a welcome gift for new customers", but no story defines who is allowed to use it, and nobody has said whether existing customers (like the test account) should be blocked. Owner: Product. Status: open.
  • OQ-2: Minimum order value. A €10 minimum was discussed for Serbia and Germany, but there is no decision and nothing is implemented. Owner: Product. Status: open.
  • OQ-3: Changing or canceling a scheduled order is not covered by any 2.0 story. Status: not discussed yet.

Done reading?

Mark the brief as read and move on to your test plan. You can come back here any time.

Esc

Type to search the whole site.