Bug Diagnosis and Fix Request Template Mohamad Charafeddine — mohamadcharafeddine.com/en/resources/bug-report-fix-request/ ======================================== ── Bug report ── Summary: [what happens and where, in one line] Severity: [blocks work / partial / cosmetic] Frequency: [always / sometimes / once] Steps to reproduce: 1. [Open URL .. with an account in role ..] 2. [..] 3. [..] Expected: [..] Actual: [..] Environment: device [..] | OS [..] | browser and version [..] environment [test / live] | role [..] | time and time zone [..] started after: [change or update, if any] Evidence (cleaned): [screenshot / recording / error text / log lines] Minimal example: [file or function + least data that shows the bug] What I tried: [action → result] Fix constraints: [what must not change] Regression check: [what must keep working after the fix] ── Fix request prompt ── You are a careful developer. Below are a bug report and a minimal code example. In order: 1) Explain the most likely cause in 3 lines; say if you are unsure and what would confirm it. 2) Propose the smallest change that fixes the bug, in the listed files only. 3) Follow the fix constraints literally. If a constraint blocks the fix, say so; do not bypass it. 4) Write a test that fails before the fix and passes after it. 5) List what the change might affect so I can test it by hand. Do not rewrite whole files, add libraries, or change formatting or names outside the fix. Report: [paste the report] Code: [paste the minimal example after replacing any key or real data with fake values] ── The report as sent ── Summary: "Confirm order" does nothing on iPhone at checkout when a delivery slot is chosen. Severity: blocks work (order cannot be completed) Frequency: always on iPhone Steps to reproduce: 1. Open the shop in Safari on iPhone, not signed in. 2. Add "Olive oil soap" to the basket and tap "Checkout". 3. Fill name and phone with test values, choose delivery slot "Tomorrow 10:00". 4. Tap "Confirm order". Expected: the "We received your order" page appears with an order number. Actual: nothing happens. The button does not change and no message appears. Environment: iPhone | up-to-date iOS | Safari | live site | guest, no account started after the "Delivery slot" field was added last week. Evidence: 15-second screen recording. From the developer console (cleaned): RangeError: Invalid time value at checkout.js:88 POST /api/orders not sent Authorization: Bearer [REDACTED] What I tried: works on desktop Chrome and on Android. Works on iPhone with no slot. Fix constraints: do not change payment logic or total calculation. No new libraries. Keep right-to-left direction in the form. Regression check: order without a slot, order with a slot on Chrome and Android, the error message when phone is left empty. ── Minimal example ── // checkout.js (excerpt) function buildOrder(form) { const slot = form.deliveryDate + ' ' + form.deliveryTime; // "2026-09-22 10:00" return { items: form.items, deliverAt: new Date(slot).toISOString(), // line 88 }; }