25 lines
3.4 KiB
JavaScript
25 lines
3.4 KiB
JavaScript
'use strict';
|
|
const {assert,functionSource,app,html,read,buildMeta}=require('./helpers/app-source');
|
|
const packageVersion=JSON.parse(read('package.json')).version;
|
|
assert(packageVersion===buildMeta.PACKAGE_VERSION&&buildMeta.APP_VERSION==='48.0','v47.84 canonical version marker is missing');
|
|
|
|
const hud=functionSource('boardPlayHudVisible'),activateHud=functionSource('activateBoardHud'),select=functionSource('selectBoard'),activateDrag=functionSource('activateBoardPointerDrag'),makeBoard=functionSource('makeBoard');
|
|
assert(hud.includes('hudBoardId===b?.id')&&!hud.includes('b?.drawing'),'HUD still disappears when the pointer draw ends');
|
|
assert(activateHud.includes('hudBoardId=b.id')&&activateHud.includes('setBoardHudVisibility(previous,false)')&&activateDrag.includes('activateBoardHud(b)'),'Committed knob manipulation does not pin exactly one board HUD');
|
|
assert(!select.includes('hudBoardId=b.id'),'Plain board selection exposes the HUD without knob manipulation');
|
|
assert(makeBoard.includes("boardReset.addEventListener('click'")&&makeBoard.includes('resetSelectedBoard(b)'),'Detached HUD reset control is not directly wired after being moved outside the board card');
|
|
assert(functionSource('beginPan').includes('button,a,input,select,textarea,[role=\"button\"]'),'Touch panning can still capture the detached HUD reset button');
|
|
|
|
const finalize=functionSource('finalizeAtGate'),overlay=functionSource('updatePickupHandleOverlay'),finish=functionSource('bindBoard');
|
|
assert(finalize.includes('const pointerId=b?.drawing?.pointerId')&&finalize.includes('cancelBoardDragFrame(b);clearDragRender(b);hidePickupHandleOverlay()')&&finalize.includes('safeRelease(b.svg,pointerId)'),'Gate completion does not synchronously terminate the pointer-drag presentation');
|
|
assert(overlay.includes('hidePickupHandleOverlay();return false'),'An invalidated drawing can leave the custom pickup cursor visible');
|
|
assert(finish.includes('if(!b.drawing){cancelBoardDragFrame(b);clearDragRender(b);hidePickupHandleOverlay();safeRelease'),'Pointer-up fallback does not clear a stale pickup overlay');
|
|
|
|
const inventoryRender=functionSource('renderInventoryPanel'),inventorySync=functionSource('syncInventoryCursorSelection'),inventoryUse=functionSource('useInventoryItemLoaded');
|
|
assert(functionSource('createInventoryItemView').includes('option.dataset.itemId=item.id')&&functionSource('createInventoryItemView').includes('event.preventDefault()'),'Cursor inventory options lack stable item identity or click-default suppression');
|
|
assert(inventorySync.includes('inventorySelectedCursorItemId')&&inventorySync.includes('patchInventoryItems([inventorySelectedCursorItemId,next])'),'Cursor selection cannot update in place');
|
|
const cursorBranch=inventoryUse.slice(inventoryUse.indexOf('if(item.cursorStyle)'),inventoryUse.indexOf('if(item.lineColor)'));
|
|
assert(cursorBranch.includes('syncInventoryCursorSelection()')&&!cursorBranch.includes('renderInventoryPanel()')&&!cursorBranch.includes('updateHud()'),'Cursor switching still rebuilds the inventory panel and can move its scroll position');
|
|
assert(functionSource('renderInventoryPanel').includes('restorePanelScroll(inventoryPanel,scrollPosition)')&&functionSource('renderStorePanel').includes('restorePanelScroll(storePanel,scrollPosition)'),'Item-list rerenders can reset the inventory or shop scroll position');
|
|
|
|
console.log('v47.84 persistent board HUD, gate-overlay cleanup, and inventory-scroll regression test passed');
|