A tool for people curious about the React Server Components protocol
rscexplorer.dev/
rsc
react
1import { test, expect, beforeAll, afterAll, afterEach } from "vitest";
2import { createHelpers, launchBrowser, type TestHelpers } from "./helpers.ts";
3import type { Browser, Page } from "playwright";
4
5let browser: Browser;
6let page: Page;
7let h: TestHelpers;
8
9beforeAll(async () => {
10 browser = await launchBrowser();
11 page = await browser.newPage();
12 h = createHelpers(page);
13});
14
15afterAll(async () => {
16 await browser.close();
17});
18
19afterEach(async () => {
20 await h.checkNoRemainingSteps();
21});
22
23test("binary sample - TypedArray serialization", async () => {
24 await h.load("binary");
25 await h.stepAll();
26
27 // Verify the preview shows decoded values for various types
28 expect(await h.preview("ArrayBuffer:")).toContain("0xca");
29 expect(await h.preview("Int32Array:")).toContain("305419896"); // 0x12345678
30 expect(await h.preview("Float64Array:")).toContain("3.14159");
31});
32
33test("binary sample - rows show hex bytes", async () => {
34 await h.load("binary");
35 await h.stepAll();
36
37 const rows = await h.getRows();
38
39 // Uint8Array([0xDE, 0xAD, 0xBE, 0xEF])
40 expect(rows.some((r) => r.text && /de ad be ef/i.test(r.text))).toBe(true);
41 // ArrayBuffer with 0xCA, 0xFE, 0xBA, 0xBE
42 expect(rows.some((r) => r.text && /ca fe ba be/i.test(r.text))).toBe(true);
43});