import { test, expect } from '@playwright/experimental-ct-react'; import Counter from '@/components/Counter'; import DefaultChildren from '@/components/DefaultChildren'; 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 child 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 callbacks without remounting', async ({ mount }) => { const component = await mount(); const messages: string[] = []; await component.update( { messages.push(message); }} /> ); await component.click(); expect(messages).toEqual(['hello']); await expect(component.getByTestId('remount-count')).toContainText('1'); }); test('update child callbacks without remounting', async ({ mount }) => { const component = await mount(); const messages: string[] = []; await component.update( { messages.push(message); }} /> ); await component.getByRole('button').click(); expect(messages).toEqual(['hello']); await expect(component.getByTestId('remount-count')).toContainText('1'); }); test('update children 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('update grandchild without remounting', async ({ mount }) => { const component = await mount( Default Slot ); await expect(component.getByRole('button')).toContainText('Default Slot'); await component.update( Test Slot ); await expect(component.getByRole('button')).not.toContainText('Default Slot'); await expect(component.getByRole('button')).toContainText('Test Slot'); await expect(component.getByTestId('remount-count')).toContainText('1'); });