@theia/playwright 1.55.0-next.14 → 1.55.0-next.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/lib/index.d.ts +3 -0
  2. package/lib/index.d.ts.map +1 -1
  3. package/lib/index.js +3 -0
  4. package/lib/index.js.map +1 -1
  5. package/lib/tests/theia-notebook-editor.test.d.ts +2 -0
  6. package/lib/tests/theia-notebook-editor.test.d.ts.map +1 -0
  7. package/lib/tests/theia-notebook-editor.test.js +170 -0
  8. package/lib/tests/theia-notebook-editor.test.js.map +1 -0
  9. package/lib/tests/theia-quick-command.test.js +5 -0
  10. package/lib/tests/theia-quick-command.test.js.map +1 -1
  11. package/lib/theia-monaco-editor.d.ts +10 -0
  12. package/lib/theia-monaco-editor.d.ts.map +1 -1
  13. package/lib/theia-monaco-editor.js +29 -1
  14. package/lib/theia-monaco-editor.js.map +1 -1
  15. package/lib/theia-notebook-cell.d.ts +88 -0
  16. package/lib/theia-notebook-cell.d.ts.map +1 -0
  17. package/lib/theia-notebook-cell.js +195 -0
  18. package/lib/theia-notebook-cell.js.map +1 -0
  19. package/lib/theia-notebook-editor.d.ts +50 -0
  20. package/lib/theia-notebook-editor.d.ts.map +1 -0
  21. package/lib/theia-notebook-editor.js +153 -0
  22. package/lib/theia-notebook-editor.js.map +1 -0
  23. package/lib/theia-notebook-toolbar.d.ts +13 -0
  24. package/lib/theia-notebook-toolbar.d.ts.map +1 -0
  25. package/lib/theia-notebook-toolbar.js +47 -0
  26. package/lib/theia-notebook-toolbar.js.map +1 -0
  27. package/lib/theia-preference-view.d.ts +7 -1
  28. package/lib/theia-preference-view.d.ts.map +1 -1
  29. package/lib/theia-preference-view.js +16 -2
  30. package/lib/theia-preference-view.js.map +1 -1
  31. package/lib/theia-quick-command-palette.d.ts +1 -0
  32. package/lib/theia-quick-command-palette.d.ts.map +1 -1
  33. package/lib/theia-quick-command-palette.js +8 -0
  34. package/lib/theia-quick-command-palette.js.map +1 -1
  35. package/package.json +3 -3
  36. package/src/index.ts +3 -0
  37. package/src/tests/resources/notebook-files/.theia/settings.json +3 -0
  38. package/src/tests/resources/notebook-files/sample.ipynb +18 -0
  39. package/src/tests/theia-notebook-editor.test.ts +209 -0
  40. package/src/tests/theia-quick-command.test.ts +6 -0
  41. package/src/theia-monaco-editor.ts +31 -1
  42. package/src/theia-notebook-cell.ts +232 -0
  43. package/src/theia-notebook-editor.ts +171 -0
  44. package/src/theia-notebook-toolbar.ts +53 -0
  45. package/src/theia-preference-view.ts +14 -2
  46. package/src/theia-quick-command-palette.ts +10 -0
package/lib/index.d.ts CHANGED
@@ -10,6 +10,9 @@ export * from './theia-menu-item';
10
10
  export * from './theia-menu';
11
11
  export * from './theia-notification-indicator';
12
12
  export * from './theia-notification-overlay';
13
+ export * from './theia-notebook-cell';
14
+ export * from './theia-notebook-editor';
15
+ export * from './theia-notebook-toolbar';
13
16
  export * from './theia-output-channel';
14
17
  export * from './theia-output-view';
15
18
  export * from './theia-page-object';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC"}
package/lib/index.js CHANGED
@@ -28,6 +28,9 @@ tslib_1.__exportStar(require("./theia-menu-item"), exports);
28
28
  tslib_1.__exportStar(require("./theia-menu"), exports);
29
29
  tslib_1.__exportStar(require("./theia-notification-indicator"), exports);
30
30
  tslib_1.__exportStar(require("./theia-notification-overlay"), exports);
