BugBlitz · Workshop Materials

Bug Guide

The bugs your team is tackling today. Each entry includes the reported symptom, reproduction steps, a working comparison case, and the acceptance criteria a fix must meet.

Workshop Guide Bug Guide Solutions

Choose Your Role

Pick a role from the cards below. Each role brings a unique perspective to the War Room — the goal is to advocate for priorities through your role's lens.

Software Engineer / Developer
The builder, the fixer, and the realist.

You're the one in the console, reading stack traces, and actually writing the code to fix the issues. You know how hard a fix will actually be.

Focus
Technical health of the app, state management, errors in the console, and writing the actual fix.
Product Owner / Product Manager
The voice of the business and the customer.

You care about protecting revenue, conversion rates, and the brand's reputation. Less about how the code works, more about the user's experience.

Focus
Business impact, customer experience, and how the bug makes the company look.
People Leader / Engineering Manager
The shield, the translator, and the resource allocator.

You protect the engineering team from unnecessary panic, ensure projects are scoped correctly, and make sure the right people work on the right things.

Focus
Team capacity, project prioritization, and shielding engineers so they can actually focus on debugging.
QA Tester
The gatekeeper of quality and the customer advocate.

You create comprehensive test plans, identify edge cases, and ensure that the bug slips through to production are caught. You validate new features and regressions.

Focus
Identifying edge cases, ensuring the fix doesn't create new bugs, and validating from the user's perspective.
Leadership / Director
The big picture and the bottom line.

Strategic impact, brand reputation, and timeline. Highly detached from technical details but focused on blast radius. You need answers fast.

Focus
Revenue impact, brand risk, and high-level status updates for stakeholders.
Customer Support (Optional)
The frontline voice, calming the waters.

Not typically in the War Room during a launch — but once the product is in production, you're the one fielding the issues customers report. You collect the details engineering needs, spot patterns across tickets, and keep shoppers informed while a fix is on its way.

Focus
Triaging incoming customer-reported issues, surfacing patterns to engineering, and keeping affected customers informed while a fix lands.

Bug Severity Levels

Not every bug is created equal. Use these severity levels to decide which bugs to tackle first as a team.

Priority × Effort — the quick-triage matrix

Once every ticket has a priority (P1 = critical, P3 = cosmetic) and a rough effort estimate, drop it on the grid. Top-left is your Quick Win — highest impact, lowest cost. Start there.

Low Effort Medium Effort High Effort
P1 Quick Win — do first Do now; assign your best debugger Ship a workaround, schedule the real fix
P2 Slot in this sprint Next sprint Ship a workaround now; split the real fix across sprints
P3 Batch with the next release Backlog Assign an owner and revisit date
Workaround vs. root-cause fix — pick on purpose. A workaround shrinks the blast radius today (a feature flag, a hidden button, a "we know" banner). A root-cause fix removes the bug for good but takes longer to land.
Critical

Blocker — Feature Completely Broken

No workaround exists. Prevents a primary user flow. Causes severe loss of revenue, data loss, security vulnerabilities, or widespread app crashes.

Example impact: Users can't check out, the cart total is wrong by orders of magnitude, or the app crashes on load.
Major

Behavioral — Badly Frustrating UX

A workaround exists but causes highly frustrating user experience. Frustrated users can still eventually check out, but something important is clearly wrong.

Example impact: The cart doesn't update correctly, a promotional code fails to apply, or a form rejects valid input.
Minor

Cosmetic — Polish & Alignment

Typographical errors or minor alignment issues with negligible impact. The app functions correctly but looks less polished. Users can still shop without friction.

Example impact: A button has the wrong shade of color, a label has a typo, or icons are slightly misaligned.

Bug Categories

The Bug Report contains a variety of issue types. Each requires different debugging tools and approaches.

🎨

Visual / CSS

Layout breaks, z-index conflicts, pop-ups that won't close, mobile responsiveness issues.

🔢

Logic & Calculation

Incorrect totals, wrong price references, off-by-one errors, string math instead of number math.

📋

Form Validation

Overly strict regex, stale state carried between selections, generic error messages that don't help the user.

🗄️

Database / Data

Incorrect data references, sale prices not honored, data fetching errors.

🖱️

Interaction & State

Buttons not responding, double-click registering twice, sold-out items silently added to cart.

📱

Device-Specific

