page-refs.spec.ts 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import { expect } from '@playwright/test'
  2. import { test } from './fixtures'
  3. import { IsMac, createRandomPage, newBlock, newInnerBlock, randomString, lastInnerBlock } from './utils'
  4. async function alias_test (page, page_name: string){
  5. let hotkeyOpenLink = 'Control+o'
  6. let hotkeyBack = 'Control+['
  7. if (IsMac) {
  8. hotkeyOpenLink = 'Meta+o'
  9. hotkeyBack = 'Meta+['
  10. }
  11. const rand = randomString(10)
  12. let target_name = page_name + ' target ' + rand
  13. let alias_name = page_name + ' alias ' + rand
  14. let alias_test_content_1 = randomString(20)
  15. let alias_test_content_2 = randomString(20)
  16. let alias_test_content_3 = randomString(20)
  17. // shortcut opening test
  18. await createRandomPage(page)
  19. await page.fill(':nth-match(textarea, 1)', '[[' + target_name + ']]')
  20. await page.keyboard.press(hotkeyOpenLink)
  21. // build target Page with alias
  22. await page.type(':nth-match(textarea, 1)', 'alias:: [[' + alias_name + ']]')
  23. await page.press(':nth-match(textarea, 1)', 'Enter') // double Enter for exit property editing
  24. await page.press(':nth-match(textarea, 1)', 'Enter')
  25. await page.type(':nth-match(textarea, 1)', alias_test_content_1)
  26. await page.keyboard.press(hotkeyBack)
  27. // create alias ref in origin Page
  28. await newBlock(page)
  29. await page.type(':nth-match(textarea, 1)', '[[' + alias_name + ']]')
  30. await page.keyboard.press(hotkeyOpenLink)
  31. // shortcut opening test
  32. await lastInnerBlock(page)
  33. expect(await page.inputValue(':nth-match(textarea, 1)')).toBe(alias_test_content_1)
  34. await newInnerBlock(page)
  35. await page.type(':nth-match(textarea, 1)', alias_test_content_2)
  36. await page.keyboard.press(hotkeyBack)
  37. // pressing enter opening test
  38. await lastInnerBlock(page)
  39. await page.press(':nth-match(textarea, 1)', 'ArrowLeft')
  40. await page.press(':nth-match(textarea, 1)', 'ArrowLeft')
  41. await page.press(':nth-match(textarea, 1)', 'ArrowLeft')
  42. await page.press(':nth-match(textarea, 1)', 'Enter')
  43. await lastInnerBlock(page)
  44. expect(await page.inputValue(':nth-match(textarea, 1)')).toBe(alias_test_content_2)
  45. await newInnerBlock(page)
  46. await page.type(':nth-match(textarea, 1)', alias_test_content_3)
  47. await page.keyboard.press(hotkeyBack)
  48. // clicking opening test
  49. await page.click('.page-blocks-inner .ls-block .page-ref >> nth=-1')
  50. await lastInnerBlock(page)
  51. expect(await page.inputValue(':nth-match(textarea, 1)')).toBe(alias_test_content_3)
  52. // TODO: test alias from graph clicking
  53. // test alias from search clicking
  54. await page.click('#search-button')
  55. await page.waitForSelector('[placeholder="Search or create page"]')
  56. await page.fill('[placeholder="Search or create page"]', alias_name)
  57. await page.waitForTimeout(500)
  58. const results = await page.$$('#ui__ac-inner .block')
  59. page.pause()
  60. expect(results.length).toEqual(3) // 2 blocks + 1 page
  61. await page.keyboard.press("Escape")
  62. }
  63. test('page alias', async ({ page }) => {
  64. await alias_test(page, "p")
  65. })
  66. test('page diacritic alias', async ({ page }) => {
  67. await alias_test(page, "ü")
  68. })