Преглед на файлове

test(e2e): alias test robustness 2

Junyi Du преди 2 години
родител
ревизия
a84a8028bd
променени са 5 файла, в които са добавени 25 реда и са изтрити 24 реда
  1. 2 10
      .github/workflows/build.yml
  2. 2 1
      e2e-tests/editor.spec.ts
  3. 14 10
      e2e-tests/page-search.spec.ts
  4. 1 0
      e2e-tests/sidebar.spec.ts
  5. 6 3
      e2e-tests/utils.ts

+ 2 - 10
.github/workflows/build.yml

@@ -181,14 +181,6 @@ jobs:
           DEBUG: "pw:api"
           DEBUG: "pw:api"
           RELEASE: true # skip dev only test
           RELEASE: true # skip dev only test
 
 
-      - name: Save test artifacts - 1/2
-        if: ${{ failure() }}
-        uses: actions/upload-artifact@v3
-        with:
-          name: e2e-test-report-1-of-2
-          path: e2e-dump/*
-          retention-days: 1
-
       - name: Run Playwright test - 2/2
       - name: Run Playwright test - 2/2
         run: xvfb-run -- npx playwright test --reporter github --shard=2/2
         run: xvfb-run -- npx playwright test --reporter github --shard=2/2
         env:
         env:
@@ -196,10 +188,10 @@ jobs:
           DEBUG: "pw:api"
           DEBUG: "pw:api"
           RELEASE: true # skip dev only test
           RELEASE: true # skip dev only test
 
 
-      - name: Save test artifacts - 2/2
+      - name: Save test artifacts
         if: ${{ failure() }}
         if: ${{ failure() }}
         uses: actions/upload-artifact@v3
         uses: actions/upload-artifact@v3
         with:
         with:
-          name: e2e-test-report-2-of-2
+          name: e2e-test-report
           path: e2e-dump/*
           path: e2e-dump/*
           retention-days: 1
           retention-days: 1

+ 2 - 1
e2e-tests/editor.spec.ts

@@ -523,7 +523,7 @@ test('press escape when link/image dialog is open, should restore focus to input
 })
 })
 
 
 test('should show text after soft return when node is collapsed #5074', async ({ page, block }) => {
 test('should show text after soft return when node is collapsed #5074', async ({ page, block }) => {
-  const delay = 100
+  const delay = 300
   await createRandomPage(page)
   await createRandomPage(page)
 
 
   await page.type('textarea >> nth=0', 'Before soft return', { delay: 10 })
   await page.type('textarea >> nth=0', 'Before soft return', { delay: 10 })
@@ -549,6 +549,7 @@ test('should show text after soft return when node is collapsed #5074', async ({
   // zoom into the block
   // zoom into the block
   page.click('a.block-control + a')
   page.click('a.block-control + a')
   await page.waitForNavigation()
   await page.waitForNavigation()
+  await page.waitForTimeout(delay * 3)
 
 
   // select the block that has the soft return
   // select the block that has the soft return
   await page.keyboard.press('ArrowDown')
   await page.keyboard.press('ArrowDown')

+ 14 - 10
e2e-tests/page-search.spec.ts

@@ -83,6 +83,8 @@ test('Search CJK', async ({ page, block }) => {
 })
 })
 
 
 async function alias_test( block: Block, page: Page, page_name: string, search_kws: string[] ) {
 async function alias_test( block: Block, page: Page, page_name: string, search_kws: string[] ) {
+  await createRandomPage(page)
+
   const rand = randomString(10)
   const rand = randomString(10)
   let target_name = page_name + ' target ' + rand
   let target_name = page_name + ' target ' + rand
   let alias_name = page_name + ' alias ' + rand
   let alias_name = page_name + ' alias ' + rand
@@ -90,10 +92,7 @@ async function alias_test( block: Block, page: Page, page_name: string, search_k
   let alias_test_content_2 = randomString(20)
   let alias_test_content_2 = randomString(20)
   let alias_test_content_3 = randomString(20)
   let alias_test_content_3 = randomString(20)
 
 
-  // shortcut opening test
-  let parent_title = await createRandomPage(page)
-
-  await page.fill('textarea >> nth=0', '[[' + target_name + ']]')
+  await page.type('textarea >> nth=0', '[[' + target_name)
   await page.keyboard.press(hotkeyOpenLink)
   await page.keyboard.press(hotkeyOpenLink)
 
 
   await lastBlock(page)
   await lastBlock(page)
@@ -114,6 +113,7 @@ async function alias_test( block: Block, page: Page, page_name: string, search_k
   page.keyboard.press(hotkeyBack)
   page.keyboard.press(hotkeyBack)
 
 
   await page.waitForNavigation()
   await page.waitForNavigation()
+  await block.escapeEditing()
   // create alias ref in origin Page
   // create alias ref in origin Page
   await block.activeEditing(0)
   await block.activeEditing(0)
   await block.enterNext()
   await block.enterNext()
@@ -123,6 +123,7 @@ async function alias_test( block: Block, page: Page, page_name: string, search_k
 
 
   page.keyboard.press(hotkeyOpenLink)
   page.keyboard.press(hotkeyOpenLink)
   await page.waitForNavigation()
   await page.waitForNavigation()
+  await block.escapeEditing()
 
 
   // shortcut opening test
   // shortcut opening test
   await block.activeEditing(1)
   await block.activeEditing(1)
@@ -133,6 +134,7 @@ async function alias_test( block: Block, page: Page, page_name: string, search_k
   page.keyboard.press(hotkeyBack)
   page.keyboard.press(hotkeyBack)
 
 
   await page.waitForNavigation()
   await page.waitForNavigation()
+  await block.escapeEditing()
   // pressing enter on alias opening test
   // pressing enter on alias opening test
   await block.activeEditing(1)
   await block.activeEditing(1)
   await page.press('textarea >> nth=0', 'ArrowLeft')
   await page.press('textarea >> nth=0', 'ArrowLeft')
@@ -140,6 +142,7 @@ async function alias_test( block: Block, page: Page, page_name: string, search_k
   await page.press('textarea >> nth=0', 'ArrowLeft')
   await page.press('textarea >> nth=0', 'ArrowLeft')
   page.press('textarea >> nth=0', 'Enter')
   page.press('textarea >> nth=0', 'Enter')
   await page.waitForNavigation()
   await page.waitForNavigation()
+  await block.escapeEditing()
   await block.activeEditing(2)
   await block.activeEditing(2)
   expect(await page.inputValue('textarea >> nth=0')).toBe(alias_test_content_2)
   expect(await page.inputValue('textarea >> nth=0')).toBe(alias_test_content_2)
   await newInnerBlock(page)
   await newInnerBlock(page)
@@ -147,6 +150,7 @@ async function alias_test( block: Block, page: Page, page_name: string, search_k
   page.keyboard.press(hotkeyBack)
   page.keyboard.press(hotkeyBack)
   
   
   await page.waitForNavigation()
   await page.waitForNavigation()
+  await block.escapeEditing()
   // clicking alias ref opening test
   // clicking alias ref opening test
   await block.activeEditing(1)
   await block.activeEditing(1)
   await block.enterNext()
   await block.enterNext()
@@ -163,7 +167,7 @@ async function alias_test( block: Block, page: Page, page_name: string, search_k
 
 
     await page.click('#search-button')
     await page.click('#search-button')
     await page.waitForSelector('[placeholder="Search or create page"]')
     await page.waitForSelector('[placeholder="Search or create page"]')
-    await page.fill('[placeholder="Search or create page"]', kw_name)
+    await page.type('[placeholder="Search or create page"]', kw_name)
     await page.waitForTimeout(500)
     await page.waitForTimeout(500)
 
 
     const results = await page.$$('#ui__ac-inner>div')
     const results = await page.$$('#ui__ac-inner>div')
@@ -178,18 +182,18 @@ async function alias_test( block: Block, page: Page, page_name: string, search_k
     // test search entering (page)
     // test search entering (page)
     page.keyboard.press("Enter")
     page.keyboard.press("Enter")
     await page.waitForNavigation()
     await page.waitForNavigation()
-    await lastBlock(page)
-    expect(await page.inputValue('textarea >> nth=0')).toBe(alias_test_content_3)
+    await page.waitForSelector('.ls-block span.inline')
+    expect(await page.locator('.ls-block span.inline >> nth=2').innerHTML()).toBe(alias_test_content_3)
 
 
     // test search clicking (block)
     // test search clicking (block)
     await page.click('#search-button')
     await page.click('#search-button')
     await page.waitForSelector('[placeholder="Search or create page"]')
     await page.waitForSelector('[placeholder="Search or create page"]')
-    await page.fill('[placeholder="Search or create page"]', kw_name)
+    await page.type('[placeholder="Search or create page"]', kw_name)
     await page.waitForTimeout(500)
     await page.waitForTimeout(500)
     page.click(":nth-match(.search-result, 3)")
     page.click(":nth-match(.search-result, 3)")
     await page.waitForNavigation()
     await page.waitForNavigation()
-    await block.activeEditing(1)
-    expect(await page.inputValue('textarea >> nth=0')).toBe("[[" + alias_name + "]]")
+    await page.waitForSelector('.selected a.page-ref')
+    expect(await page.locator('.selected a.page-ref').innerHTML()).toBe(alias_name)
     await page.keyboard.press(hotkeyBack)
     await page.keyboard.press(hotkeyBack)
   }
   }
 
 

+ 1 - 0
e2e-tests/sidebar.spec.ts

@@ -49,6 +49,7 @@ test('recent is updated #4320', async ({ page }) => {
 
 
   // then jump back
   // then jump back
   await searchAndJumpToPage(page, page1)
   await searchAndJumpToPage(page, page1)
+  await page.waitForTimeout(500)
   expect(await firstRecent.textContent()).toContain(page1)
   expect(await firstRecent.textContent()).toContain(page1)
   expect(await secondRecent.textContent()).toContain(page2)
   expect(await secondRecent.textContent()).toContain(page2)
 })
 })

+ 6 - 3
e2e-tests/utils.ts

@@ -65,9 +65,10 @@ export async function createPage(page: Page, page_name: string) {// Click #searc
 
 
 export async function searchAndJumpToPage(page: Page, pageTitle: string) {
 export async function searchAndJumpToPage(page: Page, pageTitle: string) {
   await page.click('#search-button')
   await page.click('#search-button')
-  await page.fill('[placeholder="Search or create page"]', pageTitle)
+  await page.type('[placeholder="Search or create page"]', pageTitle)
   await page.waitForSelector(`[data-page-ref="${pageTitle}"]`, { state: 'visible' })
   await page.waitForSelector(`[data-page-ref="${pageTitle}"]`, { state: 'visible' })
-  await page.click(`[data-page-ref="${pageTitle}"]`)
+  page.click(`[data-page-ref="${pageTitle}"]`)
+  await page.waitForNavigation()
   return pageTitle;
   return pageTitle;
 }
 }
 
 
@@ -213,7 +214,9 @@ export async function loadLocalGraph(page: Page, path: string): Promise<void> {
   // close it first so it doesn't cover up the UI
   // close it first so it doesn't cover up the UI
   let locator = page.locator('.notification-close-button').first()
   let locator = page.locator('.notification-close-button').first()
   while (await locator?.isVisible()) {
   while (await locator?.isVisible()) {
-    await locator.click()
+    try { // don't fail if unable to click (likely disappeared already)
+      await locator.click()
+    } catch (error) {}
     await page.waitForTimeout(250)
     await page.waitForTimeout(250)
 
 
     expect(locator.isVisible()).resolves.toBe(false)
     expect(locator.isVisible()).resolves.toBe(false)