test(e2e): examinate search results

pull/3880/head^2
Junyi Du 2022-01-12 12:31:58 +08:00 committed by Tienson Qin
parent 6c686c4ead
commit 9270c79078
2 changed files with 39 additions and 10 deletions

View File

@ -2,6 +2,12 @@ import { expect } from '@playwright/test'
import { test } from './fixtures' import { test } from './fixtures'
import { IsMac, createRandomPage, newBlock, newInnerBlock, randomString, lastInnerBlock } from './utils' import { IsMac, createRandomPage, newBlock, newInnerBlock, randomString, lastInnerBlock } from './utils'
/***
* Test alias features
* Test search refering features
* Consider diacritics
***/
async function alias_test (page, page_name: string){ async function alias_test (page, page_name: string){
let hotkeyOpenLink = 'Control+o' let hotkeyOpenLink = 'Control+o'
let hotkeyBack = 'Control+[' let hotkeyBack = 'Control+['
@ -18,7 +24,7 @@ async function alias_test (page, page_name: string){
let alias_test_content_3 = randomString(20) let alias_test_content_3 = randomString(20)
// shortcut opening test // shortcut opening test
await createRandomPage(page) let parent_title = await createRandomPage(page)
await page.fill(':nth-match(textarea, 1)', '[[' + target_name + ']]') await page.fill(':nth-match(textarea, 1)', '[[' + target_name + ']]')
await page.keyboard.press(hotkeyOpenLink) await page.keyboard.press(hotkeyOpenLink)
@ -61,16 +67,39 @@ async function alias_test (page, page_name: string){
// TODO: test alias from graph clicking // TODO: test alias from graph clicking
// test alias from search clicking // test alias from search
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"]', alias_name) await page.fill('[placeholder="Search or create page"]', alias_name)
await page.waitForTimeout(500) await page.waitForTimeout(500)
const results = await page.$$('#ui__ac-inner .block') const results = await page.$$('#ui__ac-inner .block')
page.pause() expect(results.length).toEqual(3) // page + block + alias property
expect(results.length).toEqual(3) // 2 blocks + 1 page await page.pause()
await page.keyboard.press("Escape")
// test search results
expect(await results[0].innerText()).toContain("Alias -> " + target_name)
expect(await results[0].innerText()).toContain(alias_name)
expect(await results[1].innerText()).toContain(parent_title)
expect(await results[1].innerText()).toContain("[[" + alias_name + "]]")
expect(await results[2].innerText()).toContain(target_name)
expect(await results[2].innerText()).toContain("alias:: [[" + alias_name + "]]")
// test search entering (page)
await page.keyboard.press("Enter")
await lastInnerBlock(page)
expect(await page.inputValue(':nth-match(textarea, 1)')).toBe(alias_test_content_3)
await page.keyboard.press(hotkeyBack)
// 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"]', alias_name)
await page.waitForTimeout(500)
await page.click(":nth-match(.menu-link, 1)")
await lastInnerBlock(page)
expect(await page.inputValue(':nth-match(textarea, 1)')).toBe("[[" + alias_name + "]]")
await page.keyboard.press(hotkeyBack)
} }
test('page alias', async ({ page }) => { test('page alias', async ({ page }) => {

View File

@ -252,7 +252,8 @@
{:on-chosen (fn [{:keys [type data]}] {:on-chosen (fn [{:keys [type data]}]
(case type (case type
:page :page
(route/redirect-to-page! data) (do (route/redirect-to-page! data)
(state/close-modal!))
:search :search
(let [q data] (let [q data]
(state/set-q! q) (state/set-q! q)
@ -266,8 +267,7 @@
(search-handler/search (state/get-current-repo) q opts) (search-handler/search (state/get-current-repo) q opts)
(search-handler/search (state/get-current-repo) q)))) (search-handler/search (state/get-current-repo) q))))
nil) nil))
(state/close-modal!))
:on-shift-chosen (fn [{:keys [type data]}] :on-shift-chosen (fn [{:keys [type data]}]
(case type (case type
:page :page
@ -286,7 +286,7 @@
:search [:div.flex-row.flex.search-item.font-medium :search [:div.flex-row.flex.search-item.font-medium
svg/search svg/search
[:span.ml-2 data]] [:span.ml-2 data]]
:page (let [original-name (model/get-page-original-name data)] :page (when-let [original-name (model/get-page-original-name data)] ;; might be block reference
(search-result-item "Page" original-name)) (search-result-item "Page" original-name))
nil))}))]) nil))}))])