31
+ tslib_1.__exportStar(require("./theia-notebook-cell"), exports);
32
+ tslib_1.__exportStar(require("./theia-notebook-editor"), exports);
33
+ tslib_1.__exportStar(require("./theia-notebook-toolbar"), exports);
31
34
  tslib_1.__exportStar(require("./theia-output-channel"), exports);
32
35
  tslib_1.__exportStar(require("./theia-output-view"), exports);
33
36
  tslib_1.__exportStar(require("./theia-page-object"), exports);
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,+DAAqC;AACrC,sDAA4B;AAC5B,6DAAmC;AACnC,+DAAqC;AACrC,yDAA+B;AAC/B,yDAA+B;AAC/B,gEAAsC;AACtC,4DAAkC;AAClC,4DAAkC;AAClC,uDAA6B;AAC7B,yEAA+C;AAC/C,uEAA6C;AAC7C,iEAAuC;AACvC,8DAAoC;AACpC,8DAAoC;AACpC,kEAAwC;AACxC,oEAA0C;AAC1C,+DAAqC;AACrC,wEAA8C;AAC9C,gEAAsC;AACtC,6DAAmC;AACnC,mEAAyC;AACzC,8DAAoC;AACpC,0EAAgD;AAChD,0DAAgC;AAChC,+DAAqC;AACrC,4DAAkC;AAClC,uDAA6B;AAC7B,4DAAkC;AAClC,iDAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,+DAAqC;AACrC,sDAA4B;AAC5B,6DAAmC;AACnC,+DAAqC;AACrC,yDAA+B;AAC/B,yDAA+B;AAC/B,gEAAsC;AACtC,4DAAkC;AAClC,4DAAkC;AAClC,uDAA6B;AAC7B,yEAA+C;AAC/C,uEAA6C;AAC7C,gEAAsC;AACtC,kEAAwC;AACxC,mEAAyC;AACzC,iEAAuC;AACvC,8DAAoC;AACpC,8DAAoC;AACpC,kEAAwC;AACxC,oEAA0C;AAC1C,+DAAqC;AACrC,wEAA8C;AAC9C,gEAAsC;AACtC,6DAAmC;AACnC,mEAAyC;AACzC,8DAAoC;AACpC,0EAAgD;AAChD,0DAAgC;AAChC,+DAAqC;AACrC,4DAAkC;AAClC,uDAA6B;AAC7B,4DAAkC;AAClC,iDAAuB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=theia-notebook-editor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theia-notebook-editor.test.d.ts","sourceRoot":"","sources":["../../src/tests/theia-notebook-editor.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2024 TypeFox GmbH and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const test_1 = require("@playwright/test");
19
+ const theia_app_loader_1 = require("../theia-app-loader");
20
+ const theia_notebook_editor_1 = require("../theia-notebook-editor");
21
+ const theia_workspace_1 = require("../theia-workspace");
22
+ const path = require("path");
23
+ // See .github/workflows/playwright.yml for preferred python version
24
+ const preferredKernel = process.env.CI ? 'Python 3.11' : 'Python 3';
25
+ test_1.test.describe('Theia Notebook Editor interaction', () => {
26
+ let app;
27
+ let editor;
28
+ test_1.test.beforeAll(async ({ playwright, browser }) => {
29
+ app = await loadApp({ playwright, browser });
30
+ });
31
+ test_1.test.beforeEach(async ({ playwright, browser }) => {
32
+ editor = await app.openEditor('sample.ipynb', theia_notebook_editor_1.TheiaNotebookEditor);
33
+ });
34
+ test_1.test.afterAll(async () => {
35
+ await app.page.close();
36
+ });
37
+ test_1.test.afterEach(async () => {
38
+ if (editor) {
39
+ await editor.closeWithoutSave();
40
+ }
41
+ });
42
+ (0, test_1.test)('kernels are installed', async () => {
43
+ const kernels = await editor.availableKernels();
44
+ const msg = `Available kernels:\n ${kernels.join('\n')}`;
45
+ console.log(msg); // Print available kernels, useful when running in CI.
46
+ (0, test_1.expect)(kernels.length, msg).toBeGreaterThan(0);
47
+ const py3kernel = kernels.filter(kernel => kernel.match(new RegExp(`^${preferredKernel}`)));
48
+ (0, test_1.expect)(py3kernel.length, msg).toBeGreaterThan(0);
49
+ });
50
+ (0, test_1.test)('should select a kernel', async () => {
51
+ await editor.selectKernel(preferredKernel);
52
+ const selectedKernel = await editor.selectedKernel();
53
+ (0, test_1.expect)(selectedKernel).toMatch(new RegExp(`^${preferredKernel}`));
54
+ });
55
+ (0, test_1.test)('should add a new code cell', async () => {
56
+ await editor.addCodeCell();
57
+ const cells = await editor.cells();
58
+ (0, test_1.expect)(cells.length).toBe(2);
59
+ (0, test_1.expect)(await cells[1].mode()).toBe('python');
60
+ });
61
+ (0, test_1.test)('should add a new markdown cell', async () => {
62
+ await editor.addMarkdownCell();
63
+ await (await editor.cells())[1].addEditorText('print("markdown")');
64
+ const cells = await editor.cells();
65
+ (0, test_1.expect)(cells.length).toBe(2);
66
+ (0, test_1.expect)(await cells[1].mode()).toBe('markdown');
67
+ (0, test_1.expect)(await cells[1].editorText()).toBe('print("markdown")');
68
+ });
69
+ (0, test_1.test)('should execute all cells', async () => {
70
+ const cell = await firstCell(editor);
71
+ await cell.addEditorText('print("Hallo Notebook!")');
72
+ await editor.addCodeCell();
73
+ const secondCell = (await editor.cells())[1];
74
+ await secondCell.addEditorText('print("Bye Notebook!")');
75
+ await editor.executeAllCells();
76
+ (0, test_1.expect)(await cell.outputText()).toBe('Hallo Notebook!');
77
+ (0, test_1.expect)(await secondCell.outputText()).toBe('Bye Notebook!');
78
+ });
79
+ (0, test_1.test)('should split cell', async () => {
80
+ const cell = await firstCell(editor);
81
+ /*
82
+ Add cell text:
83
+ print("Line-1")
84
+ print("Line-2")
85
+ */
86
+ await cell.addEditorText('print("Line-1")\nprint("Line-2")');
87
+ /*
88
+ Set cursor:
89
+ print("Line-1")
90
+ <|>print("Line-2")
91
+ */
92
+ const line = await cell.editor.lineByLineNumber(1);
93
+ await (line === null || line === void 0 ? void 0 : line.waitForElementState('visible'));
94
+ await (line === null || line === void 0 ? void 0 : line.click());
95
+ await (line === null || line === void 0 ? void 0 : line.press('ArrowRight'));
96
+ // split cell
97
+ await cell.splitCell();
98
+ // expect two cells with text "print("Line-1")" and "print("Line-2")"
99
+ (0, test_1.expect)(await editor.cells()).toHaveLength(2);
100
+ (0, test_1.expect)(await (await editor.cells())[0].editorText()).toBe('print("Line-1")');
101
+ (0, test_1.expect)(await (await editor.cells())[1].editorText()).toBe('print("Line-2")');
102
+ });
103
+ });
104
+ test_1.test.describe('Theia Notebook Cell interaction', () => {
105
+ let app;
106
+ let editor;
107
+ test_1.test.beforeAll(async ({ playwright, browser }) => {
108
+ app = await loadApp({ playwright, browser });
109
+ });
110
+ test_1.test.afterAll(async () => {
111
+ await app.page.close();
112
+ });
113
+ test_1.test.beforeEach(async () => {
114
+ editor = await app.openEditor('sample.ipynb', theia_notebook_editor_1.TheiaNotebookEditor);
115
+ const selectedKernel = await editor.selectedKernel();
116
+ if ((selectedKernel === null || selectedKernel === void 0 ? void 0 : selectedKernel.match(new RegExp(`^${preferredKernel}`))) === null) {
117
+ await editor.selectKernel(preferredKernel);
118
+ }
119
+ });
120
+ test_1.test.afterEach(async () => {
121
+ if (editor) {
122
+ await editor.closeWithoutSave();
123
+ }
124
+ });
125
+ (0, test_1.test)('should write text in a code cell', async () => {
126
+ const cell = await firstCell(editor);
127
+ // assume the first cell is a code cell
128
+ (0, test_1.expect)(await cell.isCodeCell()).toBe(true);
129
+ await cell.addEditorText('print("Hallo")');
130
+ const cellText = await cell.editorText();
131
+ (0, test_1.expect)(cellText).toBe('print("Hallo")');
132
+ });
133
+ (0, test_1.test)('should write multi-line text in a code cell', async () => {
134
+ const cell = await firstCell(editor);
135
+ await cell.addEditorText('print("Hallo")\nprint("Notebook")');
136
+ const cellText = await cell.editorText();
137
+ (0, test_1.expect)(cellText).toBe('print("Hallo")\nprint("Notebook")');
138
+ });
139
+ (0, test_1.test)('Execute code cell and read output', async () => {
140
+ const cell = await firstCell(editor);
141
+ await cell.addEditorText('print("Hallo Notebook!")');
142
+ await cell.execute();
143
+ const cellOutput = await cell.outputText();
144
+ (0, test_1.expect)(cellOutput).toBe('Hallo Notebook!');
145
+ });
146
+ (0, test_1.test)('Check execution count matches', async () => {
147
+ const cell = await firstCell(editor);
148
+ await cell.addEditorText('print("Hallo Notebook!")');
149
+ await cell.execute();
150
+ await cell.execute();
151
+ await cell.execute();
152
+ (0, test_1.expect)(await cell.executionCount()).toBe('3');
153
+ });
154
+ });
155
+ async function firstCell(editor) {
156
+ return (await editor.cells())[0];
157
+ }
158
+ async function loadApp(args) {
159
+ const workingDir = path.resolve();
160
+ // correct WS path. When running from IDE the path is playwright/configs with CLI it's playwright/
161
+ const prefix = workingDir.endsWith('playwright/configs') ? '../' : '';
162
+ const ws = new theia_workspace_1.TheiaWorkspace([prefix + 'src/tests/resources/notebook-files']);
163
+ const app = await theia_app_loader_1.TheiaAppLoader.load(args, ws);
164
+ // auto-save are disabled using settings.json file
165
+ // see examples/playwright/src/tests/resources/notebook-files/.theia/settings.json
166
+ // NOTE: Workspace trust is disabled in examples/browser/package.json using default preferences.
167
+ // If workspace trust check is on, python extension will not be able to explore Python installations.
168
+ return app;
169
+ }
170
+ //# sourceMappingURL=theia-notebook-editor.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theia-notebook-editor.test.js","sourceRoot":"","sources":["../../src/tests/theia-notebook-editor.test.ts"],"names":[],"mappings":"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"}
@@ -66,5 +66,10 @@ test_1.test.describe('Theia Quick Command', () => {
66
66
  const notification = new theia_notification_overlay_1.TheiaNotificationOverlay(app, notificationIndicator);
67
67
  (0, test_1.expect)(await notification.isEntryVisible('Positive Integer: 6')).toBe(true);
68
68
  });
