Skip to content

Commit 135bbee

Browse files
committed
Add notFoundPage tests
1 parent cad4a95 commit 135bbee

File tree

1 file changed

+131
-49
lines changed

1 file changed

+131
-49
lines changed

test/e2e/configuration.test.js

Lines changed: 131 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -3,64 +3,146 @@ import docsifyInit from '../helpers/docsify-init.js';
33
import { test, expect } from './fixtures/docsify-init-fixture.js';
44

55
test.describe('Configuration options', () => {
6-
test('catchPluginErrors:true (handles uncaught errors)', async ({ page }) => {
7-
let consoleMsg, errorMsg;
8-
9-
page.on('console', msg => (consoleMsg = msg.text()));
10-
page.on('pageerror', err => (errorMsg = err.message));
11-
12-
await docsifyInit({
13-
config: {
14-
catchPluginErrors: true,
15-
plugins: [
16-
function (hook, vm) {
17-
hook.init(function () {
18-
fail();
19-
});
20-
hook.beforeEach(markdown => {
21-
return `${markdown}\n\nbeforeEach`;
22-
});
23-
},
24-
],
25-
},
26-
markdown: {
27-
homepage: '# Hello World',
28-
},
29-
// _logHTML: true,
6+
test.describe('catchPluginErrors', () => {
7+
test('true (handles uncaught errors)', async ({ page }) => {
8+
let consoleMsg, errorMsg;
9+
10+
page.on('console', msg => (consoleMsg = msg.text()));
11+
page.on('pageerror', err => (errorMsg = err.message));
12+
13+
await docsifyInit({
14+
config: {
15+
catchPluginErrors: true,
16+
plugins: [
17+
function (hook, vm) {
18+
hook.init(function () {
19+
fail();
20+
});
21+
hook.beforeEach(markdown => {
22+
return `${markdown}\n\nbeforeEach`;
23+
});
24+
},
25+
],
26+
},
27+
markdown: {
28+
homepage: '# Hello World',
29+
},
30+
// _logHTML: true,
31+
});
32+
33+
const mainElm = page.locator('#main');
34+
35+
expect(errorMsg).toBeUndefined();
36+
expect(consoleMsg).toContain('Docsify plugin error');
37+
await expect(mainElm).toContainText('Hello World');
38+
await expect(mainElm).toContainText('beforeEach');
3039
});
3140

32-
const mainElm = page.locator('#main');
41+
test('false (throws uncaught errors)', async ({ page }) => {
42+
let consoleMsg, errorMsg;
43+
44+
page.on('console', msg => (consoleMsg = msg.text()));
45+
page.on('pageerror', err => (errorMsg = err.message));
3346

34-
expect(errorMsg).toBeUndefined();
35-
expect(consoleMsg).toContain('Docsify plugin error');
36-
await expect(mainElm).toContainText('Hello World');
37-
await expect(mainElm).toContainText('beforeEach');
47+
await docsifyInit({
48+
config: {
49+
catchPluginErrors: false,
50+
plugins: [
51+
function (hook, vm) {
52+
hook.ready(function () {
53+
fail();
54+
});
55+
},
56+
],
57+
},
58+
markdown: {
59+
homepage: '# Hello World',
60+
},
61+
// _logHTML: true,
62+
});
63+
64+
expect(consoleMsg).toBeUndefined();
65+
expect(errorMsg).toContain('fail');
66+
});
3867
});
3968

40-
test('catchPluginErrors:false (throws uncaught errors)', async ({ page }) => {
41-
let consoleMsg, errorMsg;
69+
test.describe('notFoundPage', () => {
70+
test.describe('renders default error content', () => {
71+
test.beforeEach(async ({ page }) => {
72+
await page.route('README.md', async route => {
73+
await route.fulfill({
74+
status: 500,
75+
});
76+
});
77+
});
78+
79+
test('false', async ({ page }) => {
80+
await docsifyInit({
81+
config: {
82+
notFoundPage: false,
83+
},
84+
});
4285

43-
page.on('console', msg => (consoleMsg = msg.text()));
44-
page.on('pageerror', err => (errorMsg = err.message));
86+
await expect(page.locator('#main')).toContainText('500');
87+
});
4588

46-
await docsifyInit({
47-
config: {
48-
catchPluginErrors: false,
49-
plugins: [
50-
function (hook, vm) {
51-
hook.ready(function () {
52-
fail();
53-
});
89+
test('true with non-404 error', async ({ page }) => {
90+
await docsifyInit({
91+
config: {
92+
notFoundPage: true,
93+
},
94+
routes: {
95+
'_404.md': '',
5496
},
55-
],
56-
},
57-
markdown: {
58-
homepage: '# Hello World',
59-
},
60-
// _logHTML: true,
97+
});
98+
99+
await expect(page.locator('#main')).toContainText('500');
100+
});
101+
102+
test('string with non-404 error', async ({ page }) => {
103+
await docsifyInit({
104+
config: {
105+
notFoundPage: '404.md',
106+
},
107+
routes: {
108+
'404.md': '',
109+
},
110+
});
111+
112+
await expect(page.locator('#main')).toContainText('500');
113+
});
61114
});
62115

63-
expect(consoleMsg).toBeUndefined();
64-
expect(errorMsg).toContain('fail');
116+
test('true: renders _404.md page', async ({ page }) => {
117+
const expectText = 'Pass';
118+
119+
await docsifyInit({
120+
config: {
121+
notFoundPage: true,
122+
},
123+
routes: {
124+
'_404.md': expectText,
125+
},
126+
});
127+
128+
await page.evaluate(() => (window.location.hash = '#/fail'));
129+
await expect(page.locator('#main')).toContainText(expectText);
130+
});
131+
132+
test('string: renders specified 404 page', async ({ page }) => {
133+
const expectText = 'Pass';
134+
135+
await docsifyInit({
136+
config: {
137+
notFoundPage: '404.md',
138+
},
139+
routes: {
140+
'404.md': expectText,
141+
},
142+
});
143+
144+
await page.evaluate(() => (window.location.hash = '#/fail'));
145+
await expect(page.locator('#main')).toContainText(expectText);
146+
});
65147
});
66148
});

0 commit comments

Comments
 (0)