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