MyCodex

MyCodex

PWA
Navigation
Master IndexIndex
Maintenance TasksOps Infrastructure GuideOwner Action ItemsPending Implementation AuditPRODUCTION TESTING GUIDEPROJECT MEMORY FOR CHATGPT FEATURESPROJECT MEMORY FOR CHATGPT OVERVIEWPROJECT MEMORY FOR CHATGPT TECHNICALPROJECT MEMORY FOR CHATGPTSurface Maturity Index
v2.2 Stablemenulist.ai
docsPRODUCTION TESTING GUIDE

๐Ÿงช PRODUCTION TESTING GUIDE

Purpose: Step-by-step manual verification of all MenuListAi intelligence features
Audience: Founder/QA before production launch
Date: January 11, 2026
Estimated Time: 2-3 hours for complete verification


๐Ÿ“‹ PRE-TESTING CHECKLIST

Before starting, ensure:

RequirementHow to VerifyStatus
Dev server runningnpm run dev at localhost:3000โ˜
Firebase connectedCheck console for connection logsโ˜
Test store existsAt least 1 store with menu dataโ˜
Menu has 10+ itemsItems with images, prices, categoriesโ˜
Analytics data existsAt least 7 days of simulated views/clicksโ˜
Feature flags enabledAll flags true in src/config/features.tsโ˜

Quick Feature Flag Check

Open src/config/features.ts and verify:

ENABLE_DECISION_BLOCKS: true; // Line 298
SOCIAL_CONTENT_ENABLED: true; // Line 337
DIGITAL_SCREENS_ENABLED: true; // Line 415
MENU_INTELLIGENCE_ENABLED: true; // Line 439

FEATURE 1: DECISION BLOCKS

What It Does

Shows 3 smart recommendation blocks at the top of customer menu (Popular, Quick Pick, Best Value).

Where to Test

Customer Menu: https://{subdomain}.menulist.ai or localhost:3000/_client/{subdomain}

Test Cases

TEST 1.1: Decision Blocks Appear

StepActionExpected Result
1Open customer menu URLPage loads successfully
2Look at top of menu (below header)See 3 Decision Block cards
3Check block titles"Popular Right Now", "Quick Pick", "Best Value"
4Verify each block shows itemName, image, price, reason text

Pass Criteria: All 3 blocks visible with real menu items

TEST 1.2: Runtime Availability Filtering

StepActionExpected Result
1In admin, mark an item as unavailableSave changes
2Refresh customer menuUnavailable item NOT shown in blocks
3Mark item available againItem may reappear in blocks

Pass Criteria: Unavailable items never appear in Decision Blocks

TEST 1.3: Click Tracking

StepActionExpected Result
1Open browser dev tools โ†’ Network tabFilter by "analytics"
2Click on a Decision Block itemSee analytics request fire
3Verify request contains recommendationClicksData being tracked

Pass Criteria: Clicks are tracked to analytics

TEST 1.4: Scroll to Item

StepActionExpected Result
1Note the item shown in "Popular" blockRemember item name
2Click on the blockPage scrolls to that item
3Observe item highlight2-second visual highlight

Pass Criteria: Smooth scroll + highlight animation

TEST 1.5: Owner Pin Controls

StepActionExpected Result
1Go to Project Editor โ†’ Smart RecommendationsSettings modal opens
2Pin a specific item to "Popular"Save settings
3Refresh customer menuPinned item appears in "Popular"

Pass Criteria: Owner pins override AI selection

TEST 1.6: Block Disable

StepActionExpected Result
1In Smart Recommendations, disable "Quick Pick"Toggle off
2Refresh customer menuOnly 2 blocks visible
3Re-enable "Quick Pick"3 blocks visible again

Pass Criteria: Owner can hide individual blocks


Decision Blocks Verification Checklist

TestStatusNotes
1.1 Blocks Appearโ˜
1.2 Availability Filterโ˜
1.3 Click Trackingโ˜
1.4 Scroll to Itemโ˜
1.5 Owner Pinโ˜
1.6 Block Disableโ˜

FEATURE 2: CONTINUOUS MENU INTELLIGENCE (CMI)

What It Does

Runs nightly at 2:30 AM UTC, scores every menu item, stores confidence in Firestore.

