Просмотр исходного кода

test(dashboard): 按真实关系数据校验候选可视化

浏览器验收原先默认每个候选都存在上游关系图,导致小项目正常的无关系提示被误报为失败。

- 读取实际任务与当前候选,依据已保存的影响路径判断是否应展示关联图
- 无已解析关系时校验明确的空状态提示,不为满足验收制造关系
- 新建租户的真实 HTTP 闭环、已部署 CLI 只读验收及浏览器五视图验收通过
- OCPP 基线副本新分析 1453 个 Java 文件、38 条候选,关系图浏览器检查通过,原源码未修改
邵勃源 2 часов назад
Родитель
Сommit
2ce59ef181
1 измененных файлов с 8 добавлено и 1 удалено
  1. 8 1
      script/check-software-dashboard.mjs

+ 8 - 1
script/check-software-dashboard.mjs

@@ -14,7 +14,9 @@ try {
   const mutations = []
   const mutations = []
   page.on('pageerror', e => errors.push(e.message))
   page.on('pageerror', e => errors.push(e.message))
   page.on('request', r => { if (r.method() !== 'GET') mutations.push(r.url()) })
   page.on('request', r => { if (r.method() !== 'GET') mutations.push(r.url()) })
+  const reviewResponse = page.waitForResponse(response => new URL(response.url()).pathname === '/api/review' && response.status() === 200)
   await page.goto(url)
   await page.goto(url)
+  const review = await (await reviewResponse).json()
   await page.locator('#summary h1').waitFor()
   await page.locator('#summary h1').waitFor()
   await page.waitForFunction(() => document.querySelector('#sync').textContent.startsWith('已同步'))
   await page.waitForFunction(() => document.querySelector('#sync').textContent.startsWith('已同步'))
   assert.equal(await page.locator('.metric').count(), 4)
   assert.equal(await page.locator('.metric').count(), 4)
@@ -22,7 +24,12 @@ try {
   await page.evaluate(() => window.scrollTo(0, 0))
   await page.evaluate(() => window.scrollTo(0, 0))
   await page.screenshot({ path: out + '/01-overview.png', fullPage: true })
   await page.screenshot({ path: out + '/01-overview.png', fullPage: true })
   await page.locator('nav [data-tab="impact"]').click()
   await page.locator('nav [data-tab="impact"]').click()
-  assert(await page.locator('svg[aria-label="候选的静态可达关联图"]').count())
+  const candidateID = await page.locator('#candidate').inputValue()
+  const candidate = review.candidates.find(item => item.id === candidateID)
+  assert(candidate, 'displayed candidate must belong to this review')
+  const paths = candidate.ontology_context?.impact_paths || []
+  assert.equal(await page.locator('svg[aria-label="候选的静态可达关联图"]').count(), paths.length ? 1 : 0)
+  if (!paths.length) await page.getByText('暂无可展示的关联路径;不表示不存在依赖。', { exact: true }).waitFor()
   await page.locator('details').first().locator('summary').click()
   await page.locator('details').first().locator('summary').click()
   assert(!(await page.locator('details').first().innerText()).includes('[object Object]'))
   assert(!(await page.locator('details').first().innerText()).includes('[object Object]'))
   await page.evaluate(() => window.scrollTo(0, 0))
   await page.evaluate(() => window.scrollTo(0, 0))