44 lines
1.6 KiB
JavaScript
44 lines
1.6 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import {
|
|
buildHardwareSmokeCases,
|
|
loadHardwareSmokeConfig,
|
|
runHardwareSmoke
|
|
} from '../dist/devices/hardware-smoke-runner.js';
|
|
|
|
const config = loadHardwareSmokeConfig({
|
|
QIPAI_HARDWARE_SMOKE_ENABLE: 'false',
|
|
QIPAI_HARDWARE_SMOKE_ALLOW_ACTIONS: 'false',
|
|
QIPAI_HARDWARE_CONTROL_BOX_DEVICE_ID: 'BOX_001',
|
|
QIPAI_HARDWARE_SMART_SOCKET_DEVICE_ID: 'SOCKET_001'
|
|
});
|
|
const dryCases = buildHardwareSmokeCases(config);
|
|
assert.deepEqual(dryCases.map((item) => item.id), [
|
|
'control-box-basic-info',
|
|
'smart-socket-work-info'
|
|
]);
|
|
assert.equal(dryCases.every((item) => item.destructive === false), true);
|
|
|
|
const actionCases = buildHardwareSmokeCases({
|
|
...config,
|
|
allowActions: true,
|
|
subLockSubId: 'SUB001'
|
|
});
|
|
assert.equal(actionCases.some((item) => item.id === 'control-box-power-slot1-off'), true);
|
|
assert.equal(actionCases.some((item) => item.id === 'sub-lock-open'), true);
|
|
assert.equal(actionCases.some((item) => item.id === 'smart-socket-switch-off'), true);
|
|
assert.equal(actionCases.some((item) => item.destructive), true);
|
|
|
|
const dryRun = await runHardwareSmoke(config, dryCases);
|
|
assert.equal(dryRun.length, 2);
|
|
assert.equal(dryRun.every((item) => item.status === 'DRY_RUN'), true);
|
|
assert.equal(dryRun.every((item) => !String(item.reason).includes('password')), true);
|
|
|
|
const skipped = await runHardwareSmoke(loadHardwareSmokeConfig({}), []);
|
|
assert.deepEqual(skipped, [{
|
|
caseId: 'hardware-smoke-config',
|
|
status: 'SKIP',
|
|
reason: 'No DeviceID configured.'
|
|
}]);
|
|
|
|
console.log('PASS: M06-G hardware smoke runner builds safe dry-run and action matrices.');
|