Files

131 lines
3.6 KiB
JavaScript

import { jest } from '@jest/globals';
import docsifyInit from '../helpers/docsify-init.js';
// Suite
// -----------------------------------------------------------------------------
describe('Docs Site', function () {
// Tests
// ---------------------------------------------------------------------------
test('coverpage renders and is unchanged', async () => {
// Override Math.random implementation to prevent random gradient values
// used as background image from causing test to fail
const mathSpy = jest.spyOn(Math, 'random').mockReturnValue(0.5);
await docsifyInit({
config: {
coverpage: '_coverpage.md',
},
markdown: {
homepage: '# Hello World',
},
waitForSelector: '.cover-main > *',
});
const coverpageElm = document.querySelector('section.cover');
// Test snapshots
expect(mathSpy).toHaveBeenCalled();
expect(coverpageElm).not.toBeNull();
expect(coverpageElm.outerHTML).toMatchSnapshot();
});
test('sidebar renders and is unchanged', async () => {
await docsifyInit({
config: {
loadSidebar: '_sidebar.md',
},
markdown: {
homepage: '# Hello World',
},
waitForSelector: '.sidebar-nav > ul',
});
const sidebarElm = document.querySelector('.sidebar');
// Test snapshots
expect(sidebarElm).not.toBeNull();
expect(sidebarElm.outerHTML).toMatchSnapshot();
});
test('navbar renders and is unchanged', async () => {
await docsifyInit({
config: {
loadNavbar: '_navbar.md',
},
markdown: {
homepage: '# Hello World',
},
waitForSelector: '.app-nav > ul',
});
const navbarElm = document.querySelector('nav.app-nav');
// Test snapshots
expect(navbarElm).not.toBeNull();
expect(navbarElm.outerHTML).toMatchSnapshot();
});
test('navbar appends the current path to language links when enabled', async () => {
await docsifyInit({
config: {
loadNavbar: '_navbar.md',
navbarPreservePath: true,
},
markdown: {
homepage: '# Hello World',
navbar: `
- [English](/en-us/)
- [简体中文](/zh-cn/)
- [Guide](/guide)
- [Anchor](#section)
- [External](https://example.com/)
`,
},
testURL: `${process.env.TEST_HOST}/docsify-init.html#/en-us/guide/start`,
waitForSelector: '.app-nav > ul',
});
const links = Object.fromEntries(
[...document.querySelectorAll('.app-nav a')].map(link => [
link.textContent,
link.getAttribute('href'),
]),
);
expect(links).toEqual({
English: '#/en-us/guide/start',
简体中文: '#/zh-cn/guide/start',
Guide: '#/guide',
Anchor: '#/en-us/guide/start?id=section',
External: 'https://example.com/',
});
});
test('navbar appends the current path in history mode and merged navbars', async () => {
await docsifyInit({
config: {
loadNavbar: '_navbar.md',
mergeNavbar: true,
navbarPreservePath: true,
routerMode: 'history',
},
markdown: {
homepage: '# Hello World',
navbar: `
- [English](/en-us/)
- [简体中文](/zh-cn/)
`,
},
testURL: `${process.env.TEST_HOST}/en-us/guide/start`,
waitForSelector: '.app-nav-merged > ul',
});
document.querySelectorAll('.app-nav, .app-nav-merged').forEach(nav => {
expect([...nav.querySelectorAll('a')].map(link => link.href)).toEqual([
`${process.env.TEST_HOST}/en-us/guide/start`,
`${process.env.TEST_HOST}/zh-cn/guide/start`,
]);
});
});
});