this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

test: e2e for next-partial-prerendering example (#758)

authored by

James Anderson and committed by
GitHub
89dbde74 cdb99897

+45 -3
+1
examples/common/apps.ts
··· 8 8 "vercel-blog-starter", 9 9 "ssg-app", 10 10 "prisma", 11 + "next-partial-prerendering", 11 12 // e2e 12 13 "app-pages-router", 13 14 "app-router",
+2
examples/next-partial-prerendering/.gitignore
··· 8 8 9 9 # testing 10 10 /coverage 11 + playwright-report 12 + test-results 11 13 12 14 # next.js 13 15 /.next/
+1 -1
examples/next-partial-prerendering/components/reviews.tsx
··· 40 40 41 41 export function ReviewsSkeleton() { 42 42 return ( 43 - <div className="space-y-6"> 43 + <div className="space-y-6" data-testid="reviews-loader"> 44 44 <div className={`h-7 w-2/5 rounded-lg bg-gray-900 ${shimmer}`} /> 45 45 <div className="space-y-8"> 46 46 <Skeleton />
+3
examples/next-partial-prerendering/e2e/playwright.config.ts
··· 1 + import { configurePlaywright } from '../../common/config-e2e'; 2 + 3 + export default configurePlaywright('next-partial-prerendering');
+32
examples/next-partial-prerendering/e2e/ppr.test.ts
··· 1 + import { expect, test } from '@playwright/test'; 2 + 3 + test.describe('PPR', () => { 4 + test('PPR should show loading first', async ({ page }) => { 5 + await page.goto('/', { waitUntil: 'commit' }); 6 + await expect( 7 + page.getByRole('heading', { name: 'Partial Prerendering' }), 8 + ).toBeVisible(); 9 + 10 + const loader = page.getByTestId('reviews-loader'); 11 + await expect(loader).toBeVisible(); 12 + await expect(page.getByText('Customer Reviews')).toHaveCount(0); 13 + 14 + await page.waitForTimeout(6000); 15 + await expect(page.getByText('Customer Reviews')).toBeVisible(); 16 + await expect(loader).not.toBeVisible(); 17 + }); 18 + 19 + test('PPR rsc prefetch request should be cached', async ({ request }) => { 20 + const resp = await request.get('/', { 21 + headers: { rsc: '1', 'next-router-prefetch': '1' }, 22 + }); 23 + expect(resp.status()).toEqual(200); 24 + 25 + const headers = resp.headers(); 26 + expect(headers['x-nextjs-postponed']).toEqual('1'); 27 + expect(headers['x-nextjs-cache']).toEqual('HIT'); 28 + expect(headers['cache-control']).toEqual( 29 + 's-maxage=31536000, stale-while-revalidate=2592000', 30 + ); 31 + }); 32 + });
+4 -1
examples/next-partial-prerendering/open-next.config.ts
··· 1 1 import { defineCloudflareConfig } from '@opennextjs/cloudflare/config'; 2 + import staticAssetsIncrementalCache from '@opennextjs/cloudflare/overrides/incremental-cache/static-assets-incremental-cache'; 2 3 3 - export default defineCloudflareConfig(); 4 + export default defineCloudflareConfig({ 5 + incrementalCache: staticAssetsIncrementalCache, 6 + });
+2 -1
examples/next-partial-prerendering/package.json
··· 7 7 "start": "next start", 8 8 "build:worker": "pnpm opennextjs-cloudflare build", 9 9 "preview:worker": "pnpm opennextjs-cloudflare preview", 10 - "preview": "pnpm build:worker && pnpm preview:worker" 10 + "preview": "pnpm build:worker && pnpm preview:worker", 11 + "e2e": "playwright test -c e2e/playwright.config.ts" 11 12 }, 12 13 "dependencies": { 13 14 "@heroicons/react": "2.1.5",