Multi-Currency QA Checklist
Step-by-step test plan for multi-currency functionality
18
Total Tests
0
Passed
0
Failed
18
Untested
Test A1: UK visitor default
Steps
- Clear localStorage LL_VIEW_CURRENCY
- Set browser locale to en-GB
- Visit /listings
Expected
- Currency dropdown shows GBP
- Listing cards show seller price line
- If seller currency differs, approx line shows in GBP and says "Approx"
Test A2: US visitor default
Steps
- Clear localStorage
- Set browser locale to en-US
- Visit /listings
Expected
- Currency dropdown shows USD
Test A3: Saved preference wins
Steps
- Set localStorage LL_VIEW_CURRENCY = EUR
- Visit /listings
Expected
- Currency dropdown shows EUR regardless of browser locale
Test B1: Submission modal currency defaults
Steps
- Open Sell your website modal
- With browser locale en-US
Expected
- priceCurrency defaults to USD
- priceBand options are USD bands only
Test B2: Changing currency refreshes bands
Steps
- In the modal, switch currency from USD to GBP
Expected
- priceBand dropdown refreshes to GBP bands
- Previously selected band is reset to first valid GBP option
- Form cannot submit with a band that does not match currency
Test C1: Band only listing
Steps
- Complete listing with priceBand set, priceExact empty
Expected
- Allowed to submit for publish if other required fields pass
- Normalized USD min and max are computed
Test C2: Exact only listing
Steps
- priceExact set, band empty
Expected
- Allowed to submit for publish
- Normalized USD exact is computed
Test C3: Not sure band
Steps
- Choose the Not sure band for the currency
Expected
- Normalized USD fields are null
- Public listing shows "Not sure yet" and no approx line
Test D1: Same currency, no approx line
Steps
- Set viewerCurrency = GBP
- View a listing with seller currency GBP
Expected
- Only seller price is shown
- No approx line
Test D2: Different currency, approx line appears
Steps
- Set viewerCurrency = USD
- View a listing with seller currency GBP
Expected
- Seller price shows as "£X GBP" or GBP band label
- Second line shows "Approx $Y USD"
- The word "Approx" is always present on conversions
Test D3: Rounding rules
Steps
- Create three listings in GBP with exact prices: 450, 2,200, 25,000
- Set viewerCurrency = USD
Expected
- 450 converts and rounds to nearest 10
- 2,200 rounds to nearest 50
- 25,000 rounds to nearest 250
Test E1: Daily rate stored
Steps
- Run RefreshFxRatesDaily job manually
Expected
- LaunchLockerFxRate has 3 records for today (base GBP, USD, EUR)
- Each ratesJson includes GBP, USD, EUR keys
Test E2: No external calls on page view
Steps
- Load /listings repeatedly
Expected
- No browser calls to Frankfurter endpoints
- Conversions use stored DB rates
Test E3: Missing rates fallback
Steps
- Temporarily delete all FxRate records
- Visit /listings
Expected
- App still works
- Seller original price displays
- Approx line is hidden
- No crashes
Test F1: Normalization runs after FX update
Steps
- Run RefreshFxRatesDaily then RecalculateListingNormalizedUsd
Expected
- Listings have normalizedUpdatedAt set
- Normalized fields reflect latest rates
Test F2: Price sorting works across currencies
Steps
- Create listings with mixed seller currencies and prices
- Sort by price low to high
Expected
- Order is based on normalized USD values
- Listings without price (Not sure) appear at the end
Test G1: Price filter threshold recalculates
Steps
- Set viewerCurrency = GBP
- Apply "Under 1k"
- Switch viewerCurrency to USD
Expected
- The filter remains conceptually "Under 1k" but now in USD
- Results refresh and match normalized USD thresholds derived from 1,000 USD
Test H1: No claims of exactness
Steps
- Inspect listing cards and listing detail pages
Expected
- Converted values always say "Approx"
- Seller original price always visible
- No copy implies Launch Locker handles payment
