Skip to content

Commit 35dc352

Browse files
committed
chore: preload highlighter languages for improved rendering in OACodeSamples
1 parent 1712479 commit 35dc352

File tree

8 files changed

+19
-0
lines changed

8 files changed

+19
-0
lines changed

e2e/local/home.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ test('home', async ({ page }) => {
44
await page.goto('/')
55

66
await expect(page).toHaveTitle(/VitePress OpenAPI/)
7+
await page.waitForLoadState('networkidle')
78
await expect(page).toHaveScreenshot({
89
fullPage: true,
910
})

e2e/local/onePage.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { expect, test } from '@playwright/test'
33
test('onePage', async ({ page }) => {
44
await page.goto('/one-page')
55

6+
await page.waitForLoadState('networkidle')
67
await expect(page).toHaveScreenshot({
78
fullPage: true,
89
})

e2e/local/tests.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ for (const pageSlug of pageSlugs) {
99

1010
await page.waitForSelector('h1')
1111

12+
await page.waitForLoadState('networkidle')
1213
await expect(page).toHaveScreenshot({
1314
fullPage: true,
1415
})

e2e/staging/home.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ test('home', async ({ page }) => {
1111
await page.goto('/')
1212

1313
await expect(page).toHaveTitle(/VitePress OpenAPI/)
14+
await page.waitForLoadState('networkidle')
1415
await expect(page).toHaveScreenshot({
1516
fullPage: true,
1617
})

e2e/staging/onePage.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ test('onePage', async ({ page }) => {
1010

1111
await page.goto('/one-page')
1212

13+
await page.waitForLoadState('networkidle')
1314
await expect(page).toHaveScreenshot({
1415
fullPage: true,
1516
})

e2e/staging/sidebar.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ test.describe('sidebar', () => {
1717

1818
await page.waitForSelector('h1')
1919

20+
await page.waitForLoadState('networkidle')
2021
await expect(page).toHaveScreenshot({
2122
fullPage: true,
2223
})

e2e/staging/tests.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ for (const pageSlug of pageSlugs) {
1616

1717
await page.waitForSelector('h1')
1818

19+
await page.waitForLoadState('networkidle')
1920
await expect(page).toHaveScreenshot({
2021
fullPage: true,
2122
})

src/components/Sample/OACodeSamples.vue

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type { OperationData } from '@/lib/operation/operationData'
33
import type { LanguageConfig } from '../../composables/useTheme'
44
import { OPERATION_DATA_KEY } from '@/lib/operation/operationData'
55
import { inject, ref, watch } from 'vue'
6+
import { useShiki } from '../../composables/useShiki'
67
import { useTheme } from '../../composables/useTheme'
78
import OACodeBlock from '../Common/OACodeBlock.vue'
89
@@ -24,6 +25,8 @@ const operationData = inject(OPERATION_DATA_KEY) as OperationData
2425
2526
const themeConfig = useTheme()
2627
28+
const shiki = useShiki()
29+
2730
const availableLanguages = themeConfig.getCodeSamplesAvailableLanguages()
2831
2932
const generator = themeConfig.getCodeSamplesGenerator()
@@ -83,6 +86,15 @@ watch(operationData.playground.request, async (playgroundRequest, _, onInvalidat
8386
if (cancelled) {
8487
return
8588
}
89+
90+
// Preload all highlighter languages
91+
const uniqueHighlighters = [...new Set(nextSamples.map(s => s.highlighter).filter(Boolean))]
92+
await Promise.all(uniqueHighlighters.map(lang => shiki.ensureLanguage(lang)))
93+
94+
if (cancelled) {
95+
return
96+
}
97+
8698
samples.value = nextSamples
8799
88100
if (!activeSampleKey.value || !samples.value.some(s => s.key === activeSampleKey.value)) {

0 commit comments

Comments
 (0)