test(e2e): alias test robustness 2

pull/7394/head^2
Junyi Du 2022-12-01 15:19:55 +08:00
parent 7efa4d8da6
commit a84a8028bd
5 changed files with 25 additions and 24 deletions

View File

@ -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

View File

@ -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')

View File

@ -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 await page.type('textarea >> nth=0', '[[' + target_name)
let parent_title = await createRandomPage(page)
await page.fill('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) await page.waitForSelector('.ls-block span.inline')
expect(await page.inputValue('textarea >> nth=0')).toBe(alias_test_content_3) 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) await page.waitForSelector('.selected a.page-ref')
expect(await page.inputValue('textarea >> nth=0')).toBe("[[" + alias_name + "]]") expect(await page.locator('.selected a.page-ref').innerHTML()).toBe(alias_name)
await page.keyboard.press(hotkeyBack) await page.keyboard.press(hotkeyBack)
} }

View File

@ -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)
}) })

View File

@ -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()) {
try { // don't fail if unable to click (likely disappeared already)
await locator.click() 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)