Skip to content

Spranz Beta Shop - QA Report

URL: https://spranz.mymoodia.de/ Date of Audit: 19 March 2026 Platform: React SPA (webpack-bundled), i18next for i18n, RestBundle HTTP layer Language: German (de) Page Title: Spranz


  • Top navigation bar with 11 product categories renders correctly and all category links work
  • Category pages load with proper pagination (e.g., “Seite 1 von 3”)
  • Product grid layout is consistent with 12 items per page
  • Breadcrumb navigation works on product detail pages
  • Search bar is present and positioned correctly in the header
  • Hero carousel/slider is present with promotional content
  • “Spranz Highlights / Aktionen” section displays 4 featured products with variant color indicators
  • Promotional banners (“Regenschirme Sparwoche bis zu 20%”, “Metmaxx neu im Sortiment”) are visible
  • “Produktwelt Spranz” section with links to category pages works
  • “Eating & Drinking by Spranz” and “Traveling by Spranz” content sections have proper descriptions and working links
  • Product images load correctly with thumbnail gallery
  • Product specifications table renders properly (weight, dimensions, material, origin country, customs tariff number)
  • Product description text is present
  • REACH information PDF link is provided
  • Product data sheet (Produktdatenblatt) PDF generation link works
  • High-resolution image download option is present
  • Delivery time estimates are shown
  • Variant color swatches are present
  • Payment method icons all display correctly (Apple Pay, Google Pay, Maestro, Mastercard, PayPal, Prepay, Visa)
  • Customer service phone number is a clickable tel: link
  • Opening hours are clearly stated
  • Shipping partners (UPS, DHL) logos display
  • “Sicher Einkaufen” (safe shopping) badge displays
  • Social media icons (Facebook, Instagram, X, YouTube) are present
  • Legal links (Kontakt, AGB, Impressum, Datenschutz) all point to valid pages
LinkURLStatus
Nachhaltigkeit/page/nachhaltigkeitOK
Rücksendung/page/ruecksendungOK
Häufige Fragen (FAQ)/faqOK (sparse content)
Über SPRANZ/page/about-usOK
Karriere bei SPRANZ/job-offersOK
Unsere Zahlungsarten/page/zahlungsartenOK
Kontakt/contact/shopOK
AGB/agbOK
Impressum/impressumOK
Datenschutz/datenschutzerklaerungOK


Section titled “ISSUE-001: 7 Footer Links Point to /not-found”

The following links are hardcoded to /not-found, displaying the 404 page:

Link TextLocation
KatalogeFooter > Informationen
Messen / AusstellungenFooter > Informationen
Versand & LieferungFooter > Service & Hilfe
PressekontaktFooter > Unternehmen
Marken bei SPRANZFooter > Unternehmen

ISSUE-002: Product Detail Page — Image Manager API Error

Section titled “ISSUE-002: Product Detail Page — Image Manager API Error”

On product detail pages (e.g., /shop/2310-00-001), the image manager API fails:

Failed to load resource: /api/v1/image-manager/?tenant-id=1

While the main product image loads, the gallery/manager endpoint fails, potentially hiding additional product images.

The font file Oswald-Regular.ttf fails to load on product detail pages:

Failed to load resource: /fonts/Oswald-Regular.ttf

Text renders in fallback font, inconsistent with design specifications.

ISSUE-004: Social Media Icons Not Clickable

Section titled “ISSUE-004: Social Media Icons Not Clickable”

The social media icons (Facebook, Instagram, X, YouTube) in the footer have cursor: pointer styling but are rendered as <img> elements, not wrapped in <a> tags with actual URLs. Clicking them does nothing.

Section titled “ISSUE-005: “Mehr zum Businesskonto” Not a Proper Link”

The “Mehr zum Businesskonto” heading has cursor: pointer but no href. It appears to be a heading styled as a link but with no destination.

Product detail page titles remain “Spranz” instead of reflecting the product name (e.g., “Metmaxx® RainClassicEurope schwarz — Spranz”). Bad for SEO, browser tabs, and bookmarking.


IDLocationIssueFix
TYPO-001Homepage highlights, product 2310-00-004"bau" instead of "blau"Fix product name to “blau”
TYPO-002Category nav + URL/shop/bbq-gourme missing the “t”Change slug to bbq-gourmet + 301 redirect
TYPO-003Homepage Eating & Drinking / Traveling sectionsBroken ? character where em-dash should beReplace with
TYPO-004”Einkaufen nach Kategorie” section"Alle produkte" lowercaseCapitalize to "Alle Produkte"
TYPO-005”Metmaxx neu im Sortiment” bannerURL has trailing space: /shop/writing?s=12&p=0 Trim whitespace

