theme-extraction-script.test.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import { test, expect, type TestFixtures } from "../tests/playwright-base-test"
  2. import { findWebview } from "../helpers"
  3. import { type Page, type FrameLocator } from "@playwright/test"
  4. import { extractAllCSSVariables, generateCSSOutput, saveVariablesToFile } from "../helpers/css-extraction-helpers"
  5. import { switchToTheme } from "../helpers/vscode-helpers"
  6. const extractVariablesForTheme = async (workbox: Page, webviewFrame: FrameLocator) => {
  7. const mainWindowVariables = await workbox.evaluate(extractAllCSSVariables)
  8. const webviewVariables = await webviewFrame.locator("body").evaluate(extractAllCSSVariables)
  9. const allVariables = { ...webviewVariables, ...mainWindowVariables }
  10. return {
  11. mainWindowVariables,
  12. webviewVariables,
  13. allVariables,
  14. }
  15. }
  16. test.describe("CSS Variable Extraction", () => {
  17. test("should extract CSS variables in both light and dark themes", async ({ workbox }: TestFixtures) => {
  18. const webviewFrame = await findWebview(workbox)
  19. await switchToTheme(workbox, "dark")
  20. const darkResults = await extractVariablesForTheme(workbox, webviewFrame)
  21. const darkCSSOutput = generateCSSOutput(darkResults.allVariables)
  22. await saveVariablesToFile(darkCSSOutput, "dark-modern.css")
  23. await switchToTheme(workbox, "light")
  24. const lightResults = await extractVariablesForTheme(workbox, webviewFrame)
  25. const lightCSSOutput = generateCSSOutput(lightResults.allVariables)
  26. await saveVariablesToFile(lightCSSOutput, "light-modern.css")
  27. expect(Object.keys(darkResults.allVariables).length).toBeGreaterThan(0)
  28. expect(Object.keys(lightResults.allVariables).length).toBeGreaterThan(0)
  29. })
  30. })