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(
Header
Main Content
Footer
);
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'])
})