Skip to content

Commit

Permalink
Add hello-world test for pages and app (#50780)
Browse files Browse the repository at this point in the history
## What?

Recently I've been using these hello-world tests quite often to get the baseline traces out for `pages` and `app`.
Adding them to the repo so that I don't have to recreate / stash them all the time.
  • Loading branch information
timneutkens committed Jun 5, 2023
1 parent ccee374 commit 886b389
Show file tree
Hide file tree
Showing 6 changed files with 87 additions and 0 deletions.
7 changes: 7 additions & 0 deletions test/e2e/app-dir/hello-world/app/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export default function Root({ children }: { children: React.ReactNode }) {
return (
<html>
<body>{children}</body>
</html>
)
}
3 changes: 3 additions & 0 deletions test/e2e/app-dir/hello-world/app/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export default function Page() {
return <p>hello world</p>
}
34 changes: 34 additions & 0 deletions test/e2e/app-dir/hello-world/hello-world.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { createNextDescribe } from 'e2e-utils'

createNextDescribe(
'hello-world',
{
files: __dirname,
},
({ next }) => {
// Recommended for tests that check HTML. Cheerio is a HTML parser that has a jQuery like API.
it('should work using cheerio', async () => {
const $ = await next.render$('/')
expect($('p').text()).toBe('hello world')
})

// Recommended for tests that need a full browser
it('should work using browser', async () => {
const browser = await next.browser('/')
expect(await browser.elementByCss('p').text()).toBe('hello world')
})

// In case you need the full HTML. Can also use $.html() with cheerio.
it('should work with html', async () => {
const html = await next.render('/')
expect(html).toContain('hello world')
})

// In case you need to test the response object
it('should work with fetch', async () => {
const res = await next.fetch('/')
const html = await res.text()
expect(html).toContain('hello world')
})
}
)
6 changes: 6 additions & 0 deletions test/e2e/app-dir/hello-world/next.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/**
* @type {import('next').NextConfig}
*/
const nextConfig = {}

module.exports = nextConfig
34 changes: 34 additions & 0 deletions test/e2e/hello-world/hello-world.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { createNextDescribe } from 'e2e-utils'

createNextDescribe(
'hello-world',
{
files: __dirname,
},
({ next }) => {
// Recommended for tests that check HTML. Cheerio is a HTML parser that has a jQuery like API.
it('should work using cheerio', async () => {
const $ = await next.render$('/')
expect($('p').text()).toBe('hello world')
})

// Recommended for tests that need a full browser
it('should work using browser', async () => {
const browser = await next.browser('/')
expect(await browser.elementByCss('p').text()).toBe('hello world')
})

// In case you need the full HTML. Can also use $.html() with cheerio.
it('should work with html', async () => {
const html = await next.render('/')
expect(html).toContain('hello world')
})

// In case you need to test the response object
it('should work with fetch', async () => {
const res = await next.fetch('/')
const html = await res.text()
expect(html).toContain('hello world')
})
}
)
3 changes: 3 additions & 0 deletions test/e2e/hello-world/pages/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export default function Page() {
return <p>hello world</p>
}

0 comments on commit 886b389

Please sign in to comment.