Skip to content

Commit b3cf19b

Browse files
committed
test: build server function only referenced in client code
1 parent 02cb296 commit b3cf19b

2 files changed

Lines changed: 38 additions & 0 deletions

File tree

apps/tests/src/e2e/server-function.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,4 +105,19 @@ test.describe("server-function", () => {
105105
await page.goto("http://localhost:3000/server-function-unused-destructure");
106106
await expect(page.locator("#server-fn-test")).toContainText("false");
107107
});
108+
109+
/**
110+
* Makes sure that server function dead code elimination
111+
* runs before Solid's SSR transforms.
112+
*
113+
* Solid's SSR code removes client-only event handler code
114+
* such as onClick, but server function's only referenced
115+
* in such event handlers still must be registered on
116+
* the server.
117+
*/
118+
test("should build with a server function only referenced inside onClick", async ({ page }) => {
119+
await page.goto("http://localhost:3000/server-function-onclick");
120+
await page.locator("#server-fn-test").click();
121+
await expect(page.locator("#server-fn-test")).toContainText("false");
122+
});
108123
});
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
async function serverFnOnClick() {
2+
"use server";
3+
4+
return false;
5+
}
6+
7+
export default function App() {
8+
return (
9+
<main>
10+
<span
11+
id="server-fn-test"
12+
onClick={evt => {
13+
const el = evt.target;
14+
serverFnOnClick().then(r => {
15+
el.textContent = JSON.stringify(r);
16+
});
17+
}}
18+
>
19+
Click me
20+
</span>
21+
</main>
22+
);
23+
}

0 commit comments

Comments
 (0)