diff --git a/packages-private/vapor-e2e-test/__tests__/teleport.spec.ts b/packages-private/vapor-e2e-test/__tests__/teleport.spec.ts
new file mode 100644
index 000000000..ce383dadf
--- /dev/null
+++ b/packages-private/vapor-e2e-test/__tests__/teleport.spec.ts
@@ -0,0 +1,62 @@
+import path from 'node:path'
+import {
+ E2E_TIMEOUT,
+ setupPuppeteer,
+} from '../../../packages/vue/__tests__/e2e/e2eUtils'
+import connect from 'connect'
+import sirv from 'sirv'
+import { nextTick } from 'vue'
+import { ports } from '../utils'
+const { page, click, html } = setupPuppeteer()
+
+describe('vapor teleport', () => {
+ let server: any
+ const port = ports.teleport
+ beforeAll(() => {
+ server = connect()
+ .use(sirv(path.resolve(import.meta.dirname, '../dist')))
+ .listen(port)
+ process.on('SIGTERM', () => server && server.close())
+ })
+
+ afterAll(() => {
+ server.close()
+ })
+
+ beforeEach(async () => {
+ const baseUrl = `http://localhost:${port}/teleport/`
+ await page().goto(baseUrl)
+ await page().waitForSelector('#app')
+ })
+
+ test(
+ 'render vdom component',
+ async () => {
+ const targetSelector = '.target'
+ const testSelector = '.interop-render-vdom-comp'
+ const containerSelector = `${testSelector} > div`
+ const btnSelector = `${testSelector} > button`
+
+ const tt = await html('#app')
+ console.log(tt)
+
+ // teleport is disabled
+ expect(await html(containerSelector)).toBe('
vdom comp
')
+ expect(await html(targetSelector)).toBe('')
+
+ // enable teleport
+ await click(btnSelector)
+ await nextTick()
+
+ expect(await html(containerSelector)).toBe('')
+ expect(await html(targetSelector)).toBe('vdom comp
')
+
+ // disable teleport
+ await click(btnSelector)
+ await nextTick()
+ expect(await html(containerSelector)).toBe('vdom comp
')
+ expect(await html(targetSelector)).toBe('')
+ },
+ E2E_TIMEOUT,
+ )
+})
diff --git a/packages-private/vapor-e2e-test/__tests__/todomvc.spec.ts b/packages-private/vapor-e2e-test/__tests__/todomvc.spec.ts
index 3de8392e5..035691fd6 100644
--- a/packages-private/vapor-e2e-test/__tests__/todomvc.spec.ts
+++ b/packages-private/vapor-e2e-test/__tests__/todomvc.spec.ts
@@ -5,6 +5,7 @@ import {
} from '../../../packages/vue/__tests__/e2e/e2eUtils'
import connect from 'connect'
import sirv from 'sirv'
+import { ports } from '../utils'
describe('e2e: todomvc', () => {
const {
@@ -23,7 +24,7 @@ describe('e2e: todomvc', () => {
} = setupPuppeteer()
let server: any
- const port = '8194'
+ const port = ports.todomvc
beforeAll(() => {
server = connect()
.use(sirv(path.resolve(import.meta.dirname, '../dist')))
diff --git a/packages-private/vapor-e2e-test/__tests__/transition-group.spec.ts b/packages-private/vapor-e2e-test/__tests__/transition-group.spec.ts
index ba050f0f2..13e1f1df3 100644
--- a/packages-private/vapor-e2e-test/__tests__/transition-group.spec.ts
+++ b/packages-private/vapor-e2e-test/__tests__/transition-group.spec.ts
@@ -7,6 +7,7 @@ import connect from 'connect'
import sirv from 'sirv'
import { expect } from 'vitest'
const { page, nextFrame, timeout, html, transitionStart } = setupPuppeteer()
+import { ports } from '../utils'
const duration = process.env.CI ? 200 : 50
const buffer = process.env.CI ? 50 : 20
@@ -14,7 +15,7 @@ const transitionFinish = (time = duration) => timeout(time + buffer)
describe('vapor transition-group', () => {
let server: any
- const port = '8196'
+ const port = ports.transitionGroup
beforeAll(() => {
server = connect()
.use(sirv(path.resolve(import.meta.dirname, '../dist')))
diff --git a/packages-private/vapor-e2e-test/__tests__/transition.spec.ts b/packages-private/vapor-e2e-test/__tests__/transition.spec.ts
index 0bfc30598..ccb0475f3 100644
--- a/packages-private/vapor-e2e-test/__tests__/transition.spec.ts
+++ b/packages-private/vapor-e2e-test/__tests__/transition.spec.ts
@@ -19,6 +19,7 @@ const {
waitForElement,
click,
} = setupPuppeteer()
+import { ports } from '../utils'
const duration = process.env.CI ? 200 : 50
const buffer = process.env.CI ? 50 : 20
@@ -26,7 +27,7 @@ const transitionFinish = (time = duration) => timeout(time + buffer)
describe('vapor transition', () => {
let server: any
- const port = '8195'
+ const port = ports.transition
beforeAll(() => {
server = connect()
.use(sirv(path.resolve(import.meta.dirname, '../dist')))
diff --git a/packages-private/vapor-e2e-test/__tests__/vdomInterop.spec.ts b/packages-private/vapor-e2e-test/__tests__/vdomInterop.spec.ts
index e05f06e1a..e4959121c 100644
--- a/packages-private/vapor-e2e-test/__tests__/vdomInterop.spec.ts
+++ b/packages-private/vapor-e2e-test/__tests__/vdomInterop.spec.ts
@@ -21,9 +21,12 @@ const duration = process.env.CI ? 200 : 50
const buffer = process.env.CI ? 50 : 20
const transitionFinish = (time = duration) => timeout(time + buffer)
+import { ports } from '../utils'
+import { nextTick } from 'vue'
+
describe('vdom / vapor interop', () => {
let server: any
- const port = '8193'
+ const port = ports.vdomInterop
beforeAll(() => {
server = connect()
.use(sirv(path.resolve(import.meta.dirname, '../dist')))
@@ -31,6 +34,12 @@ describe('vdom / vapor interop', () => {
process.on('SIGTERM', () => server && server.close())
})
+ beforeEach(async () => {
+ const baseUrl = `http://localhost:${port}/interop/`
+ await page().goto(baseUrl)
+ await page().waitForSelector('#app')
+ })
+
afterAll(() => {
server.close()
})
@@ -255,5 +264,33 @@ describe('vdom / vapor interop', () => {
},
E2E_TIMEOUT,
)
+ describe('teleport', () => {
+ const testSelector = '.teleport'
+ test('render vapor component', async () => {
+ const targetSelector = `${testSelector} .teleport-target`
+ const containerSelector = `${testSelector} .render-vapor-comp`
+ const buttonSelector = `${containerSelector} button`
+
+ // teleport is disabled by default
+ expect(await html(containerSelector)).toBe(
+ `vapor comp
`,
+ )
+ expect(await html(targetSelector)).toBe('')
+
+ // disabled -> enabled
+ await click(buttonSelector)
+ await nextTick()
+ expect(await html(containerSelector)).toBe(``)
+ expect(await html(targetSelector)).toBe('vapor comp
')
+
+ // enabled -> disabled
+ await click(buttonSelector)
+ await nextTick()
+ expect(await html(containerSelector)).toBe(
+ `vapor comp
`,
+ )
+ expect(await html(targetSelector)).toBe('')
+ })
+ })
})
})
diff --git a/packages-private/vapor-e2e-test/index.html b/packages-private/vapor-e2e-test/index.html
index 09ea6aa60..85a18d79e 100644
--- a/packages-private/vapor-e2e-test/index.html
+++ b/packages-private/vapor-e2e-test/index.html
@@ -2,6 +2,7 @@
Vapor TodoMVC
Vapor Transition
Vapor TransitionGroup
+Vapor Teleport