17 Commits

Author SHA1 Message Date
Simon Knott
208a54529d
fix(ct-react): support shorthand fragment notation (#32900)
Closes https://github.com/microsoft/playwright/issues/32853

Vite turns the shorthand fragment notation `<></>` into `import {
Fragment } from "react"; <Fragment></Fragment>`. On the Node.js side of
things, this `react` import resolves to our mock version of React, which
currently mocks `Fragment` as `{}`. Currently, we pass that straight to
`React.createElement`, which throws an error.

The fix is to make our `Fragment` mock detectable with a tag, and when
we render it replace it with the real `__pwReact.Fragment`.
2024-10-02 11:19:09 +02:00
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
Dmitry Gozman
e86c8af599
chore: rename route fixture in ct (#31817)
Addresses review feedback.
2024-07-23 07:43:28 -07:00
Dmitry Gozman
369a1eca48
feat(ct): experimental route fixture (#31554)
This fixture accepts the same arguments as `context.route()`, but also
supports request handlers compatible with msw syntax.
2024-07-06 09:35:20 -07:00
Sander
9ce41fa1b0
fix(ct): mount then unmount then mount (#30657)
closes https://github.com/microsoft/playwright/issues/30628
2024-05-14 11:03:46 -07:00
Sander
015a1bcc1c
feat(ct): double unmounting component throws error (#29650) 2024-02-26 11:16:27 -08:00
Sander
7e502e91b2
fix(ct): solid pass children when they are defined (#29648) 2024-02-26 11:15:08 -08:00
Jeppe Reinhold
4d868f6ba8
fix(ct-react+ct-react17): only pass children to React.createElement when they are defined (#29592) 2024-02-23 12:30:42 -08:00
Pavel Feldman
d61f99034a
fix(ct-react): do not reset mount hooks upon update (#29072)
Fixes https://github.com/microsoft/playwright/issues/29058
2024-01-19 12:55:36 -08:00
Sander
4d62784eeb
feat(ct): react component as props (#28382)
closes: https://github.com/microsoft/playwright/issues/28367#issuecomment-1830298864
2023-12-22 20:51:59 -08:00
Sander
f58c1f37eb
fix(ct): empty slots or children (#28225)
closes: https://github.com/microsoft/playwright/issues/28212
2023-11-27 15:53:50 -08:00
Sander
3313381040
fix(ct): react render array as child (#27692)
Signed-off-by: Sander <info@mesander.com>
Co-authored-by: Dmitry Gozman <dgozman@gmail.com>
Co-authored-by: mbr <mbr@mbrs-MacBook-Air.local>
2023-10-28 10:36:48 -07:00
Dmitry Gozman
d426f2fd4e
fix(chromium): continue requests paused for the second time (#27429)
Sometimes Chromium restarts requests. This leads to multiple
`Fetch.requestPaused` for a single `Network.requestWillBeSent`.

Fixes #27294.
2023-10-04 11:18:06 -07:00
Sander
79408ff7a4
test(ct): update child (#22712) 2023-05-01 15:20:46 -07:00
Sander
5d3128a595
test(ct): remove locators (#21963) 2023-03-24 15:55:32 -07:00
Sander
d58d833daf
fix(ct): solid and react JS as child (#20125) 2023-03-02 13:40:51 -08:00
Sander
5b3a306284
test(ct): react vite slice by feature (#20098) 2023-01-13 18:15:43 -08:00