ErrorEndpoint/SourceSeverity
HTTP 500/api/v1/cart/CRITICAL — cart service down
AbortError: signal is aborted without reasonRestBundle.ts:494HIGH — request cancellation issue
ErrorEndpoint/SourceSeverity
HTTP 404/500/fonts/Oswald-Regular.ttfMEDIUM — font missing
HTTP error/api/v1/image-manager/?tenant-id=1HIGH — image gallery broken
Multiple AbortErrorRestBundle.ts (×6)MEDIUM — race condition in API calls

ElementStatusNotes
Hero sliderPARTIALWorks but 3 identical slides
Product highlightsOK4 products, variant colors shown
Category navigationOK11 categories, all link correctly
Search barOKPresent, placeholder text in German
Promo bannersPARTIAL”ZUM SHOP” link broken (BUG-004)
“Jetzt ausrüsten” CTABROKENEmpty href (BUG-003)
Exclusive brands carouselPARTIALSome list items are empty (missing brand logos)
FooterPARTIAL5 broken links to /not-found
ElementStatusNotes
Login formSLOWRenders after ~5s async load, no loading indicator
Email + Password fieldsOKPresent and functional
”Passwort vergessen?” linkOKLinks to /password-reset
”Anmelden” buttonOKPresent
Registration formPARTIALAll fields present, but submit button mislabeled as “Anmelden”
Required fields noteTYPO”Pflchtfelder” → “Pflichtfelder”
Autocomplete attributesMISSINGBrowser warns about missing autocomplete on inputs
NavigationOKCategories render
FooterOKSame as homepage
ElementStatusNotes
Product imageOKMain image loads
Image galleryBROKENimage-manager API fails
Product titleOK”Metmaxx® RainClassicEurope schwarz”
Article numberOK”ART. NR. 2310-00-001”
Specifications tableOKAll fields populated
REACH PDF linkOKPoints to PDF
Product data sheetOKAPI-generated PDF
Add to cartBROKENCart API returns 500
BreadcrumbsOKWorking correctly
Page titleWRONGShows “Spranz” not product name
ElementStatusNotes
Product gridOK12 products per page
PaginationOKMulti-page with page indicator
FiltersOKPrice and product type filters present
Product cardsOKImage, name, art. nr., variant count
ElementStatusNotes
Cart contentsBROKENNo cart UI rendered, API 500
ElementStatusNotes
FAQ contentSPARSEOnly 3 category cards, no actual Q&A

Automated browser tests were executed via Playwright on 19 March 2026. Below are the results per test scenario.

StepResult
Navigate to /loginPage loads, form takes ~5s to appear (no loading indicator)
Fill email: test@example.comOK
Fill password: wrongpassword123OK
Click “Anmelden”Form submits
API callPOST /api/v1/auth/token-auth401 Unauthorized (correct)
UI feedbackGeneric toast: “Etwas ging schief, versuchen Sie es später noch einmal”
StepResult
Click “Anmelden” with empty fieldsClient-side validation triggers
Email fieldShows “Dies ist ein Pflichtfeld” — PASS
Password fieldShows “Dies ist ein Pflichtfeld” — PASS
API callNone made (blocked by validation) — PASS

Test 3: Empty Registration Form Submission

Section titled “Test 3: Empty Registration Form Submission”
StepResult
Click registration “Anmelden” with empty fieldsClient-side validation triggers
Gender radio groupShows “Bitte Wert angeben” — PASS
VornameShows “Dies ist ein Pflichtfeld” — PASS
NachnameShows “Dies ist ein Pflichtfeld” — PASS
E-Mail-AdresseShows “Dies ist ein Pflichtfeld” — PASS
PasswortShows “Dies ist ein Pflichtfeld” — PASS
Passwort wiederholenShows “Dies ist ein Pflichtfeld” — PASS

Test 4: Registration with Mismatched Passwords

Section titled “Test 4: Registration with Mismatched Passwords”
StepResult
Fill all fields with valid dataOK
Password: Password123!OK
Confirm password: DifferentPassword456!OK
Click submitNo password mismatch validation triggered
API callNone (blocked by gender radio not being selected)
StepResult
Navigate to /password-resetPage loads (async, ~5s delay)
Page title”Passwort zurücksetzen” — PASS
Email field presentYes, with label “E-Mail-Adresse *” — PASS
Submit button”Absenden” — PASS
Description text”Bitte geben Sie Ihre E-Mail-Adresse ein, um das Passwort zurückzusetzen**..**”
StepResult
Type “Regenschirm” in search barOK
Click search buttonNavigates to /shop/search?q=Regenschirm&context=catalog&s=12&no-variants=false
Results displayed9 umbrella products found — PASS
Filters availableMarke, Farbe, Herkunft, Material — PASS
Pagination”Seite 1 von 1” — PASS
Sort functionality”Sortieren nach: BELIEBTHEIT” present — PASS
SEO content blocks3 text sections rendered below results — PASS
Console error on searchWarning: A component is changing an uncontrolled input — React state management issue
ComponentInitial LoadAfter ~5s
Header (logo, login, cart)MissingRenders
Search barMissingRenders
Hero carouselMissingRenders (3 slides)
Category tiles in “Einkaufen nach Kategorie”MissingRenders (11 categories + “Alle produkte”)
Brand logos carouselEmpty list itemsAll 15 logos loaded
Product highlightsVisibleUnchanged
EndpointMethodStatusNotes
/api/v1/cart/GET500Broken on every page load
/api/v1/settings/b2bGET200OK
/api/v1/settings/shop_configGET200OK
/api/v1/auth/token-authPOST401Correct for invalid credentials
/api/v1/image-manager/?tenant-id=1GETErrorFails on product/search pages
https://m.stripe.com/6POST200Stripe integration active

