Skip to content

Commit 1f40fa4

Browse files
authored
Add tests for PageLayout (#1867)
* Update jest test match regex * Add PageLayout tests * Update component checklist * Ignore stories in test coverage report * Increase code coverage * Update snapshot test * Update snapshots
1 parent f3f4255 commit 1f40fa4

File tree

4 files changed

+1056
-4
lines changed

4 files changed

+1056
-4
lines changed

docs/content/drafts/PageLayout.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: PageLayout
3-
status: Draft
3+
status: Alpha
44
# description: TODO
55
source: https://github.com/primer/react/tree/main/src/PageLayout
66
storybook: https://primer.style/react/storybook?path=/story/layout-pagelayout--playground
@@ -252,7 +252,7 @@ See [storybook](https://primer.style/react/storybook?path=/story/layout-pagelayo
252252
noUnnecessaryDeps: true,
253253
adaptsToThemes: true,
254254
adaptsToScreenSizes: true,
255-
fullTestCoverage: false,
255+
fullTestCoverage: true,
256256
usedInProduction: true,
257257
usageExamplesDocumented: true,
258258
hasStorybookStories: true,

jest.config.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ module.exports = {
33
testEnvironment: 'jsdom',
44
cacheDirectory: '.test',
55
collectCoverage: true,
6-
collectCoverageFrom: ['src/**/*.{js,jsx,ts,tsx}', '!src/stories/**'],
6+
collectCoverageFrom: ['src/**/*.{js,jsx,ts,tsx}', '!src/stories/**', '!**/*.stories.{js,jsx,ts,tsx}'],
77
setupFilesAfterEnv: [
88
'<rootDir>/src/utils/test-matchers.tsx',
99
'<rootDir>/src/utils/test-deprecations.tsx',
1010
'<rootDir>/src/utils/test-helpers.tsx'
1111
],
12-
testMatch: ['<rootDir>/(src|codemods)/__tests__/**/*.test.[jt]s?(x)', '!**/*.types.test.[jt]s?(x)'],
12+
testMatch: ['<rootDir>/(src|codemods)/**/*.test.[jt]s?(x)', '!**/*.types.test.[jt]s?(x)'],
1313
// @primer/behaviors is ESM, so needs to be transformed
1414
transformIgnorePatterns: ['node_modules/(?!@primer/behaviors)']
1515
}

src/PageLayout/PageLayout.test.tsx

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import {render} from '@testing-library/react'
2+
import React from 'react'
3+
import {ThemeProvider} from '..'
4+
import {PageLayout} from './PageLayout'
5+
6+
describe('PageLayout', () => {
7+
it('renders default layout', () => {
8+
const {container} = render(
9+
<ThemeProvider>
10+
<PageLayout>
11+
<PageLayout.Header>Header</PageLayout.Header>
12+
<PageLayout.Content>Content</PageLayout.Content>
13+
<PageLayout.Pane>Pane</PageLayout.Pane>
14+
<PageLayout.Footer>Footer</PageLayout.Footer>
15+
</PageLayout>
16+
</ThemeProvider>
17+
)
18+
expect(container).toMatchSnapshot()
19+
})
20+
21+
it('renders condensed layout', () => {
22+
const {container} = render(
23+
<ThemeProvider>
24+
<PageLayout padding="condensed" rowGap="condensed" columnGap="condensed">
25+
<PageLayout.Header>Header</PageLayout.Header>
26+
<PageLayout.Content>Content</PageLayout.Content>
27+
<PageLayout.Pane>Pane</PageLayout.Pane>
28+
<PageLayout.Footer>Footer</PageLayout.Footer>
29+
</PageLayout>
30+
</ThemeProvider>
31+
)
32+
expect(container).toMatchSnapshot()
33+
})
34+
35+
it('renders with dividers', () => {
36+
const {container} = render(
37+
<ThemeProvider>
38+
<PageLayout>
39+
<PageLayout.Header divider="line" dividerWhenNarrow="filled">
40+
Header
41+
</PageLayout.Header>
42+
<PageLayout.Content>Content</PageLayout.Content>
43+
<PageLayout.Pane position="start" divider="line" dividerWhenNarrow="filled">
44+
Pane
45+
</PageLayout.Pane>
46+
<PageLayout.Footer dividerWhenNarrow="line">Footer</PageLayout.Footer>
47+
</PageLayout>
48+
</ThemeProvider>
49+
)
50+
expect(container).toMatchSnapshot()
51+
})
52+
53+
it('renders pane in different position when narrow', () => {
54+
const {container} = render(
55+
<ThemeProvider>
56+
<PageLayout>
57+
<PageLayout.Header>Header</PageLayout.Header>
58+
<PageLayout.Content>Content</PageLayout.Content>
59+
<PageLayout.Pane positionWhenNarrow="start">Pane</PageLayout.Pane>
60+
<PageLayout.Footer>Footer</PageLayout.Footer>
61+
</PageLayout>
62+
</ThemeProvider>
63+
)
64+
expect(container).toMatchSnapshot()
65+
})
66+
})

0 commit comments

Comments
 (0)