Where to Test

Admin: Check Firebase Console โ†’ Firestore โ†’ menuIntelligence collection

Test Cases

TEST 2.1: Intelligence Document Exists

StepActionExpected Result
1Open Firebase ConsoleNavigate to Firestore
2Go to menuIntelligence collectionCollection exists
3Find document: {tId}_{sId}_{projectId}Document with item scores

Pass Criteria: Document exists with itemScores array

TEST 2.2: Item Scores Structure

StepActionExpected Result
1Open a menuIntelligence documentView data
2Check itemScores arrayEach item has: itemId, confidence, stableDays, trend
3Verify confidence valuesBetween 0.0 and 1.0

Pass Criteria: Valid score structure for all items

TEST 2.3: Scheduler Runs (Manual Trigger)

StepActionExpected Result
1Open Firebase Console โ†’ FunctionsFind decisionBlocksScoring
2Trigger manually (or wait for 2:30 AM UTC)Function executes
3Check logs"CMI computed" message
4Check FirestorelastUpdated timestamp updated

Pass Criteria: Scheduler updates intelligence data

TEST 2.4: Confidence Thresholds Applied

StepActionExpected Result
1Find an item with high views/clicksNote its confidence
2Find an item with low views/clicksNote its confidence
3Compare valuesHigh-engagement item has higher confidence

Pass Criteria: Confidence correlates with engagement


CMI Verification Checklist

TestStatusNotes
2.1 Document Existsโ˜
2.2 Scores Structureโ˜
2.3 Scheduler Runsโ˜
2.4 Thresholds Appliedโ˜

FEATURE 3: DIGITAL SCREENS

What It Does

Auto-generates slideshow content for in-store TVs. Runs itself with zero owner effort.

Where to Test

Screen URL: localhost:3000/screen/{token} (get token from store settings)

Test Cases

TEST 3.1: Screen Loads

StepActionExpected Result
1Get screen token from store settingsCopy the URL
2Open screen URL in browserScreen renders
3See rotating slides8-second intervals

Pass Criteria: Screen loads and rotates content

TEST 3.2: Slide Content Hierarchy

StepActionExpected Result
1Watch screen for 1 minuteObserve slide types
2Check for campaign slidesItems with confidence โ‰ฅ 0.7
3Check for evergreen slidesMeal-based (Breakfast/Lunch/Dinner)
4Check for brand fallbackStore name/logo slide

Pass Criteria: 4-layer stack (Owner โ†’ Campaign โ†’ Evergreen โ†’ Brand)

TEST 3.3: Zero-Blank Guarantee

StepActionExpected Result
1Create a store with no campaignsFresh store
2Open screen URLScreen still shows content
3Verify brand fallbackStore name appears

Pass Criteria: Screen NEVER shows blank

TEST 3.4: Minimum/Maximum Slides

StepActionExpected Result
1Count slides in rotationNote the count
2Verify minimumAt least 3 slides
3Verify maximumAt most 8 slides

Pass Criteria: 3-8 slides always

TEST 3.5: Offline Resilience (Cache)

StepActionExpected Result
1Load screen URLWait for first render
2Open dev tools โ†’ Application โ†’ localStorageSee menulist-screen-data
3Disconnect networkGo offline
4Refresh pageScreen loads from cache

Pass Criteria: Works offline with cached data

TEST 3.6: Real-Time Updates

StepActionExpected Result
1Keep screen openIn one browser tab
2In admin, trigger campaign regenerationSave/update data
3Watch screenContent updates without refresh

Pass Criteria: Firebase listener updates content

TEST 3.7: Owner Uploads (Max 3)

StepActionExpected Result
1Go to Digital Screen settingsIn admin
2Upload 3 custom imagesAll upload successfully
3Try to upload 4thBlocked with limit message

Pass Criteria: Maximum 3 owner uploads enforced

TEST 3.8: Upload Expiry (14 Days)

StepActionExpected Result
1Upload a custom imageNote the date
2Check upload metadataHas expiry timestamp
3After 14 daysImage auto-removed (or test with mock date)

Pass Criteria: Uploads expire after 14 days


Digital Screens Verification Checklist

