Skip to content

Commit 48c9f15

Browse files
committed
add e2e test
1 parent a31d946 commit 48c9f15

File tree

2 files changed

+62
-0
lines changed

2 files changed

+62
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { unstable_cache } from "next/cache";
2+
3+
async function getTime() {
4+
return new Date().toISOString();
5+
}
6+
7+
const cachedTime = unstable_cache(getTime, { revalidate: false });
8+
9+
export const revalidate = 10;
10+
11+
export default async function ISR() {
12+
const responseOpenNext = await fetch("https://opennext.js.org", {
13+
cache: "force-cache",
14+
});
15+
const dateInOpenNext = responseOpenNext.headers.get("date");
16+
const cachedTimeValue = await cachedTime();
17+
const time = getTime();
18+
return (
19+
<div>
20+
<h1>Date from from OpenNext</h1>
21+
<p data-testid="fetched-date">
22+
Date from from OpenNext: {dateInOpenNext}
23+
</p>
24+
<h1>Cached Time</h1>
25+
<p data-testid="cached-date">Cached Time: {cachedTimeValue}</p>
26+
<h1>Time</h1>
27+
<p data-testid="time">Time: {time}</p>
28+
</div>
29+
);
30+
}

packages/tests-e2e/tests/appRouter/isr.test.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,35 @@ test("headers", async ({ page }) => {
6161
await page.reload();
6262
}
6363
});
64+
65+
test("Incremental Static Regeneration with data cache", async ({ page }) => {
66+
test.setTimeout(45000);
67+
await page.goto("/isr-data-cache");
68+
69+
const originalFetchedDate = await page
70+
.getByTestId("fetched-date")
71+
.textContent();
72+
const originalCachedDate = await page
73+
.getByTestId("cached-date")
74+
.textContent();
75+
const originalTime = await page.getByTestId("time").textContent();
76+
await page.reload();
77+
78+
let finalTime = originalTime;
79+
let finalCachedDate = originalCachedDate;
80+
let finalFetchedDate = originalFetchedDate;
81+
82+
// Wait 10 + 1 seconds for ISR to regenerate time
83+
await page.waitForTimeout(11000);
84+
do {
85+
await page.waitForTimeout(2000);
86+
finalTime = await page.getByTestId("time").textContent();
87+
finalCachedDate = await page.getByTestId("cached-date").textContent();
88+
finalFetchedDate = await page.getByTestId("fetched-date").textContent();
89+
await page.reload();
90+
} while (originalTime === finalTime);
91+
92+
expect(originalTime).not.toEqual(finalTime);
93+
expect(originalCachedDate).toEqual(finalCachedDate);
94+
expect(originalFetchedDate).toEqual(finalFetchedDate);
95+
});

0 commit comments

Comments
 (0)