toc.test.ts 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. // Copyright (c) Jupyter Development Team.
  2. // Distributed under the terms of the Modified BSD License.
  3. import { describe, galata, test } from '@jupyterlab/galata';
  4. import * as path from 'path';
  5. jest.setTimeout(60000);
  6. const fileName = 'toc_notebook.ipynb';
  7. describe('Table of Contents', () => {
  8. beforeAll(async () => {
  9. await galata.resetUI();
  10. galata.context.capturePrefix = 'toc';
  11. });
  12. afterAll(async () => {
  13. galata.context.capturePrefix = '';
  14. });
  15. test('Upload files to JupyterLab', async () => {
  16. await galata.contents.moveFileToServer(
  17. path.resolve(__dirname, `./notebooks/${fileName}`),
  18. `uploaded/${fileName}`
  19. );
  20. await galata.contents.moveFileToServer(
  21. path.resolve(__dirname, './notebooks/WidgetArch.png'),
  22. 'uploaded/WidgetArch.png'
  23. );
  24. expect(
  25. await galata.contents.fileExists(`uploaded/${fileName}`)
  26. ).toBeTruthy();
  27. expect(
  28. await galata.contents.fileExists('uploaded/WidgetArch.png')
  29. ).toBeTruthy();
  30. });
  31. test('Refresh File Browser', async () => {
  32. await expect(galata.filebrowser.refresh()).resolves.toBeUndefined();
  33. });
  34. test('Open directory uploaded', async () => {
  35. await galata.filebrowser.openDirectory('uploaded');
  36. expect(
  37. await galata.filebrowser.isFileListedInBrowser(fileName)
  38. ).toBeTruthy();
  39. });
  40. test('Open Notebook', async () => {
  41. await galata.notebook.open(fileName);
  42. expect(await galata.notebook.isOpen(fileName)).toBeTruthy();
  43. await galata.notebook.activate(fileName);
  44. expect(await galata.notebook.isActive(fileName)).toBeTruthy();
  45. });
  46. test('Add tags', async () => {
  47. await galata.sidebar.openTab('jp-property-inspector');
  48. const imageName = 'add-tags';
  49. const tagInputSelector = 'div.tag-holder input.add-tag';
  50. let piPanel = await galata.sidebar.getContentPanel('left');
  51. let addTagInput = await piPanel.$(tagInputSelector);
  52. await addTagInput.click();
  53. await galata.context.page.keyboard.insertText('tag1');
  54. await galata.context.page.keyboard.press('Enter');
  55. addTagInput = await piPanel.$(tagInputSelector);
  56. await addTagInput.click();
  57. await galata.context.page.keyboard.insertText('tag2');
  58. await galata.context.page.keyboard.press('Enter');
  59. const cellTagsPanel = await piPanel.$('.jp-NotebookTools-tool.jp-TagTool');
  60. await galata.capture.screenshot(imageName, cellTagsPanel);
  61. expect(await galata.capture.compareScreenshot(imageName)).toBe('same');
  62. });
  63. test('Assign tags to cells', async () => {
  64. await galata.notebook.activate(fileName);
  65. await galata.notebook.selectCells(6);
  66. await galata.sidebar.openTab('jp-property-inspector');
  67. const piPanel = await galata.sidebar.getContentPanel('left');
  68. const tags = await piPanel.$$('.lm-Widget.tag');
  69. expect(tags.length).toBe(3); // including Add Tag
  70. await tags[0].click();
  71. await galata.notebook.activate(fileName);
  72. await galata.notebook.selectCells(9);
  73. await galata.sidebar.openTab('jp-property-inspector');
  74. await tags[1].click();
  75. await galata.notebook.activate(fileName);
  76. await galata.notebook.selectCells(11);
  77. await galata.sidebar.openTab('jp-property-inspector');
  78. await tags[0].click();
  79. await tags[1].click();
  80. });
  81. test('Open Table of Contents panel', async () => {
  82. const imageName = 'toc-panel';
  83. await galata.notebook.activate(fileName);
  84. await galata.notebook.selectCells(0);
  85. await galata.sidebar.openTab('table-of-contents');
  86. const tocPanel = await galata.sidebar.getContentPanel('left');
  87. await galata.capture.screenshot(imageName, tocPanel);
  88. expect(await galata.capture.compareScreenshot(imageName)).toBe('same');
  89. });
  90. test('Toggle code', async () => {
  91. const tocPanel = await galata.sidebar.getContentPanel('left');
  92. const toolbarButtons = await tocPanel.$$('.toc-toolbar .toc-toolbar-icon');
  93. expect(toolbarButtons.length).toBe(4);
  94. const imageName = 'toggle-code';
  95. await toolbarButtons[0].click();
  96. await galata.capture.screenshot(imageName, tocPanel);
  97. expect(await galata.capture.compareScreenshot(imageName)).toBe('same');
  98. await toolbarButtons[0].click();
  99. });
  100. test('Toggle markdown', async () => {
  101. const tocPanel = await galata.sidebar.getContentPanel('left');
  102. const toolbarButtons = await tocPanel.$$('.toc-toolbar .toc-toolbar-icon');
  103. expect(toolbarButtons.length).toBe(4);
  104. const imageName = 'toggle-markdown';
  105. await toolbarButtons[1].click();
  106. await galata.capture.screenshot(imageName, tocPanel);
  107. expect(await galata.capture.compareScreenshot(imageName)).toBe('same');
  108. await toolbarButtons[1].click();
  109. });
  110. test('Toggle list', async () => {
  111. const tocPanel = await galata.sidebar.getContentPanel('left');
  112. const toolbarButtons = await tocPanel.$$('.toc-toolbar .toc-toolbar-icon');
  113. expect(toolbarButtons.length).toBe(4);
  114. const imageName = 'toggle-numbered-list';
  115. await toolbarButtons[2].click();
  116. await galata.capture.screenshot(imageName, tocPanel);
  117. expect(await galata.capture.compareScreenshot(imageName)).toBe('same');
  118. await toolbarButtons[2].click();
  119. });
  120. test('Toggle show tags', async () => {
  121. const tocPanel = await galata.sidebar.getContentPanel('left');
  122. const toolbarButtons = await tocPanel.$$('.toc-toolbar .toc-toolbar-icon');
  123. expect(toolbarButtons.length).toBe(4);
  124. // toggle code and markdown
  125. await toolbarButtons[0].click();
  126. await toolbarButtons[1].click();
  127. const imageName = 'show-tags';
  128. await toolbarButtons[3].click();
  129. await galata.capture.screenshot(imageName, tocPanel);
  130. expect(await galata.capture.compareScreenshot(imageName)).toBe('same');
  131. });
  132. test('Toggle tag 1', async () => {
  133. const tocPanel = await galata.sidebar.getContentPanel('left');
  134. const tags = await tocPanel.$$('.toc-tag');
  135. expect(tags.length).toBe(2);
  136. const imageName = 'toggle-tag-1';
  137. await tags[0].click();
  138. await galata.capture.screenshot(imageName, tocPanel);
  139. expect(await galata.capture.compareScreenshot(imageName)).toBe('same');
  140. await tags[0].click();
  141. });
  142. test('Toggle tag 2', async () => {
  143. const tocPanel = await galata.sidebar.getContentPanel('left');
  144. const tags = await tocPanel.$$('.toc-tag');
  145. const imageName = 'toggle-tag-2';
  146. await tags[1].click();
  147. await galata.capture.screenshot(imageName, tocPanel);
  148. expect(await galata.capture.compareScreenshot(imageName)).toBe('same');
  149. await tags[1].click();
  150. });
  151. test('Close Notebook', async () => {
  152. await expect(galata.notebook.activate(fileName)).resolves.toEqual(true);
  153. await expect(galata.notebook.close(true)).resolves.toEqual(true);
  154. });
  155. test('Open home directory', async () => {
  156. await galata.sidebar.openTab('filebrowser');
  157. await expect(galata.sidebar.isTabOpen('filebrowser')).resolves.toEqual(
  158. true
  159. );
  160. await expect(galata.filebrowser.openHomeDirectory()).resolves.toEqual(true);
  161. });
  162. test('Delete uploaded directory', async () => {
  163. await expect(galata.contents.deleteDirectory('uploaded')).resolves.toEqual(
  164. true
  165. );
  166. });
  167. });