0ddc7e8fad
This PR updates the testing guides to use App Router and TypeScript, also updates `/examples` to show `app` and `pages` examples. ## Overview - [x] Create a new "Testing" section that is shared between `app` and `pages`. - [x] Explain the differences between E2E, unit testing, component testing, etc. - [x] Recommend E2E for `async` components as currently none of the tools support it. - [x] Update setup guides for **Cypress**, **Playwright**, and **Jest** with latest config options, and examples for `app` and `pages`. - [x] Add new guide for **Vitest** - [x] Clean up `/examples`: use TS, show `app` and `pages` examples, match docs config ## Cypress - [x] E2E Tests - [x] Component Testing - [x] Client Components - [x] Server Components - [ ] `async` components **Blockers:** - TS: `Option 'bundler' can only be used when 'module' is set to 'es2015' or later`. In **tsconfig.json** compilerOptions, Next.js uses "moduleResolution": "bundler", changing it to "node" fixes the issue but it can have repercussions. - https://github.com/cypress-io/cypress/issues/27731 - Version 14 is currently not supported for component testing - https://github.com/cypress-io/cypress/issues/28185 ## Playwright - [x] E2E Tests ## Jest - [x] Unit Testing - [x] Client Components - [x] Server Components - [ ] `async` components: https://github.com/testing-library/react-testing-library/issues/1209 - [x] 'server-only': https://github.com/vercel/next.js/pull/54891 - [x] Snapshot Testing **Blockers:** - TS: https://github.com/testing-library/jest-dom/issues/546 - None of the solutions in the issue work with Next.js v14.0.4 and TS v5 ## Vitest - [x] Unit Testing - [x] Client Components - [x] Server Components - [ ] `async` components - [x] 'server-only' - [x] Update vitest example - [x] Handles CSS, and CSS modules imports - [x] Handles next/image ## Other - https://github.com/vercel/next.js/issues/47448 - https://github.com/vercel/next.js/issues/47299
64 lines
1.9 KiB
TypeScript
64 lines
1.9 KiB
TypeScript
import Head from 'next/head'
|
|
import Image from 'next/image'
|
|
import styles from '@/pages/index.module.css'
|
|
|
|
export default function Home() {
|
|
return (
|
|
<div className={styles.container}>
|
|
<Head>
|
|
<title>Create Next App</title>
|
|
<link rel="icon" href="/favicon.ico" />
|
|
</Head>
|
|
|
|
<main>
|
|
<h1 className={styles.title}>
|
|
Welcome to <a href="https://nextjs.org">Next.js!</a>
|
|
</h1>
|
|
|
|
<p className={styles.description}>
|
|
Get started by editing <code>pages/index.js</code>
|
|
</p>
|
|
|
|
<div className={styles.grid}>
|
|
<a href="https://nextjs.org/docs" className={styles.card}>
|
|
<h3>Documentation →</h3>
|
|
<p>Find in-depth information about Next.js features and API.</p>
|
|
</a>
|
|
|
|
<a href="https://nextjs.org/learn" className={styles.card}>
|
|
<h3>Learn →</h3>
|
|
<p>Learn about Next.js in an interactive course with quizzes!</p>
|
|
</a>
|
|
|
|
<a
|
|
href="https://github.com/vercel/next.js/tree/canary/examples"
|
|
className={styles.card}
|
|
>
|
|
<h3>Examples →</h3>
|
|
<p>Discover and deploy boilerplate example Next.js projects.</p>
|
|
</a>
|
|
|
|
<a href="https://vercel.com/new" className={styles.card}>
|
|
<h3>Deploy →</h3>
|
|
<p>
|
|
Instantly deploy your Next.js site to a public URL with Vercel.
|
|
</p>
|
|
</a>
|
|
</div>
|
|
</main>
|
|
|
|
<footer className={styles.footer}>
|
|
<a
|
|
href="https://vercel.com?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
Powered by{' '}
|
|
<span className={styles.logo}>
|
|
<Image src="/vercel.svg" alt="Vercel Logo" width={72} height={16} />
|
|
</span>
|
|
</a>
|
|
</footer>
|
|
</div>
|
|
)
|
|
}
|