diff --git a/packages/playwright-ct-core/src/injected/serializers.ts b/packages/playwright-ct-core/src/injected/serializers.ts
index 05934b01de..be083e27db 100644
--- a/packages/playwright-ct-core/src/injected/serializers.ts
+++ b/packages/playwright-ct-core/src/injected/serializers.ts
@@ -68,8 +68,9 @@ export function transformObject(value: any, mapping: (v: any) => { result: any }
}
if (value?.__pw_type === 'jsx' && typeof value.type === 'function') {
throw new Error([
- 'JSX component was not able to get resolved.',
- 'Make sure to define components outside of your test file.'
+ `Component "${value.type.name}" cannot be mounted.`,
+ `Most likely, this component is defined in the test file. Create a test story instead.`,
+ `For more information, see https://playwright.dev/docs/test-components#test-stories.`,
].join('\n'));
}
const result2: any = {};
diff --git a/tests/components/ct-react-vite/tests/render.spec.tsx b/tests/components/ct-react-vite/tests/render.spec.tsx
index 28df6f997f..d00a313e9e 100644
--- a/tests/components/ct-react-vite/tests/render.spec.tsx
+++ b/tests/components/ct-react-vite/tests/render.spec.tsx
@@ -38,11 +38,11 @@ function MyInlineComponent({ value }: { value: string }) {
}
test('render inline component with an error', async ({ mount }) => {
- await expect(mount()).rejects.toThrow('JSX component was not able to get resolved');
+ await expect(mount()).rejects.toThrow('Component "MyInlineComponent" cannot be mounted.');
});
test('render inline component with an error if its nested', async ({ mount }) => {
await expect(mount(
- )).rejects.toThrow('JSX component was not able to get resolved');
+ )).rejects.toThrow('Component "MyInlineComponent" cannot be mounted.');
});