PASS Tests\Feature\AdditionalCatalogTest ✓ preview does not write any rows 0.40s ✓ import adds ten products fifty variants and fifty unique images 0.10s ✓ repeated import does not reset stock price or gallery edits 0.10s ✓ existing products and variants remain byte equivalent 0.21s ✓ slug conflict rolls back entire batch 0.17s ✓ all ten detail pages have five thumbnails and correct size controls 0.24s ✓ new product can be added to cart with correct variant price and sto… 0.13s ✓ checkout new product decrements stock and reimport keeps the sale 0.23s ✓ full demo seeder includes new catalog 0.40s PASS Tests\Feature\AdminPaymentSettingsTest ✓ customer cannot manage payments or settings 0.10s ✓ payment and setting pages render 0.12s ✓ admin updates store name and contact 0.11s ✓ settings validation 0.09s ✓ admin uploads and resets favicon 0.12s ✓ admin creates virtual account 0.10s ✓ virtual account validation 0.09s ✓ admin updates va number 0.09s ✓ qris requires image and can be replaced 0.11s ✓ toggle and delete channel 0.09s ✓ channel with unpaid orders cannot be deleted 0.13s PASS Tests\Feature\AdminTest ✓ customer cannot open admin 0.09s ✓ admin pages render 0.15s ✓ admin creates product with sizes and image 0.10s ✓ admin product validation 0.09s ✓ editing product keeps category and updates stock 0.10s ✓ deleting ordered product only deactivates it 0.12s PASS Tests\Feature\AuthTest ✓ register creates customer account 0.02s ✓ register validation 0.01s ✓ login and logout 0.22s ✓ admin is redirected to dashboard after login 0.01s ✓ login is rate limited 1.02s PASS Tests\Feature\CartCheckoutTest ✓ add to cart requires size 0.09s ✓ add to cart stays on the same page and quantity is capped by stock 0.09s ✓ buy now goes straight to checkout 0.09s ✓ ajax add to cart returns json with cart count 0.11s ✓ ajax add to cart errors return json 0.10s ✓ sold out variant cannot be added 0.10s ✓ update and remove cart items 0.10s ✓ ajax update and remove return fresh totals 0.10s ✓ checkout page lists active va banks and qris only 0.10s ✓ checkout with va creates order and decrements stock 0.12s ✓ checkout with qris shows qr code 0.12s ✓ inactive channel cannot be used 0.11s ✓ checkout prevents overselling 0.11s ✓ checkout validates input 0.14s ✓ inactive product is pruned from cart 0.10s ✓ empty cart cannot checkout 0.10s PASS Tests\Feature\DistanceDeliveryTest ✓ haversine and rounding 0.11s ✓ minimum and free boundary 0.09s ✓ outside radius is not free 0.12s ✓ invalid point is rejected 0.10s ✓ checkout starts without valid quote 0.13s ✓ order saves distance and rate snapshot 0.18s ✓ free order and duplicate request 0.18s ✓ changed coordinate invalidates signature 0.17s ✓ changed settings invalidates signature 0.17s ✓ address confirmation required 0.18s ✓ no javascript review preserves form and can order 0.19s ✓ road cache used for order without network 0.15s ✓ unavailable road does not fallback 0.15s ✓ implausible road response is rejected 0.14s ✓ expired road quote requires refresh 0.11s ✓ admin can save settings 0.12s ✓ customer cannot save shipping 0.09s ✓ bad settings and missing routing are rejected 0.10s ✓ five gallery uploads are saved 0.13s ✓ six gallery uploads are rejected 0.11s ✓ catalog has five distinct images and safe rerun 0.30s ✓ custom admin gallery is not overwritten 0.30s PASS Tests\Feature\OrderFlowTest ✓ customer uploads proof and it is private 0.25s ✓ proof must be an image 0.20s ✓ qris order accepts proof 0.22s ✓ customer cannot upload proof after order processed 0.21s ✓ changed va number does not change existing order snapshot 0.27s ✓ customer cancel restores stock 0.22s ✓ customer cannot cancel paid order 0.23s ✓ admin status flow and invalid transition 0.28s ✓ admin cancel restores stock 0.24s ✓ revenue only counts verified orders 0.27s ✓ customer order list and account pages 0.25s PASS Tests\Feature\RevisionFourTest ✓ profile has only one photo upload 0.18s ✓ avatar upload private and removal 0.19s ✓ avatar rejects script and large dimensions 0.18s ✓ avatar cannot be requested as guest 0.17s ✓ bank logo upload and reset 0.21s ✓ logo rejects svg and css injection 0.17s ✓ customer cannot change bank branding 0.14s ✓ search returns only indonesia and caches 0.14s ✓ search invalid query and guest 0.14s ✓ search provider failure and empty results 0.13s ✓ search global cooldown 0.15s ✓ search empty success 0.14s ✓ customer coordinates hidden 0.16s ✓ catalog28 products five photos and numeric sizes 0.38s ✓ custom product name is not overwritten 0.31s PASS Tests\Feature\RevisionSixTest ✓ guest favorite page requires login 0.15s ✓ guest ajax cannot save favorites 0.14s ✓ guest normal post cannot save favorites 0.14s ✓ guest card is login link not toggle form 0.17s ✓ favorites are isolated between accounts on same session 0.18s ✓ legacy guest favorites are not imported into account 0.15s ✓ service will not toggle favorites when logged out 0.15s ✓ checkout payment is below summary inside same form 0.18s ✓ admin filter and year layout classes render 0.18s ✓ search cooldown exposes bounded retry hint 0.14s ✓ autocomplete markup exposes accessible listbox 0.15s PASS Tests\Feature\StoreUpgradeTest ✓ customer login defaults to store home 0.13s ✓ customer login ignores intended profile and returns home 0.15s ✓ store and admin use fixed light theme 0.18s ✓ no native browser dialog calls in application js 0.16s ✓ admin can create same size in different colors 0.16s ✓ duplicate color size is rejected case insensitively 0.16s ✓ gallery upload and delete are owned and persisted 0.21s ✓ malformed legacy gallery inputs return validation errors 0.18s ✓ gallery rejects non image 0.17s ✓ gallery rejects more than five images 0.18s ✓ stale inventory version cannot overwrite sale 0.22s ✓ retired variant cannot be added to cart 0.17s ✓ province specific shipping overrides national same service 0.16s ✓ city specific shipping overrides province 0.16s ✓ checkout shipping endpoint returns fresh signed quote 0.20s ✓ customer cannot manage shipping 0.17s ✓ disabled shipping rate is rejected at checkout 0.22s ✓ price change requires quote review 0.20s ✓ shipping change requires quote review 0.21s ✓ checkout is idempotent and does not double deduct 0.22s ✓ old checkout replay does not clear new cart 0.22s ✓ snapshot number and qr do not follow live channel 0.19s ✓ qris snapshot access is owner or admin only 0.17s ✓ missing qris cannot create order 0.19s ✓ stale proof cannot resurrect cancelled order 0.21s ✓ stale proof cannot revert processed order 0.22s ✓ customer policy is rechecked after lock 0.20s ✓ large money totals are stored exactly 0.19s ✓ array inputs return validation not server error 0.17s ✓ short va with spaces is rejected 0.16s ✓ used payment channel type is immutable 0.21s ✓ reseed does not reset admin password 0.17s ✓ seeded order cancel does not inflate stock 0.49s ✓ expiry is idempotent and restores stock once 0.19s ✓ order notifications include new order proof and status 0.22s ✓ mail outage does not rollback paid order creation 0.20s ✓ forgot password is generic for unknown email 0.57s ✓ password reset token is single use and changes session version 0.11s ✓ invalid password reset is rejected 0.29s ✓ policy pages render and customer cannot edit 0.12s ✓ admin can edit plaintext policies safely 0.10s PASS Tests\Feature\StorefrontTest ✓ public pages render 0.20s ✓ sold out sizes are disabled and sold out product has no cart form 0.12s ✓ inactive product is hidden 0.11s ✓ unknown page uses custom 404 0.09s ✓ guest is redirected from protected pages 0.09s PASS Tests\Feature\VisualRefinementTest ✓ signed in customer can toggle favorites and view saved product 0.10s ✓ normal favorite form has non javascript fallback 0.09s ✓ favorite session isolated between browsers 0.13s ✓ inactive product cannot be added to favorites 0.11s ✓ favorites do not reserve stock 0.10s ✓ wishlist rejects over capacity without losing items 0.10s ✓ malformed wishlist session is handled safely 0.10s ✓ home has real categories latest collection size help and faq 0.11s ✓ favorite controls are outside product buy form 0.10s ✓ customer history is inside payment sidebar 0.12s ✓ admin order shows timeline 0.12s ✓ order search and status are scoped to signed in customer 0.13s ✓ order search rejects array input and invalid status 0.09s ✓ location search is visible without opening map and coordinates rema… 0.10s ✓ both layouts load shared refinement assets 0.11s ✓ all application javascript avoids native message dialogs 0.09s Tests: 168 passed (1186 assertions) Duration: 27.86s