TestStatusNotes
3.1 Screen Loadsโ˜
3.2 Slide Hierarchyโ˜
3.3 Zero-Blankโ˜
3.4 Min/Max Slidesโ˜
3.5 Offline Cacheโ˜
3.6 Real-Time Updatesโ˜
3.7 Max 3 Uploadsโ˜
3.8 Upload Expiryโ˜

FEATURE 4: SOCIAL CONTENT (TODAY TAB)

What It Does

Shows owner ONE action per day. Generates campaigns based on menu intelligence.

Where to Test

Admin: Sidebar โ†’ "Today" tab

Test Cases

TEST 4.1: Today Screen Loads

StepActionExpected Result
1Login to adminDashboard loads
2Click "Today" in sidebarToday screen appears
3Check for primary cardCampaign or empty state

Pass Criteria: Today screen renders without errors

TEST 4.2: Primary Campaign Card

StepActionExpected Result
1If campaign existsSee PrimaryCard component
2Check card contentItem image, name, action buttons
3Check campaign typeOne of 9 types (5 active, 4 passive)

Pass Criteria: Primary card shows relevant campaign

TEST 4.3: Empty State (Silence)

StepActionExpected Result
1If no campaign meets confidenceSee EmptyState component
2Check message"Nothing urgent today" or similar
3No action requiredSilence is valid

Pass Criteria: Graceful empty state (not an error)

TEST 4.4: Campaign Actions

StepActionExpected Result
1On PrimaryCard, click "Share to WhatsApp"WhatsApp share intent opens
2Click "Download Poster"Image downloads
3Click "Skip"Campaign dismissed

Pass Criteria: All action buttons work

TEST 4.5: Post-Action State

StepActionExpected Result
1Complete a campaign actionClick "Done"
2See PostActionState"Nice work" message
3Check for outcome messageNon-comparative feedback

Pass Criteria: Post-action feedback shown

TEST 4.6: Operational Section

StepActionExpected Result
1Scroll below primary cardSee secondary campaigns
2Check for passive campaigns"Today's Special", "Weekend Pick", etc.
3Verify these are below the foldNot competing with primary

Pass Criteria: Operational campaigns show as secondary

TEST 4.7: Silence Governor

StepActionExpected Result
1Complete 4+ actions in 7 daysTrack in test data
2Check for intentional silenceSome days show empty state
3Verify no "always something" trapSystem chooses quiet days

Pass Criteria: Active owners get silence days


Social Content Verification Checklist

TestStatusNotes
4.1 Today Loadsโ˜
4.2 Primary Cardโ˜
4.3 Empty Stateโ˜
4.4 Campaign Actionsโ˜
4.5 Post-Actionโ˜
4.6 Operational Sectionโ˜
4.7 Silence Governorโ˜

FEATURE 5: PHYSICAL SURFACES

What It Does

Generates downloadable tent cards (PDF) and counter stickers (PNG) for printing.

Where to Test

Admin: Today tab โ†’ Physical Surfaces section (when eligible)

Test Cases

TEST 5.1: Tent Card Eligibility

StepActionExpected Result
1Go to Today tabCheck for Tent Card section
2If confidence โ‰ฅ 0.7Tent Card section visible
3If confidence < 0.7Section hidden (not error)

Pass Criteria: Shows only when confident

TEST 5.2: Tent Card Download

StepActionExpected Result
1Click "Download Tent Card"PDF generates
2Open downloaded PDFValid A6/A5 layout
3Check contentItem name, QR code, brand footer

Pass Criteria: Valid PDF with correct content

TEST 5.3: Counter Sticker Eligibility

StepActionExpected Result
1Check confidence thresholdMust be โ‰ฅ 0.8
2If eligibleCounter Sticker section visible
3Higher bar than tent cardFewer items qualify

Pass Criteria: Only ultra-confident items get stickers

TEST 5.4: Counter Sticker Download

StepActionExpected Result
1Click "Download Sticker"PNG generates
2Open downloaded PNG80mm ร— 80mm at 300dpi
3Check contentCopy, QR code, item name

Pass Criteria: Valid PNG with correct size

TEST 5.5: Template Variety

StepActionExpected Result
1Note the template usedSystem-selected
2Check template copyMatches defined templates
3Verify no Template 5Banned per spec

