Launch LockerLaunch Locker

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
  1. Clear localStorage LL_VIEW_CURRENCY
  2. Set browser locale to en-GB
  3. 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
  1. Clear localStorage
  2. Set browser locale to en-US
  3. Visit /listings
Expected
  • Currency dropdown shows USD

Test A3: Saved preference wins

Steps
  1. Set localStorage LL_VIEW_CURRENCY = EUR
  2. Visit /listings
Expected
  • Currency dropdown shows EUR regardless of browser locale

Test B1: Submission modal currency defaults

Steps
  1. Open Sell your website modal
  2. With browser locale en-US
Expected
  • priceCurrency defaults to USD
  • priceBand options are USD bands only

Test B2: Changing currency refreshes bands

Steps
  1. 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
  1. 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
  1. priceExact set, band empty
Expected
  • Allowed to submit for publish
  • Normalized USD exact is computed

Test C3: Not sure band

Steps
  1. 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
  1. Set viewerCurrency = GBP
  2. View a listing with seller currency GBP
Expected
  • Only seller price is shown
  • No approx line

Test D2: Different currency, approx line appears

Steps
  1. Set viewerCurrency = USD
  2. 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
  1. Create three listings in GBP with exact prices: 450, 2,200, 25,000
  2. 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
  1. 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
  1. Load /listings repeatedly
Expected
  • No browser calls to Frankfurter endpoints
  • Conversions use stored DB rates

Test E3: Missing rates fallback

Steps
  1. Temporarily delete all FxRate records
  2. Visit /listings
Expected
  • App still works
  • Seller original price displays
  • Approx line is hidden
  • No crashes

Test F1: Normalization runs after FX update

Steps
  1. Run RefreshFxRatesDaily then RecalculateListingNormalizedUsd
Expected
  • Listings have normalizedUpdatedAt set
  • Normalized fields reflect latest rates

Test F2: Price sorting works across currencies

Steps
  1. Create listings with mixed seller currencies and prices
  2. 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
  1. Set viewerCurrency = GBP
  2. Apply "Under 1k"
  3. 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
  1. 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

General Notes & Bug Log