From a84a8028bd031811163f8a41899e86cbf81ae127 Mon Sep 17 00:00:00 2001 From: Junyi Du Date: Thu, 1 Dec 2022 15:19:55 +0800 Subject: [PATCH] test(e2e): alias test robustness 2 --- .github/workflows/build.yml | 12 ++---------- e2e-tests/editor.spec.ts | 3 ++- e2e-tests/page-search.spec.ts | 24 ++++++++++++++---------- e2e-tests/sidebar.spec.ts | 1 + e2e-tests/utils.ts | 9 ++++++--- 5 files changed, 25 insertions(+), 24 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b1feaf1b7..4c951a825 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -181,14 +181,6 @@ jobs: DEBUG: "pw:api" 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 run: xvfb-run -- npx playwright test --reporter github --shard=2/2 env: @@ -196,10 +188,10 @@ jobs: DEBUG: "pw:api" RELEASE: true # skip dev only test - - name: Save test artifacts - 2/2 + - name: Save test artifacts if: ${{ failure() }} uses: actions/upload-artifact@v3 with: - name: e2e-test-report-2-of-2 + name: e2e-test-report path: e2e-dump/* retention-days: 1 diff --git a/e2e-tests/editor.spec.ts b/e2e-tests/editor.spec.ts index 3f7620e9d..61f419300 100644 --- a/e2e-tests/editor.spec.ts +++ b/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 }) => { - const delay = 100 + const delay = 300 await createRandomPage(page) 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 page.click('a.block-control + a') await page.waitForNavigation() + await page.waitForTimeout(delay * 3) // select the block that has the soft return await page.keyboard.press('ArrowDown') diff --git a/e2e-tests/page-search.spec.ts b/e2e-tests/page-search.spec.ts index 42faf4286..5f1a9bbb7 100644 --- a/e2e-tests/page-search.spec.ts +++ b/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[] ) { + await createRandomPage(page) + const rand = randomString(10) let target_name = page_name + ' target ' + 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_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 lastBlock(page) @@ -114,6 +113,7 @@ async function alias_test( block: Block, page: Page, page_name: string, search_k page.keyboard.press(hotkeyBack) await page.waitForNavigation() + await block.escapeEditing() // create alias ref in origin Page await block.activeEditing(0) await block.enterNext() @@ -123,6 +123,7 @@ async function alias_test( block: Block, page: Page, page_name: string, search_k page.keyboard.press(hotkeyOpenLink) await page.waitForNavigation() + await block.escapeEditing() // shortcut opening test 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) await page.waitForNavigation() + await block.escapeEditing() // pressing enter on alias opening test await block.activeEditing(1) 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') page.press('textarea >> nth=0', 'Enter') await page.waitForNavigation() + await block.escapeEditing() await block.activeEditing(2) expect(await page.inputValue('textarea >> nth=0')).toBe(alias_test_content_2) await newInnerBlock(page) @@ -147,6 +150,7 @@ async function alias_test( block: Block, page: Page, page_name: string, search_k page.keyboard.press(hotkeyBack) await page.waitForNavigation() + await block.escapeEditing() // clicking alias ref opening test await block.activeEditing(1) 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.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) 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) page.keyboard.press("Enter") 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) await page.click('#search-button') 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) page.click(":nth-match(.search-result, 3)") 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) } diff --git a/e2e-tests/sidebar.spec.ts b/e2e-tests/sidebar.spec.ts index f5539ee9d..62cf720e3 100644 --- a/e2e-tests/sidebar.spec.ts +++ b/e2e-tests/sidebar.spec.ts @@ -49,6 +49,7 @@ test('recent is updated #4320', async ({ page }) => { // then jump back await searchAndJumpToPage(page, page1) + await page.waitForTimeout(500) expect(await firstRecent.textContent()).toContain(page1) expect(await secondRecent.textContent()).toContain(page2) }) diff --git a/e2e-tests/utils.ts b/e2e-tests/utils.ts index 4cc7099c8..9a605ec9f 100644 --- a/e2e-tests/utils.ts +++ b/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) { 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.click(`[data-page-ref="${pageTitle}"]`) + page.click(`[data-page-ref="${pageTitle}"]`) + await page.waitForNavigation() return pageTitle; } @@ -213,7 +214,9 @@ export async function loadLocalGraph(page: Page, path: string): Promise { // close it first so it doesn't cover up the UI let locator = page.locator('.notification-close-button').first() 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) expect(locator.isVisible()).resolves.toBe(false)