with-navigation.spec.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { readFileSync } from 'fs';
  2. import path from 'path';
  3. import { test, expect } from '@playwright/test';
  4. test('should not be cleared and should prevent GrantSelector from modified', async({ page }) => {
  5. await page.goto('/Sandbox/for-122040');
  6. // Open Editor
  7. await page.getByTestId('editor-button').click();
  8. await expect(page.getByTestId('grw-editor-navbar-bottom')).toBeVisible();
  9. // Open GrantSelector and select "only me"
  10. await page.getByTestId('grw-grant-selector').click();
  11. const dropdownMenu = page.getByTestId('grw-grant-selector-dropdown-menu');
  12. await expect(dropdownMenu).toBeVisible();
  13. await dropdownMenu.locator('.dropdown-item').nth(2).click();
  14. await expect(page.getByTestId('grw-grant-selector')).toContainText('Only me');
  15. // Upload attachment
  16. const filePath = path.resolve(__dirname, '../23-editor/assets/example.txt');
  17. const buffer = readFileSync(filePath).toString('base64');
  18. const dataTransfer = await page.evaluateHandle(
  19. async({ bufferData, localFileName, localFileType }) => {
  20. const dt = new DataTransfer();
  21. const blobData = await fetch(bufferData).then(res => res.blob());
  22. const file = new File([blobData], localFileName, {
  23. type: localFileType,
  24. });
  25. dt.items.add(file);
  26. return dt;
  27. },
  28. {
  29. bufferData: `data:application/octet-stream;base64,${buffer}`,
  30. localFileName: 'sample.tst',
  31. localFileType: 'application/octet-stream',
  32. },
  33. );
  34. await page.locator('.dropzone').first().dispatchEvent('drop', { dataTransfer });
  35. await expect(page.getByTestId('page-editor-preview-body').getByTestId('rich-attachment')).toBeVisible();
  36. // Save page
  37. await page.getByTestId('save-page-btn').click();
  38. // Expect grant not to be reset after uploading an attachment
  39. await expect(page.getByTestId('page-grant-alert')).toContainText('Browsing of this page is restricted');
  40. });