mirror of https://github.com/logseq/logseq
test(e2e): alias test robustness 2
parent
7efa4d8da6
commit
a84a8028bd
|
@ -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
|
||||||
|
|
|
@ -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')
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
})
|
})
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue