diff --git a/components/popconfirm/__tests__/__snapshots__/index.test.js.snap b/components/popconfirm/__tests__/__snapshots__/index.test.js.snap
new file mode 100644
index 000000000..d60202a82
--- /dev/null
+++ b/components/popconfirm/__tests__/__snapshots__/index.test.js.snap
@@ -0,0 +1,19 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Popconfirm should show overlay when trigger is clicked 1`] = `
+
+`;
diff --git a/components/popconfirm/__tests__/index.test.js b/components/popconfirm/__tests__/index.test.js
new file mode 100644
index 000000000..210679d0b
--- /dev/null
+++ b/components/popconfirm/__tests__/index.test.js
@@ -0,0 +1,62 @@
+import { mount } from '@vue/test-utils'
+import { asyncExpect } from '@/tests/utils'
+import Popconfirm from '..'
+function $$ (className) {
+ return document.body.querySelectorAll(className)
+}
+describe('Popconfirm', () => {
+ it('should popup Popconfirm dialog', async () => {
+ const onVisibleChange = jest.fn()
+
+ const wrapper = mount(
+ {
+ render () {
+ return Are you sure delete this task?}
+ okText='Yes'
+ cancelText='No'
+ mouseEnterDelay={0}
+ mouseLeaveDelay={0}
+ onVisibleChange={onVisibleChange}
+ >
+ Delete
+
+ },
+ }, { sync: false, attachToDocument: true })
+ let triggerNode = null
+ await asyncExpect(() => {
+ triggerNode = wrapper.findAll('span').at(0)
+ triggerNode.trigger('click')
+ })
+ await asyncExpect(() => {
+ expect(onVisibleChange).toBeCalledWith(true)
+ expect($$('.popconfirm-test').length).toBe(1)
+ triggerNode.trigger('click')
+ }, 1000)
+ await asyncExpect(() => {
+ expect(onVisibleChange).toBeCalledWith(false)
+ })
+ })
+
+ it('should show overlay when trigger is clicked', async () => {
+ const popconfirm = mount({
+ render () {
+ return
+ show me your code
+
+ },
+ }, { sync: false })
+
+ await asyncExpect(() => {
+ expect(popconfirm.vm.$refs.popconfirm.getPopupDomNode()).toBe(null)
+
+ popconfirm.find('span').trigger('click')
+ }, 1000)
+ await asyncExpect(() => {
+ const popup = popconfirm.vm.$refs.popconfirm.getPopupDomNode()
+ expect(popup).not.toBe(null)
+ expect(popup.className).toContain('ant-popover-placement-top')
+ expect(popup.innerHTML).toMatchSnapshot()
+ }, 1000)
+ })
+})