page-rename.spec.ts 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import { expect, Page } from '@playwright/test'
  2. import { test } from './fixtures'
  3. import { IsMac, createPage, randomLowerString, newBlock, newInnerBlock, randomString, lastBlock } from './utils'
  4. /***
  5. * Test rename feature
  6. ***/
  7. async function rename_page(page: Page, new_name: string) {
  8. await page.click('.ls-page-title .page-title')
  9. await page.waitForSelector('input[type="text"]')
  10. await page.fill('input[type="text"]', '')
  11. await page.type('.title input', new_name)
  12. await page.keyboard.press('Enter')
  13. await page.click('.ui__confirm-modal button')
  14. }
  15. async function page_rename_test(page: Page, original_page_name: string, new_page_name: string) {
  16. const rand = randomString(10)
  17. let original_name = original_page_name + rand
  18. let new_name = new_page_name + rand
  19. await createPage(page, original_name)
  20. // Rename page in UI
  21. await rename_page(page, new_name)
  22. expect(await page.innerText('.page-title .title')).toBe(new_name)
  23. // TODO: Test if page is renamed in re-entrance
  24. // TODO: Test if page is hierarchy
  25. }
  26. async function homepage_rename_test(page: Page, original_page_name: string, new_page_name: string) {
  27. const rand = randomString(10)
  28. let original_name = original_page_name + rand
  29. let new_name = new_page_name + rand
  30. await createPage(page, original_name)
  31. // Toggle settings
  32. await page.click('#main-content-container')
  33. await page.keyboard.press('t')
  34. await page.keyboard.press('s')
  35. await page.click('a[data-id="features"]')
  36. await page.click('#settings div:nth-child(1) a')
  37. await page.type('input', original_name)
  38. await page.click('[aria-label="Close"]')
  39. expect(await page.locator('.home-nav span.flex-1').innerText()).toBe(original_name);
  40. await rename_page(page, new_name)
  41. expect(await page.locator('.home-nav span.flex-1').innerText()).toBe(new_name);
  42. // Reenable journal
  43. await page.click('#main-content-container')
  44. await page.keyboard.press('t')
  45. await page.keyboard.press('s')
  46. await page.click('a[data-id="features"]')
  47. await page.click('#settings div:nth-child(1) a')
  48. await page.click('[aria-label="Close"]')
  49. }
  50. test('page rename test', async ({ page }) => {
  51. // TODO: Fix commented out test. Started failing after https://github.com/logseq/logseq/pull/6945
  52. // await homepage_rename_test(page, "abcd", "a/b/c/d")
  53. await page_rename_test(page, "abcd", "a.b.c.d")
  54. await page_rename_test(page, "abcd", "a/b/c/d")
  55. })
  56. // TODO introduce more samples when #4722 is fixed
  57. test('page title property test', async ({ page }) => {
  58. // Edit Title Property and Double Enter (ETPDE)
  59. // exit editing via insert new block
  60. let rand = randomLowerString(10)
  61. let original_name = "etpde old" + rand
  62. let new_name = "etpde new" + rand
  63. await createPage(page, original_name)
  64. // add some spaces to test if it is trimmed
  65. await page.type(':nth-match(textarea, 1)', 'title:: ' + new_name + " ")
  66. await page.press(':nth-match(textarea, 1)', 'Enter') // DWIM property mode creates new line
  67. await page.press(':nth-match(textarea, 1)', 'Enter')
  68. expect(await page.innerText('.page-title .title')).toBe(new_name)
  69. // Edit Title Property and Esc (ETPE)
  70. // exit editing via moving out focus
  71. rand = randomLowerString(10)
  72. original_name = "etpe old " + rand
  73. new_name = "etpe new " + rand
  74. await createPage(page, original_name)
  75. await page.type(':nth-match(textarea, 1)', 'title:: ' + new_name)
  76. await page.press(':nth-match(textarea, 1)', 'Escape')
  77. expect(await page.innerText('.page-title .title')).toBe(new_name)
  78. })