Pass Criteria: Only templates 1-4 used


Physical Surfaces Verification Checklist

TestStatusNotes
5.1 Tent Card Eligibilityโ˜
5.2 Tent Card Downloadโ˜
5.3 Sticker Eligibilityโ˜
5.4 Sticker Downloadโ˜
5.5 Template Varietyโ˜

FEATURE 6: STAFF PROMPT

What It Does

Shows ONE sentence for staff to repeat when customers ask "What's good?"

Where to Test

Admin: Today tab โ†’ Staff Prompt section (rare appearance)

Test Cases

TEST 6.1: Staff Prompt Eligibility (8 Gates)

StepActionExpected Result
1Check primary campaign confidenceMust be โ‰ฅ 0.8
2Check item stabilityMust be 10+ days
3Check prior surface validationMust have appeared elsewhere
4If all gates passStaff Prompt section visible

Pass Criteria: Only ultra-confident, stable items qualify

TEST 6.2: Sentence Structure

StepActionExpected Result
1Read the prompt text"Most people take the {itemName}."
2Verify NO variantsNo "Many customers", no "Regulars"
3Same structure alwaysImmutable

Pass Criteria: Single sentence structure only

TEST 6.3: Read-Only Display

StepActionExpected Result
1Check for edit buttonsNONE should exist
2Check for copy buttonsNONE should exist
3Check for "send to staff"NONE should exist

Pass Criteria: Completely read-only

TEST 6.4: Inertia Rules

StepActionExpected Result
1Note the item shown todayRecord it
2Check tomorrowSame item for 3+ days
3Check weekly appearancesMax 2 days per week

Pass Criteria: Stable, not flickering

TEST 6.5: Rare Appearance

StepActionExpected Result
1Track appearances over 10 daysRecord each day
2Calculate appearance rate< 30% of days
3Silence is normalNot showing = correct

Pass Criteria: Authority through scarcity


Staff Prompt Verification Checklist

TestStatusNotes
6.1 8-Gate Eligibilityโ˜
6.2 Sentence Structureโ˜
6.3 Read-Onlyโ˜
6.4 Inertia Rulesโ˜
6.5 Rare Appearanceโ˜

CROSS-FEATURE TESTS

Test A: Confidence Hierarchy

SurfaceThresholdTest
Campaign (Passive)0.3Items with 0.3+ appear in operational
Campaign (Active)0.6Items with 0.6+ become primary
Decision Blocks0.65Items with 0.65+ appear in blocks
Digital Screen0.7Items with 0.7+ appear on screen
Tent Card0.7Items with 0.7+ get tent cards
Counter Sticker0.8Items with 0.8+ get stickers
Staff Prompt0.8Items with 0.8+ AND 10 days stable

Test: Verify an item with confidence 0.5 appears in campaigns but NOT on screens.

Test B: Data Flow

StepActionExpected Result
1Update menu item in editorSave changes
2Check Decision BlocksItem available status reflected
3Check Today tabCampaign updated
4Check Digital ScreenSlide updated

Pass Criteria: Changes propagate across all surfaces

Test C: Multi-Project Fairness

StepActionExpected Result
1Store with 2+ projectsBoth have campaigns
2Track which project featuresOver 7 days
3Verify rotationNo single project dominates forever

Pass Criteria: Recency decay works


FINAL PRODUCTION CHECKLIST

Before Going Live

CategoryItemStatus
CodeAll tests above passโ˜
SecuritywithAuth() on all protected routesโ˜
ConfigFeature flags set correctlyโ˜
ConfigEnvironment variables in productionโ˜
DatabaseFirestore rules deployedโ˜
MonitoringSentry enabled (optional)โ˜
DocsAll spec/impl docs currentโ˜

Go-Live Sequence

  1. Deploy to staging โ†’ Run all tests above
  2. Enable for 1 beta store โ†’ Monitor 24 hours
  3. Check Sentry โ†’ Zero critical errors
  4. Enable for 10 stores โ†’ Monitor 7 days
  5. Full rollout โ†’ Enable for all stores

Test Results Summary

