plugins.spec.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { expect } from '@playwright/test'
  2. import { test } from './fixtures'
  3. test.skip('enabled plugin system default', async ({ page }) => {
  4. const callAPI = callPageAPI.bind(null, page)
  5. const pluginEnabled = await callAPI('get_state_from_store', 'plugin/enabled')
  6. await expect(pluginEnabled).toBe(true)
  7. expect(await page.evaluate(`typeof logseq.api.get_current_graph`))
  8. .toBe('function')
  9. const currentGraph = await callAPI('get_current_graph')
  10. expect(Object.keys(currentGraph)).toEqual(['url', 'name', 'path'])
  11. })
  12. test.skip('play a plugin<logseq-journals-calendar> from the Marketplace', async ({ page }) => {
  13. await page.keyboard.press('t+p')
  14. const searchInput = page.locator('.search-ctls .form-input')
  15. await searchInput.type('journals')
  16. const pluginCards = page.locator('.cp__plugins-item-card')
  17. if (await pluginCards.count()) {
  18. await pluginCards.locator('.ctl .ls-icon-settings').hover()
  19. await page.locator('text=Uninstall').click()
  20. const confirmYes = page.locator('button').locator('text=Yes')
  21. await confirmYes.click()
  22. }
  23. // install a plugin from Marketplace
  24. await page.locator('button').locator('text=Marketplace').click()
  25. await page.locator('text=Journals calendar')
  26. await page.locator('.cp__plugins-item-card').first().locator('text=Install').click()
  27. // wait for the plugin installed
  28. await page.locator('.cp__plugins-item-card').first().locator('text=Installed')
  29. await page.locator('a.ui__modal-close').click()
  30. // toolbar plugins manager
  31. const pluginFlag = page.locator('.toolbar-plugins-manager-trigger')
  32. await expect(pluginFlag).toBeVisible()
  33. await pluginFlag.click()
  34. await expect(pluginFlag.locator('text=Plugins')).toBeVisible()
  35. await expect(pluginFlag.locator('text=Settings')).toBeVisible()
  36. await page.locator('text=goto-today').click()
  37. await page.locator('body').click()
  38. const goToToday = page.locator('#logseq-journals-calendar--goto-today').locator('a.button')
  39. await expect(goToToday).toBeVisible()
  40. await goToToday.click()
  41. // TODO: debug
  42. await expect(page.locator('body[data-page="page"]')).toBeVisible()
  43. })
  44. /**
  45. * @param page
  46. * @param method
  47. * @param args
  48. */
  49. async function callPageAPI(page, method, ...args) {
  50. return await page.evaluate(([method, args]) => {
  51. // @ts-ignore
  52. return window.logseq.api[method]?.(...args)
  53. }, [method, args])
  54. }