Deploy Testing Checklist — Middleware Platform
Use this checklist after every deployment to the staging or production Vapor environment. The Middleware Platform is the central hub for pricing sync, shipping data, and the CertiLock image API — failures here directly impact both the Retail and Dealers sites.
Production and staging environments are managed via Laravel Vapor. Locate the environment-specific URL in the Vapor dashboard or vapor.yml.
1. Application Health
1.1 Application Responds
How to check: Navigate to the Vapor environment URL in a browser, or run:
curl -I https://<vapor-environment-url>/
Expected: HTTP 200 response from the application. No unhandled exception page or 5xx error.
1.2 SSL Certificate Valid
How to check: Click the padlock icon in the browser address bar for the environment URL.
Expected: SSL certificate is valid, not expired, and issued to the correct domain. No browser security warnings.
1.3 Environment Variables Set
How to check: In the Vapor dashboard → Environment → Variables, verify all required keys are present. Key variables to confirm:
APP_ENVandAPP_KEYDB_HOST,DB_DATABASE,DB_USERNAME,DB_PASSWORDREDIS_HOST,REDIS_PASSWORDNFUSION_*keys for each tenantALGOLIA_APP_ID,ALGOLIA_ADMIN_API_KEYSHIPSTATION_API_KEY,SHIPSTATION_API_SECRETAWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_S3_BUCKET
Expected: All required variables are present. No variable has a blank or placeholder value.
1.4 Database Connectivity
How to check: Use the Vapor CLI to open a console command and run a quick connectivity check:
vapor command <environment> --command="php artisan tinker --execute=\"DB::select('SELECT 1');\""
Expected: Command returns without a database connection error.
1.5 Redis Queue Connection
How to check: In Vapor logs, search for Redis connection errors. Alternatively, check the Filament admin queue monitor (if installed).
Expected: No Connection refused or authentication errors for Redis. The nfusion queue driver is redis and connections succeed.
2. Filament Admin Panel
2.1 Admin Panel Loads
How to check: Navigate to https://<environment-url>/admin and log in with an admin account.
Expected: The Filament dashboard renders without errors. Navigation menu is visible.
2.2 Admin Authentication Works
How to check: Attempt to access /admin without logging in.
Expected: Redirected to the Filament login page. Unauthenticated users cannot access any admin resource.
2.3 NFusion Tenant List Renders
How to check: In Filament admin → nFusion → Tenants.
Expected: At least two tenants appear: Retail and Dealers. No blank list or database error shown.
2.4 Sync Target List Renders
How to check: In Filament admin → nFusion → Sync Targets.
Expected: All configured sync targets (Algolia, WooCommerce, HTTP) are listed with their active/inactive status. No database error.
3. NFusion Pricing Sync
3.1 Recent Sync Logs Show Success
How to check: In Filament admin → nFusion → Sync Logs, sort by most recent.
Expected: The most recent log entry for each active tenant shows status success. The processed count is greater than zero. No entries show status error or partial from the last sync cycle.
3.2 Sync Schedule Is Running
How to check: Check the Vapor scheduler logs, or inspect the most recent sync log timestamp in Filament.
Expected: The sync log created_at timestamp is within the last 10 minutes (the default schedule is every 5 minutes). If the last sync is older than 15 minutes, the scheduler may not be running.
If logs are stale, check the Vapor environment's scheduler setting in vapor.yml. The Laravel scheduler must be enabled for the sync to run automatically. Contact infrastructure if the scheduler appears stopped.
3.3 Retail WooCommerce Prices Updated
How to check: On the Retail site (www.scottsdalemint.com), navigate to a product page and note the price. Compare to the nFusion API price for that SKU (available in the Filament product list or nFusion's own portal).
Expected: Retail product price matches (or is within one sync cycle of) the nFusion ask price plus configured premium.
3.4 Dealers Algolia Index Updated
How to check: On the Dealers site, perform a product search. In browser DevTools → Network tab, inspect an Algolia API response for a specific product hit, and check the regular_price attribute.
Expected: The regular_price value in the Algolia hit matches the current nFusion ask price for that SKU.
3.5 Sale Prices Applied Correctly
How to check: In Filament admin → nFusion → Sync Logs, check the log detail for a SKU that has an active sale overlay.
Expected: The sale_price field in Algolia (or _sale_price in WooCommerce) reflects the discounted value, not the standard ask price.
3.6 Dry-Run Targets Not Writing Data
How to check: In Filament admin → nFusion → Sync Targets, identify any targets with the Dry Run flag enabled.
Expected: Dry-run targets show sync activity in logs (attempted count > 0) but report zero writes to the destination. Confirm no unintended data has been written to those targets.
4. Queue Workers
4.1 NFusion Queue Has No Failed Jobs
How to check: Run the following Vapor console command:
vapor command <environment> --command="php artisan queue:failed"
Or check Filament's Horizon/queue panel if installed.
Expected: Zero failed jobs in the nfusion queue. If failed jobs exist, inspect the error and resolve before proceeding.
4.2 Queue Workers Are Processing
How to check: In Vapor dashboard → Environment → Queues, confirm the nfusion queue has workers assigned.
Expected: Workers are active. The queue depth (pending jobs) trends toward zero rather than growing indefinitely.
5. ShipStation Webhooks
5.1 ORDER_NOTIFY Webhook Endpoint Responds
How to check: In ShipStation → Settings → Webhooks, verify the ORDER_NOTIFY webhook URL points to the current environment. Alternatively, check recent webhook delivery logs in ShipStation.
Expected: Recent ORDER_NOTIFY deliveries show HTTP 200 responses. No 404 or 5xx responses in the ShipStation webhook log.
5.2 SHIP_NOTIFY Webhook Endpoint Responds
How to check: Same as above but for the SHIP_NOTIFY webhook URL.
Expected: Recent SHIP_NOTIFY deliveries show HTTP 200 responses.
5.3 Shipping Dashboard Data Is Current
How to check: In Filament admin → Shipping Dashboard, check the most recently updated orders and shipments.
Expected: Order and shipment records have been updated within the last expected webhook cycle. No orders are stuck in an unexpected state.
5.4 Shipment Tracking Numbers Present
How to check: In Filament admin → Shipping Dashboard → Shipments, open a recently shipped order.
Expected: Tracking number, carrier code, and ship date are populated. These fields are null only if ShipStation has not yet updated the shipment.
6. CertiLock Image API
6.1 Authenticated Image Request Returns Data
How to check: Make an authenticated GET request to the image API using a valid API token:
curl -H "Authorization: Bearer <valid-api-token>" \
https://<environment-url>/api/images/<known-serial-number>
Expected: HTTP 200 response with a JSON body containing an image URL or binary image data.
6.2 Unauthenticated Request Returns 401
How to check: Make the same request without the Authorization header:
curl -I https://<environment-url>/api/images/<known-serial-number>
Expected: HTTP 401 Unauthorized. No image data is returned.
6.3 Invalid Serial Returns 404
How to check: Request a serial number that does not exist:
curl -H "Authorization: Bearer <valid-api-token>" \
https://<environment-url>/api/images/FAKE-SERIAL-00000
Expected: HTTP 404 Not Found. No server error.
6.4 S3 Image Storage Accessible
How to check: In AWS S3 console, confirm the CertiLock images bucket exists and contains objects.
Expected: Images bucket is accessible from the Middleware Platform's AWS credentials. At least one image object is present (for a known serial number).
7. WooCommerce Product Update Webhook
7.1 Product Update Endpoint Accepts Payloads
How to check: In the Retail site's WooCommerce webhook settings (WP Admin → WooCommerce → Settings → Advanced → Webhooks), verify the product-update webhook is active and pointed at the Middleware environment.
Expected: Recent webhook delivery log entries in WooCommerce show HTTP 200 responses from the Middleware endpoint.
7.2 Updated Products Reflected in Middleware
How to check: In Filament admin, check the product list for a recently updated WooCommerce product.
Expected: The updated product data (e.g., title, SKU, or stock status) matches what was changed in WooCommerce.
8. Monitoring & Logs
8.1 No Critical Errors in Vapor Logs
How to check: In Vapor dashboard → Environment → Logs, filter for ERROR or CRITICAL level entries for the period since the deploy.
Expected: No unhandled exceptions or critical errors appear. INFO and WARNING level log entries are acceptable.
8.2 Sync Error Rate Is Zero
How to check: In Filament admin → nFusion → Sync Logs, check the last 10 log entries.
Expected: All entries show status success. Zero entries with status error. For partial entries, expand the log detail to confirm which SKUs failed and why.
8.3 Response Times Are Acceptable
How to check: In Vapor dashboard or your APM tool, review average response times for the /admin and API routes.
Expected: Admin panel responses under 2 seconds. API endpoint responses (image API, webhook handlers) under 1 second.