-
-
Notifications
You must be signed in to change notification settings - Fork 10.5k
/
Copy pathvite-plugin-cloudflare-test.ts
81 lines (68 loc) · 2.31 KB
/
vite-plugin-cloudflare-test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import { expect } from "@playwright/test";
import dedent from "dedent";
import { type Files, test, viteConfig } from "./helpers/vite.js";
const tsx = dedent;
const css = dedent;
test.describe("vite-plugin-cloudflare", () => {
const files: Files = async ({ port }) => ({
"vite.config.ts": tsx`
import { defineConfig } from "vite";
import { cloudflare } from "@cloudflare/vite-plugin";
import { reactRouter } from "@react-router/dev/vite";
export default defineConfig({
${await viteConfig.server({ port })}
plugins: [
cloudflare({ viteEnvironment: { name: "ssr" } }),
reactRouter(),
],
});
`,
"app/routes/env.tsx": tsx`
import type { Route } from "./+types/env";
export function loader({ context }: Route.LoaderArgs) {
return { message: context.cloudflare.env.VALUE_FROM_CLOUDFLARE };
}
export default function EnvRoute({ loaderData }: Route.RouteComponentProps) {
return <div data-loader-message>{loaderData.message}</div>;
}
`,
"app/routes/css-side-effect/route.tsx": tsx`
import "./styles.css";
export default function CssSideEffectRoute() {
return <div className="css-side-effect" data-css-side-effect>CSS Side Effect</div>;
}
`,
"app/routes/css-side-effect/styles.css": css`
.css-side-effect {
padding: 20px;
}
`,
});
test("handles Cloudflare env", async ({ dev, page }) => {
const { port } = await dev(files, "vite-plugin-cloudflare-template");
await page.goto(`http://localhost:${port}/env`, {
waitUntil: "networkidle",
});
// Ensure no errors on page load
expect(page.errors).toEqual([]);
await expect(page.locator("[data-loader-message]")).toHaveText(
"Hello from Cloudflare"
);
});
test.describe("without JavaScript", () => {
test.use({ javaScriptEnabled: false });
test("handles CSS side effects during SSR in dev", async ({
dev,
page,
}) => {
const { port } = await dev(files, "vite-plugin-cloudflare-template");
await page.goto(`http://localhost:${port}/css-side-effect`, {
waitUntil: "networkidle",
});
await expect(page.locator("[data-css-side-effect]")).toHaveCSS(
"padding",
"20px"
);
});
});
});