Touch targets too small on mobile, scroll bugs on iOS, viewport-specific rendering issues.

Reported Bugs

Each ticket was filed by a different role — some brief, some deeply technical. Part of your job is to weigh what's said, what's missing, and what the reporter's perspective is telling you. Filter by bug type or reporter, and follow the solution link once your team has attempted a fix.

Type
Reported by
No bugs match this filter.
CSS Bug
Device-Specific

Welcome offer cannot be dismissed on mobile

Reported by QA Tester

A shopper sees the "Take 10% off your first order" offer but cannot dismiss it on a phone.

Reproduction Steps
  1. Open the home page in a narrow viewport (or use a mobile device).
  2. Refresh the page so the welcome offer and cookie notice are visible.
  3. The close (x) button is not visible in the mobile viewport, but is visible on larger screens.
  4. Notice that start shopping button may also be overlapped by the cookie notice.
  5. This causes users to need to dismiss the cookie notice first before they can interact with the welcome offer.
Comparison Case
  1. Open or resize the same page to a viewport wider than 768px.
  2. Refresh the page.
  3. Click the × in the welcome offer.
  4. Observe that the offer closes normally.
Acceptance Criteria
  1. The close (×) control is visible above the cookie notice on all supported mobile widths — not just tappable, but rendered without any part hidden.
  2. The "Start shopping" call-to-action is fully visible and fully tappable, with no portion covered by the cookie notice.
  3. The cookie notice remains fully visible and functional after the fix.
  4. Behavior on viewports wider than 768px is unchanged.
Your mission: Investigate why the visible close control does not receive mobile taps, and propose a fix that preserves the cookie notice and makes the close control easy to tap.
Interaction Bug

"Charged twice for the same order?"

Reported by Customer Support

Getting a wave of complaints from customers saying they placed a single order but were charged twice. A couple of them mentioned they "clicked the button twice because nothing happened the first time." Not sure if that's related — passing it to engineering to look at.

Your mission: Reproduce the duplicate charge yourself, trace the checkout submit flow, and propose a fix that prevents a second checkout request from firing while the first one is still processing.
Form Validation Bug

Checkout error message is unhelpful — hurting conversion

Reported by Product Manager

When a shopper submits checkout with a missing or invalid field, they get one generic "Please fill in all fields" message with no indication of which field is the problem. Session replays show people re-checking every input in frustration; funnel data shows abandonment spikes at this step. Fixing this should be a straightforward conversion win.

What good looks like
  • Each invalid field is called out inline, with a message that names the field and what's expected.
  • Valid fields don't get flagged as errors.
  • Successful submissions behave exactly as they do today.
Your mission: Trace the current validation flow, then propose a fix that surfaces field-level errors so users know exactly what to fix.
Form Validation Bug

International customers can't check out

Reported by Director

Sales flagged this — orders from non-US customers aren't going through. Canada, UK, and Japan all seeing it. Would like a triage plan by end of day: whether this is a same-day fix or something that needs a temporary workaround while a proper fix ships.

Your mission: Confirm the problem is real, then decide how to treat it — immediate fix, temporary workaround, or defer. If your answer isn't "fix it now, top priority," be ready to explain the reasoning.
Form Validation Bug

State/Province selection carries over when the country changes

Reported by QA Tester

A shopper changes the selected country in the checkout form, but a previously chosen state or province value silently carries over — so the form submits with a state that doesn't belong to the new country.

Reproduction Steps
  1. Add any item to the cart and navigate to the checkout page.
  2. Select United States as the country and pick a state (e.g., California).
  3. Change the country to a different one (e.g., Germany or United Kingdom).
  4. Fill in the remaining fields and submit — or inspect the form data.
  5. Observe that the state field still holds the previously chosen value ("CA") even though it makes no sense for the new country.
Comparison Case
  1. Reload the page and pick a country only once before submitting.
  2. Observe that the state value corresponds correctly to the selected country.
Acceptance Criteria
  1. Changing the country clears any previously selected state/province value.
  2. The state field re-renders correctly (select vs. free-text input) based on the new country's regions.
  3. The required-field check catches the empty state after a country change instead of allowing a stale value to slip through.
  4. No regressions to the initial country selection flow.
Your mission: Investigate what happens to form state when the country changes, and propose a fix that resets the state whenever the country selection changes.
Interaction Bug

"The Add to Cart button is broken on some plants"

