From 802057a42167d8bd99be4d0b08c25cff422d1535 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期一, 07 九月 2026 21:26:06 +0800
Subject: [PATCH] 修复拼接人工值清理和多电池来源分界
---
tests/e2e/data-analysis-integrated-acceptance.spec.ts | 35 +++++++++++++++++++++++++++++++----
1 files changed, 31 insertions(+), 4 deletions(-)
diff --git a/tests/e2e/data-analysis-integrated-acceptance.spec.ts b/tests/e2e/data-analysis-integrated-acceptance.spec.ts
index a37f617..cf2e81f 100644
--- a/tests/e2e/data-analysis-integrated-acceptance.spec.ts
+++ b/tests/e2e/data-analysis-integrated-acceptance.spec.ts
@@ -321,6 +321,12 @@
await expect(page.getByText('字段模板已保存', { exact: true })).toBeVisible()
await page.getByRole('dialog', { name: '选择拼接字段模板', exact: true }).getByRole('button', { name: '应用模板', exact: true }).click()
await page.getByRole('textbox', { name: '连续来源3 同名电池 循环3 最终电压1', exact: true }).fill('-1.25')
+ await page.getByRole('textbox', { name: '连续来源3 第二电池 循环3 最终电压1', exact: true }).fill('9')
+ await page.locator('.panel-actions .el-checkbox').filter({ hasText: '第二电池' }).click()
+ await expect(page.locator('.statistics-editor tbody tr')).toHaveCount(5)
+ await page.locator('.panel-actions .el-checkbox').filter({ hasText: '第二电池' }).click()
+ await expect(page.getByRole('textbox', { name: '连续来源3 第二电池 循环3 最终电压1', exact: true })).toHaveValue('')
+ await expect(page.getByRole('textbox', { name: '连续来源3 同名电池 循环3 最终电压1', exact: true })).toHaveValue('-1.25')
for (const width of [1440, 390]) {
await page.setViewportSize({ width, height: 900 })
await expect.poll(() => page.evaluate(() => document.documentElement.scrollWidth <= innerWidth)).toBe(true)
@@ -392,12 +398,12 @@
}
await page.goto(`/report-${kind}`)
await expect(page.getByRole('button', { name: /新建|新增/ })).toHaveCount(0)
- await expect(page.locator('tbody').getByRole('button', { name: '编辑', exact: true })).toHaveCount(0)
+ await expect(page.locator('tbody').getByRole('button', { name: /^编辑(报表)?$/ })).toHaveCount(0)
await expect(page.locator('tbody').getByRole('button', { name: '删除', exact: true })).toHaveCount(0)
}
for (const kind of kinds) {
await login(page)
- const username = `ticket13_actor_${kind}`
+ const username = `t13_${kind}_actor`
const permissions = modules.find((module: any) => module.pageName === names[kind]).permissions
await api(page, 'role', 'POST', { roleName: username, roleKey: 'common', roleSort: 1, status: '0', menuIds: permissions.map((item: any) => item.menuId) })
const role = (await api(page, `role/list?roleName=${username}`)).rows[0]
@@ -425,7 +431,7 @@
await page.goto(`/report-${kind}`)
await expect(page.getByRole('button', { name: /新建|新增/ })).toBeVisible()
const row = page.locator('tbody tr').filter({ hasText: `跨创建人-${kind}` })
- await expect(row.getByRole('button', { name: '编辑', exact: true })).toBeVisible()
+ await expect(row.getByRole('button', { name: /^编辑(报表)?$/ })).toBeVisible()
await expect(row.getByRole('button', { name: '删除', exact: true })).toBeVisible()
await api(page, `${kind}-report/${first.id}`, 'DELETE')
await api(page, `${kind}-report/${own.id}`, 'DELETE')
@@ -442,7 +448,7 @@
await expect(page.getByText('测试详情已保存', { exact: true })).toBeVisible()
await page.reload()
await expect(page.locator('.detail-meta input')).toHaveValue('Ticket13 工步详情回归')
- await page.locator('.data-select-panel .step-select').first().getByRole('combobox').click()
+ await page.locator('.data-select-panel .step-select').first().locator('.el-select').click()
await page.getByRole('option', { name: '循环 3', exact: true }).click()
await expect(page.locator('.battery-range-row .range-label').first()).toContainText('循环 3')
await page.locator('.metric-switches label').filter({ hasText: '温度' }).click()
@@ -461,3 +467,24 @@
await expect(page.locator('.project-chart canvas')).toHaveCount(3)
expect((await api(page, 'test/9303/data/records')).data).toEqual(before)
})
+
+test('多电池循环覆盖不同,图上来源分界仍位于该测试最早拼接循环', async ({ page }) => {
+ await login(page)
+ for (const table of ['t_test_realtime_record', 't_test_step_record', 't_test_cycle_record']) {
+ stack.executeIsolatedSql(`DELETE FROM ${table} WHERE (test_battery_id=9403 AND cycle_no=1) OR (test_battery_id=9402 AND cycle_no=5)`)
+ }
+ const saved = (await api(page, 'splice-report', 'POST', {
+ ...payload('splice', '不同循环覆盖的来源分界'),
+ selections: [selection(9303), selection(9303, 9403), selection(9302), selection(9302, 9402)],
+ })).data
+ expect(saved.segments.map((segment: any) => segment.originalCycleNos)).toEqual([[1, 3, 5], [3, 5], [5, 7], [7]])
+ expect(saved.segments.map((segment: any) => segment.offset)).toEqual([0, 0, 1, 1])
+ await page.goto(`/report-splice/${saved.id}/edit?mode=view`)
+ const lines = page.locator('.splice-chart').first().locator('svg path[stroke="#82909b"]')
+ await expect(lines).toHaveCount(2)
+ const positions = await lines.evaluateAll(lines => lines.map(line => (line as SVGPathElement).getPointAtLength(0).x))
+ // 固定900像素图中循环1、6位于122和622附近;允许描边对齐的半像素偏移。
+ expect(Math.abs(positions[0]! - 122)).toBeLessThanOrEqual(1)
+ expect(Math.abs(positions[1]! - 622)).toBeLessThanOrEqual(1)
+ await page.screenshot({ path: 'tests/e2e/.artifacts/ticket11-asymmetric-cycles.png', fullPage: true })
+})
--
Gitblit v1.7.1