Skip to content

Commit e788d66

Browse files
committed
test(e2e): add more test cases
1 parent 88f7234 commit e788d66

File tree

4 files changed

+101
-1
lines changed

4 files changed

+101
-1
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<script lang="ts">
2+
import Highlight, { LineNumbers } from "svelte-highlight";
3+
import typescript from "svelte-highlight/languages/typescript";
4+
import horizonDark from "svelte-highlight/styles/horizon-dark";
5+
6+
const code = "const add = (a: number, b: number) => a + b";
7+
</script>
8+
9+
<svelte:head>
10+
{@html horizonDark}
11+
</svelte:head>
12+
13+
<Highlight language={typescript} {code} let:highlighted>
14+
<LineNumbers {highlighted} startingLineNumber={100} />
15+
</Highlight>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<script lang="ts">
2+
import Highlight, { LineNumbers } from "svelte-highlight";
3+
import typescript from "svelte-highlight/languages/typescript";
4+
import horizonDark from "svelte-highlight/styles/horizon-dark";
5+
6+
const code = "const add = (a: number, b: number) => a + b";
7+
</script>
8+
9+
<svelte:head>
10+
{@html horizonDark}
11+
</svelte:head>
12+
13+
<Highlight language={typescript} {code} let:highlighted>
14+
<LineNumbers {highlighted} hideBorder />
15+
</Highlight>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<script lang="ts">
2+
import Highlight, { LineNumbers } from "svelte-highlight";
3+
import typescript from "svelte-highlight/languages/typescript";
4+
import horizonDark from "svelte-highlight/styles/horizon-dark";
5+
6+
const code = "const add = (a: number, b: number) => a + b";
7+
</script>
8+
9+
<svelte:head>
10+
{@html horizonDark}
11+
</svelte:head>
12+
13+
<Highlight language={typescript} {code} let:highlighted>
14+
<LineNumbers {highlighted} wrapLines />
15+
</Highlight>

tests/e2e/e2e.test.ts

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import { expect, test } from "@playwright/experimental-ct-svelte";
22
import Highlight from "./Highlight.test.svelte";
33
import HighlightAuto from "./HighlightAuto.test.svelte";
4+
import LineNumbersCustomStartingLine from "./LineNumbers.customStartingLine.test.svelte";
5+
import LineNumbersHideBorder from "./LineNumbers.hideBorder.test.svelte";
46
import LineNumbers from "./LineNumbers.test.svelte";
7+
import LineNumbersWrapLines from "./LineNumbers.wrapLines.test.svelte";
58
import SvelteHighlight from "./SvelteHighlight.test.svelte";
9+
610
test.use({ viewport: { width: 1200, height: 600 } });
711

812
test("Highlight", async ({ mount, page }) => {
@@ -32,10 +36,61 @@ test("SvelteHighlight", async ({ mount, page }) => {
3236
await expect(page.locator(".hljs-attr")).toHaveText("on:click");
3337
});
3438

35-
test("LineNumbers", async ({ mount, page }) => {
39+
test("LineNumbers - basic functionality", async ({ mount, page }) => {
3640
await mount(LineNumbers);
3741
await expect(page.getByText("1")).toBeVisible();
3842

3943
await expect(page.locator(".hljs-keyword")).toHaveText("const");
4044
await expect(page.locator(".hljs-title")).toHaveText("add");
45+
46+
const lineNumbersColumn = page.locator("td.hljs").first();
47+
await expect(lineNumbersColumn).toHaveCSS("position", "sticky");
48+
await expect(lineNumbersColumn).not.toHaveClass(/hideBorder/);
49+
});
50+
51+
test("LineNumbers - hide border", async ({ mount, page }) => {
52+
await mount(LineNumbersHideBorder);
53+
54+
const lineNumbersColumn = page.locator("td.hljs").first();
55+
await expect(lineNumbersColumn).toHaveClass(/hideBorder/);
56+
});
57+
58+
test("LineNumbers - wrap lines", async ({ mount, page }) => {
59+
await mount(LineNumbersWrapLines);
60+
61+
const preElement = page.locator("pre.wrapLines");
62+
await expect(preElement).toBeVisible();
63+
});
64+
65+
test("LineNumbers - custom starting number", async ({ mount, page }) => {
66+
await mount(LineNumbersCustomStartingLine);
67+
68+
await expect(page.getByText("100")).toBeVisible();
69+
});
70+
71+
test("Language tag styling", async ({ mount, page }) => {
72+
await mount(Highlight, {
73+
props: {
74+
langtag: true,
75+
code: "const x = 1;",
76+
language: { name: "javascript", register: () => {} },
77+
style: "--langtag-background: red; --langtag-color: white;",
78+
},
79+
});
80+
81+
const langTag = page.locator("[data-language]");
82+
await expect(langTag).toBeVisible();
83+
// Could add more specific style checks if needed
84+
});
85+
86+
test("Auto-highlighting detects language", async ({ mount, page }) => {
87+
await mount(HighlightAuto, {
88+
props: {
89+
code: "body { color: red; }",
90+
},
91+
});
92+
93+
// Should detect CSS and apply appropriate highlighting
94+
await expect(page.locator(".hljs-selector-tag")).toBeVisible();
95+
await expect(page.locator("pre")).toHaveAttribute("data-language", "css");
4196
});

0 commit comments

Comments
 (0)