69
+ (0, test_1.test)('retrieve and check visible items', async () => {
70
+ await quickCommand.type('close all tabs', false);
71
+ const listItems = await Promise.all((await quickCommand.visibleItems()).map(async (item) => item.textContent()));
72
+ (0, test_1.expect)(listItems).toContain('View: Close All Tabs in Main Area');
73
+ });
69
74
  });
70
75
  //# sourceMappingURL=theia-quick-command.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"theia-quick-command.test.js","sourceRoot":"","sources":["../../src/tests/theia-quick-command.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theia-quick-command.test.js","sourceRoot":"","sources":["../../src/tests/theia-quick-command.test.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,16 @@ export declare class TheiaMonacoEditor extends TheiaPageObject {
11
11
  lineByLineNumber(lineNumber: number): Promise<ElementHandle<SVGElement | HTMLElement> | undefined>;
12
12
  textContentOfLineContainingText(text: string): Promise<string | undefined>;
13
13
  lineContainingText(text: string): Promise<ElementHandle<SVGElement | HTMLElement> | undefined>;
14
+ /**
15
+ * @returns The text content of the editor.
16
+ */
17
+ editorText(): Promise<string | undefined>;
18
+ /**
19
+ * Adds text to the editor.
20
+ * @param text The text to add to the editor.
21
+ * @param lineNumber The line number where to add the text. Default is 1.
22
+ */
23
+ addEditorText(text: string, lineNumber?: number): Promise<void>;
14
24
  protected replaceEditorSymbolsWithSpace(content: string): string | Promise<string | undefined>;
