import { test, expect } from '@playwright/experimental-ct-vue2';
import Counter from '@/components/Counter.vue';
test('update props without remounting', async ({ mount }) => {
const component = await mount();
await expect(component.getByTestId('props')).toContainText('9001');
await component.update();
await expect(component).not.toContainText('9001');
await expect(component.getByTestId('props')).toContainText('1337');
await expect(component.getByTestId('remount-count')).toContainText('1');
});
test('update event listeners without remounting', async ({ mount }) => {
const messages: string[] = [];
const component = await mount();
await component.update(
{
messages.push(count);
}}
/>
);
await component.click();
expect(messages).toEqual(['hello']);
await expect(component.getByTestId('remount-count')).toContainText('1');
});
test('update slots without remounting', async ({ mount }) => {
const component = await mount(Default Slot);
await expect(component).toContainText('Default Slot');
await component.update(
Test Slot
);
await expect(component).not.toContainText('Default Slot');
await expect(component).toContainText('Test Slot');
await expect(component.getByTestId('remount-count')).toContainText('1');
});
test('throw error when updating a native html element', async ({ mount }) => {
const component = await mount();
await expect(async () => {
await component.update();
}).rejects.toThrowError('Updating a native HTML element is not supported');
});