Reported by Customer Support

Customers keep messaging in convinced the "Add to Cart" button is broken on certain products — they click it and nothing happens. When I look at those products they're actually sold out, but that's not obvious to shoppers. Can we make it more obvious? People shouldn't have to contact us to figure out that a plant is out of stock.

Your mission: The reporter has told you what shoppers think is happening; work out what's actually happening in the UI, then propose a fix that makes the sold-out state obvious without breaking normal Add to Cart behavior on in-stock items.
Data Bug

One of the product cards has a missing image

Reported by Product Manager

One of the product cards on the plant listing is showing a broken image — the rest of the card looks fine but there's no photo. Looks bad for something a shopper sees first. Low priority relative to the checkout issues, but let's not ship the release with a broken image visible on the homepage.

Your mission: Find the affected product, trace the bad URL back to where the data comes from, and propose a fix that both restores the image and hardens the UI against a future broken URL slipping through.
Interaction Bug
CSS Bug

Clear Cart dialog locks the page

Reported by Product Manager

After dismissing the Clear Cart dialog, customers are unable to click anything on the site and are forced to refresh the page to continue shopping.

Reproduction Steps
  1. Add an item to the cart to open the cart modal.
  2. Click Clear Cart to open the confirmation prompt.
  3. Click Keep Items or Clear Cart to close the prompt.
  4. If you try to click any product or navigation link on the page, it has no effect.
Acceptance Criteria
  1. Confirming "Clear Cart" successfully empties all items from the cart.
  2. Closing or confirming the dialog leaves the page fully clickable so customers can keep browsing without refreshing.
Your mission: Reproduce the issue by interacting with the confirmation dialog and restore normal page interaction.
Data Bug

Same promo code can be applied multiple times

Reported by QA Tester

A shopper can apply the same promo code repeatedly and receive the discount more than once, driving the cart total down with each duplicate application.

Reproduction Steps
  1. Add at least one product to the cart and navigate to the cart page (/cart).
  2. Enter a valid promo code (for example GHC2026 or WELCOME10) and click Apply.
  3. The coupon appears in the applied list and the discount is reflected in the total.
  4. Without reloading, enter the same promo code again and click Apply.
  5. Now, the same coupon is listed again (and the discount total increases).
Acceptance Criteria
  1. The same promo code cannot be applied more than once per cart session.
  2. A second attempt shows clear feedback (e.g., "This promo code is already applied.").
  3. discountTotal reflects each distinct coupon at most once.
Your mission: Reproduce the duplicate-apply behavior, inspect how applied coupons are tracked across page loads, and propose a fix that prevents stacking the same code multiple times.
Data Bug

Cart and checkout totals ignore the sale price

Reported by QA Tester

A shopper adds an item marked "On Sale" to their cart. The line-item price in the cart matches the sale price shown on the product card, but the cart Subtotal and Total — and the checkout Order Summary and Place Order button — are calculated from the higher crossed-out price instead of the sale price.

Reproduction Steps
  1. In the header, click Sale (or on the shop page, sort by On Sale) and pick any product showing a "Sale" badge with a strikethrough original price.
  2. Click Add to Cart. The cart modal opens automatically.
  3. In the modal, compare the line-item price against the modal's Total — the total is higher than the line-item price times quantity.
  4. Click View Cart & Checkout. On the cart page, the line item shows the sale price, but the Subtotal and Total use the original (pre-sale) price.
  5. Click Proceed to Checkout. The Order Summary and the Place Order button both show the inflated total.
Comparison Case
  1. Add a product without a "Sale" badge to the cart.
  2. Observe that the line-item price, the modal total, the cart Subtotal, and the checkout total all agree.
Acceptance Criteria
  1. Cart-modal total, cart-page Subtotal and Total, and checkout Order Summary all reflect the sale price for items on sale.
  2. Per-line item totals in the cart page and checkout Order Summary agree with the summary Subtotal.
  3. The Place Order button shows the same total as the Order Summary.
  4. Non-sale items (no compare_at_price) are unaffected.
  5. A percentage-based promo code applied on top of a sale item discounts against the sale price, not the crossed-out price.
Your mission: Reproduce the mismatch between the line-item price and the summary total, trace how the cart's subtotal is computed, and propose a fix that honors the sale price consistently across the modal, cart, and checkout — without regressing non-sale items.