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