summaryrefslogtreecommitdiff
path: root/packages/markdown/remark/test/shiki.test.js
blob: d6f3e8925928515c511a5e219ede4ab887916a86 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import { createMarkdownProcessor, createShikiHighlighter } from '../dist/index.js';
import chai from 'chai';

describe('shiki syntax highlighting', () => {
	it('does not add is:raw to the output', async () => {
		const processor = await createMarkdownProcessor();
		const { code } = await processor.render('```\ntest\n```');

		chai.expect(code).not.to.contain('is:raw');
	});

	it('supports light/dark themes', async () => {
		const processor = await createMarkdownProcessor({
			shikiConfig: {
				experimentalThemes: {
					light: 'github-light',
					dark: 'github-dark',
				},
			},
		});
		const { code } = await processor.render('```\ntest\n```');

		// light theme is there:
		chai.expect(code).to.contain('background-color:');
		chai.expect(code).to.contain('github-light');
		// dark theme is there:
		chai.expect(code).to.contain('--shiki-dark-bg:');
		chai.expect(code).to.contain('github-dark');
	});

	it('createShikiHighlighter works', async () => {
		const highlighter = await createShikiHighlighter();

		const html = highlighter.highlight('const foo = "bar";', 'js');

		chai.expect(html).to.contain('astro-code github-dark');
		chai.expect(html).to.contain('background-color:#24292e;color:#e1e4e8;');
	});

	it('diff +/- text has user-select: none', async () => {
		const highlighter = await createShikiHighlighter();

		const html = highlighter.highlight(
			`\
- const foo = "bar";
+ const foo = "world";`,
			'diff'
		);
		chai.expect(html).to.contain('user-select: none');
		chai.expect(html).to.contain('>-</span>');
		chai.expect(html).to.contain('>+</span>');
	});
});