15
25
  }
16
26
  //# sourceMappingURL=theia-monaco-editor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theia-monaco-editor.d.ts","sourceRoot":"","sources":["../src/theia-monaco-editor.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,iBAAkB,SAAQ,eAAe;IACtC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ;IAIxD,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC,SAAS,CAAC,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;IAI1E,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAO5C,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAO9E,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC;IAiBlG,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAO1E,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC;IAKpG,SAAS,CAAC,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAMjG"}
1
+ {"version":3,"file":"theia-monaco-editor.d.ts","sourceRoot":"","sources":["../src/theia-monaco-editor.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,iBAAkB,SAAQ,eAAe;IACtC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ;IAIxD,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;cAIrB,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;IAIhF,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAO5C,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAO9E,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC;IAiBlG,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAO1E,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC;IAKpG;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAgB/C;;;;OAIG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxE,SAAS,CAAC,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAMjG"}
@@ -25,7 +25,7 @@ class TheiaMonacoEditor extends theia_page_object_1.TheiaPageObject {
25
25
  async waitForVisible() {
26
26
  await this.page.waitForSelector(this.selector, { state: 'visible' });
27
27
  }
28
- viewElement() {
28
+ async viewElement() {
29
29
  return this.page.$(this.selector);
30
30
  }
31
31
  async numberOfLines() {
@@ -65,6 +65,34 @@ class TheiaMonacoEditor extends theia_page_object_1.TheiaPageObject {
65
65
  const viewElement = await this.viewElement();
66
66
  return viewElement === null || viewElement === void 0 ? void 0 : viewElement.waitForSelector(`.view-lines .view-line:has-text("${text}")`);
67
67
  }
68
+ /**
69
+ * @returns The text content of the editor.
70
+ */
71
+ async editorText() {
72
+ const lines = [];
73
+ const linesCount = await this.numberOfLines();
74
+ if (linesCount === undefined) {
75
+ return undefined;
76
+ }
77
+ for (let line = 1; line <= linesCount; line++) {
78
+ const lineText = await this.textContentOfLineByLineNumber(line);
79
+ if (lineText === undefined) {
80
+ break;
81
+ }
82
+ lines.push(lineText);
83
+ }
84
+ return lines.join('\n');
85
+ }
86
+ /**
87
+ * Adds text to the editor.
88
+ * @param text The text to add to the editor.
89
+ * @param lineNumber The line number where to add the text. Default is 1.
90
+ */
91
+ async addEditorText(text, lineNumber = 1) {
92
+ const line = await this.lineByLineNumber(lineNumber);
93
+ await (line === null || line === void 0 ? void 0 : line.click());
94
+ await this.page.keyboard.type(text);
95
+ }
68
96
  replaceEditorSymbolsWithSpace(content) {
69
97
  // [ ] &nbsp; => \u00a0 -- NO-BREAK SPACE
70
98
  // [·] &middot; => \u00b7 -- MIDDLE DOT
@@ -1 +1 @@
1
- {"version":3,"file":"theia-monaco-editor.js","sourceRoot":"","sources":["../src/theia-monaco-editor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theia-monaco-editor.js","sourceRoot":"","sources":["../src/theia-monaco-editor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import { ElementHandle, FrameLocator, Locator } from '@playwright/test';
2
+ import { TheiaApp } from './theia-app';
3
+ import { TheiaMonacoEditor } from './theia-monaco-editor';
4
+ import { TheiaPageObject } from './theia-page-object';
5
+ export type CellStatus = 'success' | 'error' | 'waiting';
6
+ /**
7
+ * Page object for a Theia notebook cell.
8
+ */
9
+ export declare class TheiaNotebookCell extends TheiaPageObject {
10
+ protected readonly locator: Locator;
11
+ protected readonly notebookEditorLocator: Locator;
12
+ protected monacoEditor: TheiaEmbeddedMonacoEditor;
13
+ constructor(locator: Locator, notebookEditorLocator: Locator, app: TheiaApp);
14
+ /**
15
+ * @returns The monaco editor page object of the cell.
16
+ */
17
+ get editor(): TheiaEmbeddedMonacoEditor;
18
+ /**
19
+ * @returns Locator for the sidebar (left) of the cell.
20
+ */
21
+ sidebar(): Locator;
22
+ /**
23
+ * @returns Locator for the toolbar (top) of the cell.
24
+ */
25
+ toolbar(): Locator;
26
+ /**
27
+ * @returns Locator for the statusbar (bottom) of the cell.
28
+ */
29
+ statusbar(): Locator;
30
+ /**
31
+ * @returns Locator for the status icon inside the statusbar of the cell.
32
+ */
33
+ statusIcon(): Locator;
34
+ /**
35
+ * @returns `true` id the cell is a code cell, `false` otherwise.
36
+ */
37
+ isCodeCell(): Promise<boolean>;
38
+ /**
39
+ * @returns The mode of the cell, e.g. 'python', 'markdown', etc.
40
+ */
41
+ mode(): Promise<string>;
42
+ /**
43
+ * @returns The text content of the cell editor.
44
+ */
45
+ editorText(): Promise<string | undefined>;
46
+ /**
47
+ * Adds text to the editor of the cell.
48
+ * @param text The text to add to the editor.
49
+ * @param lineNumber The line number where to add the text. Default is 1.
50
+ */
51
+ addEditorText(text: string, lineNumber?: number): Promise<void>;
52
+ /**
53
+ * @param wait If `true` waits for the cell to finish execution, otherwise returns immediately.
54
+ */
55
+ execute(wait?: boolean): Promise<void>;
56
+ /**
57
+ * Splits the cell into two cells by dividing the cell text on current cursor position.
58
+ */
59
+ splitCell(): Promise<void>;
60
+ /**
61
+ * Waits for the cell to reach a specific status.
62
+ * @param status The status to wait for. Possible values are 'success', 'error', 'waiting'.
63
+ */
64
+ waitForCellStatus(...status: CellStatus[]): Promise<void>;
65
+ /**
66
+ * @returns The status of the cell. Possible values are 'success', 'error', 'waiting'.
67
+ */
68
+ status(): Promise<CellStatus>;
69
+ protected toCellStatus(classes: string): CellStatus;
70
+ /**
71
+ * @returns The execution count of the cell.
72
+ */
73
+ executionCount(): Promise<string | undefined>;
74
+ /**
75
+ * @returns The output text of the cell.
76
+ */
77
+ outputText(): Promise<string>;
78
+ protected outputContainer(): Promise<Locator>;
79
+ protected cellHandle(): Promise<string | null>;
80
+ protected outputFrame(): Promise<FrameLocator>;
81
+ }
82
+ export declare class TheiaEmbeddedMonacoEditor extends TheiaMonacoEditor {
83
+ readonly locator: Locator;
84
+ constructor(locator: Locator, app: TheiaApp);
85
+ waitForVisible(): Promise<void>;
86
+ protected viewElement(): Promise<ElementHandle<SVGElement | HTMLElement> | null>;
87
+ }
88
+ //# sourceMappingURL=theia-notebook-cell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theia-notebook-cell.d.ts","sourceRoot":"","sources":["../src/theia-notebook-cell.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEzD;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,eAAe;IAItC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO;IAAE,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,OAAO;IAFlG,SAAS,CAAC,YAAY,EAAE,yBAAyB,CAAC;gBAEnB,OAAO,EAAE,OAAO,EAAqB,qBAAqB,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IAMjH;;OAEG;IACH,IAAI,MAAM,IAAI,yBAAyB,CAEtC;IAED;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,OAAO,IAAI,OAAO;IAGlB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAKpC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAa7B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI/C;;;;OAIG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxE;;OAEG;IACG,OAAO,CAAC,IAAI,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAUzC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAMhC;;;OAGG;IACG,iBAAiB,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB/D;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC;IAMnC,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAMnD;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAQnD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;cAUnB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;cAOnC,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;cAQpC,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC;CAOvD;AAED,qBAAa,yBAA0B,SAAQ,iBAAiB;aAEhC,OAAO,EAAE,OAAO;gBAAhB,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IAI5C,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;cAK3B,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;CAI5F"}
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TheiaEmbeddedMonacoEditor = exports.TheiaNotebookCell = void 0;
4
+ const theia_monaco_editor_1 = require("./theia-monaco-editor");
5
+ const theia_page_object_1 = require("./theia-page-object");
6
+ /**
7
+ * Page object for a Theia notebook cell.
8
+ */
9
+ class TheiaNotebookCell extends theia_page_object_1.TheiaPageObject {
10
+ constructor(locator, notebookEditorLocator, app) {
11
+ super(app);
12
+ this.locator = locator;
13
+ this.notebookEditorLocator = notebookEditorLocator;
14
+ const editorLocator = locator.locator('div.theia-notebook-cell-editor');
15
+ this.monacoEditor = new TheiaEmbeddedMonacoEditor(editorLocator, app);
16
+ }
17
+ /**
18
+ * @returns The monaco editor page object of the cell.
19
+ */
20
+ get editor() {
21
+ return this.monacoEditor;
22
+ }
23
+ /**
24
+ * @returns Locator for the sidebar (left) of the cell.
25
+ */
26
+ sidebar() {
27
+ return this.locator.locator('div.theia-notebook-cell-sidebar');
28
+ }
29
+ /**
30
+ * @returns Locator for the toolbar (top) of the cell.
31
+ */
32
+ toolbar() {
33
+ return this.locator.locator('div.theia-notebook-cell-toolbar');
34
+ }
35
+ /**
36
+ * @returns Locator for the statusbar (bottom) of the cell.
37
+ */
38
+ statusbar() {
39
+ return this.locator.locator('div.notebook-cell-status');
40
+ }
41
+ /**
42
+ * @returns Locator for the status icon inside the statusbar of the cell.
43
+ */
44
+ statusIcon() {
45
+ return this.statusbar().locator('span.notebook-cell-status-item');
46
+ }
47
+ /**
48
+ * @returns `true` id the cell is a code cell, `false` otherwise.
49
+ */
50
+ async isCodeCell() {
51
+ const classAttribute = await this.mode();
52
+ return classAttribute !== 'markdown';
53
+ }
54
+ /**
55
+ * @returns The mode of the cell, e.g. 'python', 'markdown', etc.
56
+ */
57
+ async mode() {
58
+ await this.locator.waitFor({ state: 'visible' });
59
+ const editorElement = await this.editor.locator.elementHandle();
60
+ if (editorElement === null) {
61
+ throw new Error('Could not find editor element for the notebook cell.');
62
+ }
63
+ const classAttribute = await editorElement.getAttribute('data-mode-id');
64
+ if (classAttribute === null) {
65
+ throw new Error('Could not find mode attribute for the notebook cell.');
66
+ }
67
+ return classAttribute;
68
+ }
69
+ /**
70
+ * @returns The text content of the cell editor.
71
+ */
72
+ async editorText() {
73
+ return this.editor.editorText();
74
+ }
75
+ /**
76
+ * Adds text to the editor of the cell.
77
+ * @param text The text to add to the editor.
78
+ * @param lineNumber The line number where to add the text. Default is 1.
79
+ */
80
+ async addEditorText(text, lineNumber = 1) {
81
+ await this.editor.addEditorText(text, lineNumber);
82
+ }
83
+ /**
84
+ * @param wait If `true` waits for the cell to finish execution, otherwise returns immediately.
85
+ */
86
+ async execute(wait = true) {
87
+ const execButton = this.sidebar().locator('[id="notebook.cell.execute-cell"]');
88
+ await execButton.waitFor({ state: 'visible' });
89
+ await execButton.click();
90
+ if (wait) {
91
+ // wait for the cell to finish execution
92
+ await this.waitForCellStatus('success', 'error');
93
+ }
94
+ }
95
+ /**
96
+ * Splits the cell into two cells by dividing the cell text on current cursor position.
97
+ */
98
+ async splitCell() {
99
+ const execButton = this.toolbar().locator('[id="notebook.cell.split"]');
100
+ await execButton.waitFor({ state: 'visible' });
101
+ await execButton.click();
102
+ }
103
+ /**
104
+ * Waits for the cell to reach a specific status.
105
+ * @param status The status to wait for. Possible values are 'success', 'error', 'waiting'.
106
+ */
107
+ async waitForCellStatus(...status) {
108
+ await this.statusIcon().waitFor({ state: 'visible' });
109
+ await this.statusIcon().evaluate((element, expect) => {
110
+ if (expect.length === 0) {
111
+ return true;
112
+ }
113
+ const classes = element.getAttribute('class');
114
+ if (classes !== null) {
115
+ const cellStatus = classes.includes('codicon-check') ? 'success'
116
+ : classes.includes('codicon-error') ? 'error'
117
+ : 'waiting';
118
+ return expect.includes(cellStatus);
119
+ }
120
+ return false;
121
+ }, status);
122
+ }
123
+ /**
124
+ * @returns The status of the cell. Possible values are 'success', 'error', 'waiting'.
125
+ */
126
+ async status() {
127
+ var _a, _b;
128
+ const statusLocator = this.statusIcon();
129
+ const status = this.toCellStatus((_b = await ((_a = (await statusLocator.elementHandle())) === null || _a === void 0 ? void 0 : _a.getAttribute('class'))) !== null && _b !== void 0 ? _b : '');
130
+ return status;
131
+ }
132
+ toCellStatus(classes) {
133
+ return classes.includes('codicon-check') ? 'success'
134
+ : classes.includes('codicon-error') ? 'error'
135
+ : 'waiting';
136
+ }
137
+ /**
138
+ * @returns The execution count of the cell.
139
+ */
140
+ async executionCount() {
141
+ const countNode = this.sidebar().locator('span.theia-notebook-code-cell-execution-order');
142
+ await countNode.waitFor({ state: 'visible' });
143
+ await this.waitForCellStatus('success', 'error');
144
+ const text = await countNode.textContent();
145
+ return text === null || text === void 0 ? void 0 : text.substring(1, text.length - 1);
146
+ }
147
+ /**
148
+ * @returns The output text of the cell.
149
+ */
150
+ async outputText() {
151
+ const outputContainer = await this.outputContainer();
152
+ await outputContainer.waitFor({ state: 'visible' });
153
+ // By default just collect all spans text.
154
+ const spansLocator = outputContainer.locator('span:not(:has(*))'); // ignore nested spans
155
+ const spanTexts = await spansLocator.evaluateAll(spans => spans.map(span => { var _a; return (_a = span.textContent) === null || _a === void 0 ? void 0 : _a.trim(); })
156
+ .filter(text => text !== undefined && text.length > 0));
157
+ return spanTexts.join('');
158
+ }
159
+ async outputContainer() {
160
+ const outFrame = await this.outputFrame();
161
+ // each cell has it's own output div with a unique id = cellHandle<handle>
162
+ const cellOutput = outFrame.locator(`div#cellHandle${await this.cellHandle()}`);
163
+ return cellOutput.locator('div.output-container');
164
+ }
165
+ async cellHandle() {
166
+ const handle = await this.locator.getAttribute('data-cell-handle');
167
+ if (handle === null) {
168
+ throw new Error('Could not find cell handle attribute `data-cell-handle` for the notebook cell.');
169
+ }
170
+ return handle;
171
+ }
172
+ async outputFrame() {
173
+ const containerDiv = this.notebookEditorLocator.locator('div.theia-notebook-cell-output-webview');
174
+ const webViewFrame = containerDiv.frameLocator('iframe.webview');
175
+ await webViewFrame.locator('iframe').waitFor({ state: 'attached' });
176
+ return webViewFrame.frameLocator('iframe');
177
+ }
178
+ }
179
+ exports.TheiaNotebookCell = TheiaNotebookCell;
180
+ class TheiaEmbeddedMonacoEditor extends theia_monaco_editor_1.TheiaMonacoEditor {
181
+ constructor(locator, app) {
182
+ super('', app);
183
+ this.locator = locator;
184
+ }
185
+ async waitForVisible() {
186
+ // Use locator instead of page to find the editor element.
187
+ await this.locator.waitFor({ state: 'visible' });
188
+ }
189
+ viewElement() {
190
+ // Use locator instead of page to find the editor element.
191
+ return this.locator.elementHandle();
192
+ }
193
+ }
194
+ exports.TheiaEmbeddedMonacoEditor = TheiaEmbeddedMonacoEditor;
195
+ //# sourceMappingURL=theia-notebook-cell.js.map