Skip to content

Commit ba9db34

Browse files
committed
test: add e2e tests for vdom teleport vapor interop
1 parent 5574fbf commit ba9db34

File tree

5 files changed

+58
-6
lines changed

5 files changed

+58
-6
lines changed

packages-private/vapor-e2e-test/__tests__/vdomInterop.spec.ts

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import {
66
import connect from 'connect'
77
import sirv from 'sirv'
88
import { ports } from '../utils'
9+
import { nextTick } from 'vue'
10+
const { page, click, text, enterValue, html } = setupPuppeteer()
911

1012
describe('vdom / vapor interop', () => {
11-
const { page, click, text, enterValue } = setupPuppeteer()
12-
1313
let server: any
1414
const port = ports.vdomInterop
1515
beforeAll(() => {
@@ -19,16 +19,19 @@ describe('vdom / vapor interop', () => {
1919
process.on('SIGTERM', () => server && server.close())
2020
})
2121

22+
beforeEach(async () => {
23+
const baseUrl = `http://localhost:${port}/interop/`
24+
await page().goto(baseUrl)
25+
await page().waitForSelector('#app')
26+
})
27+
2228
afterAll(() => {
2329
server.close()
2430
})
2531

2632
test(
2733
'should work',
2834
async () => {
29-
const baseUrl = `http://localhost:${port}/interop/`
30-
await page().goto(baseUrl)
31-
3235
expect(await text('.vapor > h2')).toContain('Vapor component in VDOM')
3336

3437
expect(await text('.vapor-prop')).toContain('hello')
@@ -82,4 +85,33 @@ describe('vdom / vapor interop', () => {
8285
},
8386
E2E_TIMEOUT,
8487
)
88+
89+
describe('teleport', () => {
90+
const testSelector = '.teleport'
91+
test('render vapor component', async () => {
92+
const targetSelector = `${testSelector} .teleport-target`
93+
const containerSelector = `${testSelector} .render-vapor-comp`
94+
const buttonSelector = `${containerSelector} button`
95+
96+
// teleport is disabled by default
97+
expect(await html(containerSelector)).toBe(
98+
`<button>toggle</button><div>vapor comp</div>`,
99+
)
100+
expect(await html(targetSelector)).toBe('')
101+
102+
// disabled -> enabled
103+
await click(buttonSelector)
104+
await nextTick()
105+
expect(await html(containerSelector)).toBe(`<button>toggle</button>`)
106+
expect(await html(targetSelector)).toBe('<div>vapor comp</div>')
107+
108+
// enabled -> disabled
109+
await click(buttonSelector)
110+
await nextTick()
111+
expect(await html(containerSelector)).toBe(
112+
`<button>toggle</button><div>vapor comp</div>`,
113+
)
114+
expect(await html(targetSelector)).toBe('')
115+
})
116+
})
85117
})

packages-private/vapor-e2e-test/interop/App.vue

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
<script setup lang="ts">
22
import { ref } from 'vue'
3-
import VaporComp from './VaporComp.vue'
3+
import VaporComp from './components/VaporComp.vue'
4+
import SimpleVaporComp from './components/SimpleVaporComp.vue'
45
56
const msg = ref('hello')
67
const passSlot = ref(true)
8+
const disabled = ref(true)
79
</script>
810

911
<template>
@@ -19,4 +21,16 @@ const passSlot = ref(true)
1921

2022
<template #test v-if="passSlot">A test slot</template>
2123
</VaporComp>
24+
25+
<!-- teleport -->
26+
<div class="teleport">
27+
<div class="teleport-target"></div>
28+
<div class="render-vapor-comp">
29+
<button @click="disabled = !disabled">toggle</button>
30+
<Teleport to=".teleport-target" defer :disabled="disabled">
31+
<SimpleVaporComp />
32+
</Teleport>
33+
</div>
34+
</div>
35+
<!-- teleport end-->
2236
</template>
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<script setup vapor lang="ts">
2+
const msg = 'vapor comp'
3+
</script>
4+
<template>
5+
<div>{{ msg }}</div>
6+
</template>

packages-private/vapor-e2e-test/interop/VaporComp.vue renamed to packages-private/vapor-e2e-test/interop/components/VaporComp.vue

File renamed without changes.

packages-private/vapor-e2e-test/interop/VdomComp.vue renamed to packages-private/vapor-e2e-test/interop/components/VdomComp.vue

File renamed without changes.

0 commit comments

Comments
 (0)