From 86fe545e8f6405e6d9bcc3d64652b42089f2baff Mon Sep 17 00:00:00 2001 From: roymondchen Date: Thu, 5 Nov 2026 17:27:17 +0800 Subject: [PATCH] =?UTF-8?q?test:=20=E4=BF=AE=E5=A4=8D=20Popconfirm=20?= =?UTF-8?q?=E6=B5=AE=E5=B1=82=E6=96=AD=E8=A8=80=E5=9C=A8=E5=A4=9A=E6=B5=AE?= =?UTF-8?q?=E5=B1=82=E5=9C=BA=E6=99=AF=E4=B8=8B=E5=AE=9A=E4=BD=8D=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 侧栏删除图标外层新增 Tooltip 后,querySelector('.el-popper') 可能命中 Tooltip 浮层。 改为按文案定位 Popconfirm 浮层,table 用例改为取最后挂载的 popper。 --- .../unit/layouts/sidebar/delete-popconfirm.spec.ts | 14 +++++++++----- packages/table/tests/popconfirm.spec.ts | 4 +++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/editor/tests/unit/layouts/sidebar/delete-popconfirm.spec.ts b/packages/editor/tests/unit/layouts/sidebar/delete-popconfirm.spec.ts index f215ac66..e074962e 100644 --- a/packages/editor/tests/unit/layouts/sidebar/delete-popconfirm.spec.ts +++ b/packages/editor/tests/unit/layouts/sidebar/delete-popconfirm.spec.ts @@ -52,12 +52,16 @@ const clickConfirm = async () => { confirmBtn?.click(); }; +/** 删除图标外层还有 Tooltip,需按文案定位 Popconfirm 自己的浮层 */ +const getPopconfirmPopper = (text: string) => + Array.from(document.querySelectorAll('.el-popper')).find((el) => (el.textContent || '').includes(text)); + /** 浮层需挂载到 body,且 placement 真正作用到 popper 上 */ -const expectRightPlacement = async (wrapper: { element: Element }) => { +const expectRightPlacement = async (wrapper: { element: Element }, text: string) => { await vi.waitFor(() => { - expect(document.querySelector('.el-popper')?.getAttribute('data-popper-placement')).toBe('right'); + expect(getPopconfirmPopper(text)?.getAttribute('data-popper-placement')).toBe('right'); }); - const popper = document.querySelector('.el-popper'); + const popper = getPopconfirmPopper(text); expect(popper).toBeTruthy(); expect(wrapper.element.contains(popper!)).toBe(false); }; @@ -70,7 +74,7 @@ describe('侧栏删除 Popconfirm(真实 element-plus)', () => { await vi.waitFor(() => { expect(document.body.textContent).toContain('确定删除?'); }); - await expectRightPlacement(wrapper); + await expectRightPlacement(wrapper, '确定删除?'); expect(wrapper.emitted('remove')).toBeFalsy(); await clickConfirm(); @@ -88,7 +92,7 @@ describe('侧栏删除 Popconfirm(真实 element-plus)', () => { await vi.waitFor(() => { expect(document.body.textContent).toContain('确定删除该代码块吗?'); }); - await expectRightPlacement(wrapper); + await expectRightPlacement(wrapper, '确定删除该代码块吗?'); expect(wrapper.emitted('remove')).toBeFalsy(); await clickConfirm(); diff --git a/packages/table/tests/popconfirm.spec.ts b/packages/table/tests/popconfirm.spec.ts index 17843a0e..e7ba0f71 100644 --- a/packages/table/tests/popconfirm.spec.ts +++ b/packages/table/tests/popconfirm.spec.ts @@ -124,8 +124,10 @@ describe('TMagicPopconfirm placement(真实 element-plus)', () => { ])('placement=%s 作用到 popper 的 %s', async (placement, expected) => { const wrapper = mountPopconfirm(placement); await wrapper.find('.ref').trigger('click'); + // 取最后挂载的 popper,避免命中此前用例残留的浮层 + const popper = () => Array.from(document.querySelectorAll('.el-popper')).at(-1); await vi.waitFor(() => { - expect(document.querySelector('.el-popper')?.getAttribute('data-popper-placement')).toBe(expected); + expect(popper()?.getAttribute('data-popper-placement')).toBe(expected); }); wrapper.unmount(); });