import { test, expect } from '@playwright/experimental-ct-vue2' import Button from './components/Button.vue' import DefaultSlot from './components/DefaultSlot.vue' import NamedSlots from './components/NamedSlots.vue' test.use({ viewport: { width: 500, height: 500 } }) test('props should work', async ({ mount }) => { const component = await mount() await expect(component).toContainText('Submit') }) test('event should work', async ({ mount }) => { const messages = [] const component = await mount() await component.click() expect(messages).toEqual(['hello']) }) test('default slot should work', async ({ mount }) => { const component = await mount( Main Content ) await expect(component).toContainText('Main Content') }) test('multiple slots should work', async ({ mount }) => { const component = await mount(
One
Two
) await expect(component.locator('#one')).toContainText('One') await expect(component.locator('#two')).toContainText('Two') }) test('named slots should work', async ({ mount }) => { const component = await mount( ); await expect(component).toContainText('Header') await expect(component).toContainText('Main Content') await expect(component).toContainText('Footer') }) test('slot should emit events', async ({ mount }) => { let clickFired = false; const component = await mount( clickFired = true}>Main Content ); await component.locator('text=Main Content').click(); expect(clickFired).toBeTruthy(); }) test('should run hooks', async ({ page, mount }) => { const messages = [] page.on('console', m => messages.push(m.text())) await mount(, { hooksConfig: { route: 'A' } }) expect(messages).toEqual(['Before mount: {\"route\":\"A\"}', 'After mount el: HTMLButtonElement']) })