use-tools.spec.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. import { test, expect, type Page } from '@playwright/test';
  2. import { scrollToTop } from '../utils/scroll';
  3. const openPageItemControl = async(page: Page): Promise<void> => {
  4. const nav = page.getByTestId('grw-contextual-sub-nav');
  5. const button = nav.getByTestId('open-page-item-control-btn');
  6. // Wait for navigation element to be visible and attached
  7. await expect(nav).toBeVisible();
  8. await nav.waitFor({ state: 'visible' });
  9. // Wait for button to be visible, enabled and attached
  10. await expect(button).toBeVisible();
  11. await expect(button).toBeEnabled();
  12. await button.waitFor({ state: 'visible' });
  13. // Add a small delay to ensure the button is fully interactive
  14. await page.waitForTimeout(100);
  15. await button.click();
  16. };
  17. const openPutBackPageModal = async(page: Page): Promise<void> => {
  18. const alert = page.getByTestId('trash-page-alert');
  19. const button = alert.getByTestId('put-back-button');
  20. // Wait for alert element to be visible and attached
  21. await expect(alert).toBeVisible();
  22. await alert.waitFor({ state: 'visible' });
  23. // Wait for button to be visible, enabled and attached
  24. await expect(button).toBeVisible();
  25. await expect(button).toBeEnabled();
  26. await button.waitFor({ state: 'visible' });
  27. // Scroll to the top and ensure the button is visible
  28. await scrollToTop(page);
  29. await expect(button).toBeInViewport();
  30. await button.waitFor({ state: 'attached' });
  31. await button.click();
  32. await expect(page.getByTestId('put-back-page-modal')).toBeVisible();
  33. };
  34. test('Page Deletion and PutBack is executed successfully', async({ page }) => {
  35. await page.goto('/Sandbox/Bootstrap5');
  36. // Delete
  37. await openPageItemControl(page);
  38. await page.getByTestId('open-page-delete-modal-btn').click();
  39. await expect(page.getByTestId('page-delete-modal')).toBeVisible();
  40. await page.getByTestId('delete-page-button').click();
  41. // PutBack
  42. await openPutBackPageModal(page);
  43. await page.getByTestId('put-back-execution-button').click();
  44. await expect(page.getByTestId('trash-page-alert')).not.toBeVisible();
  45. });
  46. test('PageDuplicateModal is shown successfully', async({ page }) => {
  47. await page.goto('/Sandbox');
  48. await openPageItemControl(page);
  49. await page.getByTestId('open-page-duplicate-modal-btn').click();
  50. await expect(page.getByTestId('page-duplicate-modal')).toBeVisible();
  51. });
  52. test('PageMoveRenameModal is shown successfully', async({ page }) => {
  53. await page.goto('/Sandbox');
  54. await openPageItemControl(page);
  55. await page.getByTestId('rename-page-btn').click();
  56. await expect(page.getByTestId('page-rename-modal')).toBeVisible();
  57. });
  58. // TODO: Uncomment after https://redmine.weseek.co.jp/issues/149786
  59. // test('PresentationModal for "/" is shown successfully', async({ page }) => {
  60. // await page.goto('/');
  61. // await openPageItemControl(page);
  62. // await page.getByTestId('open-presentation-modal-btn').click();
  63. // expect(page.getByTestId('page-presentation-modal')).toBeVisible();
  64. // });
  65. test.describe('Page Accessories Modal', () => {
  66. test.beforeEach(async({ page }) => {
  67. await page.goto('/');
  68. await openPageItemControl(page);
  69. });
  70. test('Page History is shown successfully', async({ page }) => {
  71. await page.getByTestId('open-page-accessories-modal-btn-with-history-tab').click();
  72. await expect(page.getByTestId(('page-history'))).toBeVisible();
  73. });
  74. test('Page Attachment Data is shown successfully', async({ page }) => {
  75. await page.getByTestId('open-page-accessories-modal-btn-with-attachment-data-tab').click();
  76. await expect(page.getByTestId('page-attachment')).toBeVisible();
  77. });
  78. test('Share Link Management is shown successfully', async({ page }) => {
  79. await page.getByTestId('open-page-accessories-modal-btn-with-share-link-management-data-tab').click();
  80. await expect(page.getByTestId('share-link-management')).toBeVisible();
  81. });
  82. });
  83. test('Successfully add new tag', async({ page }) => {
  84. const tag = 'we';
  85. await page.goto('/Sandbox/Bootstrap5');
  86. await page.locator('#edit-tags-btn-wrapper-for-tooltip').click();
  87. await expect(page.locator('#edit-tag-modal')).toBeVisible();
  88. await page.locator('.rbt-input-main').fill(tag);
  89. await expect(page.locator('#tag-typeahead-asynctypeahead-item-0')).toBeVisible();
  90. await page.locator('#tag-typeahead-asynctypeahead-item-0').click();
  91. await page.getByTestId('tag-edit-done-btn').click();
  92. await expect(page.getByTestId('grw-tag-labels')).toContainText(tag);
  93. });