Skip to content

Commit 5ec1071

Browse files
add tests for rsc payload fetching
1 parent 68d10fc commit 5ec1071

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

react_on_rails_pro/spec/dummy/e2e-tests/fixture.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { randomUUID } from 'crypto';
2-
import { test as base, Response, expect } from '@playwright/test';
2+
import { test as base, Response, expect, Request } from '@playwright/test';
33
import { createClient, RedisClientType } from 'redis';
44

55
type RedisClientFixture = {
@@ -20,6 +20,7 @@ export type RedisReceiverControllerFixture = {
2020
sendRedisItemValue: (itemIndex: Number, value: unknown) => Promise<void>;
2121
matchPageSnapshot: (snapshotPath: string) => Promise<void>;
2222
waitForConsoleMessage: (msg: string) => Promise<void>;
23+
getNetworkRequests: (requestUrlPattern: RegExp) => Promise<Request[]>;
2324
}
2425

2526
const redisControlledTest = base.extend<RedisRequestIdFixture, RedisClientFixture>({
@@ -72,6 +73,11 @@ const redisReceiverPageController = redisControlledTest.extend<RedisReceiverCont
7273
predicate: (consoleMsg) => consoleMsg.text().includes(msg),
7374
})
7475
})
76+
},
77+
getNetworkRequests: async({ page }, use) => {
78+
await use(async(requestUrlPattern) => {
79+
return (await page.requests()).filter(request => request.url().match(requestUrlPattern))
80+
})
7581
}
7682
})
7783

@@ -114,7 +120,8 @@ const redisReceiverPageAfterNavigationTest = redisReceiverPageController.extend<
114120
}, { auto: true }]
115121
})
116122

117-
export {
123+
export {
124+
redisReceiverPageController,
118125
redisReceiverPageTest,
119126
redisReceiverInsideRouterPageTest,
120127
redisReceiverPageAfterNavigationTest,

react_on_rails_pro/spec/dummy/e2e-tests/streaming.spec.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import { expect } from '@playwright/test';
1+
import { expect, test } from '@playwright/test';
22
import {
3+
redisReceiverPageController,
34
redisReceiverPageTest,
45
redisReceiverInsideRouterPageTest,
56
redisReceiverPageAfterNavigationTest,
@@ -67,3 +68,19 @@ import {
6768
await matchPageSnapshot('stage5');
6869
})
6970
})
71+
72+
redisReceiverInsideRouterPageTest('no RSC payload request is made when the page is server side rendered', async ({ getNetworkRequests }) => {
73+
await expect(await getNetworkRequests(/rsc_payload/)).toHaveLength(0);
74+
})
75+
76+
redisReceiverPageAfterNavigationTest('RSC payload request is made on navigation', async ({ getNetworkRequests }) => {
77+
await expect(await getNetworkRequests(/rsc_payload/)).toHaveLength(1);
78+
})
79+
80+
redisReceiverPageController('client side rendered router fetches RSC payload', async ({ page, getNetworkRequests }) => {
81+
await page.goto('/server_router_client_render/simple-server-component');
82+
83+
await expect(page.getByText('Post 1')).toBeVisible();
84+
await expect(page.getByText('Toggle')).toBeVisible();
85+
await expect(await getNetworkRequests(/rsc_payload/)).toHaveLength(1);
86+
})

0 commit comments

Comments
 (0)