Test transparent health and top HUD assets

This commit is contained in:
Admin 2026-09-18 02:19:48 +00:00
parent 9ae626d5f8
commit e740be97a0

View File

@ -7,6 +7,8 @@ import rightControls from '../src/assets/controller/right-controls.js';
import cannonRoundel from '../src/assets/controller/cannon-roundel.js'; import cannonRoundel from '../src/assets/controller/cannon-roundel.js';
import helmFrame from '../src/assets/controller/helm-frame.js'; import helmFrame from '../src/assets/controller/helm-frame.js';
import helmKnob from '../src/assets/controller/helm-knob.js'; import helmKnob from '../src/assets/controller/helm-knob.js';
import playerHealth from '../src/assets/controller/player-health.js';
import enemyHealth from '../src/assets/controller/enemy-health.js';
const assets = { const assets = {
topHud, topHud,
@ -15,6 +17,8 @@ const assets = {
cannonRoundel, cannonRoundel,
helmFrame, helmFrame,
helmKnob, helmKnob,
playerHealth,
enemyHealth,
}; };
const decodeWebP = (name, dataUrl) => { const decodeWebP = (name, dataUrl) => {
@ -40,3 +44,20 @@ for (const [name, dataUrl] of Object.entries(assets)) {
decodeWebP(name, dataUrl); decodeWebP(name, dataUrl);
}); });
} }
const alphaAssets = {
topHud,
playerHealth,
enemyHealth,
};
for (const [name, dataUrl] of Object.entries(alphaAssets)) {
test(`${name} carries WebP transparency data`, () => {
const match = /^data:image\/webp;base64,([A-Za-z0-9+/=]+)$/.exec(dataUrl);
assert.ok(match, `${name} must be a WebP data URL`);
const bytes = Buffer.from(match[1], 'base64');
const hasAlphaChunk = bytes.includes(Buffer.from('ALPH'));
const usesLosslessWebP = bytes.includes(Buffer.from('VP8L'));
assert.ok(hasAlphaChunk || usesLosslessWebP, `${name} should preserve transparent background data`);
});
}