search.spect.ts 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. import { test, expect } from '@playwright/test';
  2. test('Search page with "q" param is successfully loaded', async({ page }) => {
  3. // Navigate to the search page with query parameters
  4. await page.goto('/_search?q=alerts');
  5. // Confirm search result elements are visible
  6. await expect(page.getByTestId('search-result-base')).toBeVisible();
  7. await expect(page.getByTestId('search-result-list')).toBeVisible();
  8. await expect(page.getByTestId('search-result-content')).toBeVisible();
  9. await expect(page.locator('.wiki')).toBeVisible();
  10. });
  11. test('checkboxes behaviors', async({ page }) => {
  12. // Navigate to the search page with query parameters
  13. await page.goto('/_search?q=alerts');
  14. // Confirm search result elements are visible
  15. await expect(page.getByTestId('search-result-base')).toBeVisible();
  16. await expect(page.getByTestId('search-result-list')).toBeVisible();
  17. await expect(page.getByTestId('search-result-content')).toBeVisible();
  18. await expect(page.locator('.wiki')).toBeVisible();
  19. // Click the first checkbox
  20. await page.getByTestId('cb-select').first().click({ force: true });
  21. // Unclick the first checkbox
  22. await page.getByTestId('cb-select').first().click({ force: true });
  23. // Click the select all checkbox
  24. await page.getByTestId('delete-control-button').first().click({ force: true });
  25. await page.getByTestId('cb-select-all').click({ force: true });
  26. // Unclick the first checkbox after selecting all
  27. await page.getByTestId('cb-select').first().click({ force: true });
  28. // Click the first checkbox again
  29. await page.getByTestId('cb-select').first().click({ force: true });
  30. // Unclick the select all checkbox
  31. await page.getByTestId('cb-select').first().click({ force: true });
  32. });
  33. test('successfully loads /_private-legacy-pages', async({ page }) => {
  34. await page.goto('/_private-legacy-pages');
  35. // Confirm search result elements are visible
  36. await expect(page.locator('[data-testid="search-result-base"]')).toBeVisible();
  37. await expect(page.locator('[data-testid="search-result-private-legacy-pages"]')).toBeVisible();
  38. });
  39. test('Search all pages by word', async({ page }) => {
  40. await page.goto('/');
  41. await page.getByTestId('open-search-modal-button').click();
  42. await expect(page.getByTestId('search-modal')).toBeVisible();
  43. await page.locator('.form-control').fill('sand');
  44. await expect(page.locator('.search-menu-item').first()).toBeVisible();
  45. });
  46. test.describe.serial('Search all pages', () => {
  47. const tag = 'help';
  48. const searchText = `tag:${tag}`;
  49. test('Successfully created tags', async({ page }) => {
  50. await page.goto('/');
  51. // open Edit Tags Modal to add tag
  52. await page.locator('.grw-side-contents-sticky-container').isVisible();
  53. await page.locator('#edit-tags-btn-wrapper-for-tooltip').click();
  54. await expect(page.locator('#edit-tag-modal')).toBeVisible();
  55. await page.locator('.rbt-input-main').fill(tag);
  56. await page.locator('#tag-typeahead-asynctypeahead-item-0').click();
  57. await page.getByTestId('tag-edit-done-btn').click();
  58. });
  59. test('Search all pages by tag is successfully loaded', async({ page }) => {
  60. await page.goto('/');
  61. // Search
  62. await page.getByTestId('open-search-modal-button').click();
  63. await expect(page.getByTestId('search-modal')).toBeVisible();
  64. await page.locator('.form-control').fill(searchText);
  65. await page.getByTestId('search-all-menu-item').click();
  66. // Confirm search result elements are visible
  67. const searchResultList = page.getByTestId('search-result-list');
  68. await expect(searchResultList).toBeVisible();
  69. await expect(searchResultList.locator('li')).toHaveCount(1);
  70. });
  71. test('Successfully order page search results by tag', async({ page }) => {
  72. await page.goto('/');
  73. await page.locator('.grw-tag-simple-bar').locator('a').click();
  74. expect(page.getByTestId('search-result-base')).toBeVisible();
  75. expect(page.getByTestId('search-result-list')).toBeVisible();
  76. expect(page.getByTestId('search-result-content')).toBeVisible();
  77. });
  78. });
  79. test.describe('Sort with dropdown', () => {
  80. test.beforeEach(async({ page }) => {
  81. await page.goto('/_search?q=sand');
  82. await expect(page.getByTestId('search-result-base')).toBeVisible();
  83. await expect(page.getByTestId('search-result-list')).toBeVisible();
  84. await expect(page.getByTestId('search-result-content')).toBeVisible();
  85. // open sort dropdown
  86. await page.locator('.search-control').locator('button').first().click();
  87. });
  88. test('Open sort dropdown', async({ page }) => {
  89. await expect(page.locator('.search-control .dropdown-menu.show')).toBeVisible();
  90. });
  91. test('Sort by relevance', async({ page }) => {
  92. const dropdownMenu = page.locator('.search-control .dropdown-menu.show');
  93. await expect(dropdownMenu).toBeVisible();
  94. await dropdownMenu.locator('.dropdown-item').nth(0).click();
  95. await expect(page.getByTestId('search-result-base')).toBeVisible();
  96. await expect(page.getByTestId('search-result-list')).toBeVisible();
  97. await expect(page.getByTestId('search-result-content')).toBeVisible();
  98. });
  99. test('Sort by creation date', async({ page }) => {
  100. const dropdownMenu = page.locator('.search-control .dropdown-menu.show');
  101. await expect(dropdownMenu).toBeVisible();
  102. await dropdownMenu.locator('.dropdown-item').nth(1).click();
  103. await expect(page.getByTestId('search-result-base')).toBeVisible();
  104. await expect(page.getByTestId('search-result-list')).toBeVisible();
  105. await expect(page.getByTestId('search-result-content')).toBeVisible();
  106. });
  107. test('Sort by last update date', async({ page }) => {
  108. const dropdownMenu = page.locator('.search-control .dropdown-menu.show');
  109. await expect(dropdownMenu).toBeVisible();
  110. await dropdownMenu.locator('.dropdown-item').nth(2).click();
  111. await expect(page.getByTestId('search-result-base')).toBeVisible();
  112. await expect(page.getByTestId('search-result-list')).toBeVisible();
  113. await expect(page.getByTestId('search-result-content')).toBeVisible();
  114. });
  115. });
  116. test.describe('Search and use', () => {
  117. test.beforeEach(async({ page }) => {
  118. await page.goto('/_search?q=alerts');
  119. await expect(page.getByTestId('search-result-base')).toBeVisible();
  120. await expect(page.getByTestId('search-result-list')).toBeVisible();
  121. await expect(page.getByTestId('search-result-content')).toBeVisible();
  122. await page.getByTestId('page-list-item-L').first().getByTestId('open-page-item-control-btn').click();
  123. await expect(page.locator('.dropdown-menu.show')).toBeVisible();
  124. });
  125. test('Successfully the dropdown is opened', async({ page }) => {
  126. await expect(page.locator('.dropdown-menu.show')).toBeVisible();
  127. });
  128. test('Successfully add bookmark', async({ page }) => {
  129. const dropdonwMenu = page.locator('.dropdown-menu.show');
  130. await expect(dropdonwMenu).toBeVisible();
  131. // Add bookmark
  132. await dropdonwMenu.getByTestId('add-bookmark-btn').click();
  133. await expect(page.getByTestId('search-result-content').locator('.btn-bookmark.active').first()).toBeVisible();
  134. });
  135. test('Successfully open duplicate modal', async({ page }) => {
  136. const dropdonwMenu = page.locator('.dropdown-menu.show');
  137. await expect(dropdonwMenu).toBeVisible();
  138. await dropdonwMenu.getByTestId('open-page-duplicate-modal-btn').click();
  139. await expect(page.getByTestId('page-duplicate-modal')).toBeVisible();
  140. });
  141. test('Successfully open move/rename modal', async({ page }) => {
  142. const dropdonwMenu = page.locator('.dropdown-menu.show');
  143. await expect(dropdonwMenu).toBeVisible();
  144. await dropdonwMenu.getByTestId('rename-page-btn').click();
  145. await expect(page.getByTestId('page-rename-modal')).toBeVisible();
  146. });
  147. test('Successfully open delete modal', async({ page }) => {
  148. const dropdonwMenu = page.locator('.dropdown-menu.show');
  149. await expect(dropdonwMenu).toBeVisible();
  150. await dropdonwMenu.getByTestId('open-page-delete-modal-btn').click();
  151. await expect(page.getByTestId('page-delete-modal')).toBeVisible();
  152. });
  153. });
  154. test('Search current tree by word is successfully loaded', async({ page }) => {
  155. await page.goto('/');
  156. const searchText = 'GROWI';
  157. await page.getByTestId('open-search-modal-button').click();
  158. await expect(page.getByTestId('search-modal')).toBeVisible();
  159. await page.locator('.form-control').fill(searchText);
  160. await page.getByTestId('search-prefix-menu-item').click();
  161. await expect(page.getByTestId('search-result-base')).toBeVisible();
  162. await expect(page.getByTestId('search-result-list')).toBeVisible();
  163. await expect(page.getByTestId('search-result-content')).toBeVisible();
  164. });