yeg
2026-08-29 44cc1e3f035cf76c166fac228ce648339b018c52
补充模拟器总开关浏览器验收

覆盖关机停采、重启保持关机、重新开机恢复采样与在线候选同步。
1个文件已修改
40 ■■■■■ 已修改文件
tests/e2e/collector-sampling.spec.ts 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
tests/e2e/collector-sampling.spec.ts
@@ -69,9 +69,47 @@
  const mainState = stack.redisCommand('GET', 'dev:bts-simulator:state:v1')
  expect(mainState).not.toMatch(/\\?"history\\?"\s*:/)
  const historyBeforePowerOff = Number(stack.redisCommand(
    'LLEN', 'dev:bts-simulator:collector-history:v1:dev-sim-collector-1',
  ))
  expect(historyBeforePowerOff).toBeGreaterThan(0)
  page.once('dialog', dialog => dialog.accept())
  const poweredOff = page.waitForResponse(response => response.request().method() === 'POST'
    && response.url().endsWith('/dev/bts-simulator/power') && response.ok())
  await page.getByRole('button', { name: '一键模拟关机' }).click()
  await poweredOff
  await expect(page.locator('#device-power')).toHaveText('已关机')
  const historyAfterPowerOff = Number(stack.redisCommand(
    'LLEN', 'dev:bts-simulator:collector-history:v1:dev-sim-collector-1',
  ))
  await page.waitForTimeout(700)
  expect(Number(stack.redisCommand(
    'LLEN', 'dev:bts-simulator:collector-history:v1:dev-sim-collector-1',
  ))).toBeGreaterThan(0)
  ))).toBe(historyAfterPowerOff)
  await stack.restartBackend()
  await page.goto(`${stack.backendUrl}/dev/bts-simulator.html`)
  await expect(page.locator('#device-power')).toHaveText('已关机')
  await page.waitForTimeout(700)
  expect(Number(stack.redisCommand(
    'LLEN', 'dev:bts-simulator:collector-history:v1:dev-sim-collector-1',
  ))).toBe(historyAfterPowerOff)
  const poweredOn = page.waitForResponse(response => response.request().method() === 'POST'
    && response.url().endsWith('/dev/bts-simulator/power') && response.ok())
  await page.getByRole('button', { name: '一键模拟开机' }).click()
  await poweredOn
  await expect(page.locator('#device-power')).toHaveText('已开机')
  await expect.poll(() => Number(stack.redisCommand(
    'LLEN', 'dev:bts-simulator:collector-history:v1:dev-sim-collector-1',
  ))).toBeGreaterThan(historyAfterPowerOff)
  await expect.poll(() => {
    const stored = JSON.parse(stack.redisCommand('GET', 'dev:device-discovery:candidates:v1'))
    const candidates = typeof stored === 'string' ? JSON.parse(stored) : stored
    return candidates.collectors.find((item: { deviceCode: string }) =>
      item.deviceCode === 'dev-sim-collector-1')?.online
  }, { timeout: 10_000 }).toBe(true)
  await login(page)
  await page.goto('/device-collector/new')