1- import { expect } from "vitest" ;
1+ import { describe , expect } from "vitest" ;
22import {
33 setupPlaygroundEnvironment ,
44 testDevServer ,
@@ -8,62 +8,6 @@ import {
88
99setupPlaygroundEnvironment ( ) ;
1010
11- // Helper function to wait for client-side hydration
12- async function waitForHydration ( page : any ) {
13- await page . waitForTimeout ( 1000 ) ; // Initial wait for scripts to load
14-
15- // Wait for client components to mount
16- await poll (
17- async ( ) => {
18- const mountStatus = await page . locator (
19- '[data-testid="client-mount-status"]' ,
20- ) ;
21- if ( ( await mountStatus . count ( ) ) > 0 ) {
22- const status = await mountStatus . textContent ( ) ;
23- return status === "Mounted" ;
24- }
25- return true ; // If no client components, consider it ready
26- } ,
27- { timeout : 5000 } ,
28- ) ;
29- }
30-
31- // Helper function to verify component rendering
32- async function verifyComponentRendering ( page : any , testIdPrefix : string ) {
33- // Check that components are rendered
34- const serverComponent = page . locator ( `[data-testid="test-component-server"]` ) ;
35- const clientComponent = page . locator ( `[data-testid="client-test-component"]` ) ;
36-
37- expect ( await serverComponent . count ( ) ) . toBe ( 1 ) ;
38- expect ( await clientComponent . count ( ) ) . toBe ( 1 ) ;
39-
40- // Check component content
41- const serverType = await page
42- . locator ( `[data-testid="component-type-server"]` )
43- . textContent ( ) ;
44- const clientType = await page
45- . locator ( `[data-testid="client-component-type"]` )
46- . textContent ( ) ;
47-
48- expect ( serverType ) . toBe ( "server" ) ;
49- expect ( clientType ) . toBe ( "client" ) ;
50-
51- // Check that IDs are generated
52- const serverId = await page
53- . locator ( `[data-testid="component-id-server"]` )
54- . textContent ( ) ;
55- const clientId = await page
56- . locator ( `[data-testid="client-component-id"]` )
57- . textContent ( ) ;
58-
59- expect ( serverId ) . toBeTruthy ( ) ;
60- expect ( clientId ) . toBeTruthy ( ) ;
61- expect ( serverId ) . toMatch ( / ^ _ R _ \w + _ $ / ) ;
62- expect ( clientId ) . toMatch ( / ^ _ R _ \w + _ $ / ) ;
63-
64- return { serverId, clientId } ;
65- }
66-
6711describe ( "Render APIs Playground - Dev Server" , ( ) => {
6812 testDevServer ( "home page renders navigation" , async ( { page, url } ) => {
6913 await page . goto ( url ) ;
@@ -90,20 +34,7 @@ describe("Render APIs Playground - Dev Server", () => {
9034 expect ( await page . content ( ) ) . toContain ( "renderToStream API Test" ) ;
9135 expect ( await page . content ( ) ) . toContain ( "renderToStream Test Status" ) ;
9236
93- // Get initial component state
94- const initialIds = await verifyComponentRendering ( page , "render-stream" ) ;
95-
96- // Wait for hydration
97- await waitForHydration ( page ) ;
98-
99- // Verify components after hydration
100- const afterIds = await verifyComponentRendering ( page , "render-stream" ) ;
101-
102- // IDs should remain consistent after hydration
103- expect ( initialIds . serverId ) . toBe ( afterIds . serverId ) ;
104- expect ( initialIds . clientId ) . toBe ( afterIds . clientId ) ;
105-
106- // Verify the test status section is present
37+ // Verify the test content section is present
10738 const testContent = page . locator ( '[data-testid="render-stream-content"]' ) ;
10839 expect ( await testContent . count ( ) ) . toBe ( 1 ) ;
10940 } ) ;
@@ -120,67 +51,28 @@ describe("Render APIs Playground - Dev Server", () => {
12051 expect ( await page . content ( ) ) . toContain ( "renderToString API Test" ) ;
12152 expect ( await page . content ( ) ) . toContain ( "renderToString Test Status" ) ;
12253
123- // Get initial component state
124- const initialIds = await verifyComponentRendering ( page , "render-string" ) ;
125-
126- // Wait for hydration
127- await waitForHydration ( page ) ;
128-
129- // Verify components after hydration
130- const afterIds = await verifyComponentRendering ( page , "render-string" ) ;
131-
132- // IDs should remain consistent after hydration
133- expect ( initialIds . serverId ) . toBe ( afterIds . serverId ) ;
134- expect ( initialIds . clientId ) . toBe ( afterIds . clientId ) ;
135-
136- // Verify the test status section is present
54+ // Verify the test content section is present
13755 const testContent = page . locator ( '[data-testid="render-string-content"]' ) ;
13856 expect ( await testContent . count ( ) ) . toBe ( 1 ) ;
13957 } ) ;
14058
141- testDevServer (
142- "both APIs produce consistent results" ,
143- async ( { page, url } ) => {
144- // Test renderToStream page
145- await page . goto ( `${ url } /render-to-stream` ) ;
146- await poll ( async ( ) => {
147- const content = await page . content ( ) ;
148- return content . includes ( "renderToStream API Test" ) ;
149- } ) ;
150-
151- await waitForHydration ( page ) ;
152- const streamIds = await verifyComponentRendering ( page , "render-stream" ) ;
153-
154- // Test renderToString page
155- await page . goto ( `${ url } /render-to-string` ) ;
156- await poll ( async ( ) => {
157- const content = await page . content ( ) ;
158- return content . includes ( "renderToString API Test" ) ;
159- } ) ;
160-
161- await waitForHydration ( page ) ;
162- const stringIds = await verifyComponentRendering ( page , "render-string" ) ;
163-
164- // Both APIs should produce valid IDs (though they may be different due to different render contexts)
165- expect ( streamIds . serverId ) . toMatch ( / ^ _ R _ \w + _ $ / ) ;
166- expect ( streamIds . clientId ) . toMatch ( / ^ _ R _ \w + _ $ / ) ;
167- expect ( stringIds . serverId ) . toMatch ( / ^ _ R _ \w + _ $ / ) ;
168- expect ( stringIds . clientId ) . toMatch ( / ^ _ R _ \w + _ $ / ) ;
169- } ,
170- ) ;
171-
172- testDevServer ( "404 page works with renderToStream" , async ( { page, url } ) => {
173- const response = await page . goto ( `${ url } /nonexistent-page` ) ;
174-
175- expect ( response ?. status ( ) ) . toBe ( 404 ) ;
59+ testDevServer ( "both APIs render successfully" , async ( { page, url } ) => {
60+ // Test renderToStream page
61+ await page . goto ( `${ url } /render-to-stream` ) ;
62+ await poll ( async ( ) => {
63+ const content = await page . content ( ) ;
64+ return content . includes ( "renderToStream API Test" ) ;
65+ } ) ;
17666
67+ // Test renderToString page
68+ await page . goto ( `${ url } /render-to-string` ) ;
17769 await poll ( async ( ) => {
17870 const content = await page . content ( ) ;
179- return content . includes ( "404 - Page Not Found " ) ;
71+ return content . includes ( "renderToString API Test " ) ;
18072 } ) ;
18173
182- expect ( await page . content ( ) ) . toContain ( "404 - Page Not Found" ) ;
183- expect ( await page . content ( ) ) . toContain ( "Back to Home " ) ;
74+ // Both APIs should render without errors
75+ expect ( await page . content ( ) ) . toContain ( "renderToString API Test " ) ;
18476 } ) ;
18577} ) ;
18678
@@ -212,20 +104,7 @@ describe("Render APIs Playground - Deployment", () => {
212104 expect ( await page . content ( ) ) . toContain ( "renderToStream API Test" ) ;
213105 expect ( await page . content ( ) ) . toContain ( "renderToStream Test Status" ) ;
214106
215- // Get initial component state
216- const initialIds = await verifyComponentRendering ( page , "render-stream" ) ;
217-
218- // Wait for hydration
219- await waitForHydration ( page ) ;
220-
221- // Verify components after hydration
222- const afterIds = await verifyComponentRendering ( page , "render-stream" ) ;
223-
224- // IDs should remain consistent after hydration
225- expect ( initialIds . serverId ) . toBe ( afterIds . serverId ) ;
226- expect ( initialIds . clientId ) . toBe ( afterIds . clientId ) ;
227-
228- // Verify the test status section is present
107+ // Verify the test content section is present
229108 const testContent = page . locator ( '[data-testid="render-stream-content"]' ) ;
230109 expect ( await testContent . count ( ) ) . toBe ( 1 ) ;
231110 } ,
@@ -245,70 +124,28 @@ describe("Render APIs Playground - Deployment", () => {
245124 expect ( await page . content ( ) ) . toContain ( "renderToString API Test" ) ;
246125 expect ( await page . content ( ) ) . toContain ( "renderToString Test Status" ) ;
247126
248- // Get initial component state
249- const initialIds = await verifyComponentRendering ( page , "render-string" ) ;
250-
251- // Wait for hydration
252- await waitForHydration ( page ) ;
253-
254- // Verify components after hydration
255- const afterIds = await verifyComponentRendering ( page , "render-string" ) ;
256-
257- // IDs should remain consistent after hydration
258- expect ( initialIds . serverId ) . toBe ( afterIds . serverId ) ;
259- expect ( initialIds . clientId ) . toBe ( afterIds . clientId ) ;
260-
261- // Verify the test status section is present
127+ // Verify the test content section is present
262128 const testContent = page . locator ( '[data-testid="render-string-content"]' ) ;
263129 expect ( await testContent . count ( ) ) . toBe ( 1 ) ;
264130 } ,
265131 ) ;
266132
267- testDeployment (
268- "both APIs produce consistent results" ,
269- async ( { page, url } ) => {
270- // Test renderToStream page
271- await page . goto ( `${ url } /render-to-stream` ) ;
272- await poll ( async ( ) => {
273- const content = await page . content ( ) ;
274- return content . includes ( "renderToStream API Test" ) ;
275- } ) ;
276-
277- await waitForHydration ( page ) ;
278- const streamIds = await verifyComponentRendering ( page , "render-stream" ) ;
279-
280- // Test renderToString page
281- await page . goto ( `${ url } /render-to-string` ) ;
282- await poll ( async ( ) => {
283- const content = await page . content ( ) ;
284- return content . includes ( "renderToString API Test" ) ;
285- } ) ;
286-
287- await waitForHydration ( page ) ;
288- const stringIds = await verifyComponentRendering ( page , "render-string" ) ;
289-
290- // Both APIs should produce valid IDs (though they may be different due to different render contexts)
291- expect ( streamIds . serverId ) . toMatch ( / ^ _ R _ \w + _ $ / ) ;
292- expect ( streamIds . clientId ) . toMatch ( / ^ _ R _ \w + _ $ / ) ;
293- expect ( stringIds . serverId ) . toMatch ( / ^ _ R _ \w + _ $ / ) ;
294- expect ( stringIds . clientId ) . toMatch ( / ^ _ R _ \w + _ $ / ) ;
295- } ,
296- ) ;
297-
298- testDeployment (
299- "404 page works with renderToStream" ,
300- async ( { page, url } ) => {
301- const response = await page . goto ( `${ url } /nonexistent-page` ) ;
302-
303- expect ( response ?. status ( ) ) . toBe ( 404 ) ;
133+ testDeployment ( "both APIs render successfully" , async ( { page, url } ) => {
134+ // Test renderToStream page
135+ await page . goto ( `${ url } /render-to-stream` ) ;
136+ await poll ( async ( ) => {
137+ const content = await page . content ( ) ;
138+ return content . includes ( "renderToStream API Test" ) ;
139+ } ) ;
304140
305- await poll ( async ( ) => {
306- const content = await page . content ( ) ;
307- return content . includes ( "404 - Page Not Found" ) ;
308- } ) ;
141+ // Test renderToString page
142+ await page . goto ( `${ url } /render-to-string` ) ;
143+ await poll ( async ( ) => {
144+ const content = await page . content ( ) ;
145+ return content . includes ( "renderToString API Test" ) ;
146+ } ) ;
309147
310- expect ( await page . content ( ) ) . toContain ( "404 - Page Not Found" ) ;
311- expect ( await page . content ( ) ) . toContain ( "Back to Home" ) ;
312- } ,
313- ) ;
148+ // Both APIs should render without errors
149+ expect ( await page . content ( ) ) . toContain ( "renderToString API Test" ) ;
150+ } ) ;
314151} ) ;
0 commit comments