IssueSeverityDetails
Missing alt text on imagesHIGHMultiple <img> elements have no alt text (hero slider images, some brand logos, search button icon, hamburger menu icon)
Empty list itemsMEDIUMIn “Unsere Exklusivmarken” brand carousel, several <li> elements are completely empty
Hamburger menu button has no labelHIGHThe mobile menu toggle button has no accessible name/aria-label
Search button has no labelMEDIUMThe search submit button contains only an image with no alt text
Color swatches lack visible text labelsMEDIUMProduct variant colors rely solely on color (fails WCAG 1.4.1)
No skip-to-content linkLOWNo mechanism to skip navigation for keyboard users
Heading hierarchy issuesMEDIUMMultiple <h1> tags on homepage. Should have single <h1>

IssueImpactDetails
Generic page titleHIGHAll pages show “Spranz” as the <title>
No meta descriptionHIGHPages should include <meta name="description"> per page
Duplicate content in carouselLOW3 identical text blocks in the hero slider
URL slug typo (bbq-gourme)MEDIUMMisspelled URL hurts SEO for “BBQ Gourmet” searches
Malformed URLsMEDIUM/search&s=12&p=0 and trailing spaces in URLs
No structured dataMEDIUMProduct pages should have JSON-LD Product schema for rich results
No canonical tagsMEDIUMImportant for preventing duplicate content issues

  1. Fix cart API — Resolve the HTTP 500 on /api/v1/cart/. This blocks the entire purchase flow
  2. Fix “ZUM SHOP” URL — Change /search&s=12&p=0 to /shop/search?s=12&p=0
  3. Fix empty “Jetzt ausrüsten” href — Add the correct destination URL
  4. Add password mismatch validation — Registration form does not validate that password and confirm password match
  5. Fix login error message — Show “Ungültige E-Mail oder Passwort” instead of generic “Etwas ging schief” when API returns 401
  1. Fix site-wide async loading delay — Add loading spinner/skeleton while content loads (~5s delay affects header, search, login form, and multiple homepage sections)
  2. Fix registration button label — Change “Anmelden” to “Registrieren” on the registration form
  3. Fix “Pflchtfelder” typo — Should be “Pflichtfelder” on the login page
  4. Fix double period on password reset page — “…zurückzusetzen..” should be single period
  5. Add autocomplete attributes — Add autocomplete="email", autocomplete="current-password" etc. to login/registration inputs
  6. Fix React controlled/uncontrolled input warning — Search input state should initialize as empty string, not undefined
  7. Create or remove /not-found links — Build the 5 missing pages or remove them from footer
  8. Fix image-manager API — Product gallery images should load on PDP
  9. Deploy Oswald-Regular.ttf font — Upload the missing font file to /fonts/
  10. Make social media icons actual links — Wrap in <a> tags with real URLs
  11. Fix “Mehr zum Businesskonto” — Add a proper link destination
  12. Fix product page <title> — Dynamically set to include the product name
  13. Fix AbortError handling — Catch and suppress cancellation errors in RestBundle.ts
  1. Fix typo "bau""blau" for article 2310-00-004
  2. Fix BBQ URL slug bbq-gourmebbq-gourmet (with 301 redirect)
  3. Fix broken ? characters → replace with em-dashes (homepage descriptions AND search results SEO text)
  4. Capitalize "Alle Produkte" in category section
  5. Remove trailing space from Writing category link URL
  6. Fix eMagazin description — replace “Garten und Landschaft” placeholder
  7. Fix phone tel: link — add + prefix
  8. Diversify hero carousel content
  1. Add alt text to all images for accessibility
  2. Add aria-labels to hamburger menu and search button
  3. Fix heading hierarchy — single <h1> per page
  4. Add structured data (JSON-LD) for products
  5. Add proper meta descriptions per page
  6. Populate FAQ page with actual questions and answers
  7. Populate “Einkaufen nach Kategorie” with category tiles
  8. Clean up empty brand logo list items in “Unsere Exklusivmarken”
  9. Add skip-to-content link for keyboard navigation

QA audit performed on 19 March 2026 via automated browser testing (Playwright) and manual inspection.