瀏覽代碼

test(e2e): add test for renaming pages

Junyi Du 3 年之前
父節點
當前提交
bb0df09cd9
共有 4 個文件被更改,包括 70 次插入23 次删除
  1. 26 0
      e2e-tests/editor.spec.ts
  2. 31 0
      e2e-tests/page-rename.spec.ts
  3. 1 23
      e2e-tests/page-search.spec.ts
  4. 12 0
      e2e-tests/utils.ts

+ 26 - 0
e2e-tests/editor.spec.ts

@@ -0,0 +1,26 @@
+import { expect } from '@playwright/test'
+import { test } from './fixtures'
+import { createRandomPage } from './utils'
+
+test('hashtag and quare brackets in same line #4178', async ({ page }) => {
+    await createRandomPage(page)
+  
+    await page.type(':nth-match(textarea, 1)', '#foo bar')
+    await page.press(':nth-match(textarea, 1)', 'Enter')
+    await page.type(':nth-match(textarea, 1)', 'bar [[blah]]')
+    for (let i = 0; i < 12; i++) {
+      await page.press(':nth-match(textarea, 1)', 'ArrowLeft')
+    }
+    await page.type(':nth-match(textarea, 1)', ' ')
+    await page.press(':nth-match(textarea, 1)', 'ArrowLeft')
+  
+    await page.type(':nth-match(textarea, 1)', '#')
+    await page.waitForSelector('text="Search for a page"', { 'state': 'visible' })
+  
+    await page.type(':nth-match(textarea, 1)', 'fo')
+  
+    await page.click('.absolute >> text=' + 'foo')
+  
+    expect(await page.inputValue(':nth-match(textarea, 1)')).toBe('#foo bar [[blah]]')
+  })
+  

+ 31 - 0
e2e-tests/page-rename.spec.ts

@@ -0,0 +1,31 @@
+import { expect } from '@playwright/test'
+import { test } from './fixtures'
+import { IsMac, createPage, newBlock, newInnerBlock, randomString, lastInnerBlock } from './utils'
+
+/***
+ * Test rename feature
+ ***/
+
+async function page_rename_test(page, original_page_name: string, new_page_name: string) {
+  let selectAll = 'Control+a'
+  if (IsMac) {
+    selectAll = 'Meta+a'
+  }
+
+  const rand = randomString(10)
+  let original_name = original_page_name + rand
+  let new_name = new_page_name + rand
+
+  await createPage(page, original_name)
+  await page.click('.page-title .title')
+  await page.keyboard.press(selectAll)
+  await page.type('.title input', new_name)
+  await page.keyboard.press('Enter')
+  await page.click('.ui__confirm-modal button')
+  expect(await page.innerText('.page-title .title')).toBe(new_name)
+}
+
+test('page rename test', async ({ page }) => {
+  await page_rename_test(page, "abcd", "a.b.c.d")
+  await page_rename_test(page, "abcd", "a/b/c/d")
+})

+ 1 - 23
e2e-tests/page-refs.spec.ts → e2e-tests/page-search.spec.ts

@@ -118,26 +118,4 @@ async function alias_test(page, page_name: string, search_kws: string[]) {
 
 
 test('page diacritic alias', async ({ page }) => {
 test('page diacritic alias', async ({ page }) => {
   await alias_test(page, "ü", ["ü", "ü", "Ü"])
   await alias_test(page, "ü", ["ü", "ü", "Ü"])
-})
-
-test('hashtag and quare brackets in same line #4178', async ({ page }) => {
-  await createRandomPage(page)
-
-  await page.type(':nth-match(textarea, 1)', '#foo bar')
-  await page.press(':nth-match(textarea, 1)', 'Enter')
-  await page.type(':nth-match(textarea, 1)', 'bar [[blah]]')
-  for (let i = 0; i < 12; i++) {
-    await page.press(':nth-match(textarea, 1)', 'ArrowLeft')
-  }
-  await page.type(':nth-match(textarea, 1)', ' ')
-  await page.press(':nth-match(textarea, 1)', 'ArrowLeft')
-
-  await page.type(':nth-match(textarea, 1)', '#')
-  await page.waitForSelector('text="Search for a page"', { 'state': 'visible' })
-
-  await page.type(':nth-match(textarea, 1)', 'fo')
-
-  await page.click('.absolute >> text=' + 'foo')
-
-  expect(await page.inputValue(':nth-match(textarea, 1)')).toBe('#foo bar [[blah]]')
-})
+})

+ 12 - 0
e2e-tests/utils.ts

@@ -33,6 +33,18 @@ export async function createRandomPage(page: Page) {
   return randomTitle;
   return randomTitle;
 }
 }
 
 
+export async function createPage(page: Page, page_name: string) {// Click #search-button
+  await page.click('#search-button')
+  // Fill [placeholder="Search or create page"]
+  await page.fill('[placeholder="Search or create page"]', page_name)
+  // Click text=/.*New page: "new page".*/
+  await page.click('text=/.*New page: ".*/')
+  // wait for textarea of first block
+  await page.waitForSelector(':nth-match(textarea, 1)', { state: 'visible' })
+
+  return page_name;
+}
+
 /**
 /**
 * Locate the last block in the inner editor
 * Locate the last block in the inner editor
 * @param page The Playwright Page object.
 * @param page The Playwright Page object.