FeatureTestsPassedFailed
Decision Blocks6โ˜โ˜
CMI4โ˜โ˜
Digital Screens8โ˜โ˜
Social Content7โ˜โ˜
Physical Surfaces5โ˜โ˜
Staff Prompt5โ˜โ˜
Cross-Feature3โ˜โ˜
TOTAL38โ˜โ˜

Sign-Off

โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘                                                                                โ•‘
โ•‘  TESTER: ____________________                                                  โ•‘
โ•‘  DATE:   ____________________                                                  โ•‘
โ•‘                                                                                โ•‘
โ•‘  ALL 38 TESTS PASSED: [ ] YES  [ ] NO                                          โ•‘
โ•‘                                                                                โ•‘
โ•‘  PRODUCTION READY: [ ] YES  [ ] NO                                             โ•‘
โ•‘                                                                                โ•‘
โ•‘  NOTES: _______________________________________________________________        โ•‘
โ•‘                                                                                โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Testing Guide Generated: January 11, 2026
Version: 1.0.0

On This Page
  • ๐Ÿงช PRODUCTION TESTING GUIDE
  • ๐Ÿ“‹ PRE-TESTING CHECKLIST
  • Quick Feature Flag Check
  • FEATURE 1: DECISION BLOCKS
  • What It Does
  • Where to Test
  • Test Cases
  • TEST 1.1: Decision Blocks Appear
  • TEST 1.2: Runtime Availability Filtering
  • TEST 1.3: Click Tracking
  • TEST 1.4: Scroll to Item
  • TEST 1.5: Owner Pin Controls
  • TEST 1.6: Block Disable
  • Decision Blocks Verification Checklist
  • FEATURE 2: CONTINUOUS MENU INTELLIGENCE (CMI)
  • What It Does
  • Where to Test
  • Test Cases
  • TEST 2.1: Intelligence Document Exists
  • TEST 2.2: Item Scores Structure
  • TEST 2.3: Scheduler Runs (Manual Trigger)
  • TEST 2.4: Confidence Thresholds Applied
  • CMI Verification Checklist
  • FEATURE 3: DIGITAL SCREENS
  • What It Does
  • Where to Test
  • Test Cases
  • TEST 3.1: Screen Loads
  • TEST 3.2: Slide Content Hierarchy
  • TEST 3.3: Zero-Blank Guarantee
  • TEST 3.4: Minimum/Maximum Slides
  • TEST 3.5: Offline Resilience (Cache)
  • TEST 3.6: Real-Time Updates
  • TEST 3.7: Owner Uploads (Max 3)
  • TEST 3.8: Upload Expiry (14 Days)
  • Digital Screens Verification Checklist
  • FEATURE 4: SOCIAL CONTENT (TODAY TAB)
  • What It Does
  • Where to Test
  • Test Cases
  • TEST 4.1: Today Screen Loads
  • TEST 4.2: Primary Campaign Card
  • TEST 4.3: Empty State (Silence)
  • TEST 4.4: Campaign Actions
  • TEST 4.5: Post-Action State
  • TEST 4.6: Operational Section
  • TEST 4.7: Silence Governor
  • Social Content Verification Checklist
  • FEATURE 5: PHYSICAL SURFACES
  • What It Does
  • Where to Test
  • Test Cases
  • TEST 5.1: Tent Card Eligibility
  • TEST 5.2: Tent Card Download
  • TEST 5.3: Counter Sticker Eligibility
  • TEST 5.4: Counter Sticker Download
  • TEST 5.5: Template Variety
  • Physical Surfaces Verification Checklist
  • FEATURE 6: STAFF PROMPT
  • What It Does
  • Where to Test
  • Test Cases
  • TEST 6.1: Staff Prompt Eligibility (8 Gates)
  • TEST 6.2: Sentence Structure
  • TEST 6.3: Read-Only Display
  • TEST 6.4: Inertia Rules
  • TEST 6.5: Rare Appearance
  • Staff Prompt Verification Checklist
  • CROSS-FEATURE TESTS
  • Test A: Confidence Hierarchy
  • Test B: Data Flow
  • Test C: Multi-Project Fairness
  • FINAL PRODUCTION CHECKLIST
  • Before Going Live
  • Go-Live Sequence
  • Test Results Summary
  • Sign-Off