page-rename.spec.ts 3.8 KB

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