From: daiwei Date: Mon, 24 Mar 2025 13:14:46 +0000 (+0800) Subject: test: add e2e tests for vdom interop X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=51ca617632adf28d91df4fc6a0fa3ddbd4002faa;p=thirdparty%2Fvuejs%2Fcore.git test: add e2e tests for vdom interop --- 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 0000000000..dc3efa13a4 --- /dev/null +++ b/packages-private/vapor-e2e-test/__tests__/teleport.spec.ts @@ -0,0 +1,61 @@ +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('vdom / vapor interop', () => { + 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') + }) + + describe('vapor teleport', () => { + test( + 'render vdom component', + async () => { + const targetSelector = '.target' + const testSelector = '.interop-render-vdom-comp' + const containerSelector = `${testSelector} > div` + const btnSelector = `${testSelector} > button` + + // 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 3de8392e5e..035691fd69 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__/vdomInterop.spec.ts b/packages-private/vapor-e2e-test/__tests__/vdomInterop.spec.ts index 360f48085a..a3069d1aed 100644 --- a/packages-private/vapor-e2e-test/__tests__/vdomInterop.spec.ts +++ b/packages-private/vapor-e2e-test/__tests__/vdomInterop.spec.ts @@ -5,12 +5,13 @@ import { } from '../../../packages/vue/__tests__/e2e/e2eUtils' import connect from 'connect' import sirv from 'sirv' +import { ports } from '../utils' describe('vdom / vapor interop', () => { const { page, click, text, enterValue } = setupPuppeteer() let server: any - const port = '8193' + const port = ports.vdomInterop beforeAll(() => { server = connect() .use(sirv(path.resolve(import.meta.dirname, '../dist'))) diff --git a/packages-private/vapor-e2e-test/index.html b/packages-private/vapor-e2e-test/index.html index 7dc205e5ab..bb1234e8e1 100644 --- a/packages-private/vapor-e2e-test/index.html +++ b/packages-private/vapor-e2e-test/index.html @@ -1,2 +1,3 @@ VDOM / Vapor interop Vapor TodoMVC +Vapor Teleport diff --git a/packages-private/vapor-e2e-test/teleport/App.vue b/packages-private/vapor-e2e-test/teleport/App.vue new file mode 100644 index 0000000000..d2aeba8e1f --- /dev/null +++ b/packages-private/vapor-e2e-test/teleport/App.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages-private/vapor-e2e-test/teleport/components/VdomComp.vue b/packages-private/vapor-e2e-test/teleport/components/VdomComp.vue new file mode 100644 index 0000000000..6eba9134ef --- /dev/null +++ b/packages-private/vapor-e2e-test/teleport/components/VdomComp.vue @@ -0,0 +1,7 @@ + + + diff --git a/packages-private/vapor-e2e-test/teleport/index.html b/packages-private/vapor-e2e-test/teleport/index.html new file mode 100644 index 0000000000..79052a023b --- /dev/null +++ b/packages-private/vapor-e2e-test/teleport/index.html @@ -0,0 +1,2 @@ + +
diff --git a/packages-private/vapor-e2e-test/teleport/main.ts b/packages-private/vapor-e2e-test/teleport/main.ts new file mode 100644 index 0000000000..2e962efe73 --- /dev/null +++ b/packages-private/vapor-e2e-test/teleport/main.ts @@ -0,0 +1,5 @@ +import { createVaporApp, vaporInteropPlugin } from 'vue' +import App from './App.vue' +import 'todomvc-app-css/index.css' + +createVaporApp(App).use(vaporInteropPlugin).mount('#app') diff --git a/packages-private/vapor-e2e-test/utils.ts b/packages-private/vapor-e2e-test/utils.ts new file mode 100644 index 0000000000..a42064b705 --- /dev/null +++ b/packages-private/vapor-e2e-test/utils.ts @@ -0,0 +1,6 @@ +// make sure these ports are unique +export const ports = { + vdomInterop: 8193, + todomvc: 8194, + teleport: 8195, +} diff --git a/packages-private/vapor-e2e-test/vite.config.ts b/packages-private/vapor-e2e-test/vite.config.ts index 1e29a4dbd1..a2816f4b6d 100644 --- a/packages-private/vapor-e2e-test/vite.config.ts +++ b/packages-private/vapor-e2e-test/vite.config.ts @@ -14,6 +14,7 @@ export default defineConfig({ input: { interop: resolve(import.meta.dirname, 'interop/index.html'), todomvc: resolve(import.meta.dirname, 'todomvc/index.html'), + teleport: resolve(import.meta.dirname, 'teleport/index.html'), }, }, },