From a3940acd10b8c246fae0c15cbac2f95a8232835d Mon Sep 17 00:00:00 2001 From: Shun Miyazawa Date: Wed, 7 Aug 2024 02:30:20 +0000 Subject: [PATCH] add playwright test --- apps/app/playwright/30-search/search.spec.ts | 182 ++++++++++++++++++- 1 file changed, 181 insertions(+), 1 deletion(-) diff --git a/apps/app/playwright/30-search/search.spec.ts b/apps/app/playwright/30-search/search.spec.ts index 4edc441afd1..18f716c865a 100644 --- a/apps/app/playwright/30-search/search.spec.ts +++ b/apps/app/playwright/30-search/search.spec.ts @@ -1,4 +1,4 @@ -import { test, expect } from '@playwright/test'; +import { test, expect, type Page } from '@playwright/test'; test('Search page with "q" param is successfully loaded', async({ page }) => { // Navigate to the search page with query parameters @@ -41,3 +41,183 @@ test('checkboxes behaviors', async({ page }) => { // Unclick the select all checkbox await page.getByTestId('cb-select').first().click({ force: true }); }); + + +test('successfully loads /_private-legacy-pages', async({ page }) => { + await page.goto('/_private-legacy-pages'); + + // Confirm search result elements are visible + await expect(page.locator('[data-testid="search-result-base"]')).toBeVisible(); + await expect(page.locator('[data-testid="search-result-private-legacy-pages"]')).toBeVisible(); +}); + +test('Search all pages by word', async({ page }) => { + await page.goto('/'); + await page.getByTestId('open-search-modal-button').click(); + await expect(page.getByTestId('search-modal')).toBeVisible(); + await page.locator('.form-control').fill('sand'); + await expect(page.locator('.search-menu-item').first()).toBeVisible(); +}); + +test.describe.serial('Search all pages', () => { + test('Search all pages by tag is successfully loaded', async({ page }) => { + await page.goto('/'); + + const tag = 'help'; + const searchText = `tag:${tag}`; + + // open Edit Tags Modal to add tag + await page.locator('.grw-side-contents-sticky-container').isVisible(); + await page.locator('#edit-tags-btn-wrapper-for-tooltip').click(); + await expect(page.locator('#edit-tag-modal')).toBeVisible(); + await page.locator('.rbt-input-main').fill(tag); + await page.locator('#tag-typeahead-asynctypeahead-item-0').click(); + await page.getByTestId('tag-edit-done-btn').click(); + + // Search + await page.getByTestId('open-search-modal-button').click(); + await expect(page.getByTestId('search-modal')).toBeVisible(); + await page.locator('.form-control').fill(searchText); + await page.getByTestId('search-all-menu-item').click(); + + // Confirm search result elements are visible + const searchResultList = page.getByTestId('search-result-list'); + await expect(searchResultList).toBeVisible(); + await expect(searchResultList.locator('li')).toHaveCount(1); + }); + + test('Successfully order page search results by tag', async({ page }) => { + await page.goto('/'); + + await page.locator('.grw-tag-simple-bar').locator('a').click(); + + expect(page.getByTestId('search-result-base')).toBeVisible(); + expect(page.getByTestId('search-result-list')).toBeVisible(); + expect(page.getByTestId('search-result-content')).toBeVisible(); + }); +}); + +test.describe('Sort with dropdown', () => { + test.beforeEach(async({ page }) => { + await page.goto('/_search?q=sand'); + + await expect(page.getByTestId('search-result-base')).toBeVisible(); + await expect(page.getByTestId('search-result-list')).toBeVisible(); + await expect(page.getByTestId('search-result-content')).toBeVisible(); + + // open sort dropdown + await page.locator('.search-control').locator('button').first().click(); + }); + + test('Open sort dropdown', async({ page }) => { + await expect(page.locator('.search-control .dropdown-menu.show')).toBeVisible(); + }); + + test('Sort by relevance', async({ page }) => { + const dropdownMenu = page.locator('.search-control .dropdown-menu.show'); + + await expect(dropdownMenu).toBeVisible(); + await dropdownMenu.locator('.dropdown-item').nth(0).click(); + + + await expect(page.getByTestId('search-result-base')).toBeVisible(); + await expect(page.getByTestId('search-result-list')).toBeVisible(); + await expect(page.getByTestId('search-result-content')).toBeVisible(); + }); + + test('Sort by creation date', async({ page }) => { + const dropdownMenu = page.locator('.search-control .dropdown-menu.show'); + + await expect(dropdownMenu).toBeVisible(); + await dropdownMenu.locator('.dropdown-item').nth(1).click(); + + + await expect(page.getByTestId('search-result-base')).toBeVisible(); + await expect(page.getByTestId('search-result-list')).toBeVisible(); + await expect(page.getByTestId('search-result-content')).toBeVisible(); + }); + + test('Sort by last update date', async({ page }) => { + const dropdownMenu = page.locator('.search-control .dropdown-menu.show'); + + await expect(dropdownMenu).toBeVisible(); + await dropdownMenu.locator('.dropdown-item').nth(2).click(); + + + await expect(page.getByTestId('search-result-base')).toBeVisible(); + await expect(page.getByTestId('search-result-list')).toBeVisible(); + await expect(page.getByTestId('search-result-content')).toBeVisible(); + }); +}); + +test.describe('Search and use', () => { + test.beforeEach(async({ page }) => { + await page.goto('/_search?q=labels alerts cards blocks'); + + await expect(page.getByTestId('search-result-base')).toBeVisible(); + await expect(page.getByTestId('search-result-list')).toBeVisible(); + await expect(page.getByTestId('search-result-content')).toBeVisible(); + + await page.getByTestId('page-list-item-L').first().getByTestId('open-page-item-control-btn').click(); + await expect(page.locator('.dropdown-menu.show')).toBeVisible(); + }); + + test('Successfully the dropdown is opened', async({ page }) => { + await expect(page.locator('.dropdown-menu.show')).toBeVisible(); + }); + + test('Successfully add bookmark', async({ page }) => { + const dropdonwMenu = page.locator('.dropdown-menu.show'); + + await expect(dropdonwMenu).toBeVisible(); + + // Add bookmark + await dropdonwMenu.getByTestId('add-bookmark-btn').click(); + + await expect(page.getByTestId('search-result-content').locator('.btn-bookmark.active').first()).toBeVisible(); + }); + + test('Successfully open duplicate modal', async({ page }) => { + const dropdonwMenu = page.locator('.dropdown-menu.show'); + + await expect(dropdonwMenu).toBeVisible(); + + await dropdonwMenu.getByTestId('open-page-duplicate-modal-btn').click(); + + await expect(page.getByTestId('page-duplicate-modal')).toBeVisible(); + }); + + test('Successfully open move/rename modal', async({ page }) => { + const dropdonwMenu = page.locator('.dropdown-menu.show'); + + await expect(dropdonwMenu).toBeVisible(); + + await dropdonwMenu.getByTestId('rename-page-btn').click(); + + await expect(page.getByTestId('page-rename-modal')).toBeVisible(); + }); + + test('Successfully open delete modal', async({ page }) => { + const dropdonwMenu = page.locator('.dropdown-menu.show'); + + await expect(dropdonwMenu).toBeVisible(); + + await dropdonwMenu.getByTestId('open-page-delete-modal-btn').click(); + + await expect(page.getByTestId('page-delete-modal')).toBeVisible(); + }); +}); + +test('Search current tree by word is successfully loaded', async({ page }) => { + await page.goto('/'); + const searchText = 'GROWI'; + + await page.getByTestId('open-search-modal-button').click(); + await expect(page.getByTestId('search-modal')).toBeVisible(); + await page.locator('.form-control').fill(searchText); + await page.getByTestId('search-prefix-menu-item').click(); + + await expect(page.getByTestId('search-result-base')).toBeVisible(); + await expect(page.getByTestId('search-result-list')).toBeVisible(); + await expect(page.getByTestId('search-result-content')).toBeVisible(); +});