@@ -31,6 +31,8 @@ these is how we assert the stream shape.
3131- Consume the stream with ` await res.text() ` and then assert on the
3232 full string. That defeats the "streaming" semantic — the ordering
3333 guarantee you care about is chunk-by-chunk.
34+ - Use ` localhost ` in transport URLs. Use ` http://127.0.0.1:<port> ` so
35+ Windows CI does not hit an IPv6/IPv4 localhost mismatch.
3436- Assume a specific ` boundaryCount ` without reading the page's Suspense
3537 boundaries — if the page adds one, the spec breaks. Pull the count
3638 from the route context (` mandu_ate_context({ scope: "route" }) ` ).
@@ -60,7 +62,7 @@ import { test, expect } from "bun:test";
6062import { assertStreamBoundary } from " @mandujs/core/testing" ;
6163
6264test (" GET /dashboard streams shell → 2 boundaries → scripts" , async () => {
63- const res = await fetch (" http://localhost :3333/dashboard" );
65+ const res = await fetch (" http://127.0.0.1 :3333/dashboard" );
6466 await assertStreamBoundary (res , {
6567 shellChunkContains: [" <!DOCTYPE" , " <html" ],
6668 boundaryCount: 2 ,
@@ -70,12 +72,12 @@ test("GET /dashboard streams shell → 2 boundaries → scripts", async () => {
7072});
7173
7274test (" shell fits under 20KB budget" , async () => {
73- const res = await fetch (" http://localhost :3333/dashboard" );
75+ const res = await fetch (" http://127.0.0.1 :3333/dashboard" );
7476 await assertStreamBoundary (res , { firstChunkMaxSizeBytes: 20_480 });
7577});
7678
7779test (" no Suspense boundaries on a static page" , async () => {
78- const res = await fetch (" http://localhost :3333/about" );
80+ const res = await fetch (" http://127.0.0.1 :3333/about" );
7981 await assertStreamBoundary (res , { boundaryCount: 0 });
8082});
8183```
0 commit comments