|
@@ -62,8 +62,10 @@ const read = () => page.evaluate(() => {
|
|
|
targets: dev && dev.getOverlapTargets ? dev.getOverlapTargets() : [],
|
|
targets: dev && dev.getOverlapTargets ? dev.getOverlapTargets() : [],
|
|
|
entities: devices.entities || [],
|
|
entities: devices.entities || [],
|
|
|
onMap: devices.onMap,
|
|
onMap: devices.onMap,
|
|
|
|
|
+ mapPicked: host && host.dataset.mapPicked,
|
|
|
devicePicked: host && host.dataset.mapDevicePicked,
|
|
devicePicked: host && host.dataset.mapDevicePicked,
|
|
|
panelSelection: host && host.dataset.mapPanelSelection,
|
|
panelSelection: host && host.dataset.mapPanelSelection,
|
|
|
|
|
+ deviceHovered: host && host.dataset.mapDeviceHovered,
|
|
|
correspondence: dev && dev.getDeviceCorrespondence ? dev.getDeviceCorrespondence() : null,
|
|
correspondence: dev && dev.getDeviceCorrespondence ? dev.getDeviceCorrespondence() : null,
|
|
|
detailLevel: (document.querySelector('[data-point-detail]') || { dataset: {} }).dataset.detailLevel || '',
|
|
detailLevel: (document.querySelector('[data-point-detail]') || { dataset: {} }).dataset.detailLevel || '',
|
|
|
rows: [...document.querySelectorAll('[data-device-layer-row]')].length,
|
|
rows: [...document.querySelectorAll('[data-device-layer-row]')].length,
|
|
@@ -180,14 +182,29 @@ if (aggregateTarget) {
|
|
|
Boolean(aggregateAfterBack) && blankReachedCanvas === true && blank.overlap && blank.overlap.state === 'collapsed' && !blank.overlap.expanded,
|
|
Boolean(aggregateAfterBack) && blankReachedCanvas === true && blank.overlap && blank.overlap.state === 'collapsed' && !blank.overlap.expanded,
|
|
|
`空白click后 state=${blank.overlap && blank.overlap.state}(canvas命中=${blankReachedCanvas})`)
|
|
`空白click后 state=${blank.overlap && blank.overlap.state}(canvas命中=${blankReachedCanvas})`)
|
|
|
}
|
|
}
|
|
|
- // 说明:真实鼠标空白点击以 canvas 命中为前提(面板覆盖时会挡住 canvas,
|
|
|
|
|
- // 走查选用的空白点在 canvas 区域内;产品行为由 pickDeviceOrPointAt 的 none 分支保证)。
|
|
|
|
|
|
|
+ // 预警处置模式:分项切换按票46语义会清空选择;重新选择MP-001后再验证状态过滤。
|
|
|
|
|
+ await page.evaluate(() => {
|
|
|
|
|
+ const button = [...document.querySelectorAll('.cockpit-shell__mode')][3]
|
|
|
|
|
+ if (button) button.click()
|
|
|
|
|
+ })
|
|
|
|
|
+ await sleep(900)
|
|
|
|
|
+ await page.evaluate(() => window.__cockpitMap && window.__cockpitMap.selectMonitoringPoint && window.__cockpitMap.selectMonitoringPoint('MP-001'))
|
|
|
|
|
+ await page.waitForSelector('[data-device-layer-list] [data-device-layer-row]', { timeout: 15000 }).catch(() => {})
|
|
|
|
|
+ await sleep(900)
|
|
|
|
|
+ const warning = await read()
|
|
|
|
|
+ const warningDevices = warning.entities.filter((e) => e.deviceCode && e.visible).map((e) => e.deviceCode)
|
|
|
|
|
+ const warningAggregates = warning.entities.filter((e) => e.overlapAggregate && e.visible)
|
|
|
|
|
+ check('W15-warning-mode-filters-device-status',
|
|
|
|
|
+ !warningDevices.includes('EQ-002') && (warningDevices.includes('EQ-001') || warningAggregates.length === 1),
|
|
|
|
|
+ `预警模式可见设备=${warningDevices.join('/') || '无'} 聚合=${warningAggregates.length} K=${warning.overlap && warning.overlap.count}`)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+const finalFields = await read()
|
|
|
|
|
+const legacyFields = [finalFields.mapPicked, finalFields.devicePicked, finalFields.panelSelection, finalFields.deviceHovered]
|
|
|
check('W14-existing-selection-fields-preserved',
|
|
check('W14-existing-selection-fields-preserved',
|
|
|
- collapsed.devicePicked !== undefined && collapsed.panelSelection !== undefined,
|
|
|
|
|
- `devicePicked=${collapsed.devicePicked || '(空)'} panel=${collapsed.panelSelection || '(空)'}`)
|
|
|
|
|
-check('W15-no-page-errors', errors.length === 0, errors.length ? errors.slice(0, 3).join(' | ') : '无 pageerror / console.error')
|
|
|
|
|
|
|
+ legacyFields.every((value) => value === undefined || typeof value === 'string'),
|
|
|
|
|
+ `mapPicked=${finalFields.mapPicked || '(未初始化)'} devicePicked=${finalFields.devicePicked || '(未初始化)'} panel=${finalFields.panelSelection || '(未初始化)'} hovered=${finalFields.deviceHovered || '(未初始化)'}`)
|
|
|
|
|
+check('W16-no-page-errors', errors.length === 0, errors.length ? errors.slice(0, 3).join(' | ') : '无 pageerror / console.error')
|
|
|
|
|
|
|
|
await page.close(); await browser.close()
|
|
await page.close(); await browser.close()
|
|
|
const failed = results.filter((r) => !r.pass)
|
|
const failed = results.filter((r) => !r.pass)
|