diff --git a/packages/language-server-tests-benchmarks/fixture/document_symbols.css b/packages/language-server-tests-benchmarks/fixture/document_symbols.css new file mode 100644 index 0000000..c96a386 --- /dev/null +++ b/packages/language-server-tests-benchmarks/fixture/document_symbols.css @@ -0,0 +1,15 @@ +body { + background-color: #fff; +} + +a { + color: red; +} + +h1.foo { + color: rgba(0, 0, 0, 0.5); +} + +h1 > span { + color: linear-gradient(to right, red, #fff); +} diff --git a/packages/language-server-tests-benchmarks/src/benchmarks/css/document_symbols.bench.ts b/packages/language-server-tests-benchmarks/src/benchmarks/css/document_symbols.bench.ts new file mode 100644 index 0000000..a1a81ef --- /dev/null +++ b/packages/language-server-tests-benchmarks/src/benchmarks/css/document_symbols.bench.ts @@ -0,0 +1,32 @@ +import { afterAll, bench, describe } from "vitest"; +import { startLanguageServer } from "../../server"; +import { fileURLToPath } from "url"; + +const filePath = fileURLToPath( + new URL("../../../fixture/document_symbols_benchmark.css", import.meta.url) +); + +const weblsp = await startLanguageServer(undefined, "weblsp"); +const weblspUri = (await weblsp.openTextDocument(filePath, "css")).uri; + +const vscodeLsp = await startLanguageServer(undefined, "vscode-css"); +const vscodeLspUri = (await vscodeLsp.openTextDocument(filePath, "css")).uri; + +describe("DocumentSymbols", async () => { + bench("weblsp - DocumentSymbols", async () => { + await weblsp.sendDocumentSymbolRequest(weblspUri); + }); + + if (!process.env.CODSPEED) { + bench("vscode-css-languageserver - DocumentSymbols", async () => { + await vscodeLsp.sendDocumentSymbolRequest(vscodeLspUri); + }); + } + + afterAll(async () => { + await weblsp.shutdown(); + await vscodeLsp.shutdown(); + await weblsp.exit(); + await vscodeLsp.exit(); + }); +});