playwright/tests/components/ct-react-vite/tests
Max Schmitt 9fa06be49e
fix(ct): throw error if inline component is getting mounted (#32531)
What was happening?
- When we use CT, we go over the test files, look at the imports using
`tsxTransform.ts` and store them inside a map, these we feed into the
import registry which we build using Vite and have access inside the
browser
- In case of an inline component in the same file as where the test file
is, this is not happening.
- jsx-runtime via babel kicks in, transforms every JSX component in
something like that:

```
{
  __pw_type: 'jsx',
  type: [Function: MyInlineComponent],
  props: { value: 'Max' },
  key: undefined
}
```

this then gets passed into `wrapObject` which maps any function from the
Node.js side into expose function calls so they work inside the browser.
The assumption for `wrapObject` was to do it mostly for callbacks. So it
does for `type` - which is actually our component. We then pass this to
the React render function, which calls back the exposed function but we
never return anything, so it mounts `undefined`.

---

While there have been experiments from certain vendors to get the
'client only' code inside a server side file, we should throw for now to
not confuse users. We might revisit this in the future since Babel / TSX
doesn't support it outside of the box.

Fixes https://github.com/microsoft/playwright/issues/32167
2024-09-10 11:15:20 +02:00
..
callbacks.spec.tsx test(ct): remove locators (#21963) 2023-03-24 15:55:32 -07:00
children.spec.tsx fix(ct): solid pass children when they are defined (#29648) 2024-02-26 11:15:08 -08:00
react-router.spec.tsx fix(ct-react): do not reset mount hooks upon update (#29072) 2024-01-19 12:55:36 -08:00
render.spec.tsx fix(ct): throw error if inline component is getting mounted (#32531) 2024-09-10 11:15:20 +02:00
route.spec.tsx chore: rename route fixture in ct (#31817) 2024-07-23 07:43:28 -07:00
unmount.spec.tsx fix(ct): mount then unmount then mount (#30657) 2024-05-14 11:03:46 -07:00
update.spec.tsx test(ct): update child (#22712) 2023-05-01 15:20:46 -07:00