@theia/playwright 1.48.1 → 1.48.2
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.
- package/README.md +54 -54
- package/lib/index.d.ts +30 -30
- package/lib/index.js +48 -48
- package/lib/tests/theia-app.test.d.ts +1 -1
- package/lib/tests/theia-app.test.js +29 -29
- package/lib/tests/theia-application-shell.test.d.ts +1 -1
- package/lib/tests/theia-application-shell.test.js +57 -57
- package/lib/tests/theia-explorer-view.test.d.ts +1 -1
- package/lib/tests/theia-explorer-view.test.js +183 -183
- package/lib/tests/theia-getting-started.test.d.ts +1 -1
- package/lib/tests/theia-getting-started.test.js +45 -45
- package/lib/tests/theia-main-menu.test.d.ts +1 -1
- package/lib/tests/theia-main-menu.test.js +111 -111
- package/lib/tests/theia-output-view.test.d.ts +1 -1
- package/lib/tests/theia-output-view.test.js +78 -78
- package/lib/tests/theia-preference-view.test.d.ts +1 -1
- package/lib/tests/theia-preference-view.test.js +101 -101
- package/lib/tests/theia-problems-view.test.d.ts +1 -1
- package/lib/tests/theia-problems-view.test.js +54 -54
- package/lib/tests/theia-quick-command.test.d.ts +1 -1
- package/lib/tests/theia-quick-command.test.js +69 -69
- package/lib/tests/theia-sample-app.test.d.ts +1 -1
- package/lib/tests/theia-sample-app.test.js +57 -57
- package/lib/tests/theia-status-bar.test.d.ts +1 -1
- package/lib/tests/theia-status-bar.test.js +44 -44
- package/lib/tests/theia-terminal-view.test.d.ts +1 -1
- package/lib/tests/theia-terminal-view.test.js +78 -78
- package/lib/tests/theia-text-editor.test.d.ts +1 -1
- package/lib/tests/theia-text-editor.test.js +155 -155
- package/lib/tests/theia-toolbar.test.d.ts +1 -1
- package/lib/tests/theia-toolbar.test.js +61 -61
- package/lib/tests/theia-workspace.test.d.ts +1 -1
- package/lib/tests/theia-workspace.test.js +72 -72
- package/lib/theia-about-dialog.d.ts +4 -4
- package/lib/theia-about-dialog.js +26 -26
- package/lib/theia-app-loader.d.ts +19 -19
- package/lib/theia-app-loader.js +129 -129
- package/lib/theia-app.d.ts +50 -50
- package/lib/theia-app.js +153 -153
- package/lib/theia-context-menu.d.ts +8 -8
- package/lib/theia-context-menu.js +37 -37
- package/lib/theia-dialog.d.ts +28 -28
- package/lib/theia-dialog.js +99 -99
- package/lib/theia-editor.d.ts +9 -9
- package/lib/theia-editor.js +68 -68
- package/lib/theia-explorer-view.d.ts +47 -47
- package/lib/theia-explorer-view.js +273 -273
- package/lib/theia-main-menu.d.ts +12 -12
- package/lib/theia-main-menu.js +53 -53
- package/lib/theia-menu-item.d.ts +14 -14
- package/lib/theia-menu-item.js +66 -66
- package/lib/theia-menu.d.ts +16 -16
- package/lib/theia-menu.js +86 -86
- package/lib/theia-monaco-editor.d.ts +15 -15
- package/lib/theia-monaco-editor.js +75 -75
- package/lib/theia-notification-indicator.d.ts +7 -7
- package/lib/theia-notification-indicator.js +44 -44
- package/lib/theia-notification-overlay.d.ts +22 -22
- package/lib/theia-notification-overlay.js +79 -79
- package/lib/theia-output-channel.d.ts +24 -24
- package/lib/theia-output-channel.js +71 -71
- package/lib/theia-output-view.d.ts +9 -9
- package/lib/theia-output-view.js +81 -81
- package/lib/theia-page-object.d.ts +7 -7
- package/lib/theia-page-object.js +27 -27
- package/lib/theia-preference-view.d.ts +84 -84
- package/lib/theia-preference-view.js +209 -209
- package/lib/theia-problem-indicator.d.ts +8 -8
- package/lib/theia-problem-indicator.js +38 -38
- package/lib/theia-problem-view.d.ts +5 -5
- package/lib/theia-problem-view.js +30 -30
- package/lib/theia-quick-command-palette.d.ts +12 -12
- package/lib/theia-quick-command-palette.js +78 -78
- package/lib/theia-rename-dialog.d.ts +5 -5
- package/lib/theia-rename-dialog.js +34 -34
- package/lib/theia-status-bar.d.ts +13 -13
- package/lib/theia-status-bar.js +39 -39
- package/lib/theia-status-indicator.d.ts +10 -10
- package/lib/theia-status-indicator.js +48 -48
- package/lib/theia-terminal.d.ts +13 -13
- package/lib/theia-terminal.js +59 -59
- package/lib/theia-text-editor.d.ts +26 -26
- package/lib/theia-text-editor.js +120 -120
- package/lib/theia-toggle-bottom-indicator.d.ts +4 -4
- package/lib/theia-toggle-bottom-indicator.js +26 -26
- package/lib/theia-toolbar-item.d.ts +10 -10
- package/lib/theia-toolbar-item.js +39 -39
- package/lib/theia-toolbar.d.ts +19 -19
- package/lib/theia-toolbar.js +90 -90
- package/lib/theia-tree-node.d.ts +19 -19
- package/lib/theia-tree-node.js +72 -72
- package/lib/theia-view.d.ts +32 -32
- package/lib/theia-view.js +149 -149
- package/lib/theia-welcome-view.d.ts +5 -5
- package/lib/theia-welcome-view.js +30 -30
- package/lib/theia-workspace.d.ts +18 -18
- package/lib/theia-workspace.js +69 -69
- package/lib/util.d.ts +19 -19
- package/lib/util.js +93 -93
- package/package.json +2 -2
- package/src/index.ts +46 -46
- package/src/tests/resources/sample-files1/sample.txt +4 -4
- package/src/tests/resources/sample-files1/sampleFolder/sampleFolder1/sampleFolder1-1/sampleFile1-1-1.txt +1 -1
- package/src/tests/resources/sample-files1/sampleFolder/sampleFolder1/sampleFolder1-1/sampleFile1-1-2.txt +1 -1
- package/src/tests/resources/sample-files1/sampleFolder/sampleFolder1/sampleFolder1-2/sampleFile1-2-1.txt +1 -1
- package/src/tests/resources/sample-files1/sampleFolder/sampleFolder1/sampleFolder1-2/sampleFile1-2-2.txt +1 -1
- package/src/tests/resources/sample-files1/sampleFolder/sampleFolder2/sampleFolder2-1/sampleFile2-1-1.txt +1 -1
- package/src/tests/resources/sample-files1/sampleFolder/sampleFolder2/sampleFolder2-1/sampleFile2-1-2.txt +1 -1
- package/src/tests/resources/sample-files1/sampleFolder/sampleFolder2/sampleFolder2-2/sampleFile2-2-1.txt +1 -1
- package/src/tests/resources/sample-files1/sampleFolder/sampleFolder2/sampleFolder2-2/sampleFile2-2-2.txt +1 -1
- package/src/tests/resources/sample-files2/another-sample.txt +1 -1
- package/src/tests/theia-app.test.ts +33 -33
- package/src/tests/theia-application-shell.test.ts +67 -67
- package/src/tests/theia-explorer-view.test.ts +211 -211
- package/src/tests/theia-getting-started.test.ts +50 -50
- package/src/tests/theia-main-menu.test.ts +133 -133
- package/src/tests/theia-output-view.test.ts +85 -85
- package/src/tests/theia-preference-view.test.ts +122 -122
- package/src/tests/theia-problems-view.test.ts +64 -64
- package/src/tests/theia-quick-command.test.ts +80 -80
- package/src/tests/theia-sample-app.test.ts +66 -66
- package/src/tests/theia-status-bar.test.ts +52 -52
- package/src/tests/theia-terminal-view.test.ts +90 -90
- package/src/tests/theia-text-editor.test.ts +187 -187
- package/src/tests/theia-toolbar.test.ts +69 -69
- package/src/tests/theia-workspace.test.ts +80 -80
- package/src/theia-about-dialog.ts +26 -26
- package/src/theia-app-loader.ts +167 -167
- package/src/theia-app.ts +188 -188
- package/src/theia-context-menu.ts +42 -42
- package/src/theia-dialog.ts +114 -114
- package/src/theia-editor.ts +73 -73
- package/src/theia-explorer-view.ts +311 -311
- package/src/theia-main-menu.ts +54 -54
- package/src/theia-menu-item.ts +75 -75
- package/src/theia-menu.ts +96 -96
- package/src/theia-monaco-editor.ts +83 -83
- package/src/theia-notification-indicator.ts +44 -44
- package/src/theia-notification-overlay.ts +94 -94
- package/src/theia-output-channel.ts +88 -88
- package/src/theia-output-view.ts +87 -87
- package/src/theia-page-object.ts +29 -29
- package/src/theia-preference-view.ts +240 -240
- package/src/theia-problem-indicator.ts +37 -37
- package/src/theia-problem-view.ts +30 -30
- package/src/theia-quick-command-palette.ts +81 -81
- package/src/theia-rename-dialog.ts +35 -35
- package/src/theia-status-bar.ts +44 -44
- package/src/theia-status-indicator.ts +50 -50
- package/src/theia-terminal.ts +69 -69
- package/src/theia-text-editor.ts +141 -141
- package/src/theia-toggle-bottom-indicator.ts +21 -21
- package/src/theia-toolbar-item.ts +41 -41
- package/src/theia-toolbar.ts +99 -99
- package/src/theia-tree-node.ts +81 -81
- package/src/theia-view.ts +177 -177
- package/src/theia-welcome-view.ts +31 -31
- package/src/theia-workspace.ts +76 -76
- package/src/util.ts +91 -91
|
@@ -1,133 +1,133 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2021 logi.cals GmbH, EclipseSource and others.
|
|
3
|
-
//
|
|
4
|
-
// This program and the accompanying materials are made available under the
|
|
5
|
-
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
-
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
-
//
|
|
8
|
-
// This Source Code may also be made available under the following Secondary
|
|
9
|
-
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
-
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
-
// with the GNU Classpath Exception which is available at
|
|
12
|
-
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
-
//
|
|
14
|
-
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
-
// *****************************************************************************
|
|
16
|
-
|
|
17
|
-
import { expect, test } from '@playwright/test';
|
|
18
|
-
import { TheiaApp } from '../theia-app';
|
|
19
|
-
import { TheiaAppLoader } from '../theia-app-loader';
|
|
20
|
-
import { TheiaAboutDialog } from '../theia-about-dialog';
|
|
21
|
-
import { TheiaMenuBar } from '../theia-main-menu';
|
|
22
|
-
import { OSUtil } from '../util';
|
|
23
|
-
import { TheiaExplorerView } from '../theia-explorer-view';
|
|
24
|
-
|
|
25
|
-
test.describe('Theia Main Menu', () => {
|
|
26
|
-
|
|
27
|
-
let app: TheiaApp;
|
|
28
|
-
let menuBar: TheiaMenuBar;
|
|
29
|
-
|
|
30
|
-
test.beforeAll(async ({ playwright, browser }) => {
|
|
31
|
-
app = await TheiaAppLoader.load({ playwright, browser });
|
|
32
|
-
menuBar = app.menuBar;
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
test.afterAll(async () => {
|
|
36
|
-
await app.page.close();
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
test('should show the main menu bar', async () => {
|
|
40
|
-
const menuBarItems = await menuBar.visibleMenuBarItems();
|
|
41
|
-
expect(menuBarItems).toContain('File');
|
|
42
|
-
expect(menuBarItems).toContain('Edit');
|
|
43
|
-
expect(menuBarItems).toContain('Help');
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
test("should open main menu 'File'", async () => {
|
|
47
|
-
const mainMenu = await menuBar.openMenu('File');
|
|
48
|
-
expect(await mainMenu.isOpen()).toBe(true);
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
test("should show the menu items 'New Text File' and 'New Folder'", async () => {
|
|
52
|
-
const mainMenu = await menuBar.openMenu('File');
|
|
53
|
-
const menuItems = await mainMenu.visibleMenuItems();
|
|
54
|
-
expect(menuItems).toContain('New Text File');
|
|
55
|
-
expect(menuItems).toContain('New Folder...');
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
test("should return menu item by name 'New Text File'", async () => {
|
|
59
|
-
const mainMenu = await menuBar.openMenu('File');
|
|
60
|
-
const menuItem = await mainMenu.menuItemByName('New Text File');
|
|
61
|
-
expect(menuItem).toBeDefined();
|
|
62
|
-
|
|
63
|
-
const label = await menuItem?.label();
|
|
64
|
-
expect(label).toBe('New Text File');
|
|
65
|
-
|
|
66
|
-
const shortCut = await menuItem?.shortCut();
|
|
67
|
-
expect(shortCut).toBe(OSUtil.isMacOS ? '⌥ N' : app.isElectron ? 'Ctrl+N' : 'Alt+N');
|
|
68
|
-
|
|
69
|
-
const hasSubmenu = await menuItem?.hasSubmenu();
|
|
70
|
-
expect(hasSubmenu).toBe(false);
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
test('should detect whether menu item has submenu', async () => {
|
|
74
|
-
const mainMenu = await menuBar.openMenu('File');
|
|
75
|
-
const newFileItem = await mainMenu.menuItemByName('New Text File');
|
|
76
|
-
const settingsItem = await mainMenu.menuItemByName('Preferences');
|
|
77
|
-
|
|
78
|
-
expect(await newFileItem?.hasSubmenu()).toBe(false);
|
|
79
|
-
expect(await settingsItem?.hasSubmenu()).toBe(true);
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
test('should be able to show menu item in submenu by path', async () => {
|
|
83
|
-
const mainMenu = await menuBar.openMenu('File');
|
|
84
|
-
const openPreferencesItem = await mainMenu.menuItemByNamePath('Preferences', 'Settings');
|
|
85
|
-
|
|
86
|
-
const label = await openPreferencesItem?.label();
|
|
87
|
-
expect(label).toBe('Settings');
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
test('should close main menu', async () => {
|
|
91
|
-
const mainMenu = await menuBar.openMenu('File');
|
|
92
|
-
await mainMenu.close();
|
|
93
|
-
expect(await mainMenu.isOpen()).toBe(false);
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
test('open about dialog using menu', async () => {
|
|
97
|
-
await (await menuBar.openMenu('Help')).clickMenuItem('About');
|
|
98
|
-
const aboutDialog = new TheiaAboutDialog(app);
|
|
99
|
-
expect(await aboutDialog.isVisible()).toBe(true);
|
|
100
|
-
await aboutDialog.page.getByRole('button', { name: 'OK' }).click();
|
|
101
|
-
expect(await aboutDialog.isVisible()).toBe(false);
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
test('open file via file menu and cancel', async () => {
|
|
105
|
-
const openFileEntry = app.isElectron ? 'Open File...' : 'Open...';
|
|
106
|
-
await (await menuBar.openMenu('File')).clickMenuItem(openFileEntry);
|
|
107
|
-
const fileDialog = await app.page.waitForSelector('div[class="dialogBlock"]');
|
|
108
|
-
expect(await fileDialog.isVisible()).toBe(true);
|
|
109
|
-
await app.page.locator('#theia-dialog-shell').getByRole('button', { name: 'Cancel' }).click();
|
|
110
|
-
expect(await fileDialog.isVisible()).toBe(false);
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
test('Create file via New File menu and cancel', async () => {
|
|
114
|
-
const openFileEntry = 'New File...';
|
|
115
|
-
await (await menuBar.openMenu('File')).clickMenuItem(openFileEntry);
|
|
116
|
-
const quickPick = app.page.getByPlaceholder('Select File Type or Enter');
|
|
117
|
-
// type file name and press enter
|
|
118
|
-
await quickPick.fill('test.txt');
|
|
119
|
-
await quickPick.press('Enter');
|
|
120
|
-
|
|
121
|
-
// check file dialog is opened and accept with "Create File" button
|
|
122
|
-
const fileDialog = await app.page.waitForSelector('div[class="dialogBlock"]');
|
|
123
|
-
expect(await fileDialog.isVisible()).toBe(true);
|
|
124
|
-
await app.page.locator('#theia-dialog-shell').getByRole('button', { name: 'Create File' }).click();
|
|
125
|
-
expect(await fileDialog.isVisible()).toBe(false);
|
|
126
|
-
|
|
127
|
-
// check file in workspace exists
|
|
128
|
-
const explorer = await app.openView(TheiaExplorerView);
|
|
129
|
-
await explorer.refresh();
|
|
130
|
-
await explorer.waitForVisibleFileNodes();
|
|
131
|
-
expect(await explorer.existsFileNode('test.txt')).toBe(true);
|
|
132
|
-
});
|
|
133
|
-
});
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2021 logi.cals GmbH, EclipseSource and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { expect, test } from '@playwright/test';
|
|
18
|
+
import { TheiaApp } from '../theia-app';
|
|
19
|
+
import { TheiaAppLoader } from '../theia-app-loader';
|
|
20
|
+
import { TheiaAboutDialog } from '../theia-about-dialog';
|
|
21
|
+
import { TheiaMenuBar } from '../theia-main-menu';
|
|
22
|
+
import { OSUtil } from '../util';
|
|
23
|
+
import { TheiaExplorerView } from '../theia-explorer-view';
|
|
24
|
+
|
|
25
|
+
test.describe('Theia Main Menu', () => {
|
|
26
|
+
|
|
27
|
+
let app: TheiaApp;
|
|
28
|
+
let menuBar: TheiaMenuBar;
|
|
29
|
+
|
|
30
|
+
test.beforeAll(async ({ playwright, browser }) => {
|
|
31
|
+
app = await TheiaAppLoader.load({ playwright, browser });
|
|
32
|
+
menuBar = app.menuBar;
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
test.afterAll(async () => {
|
|
36
|
+
await app.page.close();
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
test('should show the main menu bar', async () => {
|
|
40
|
+
const menuBarItems = await menuBar.visibleMenuBarItems();
|
|
41
|
+
expect(menuBarItems).toContain('File');
|
|
42
|
+
expect(menuBarItems).toContain('Edit');
|
|
43
|
+
expect(menuBarItems).toContain('Help');
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
test("should open main menu 'File'", async () => {
|
|
47
|
+
const mainMenu = await menuBar.openMenu('File');
|
|
48
|
+
expect(await mainMenu.isOpen()).toBe(true);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
test("should show the menu items 'New Text File' and 'New Folder'", async () => {
|
|
52
|
+
const mainMenu = await menuBar.openMenu('File');
|
|
53
|
+
const menuItems = await mainMenu.visibleMenuItems();
|
|
54
|
+
expect(menuItems).toContain('New Text File');
|
|
55
|
+
expect(menuItems).toContain('New Folder...');
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
test("should return menu item by name 'New Text File'", async () => {
|
|
59
|
+
const mainMenu = await menuBar.openMenu('File');
|
|
60
|
+
const menuItem = await mainMenu.menuItemByName('New Text File');
|
|
61
|
+
expect(menuItem).toBeDefined();
|
|
62
|
+
|
|
63
|
+
const label = await menuItem?.label();
|
|
64
|
+
expect(label).toBe('New Text File');
|
|
65
|
+
|
|
66
|
+
const shortCut = await menuItem?.shortCut();
|
|
67
|
+
expect(shortCut).toBe(OSUtil.isMacOS ? '⌥ N' : app.isElectron ? 'Ctrl+N' : 'Alt+N');
|
|
68
|
+
|
|
69
|
+
const hasSubmenu = await menuItem?.hasSubmenu();
|
|
70
|
+
expect(hasSubmenu).toBe(false);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
test('should detect whether menu item has submenu', async () => {
|
|
74
|
+
const mainMenu = await menuBar.openMenu('File');
|
|
75
|
+
const newFileItem = await mainMenu.menuItemByName('New Text File');
|
|
76
|
+
const settingsItem = await mainMenu.menuItemByName('Preferences');
|
|
77
|
+
|
|
78
|
+
expect(await newFileItem?.hasSubmenu()).toBe(false);
|
|
79
|
+
expect(await settingsItem?.hasSubmenu()).toBe(true);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
test('should be able to show menu item in submenu by path', async () => {
|
|
83
|
+
const mainMenu = await menuBar.openMenu('File');
|
|
84
|
+
const openPreferencesItem = await mainMenu.menuItemByNamePath('Preferences', 'Settings');
|
|
85
|
+
|
|
86
|
+
const label = await openPreferencesItem?.label();
|
|
87
|
+
expect(label).toBe('Settings');
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
test('should close main menu', async () => {
|
|
91
|
+
const mainMenu = await menuBar.openMenu('File');
|
|
92
|
+
await mainMenu.close();
|
|
93
|
+
expect(await mainMenu.isOpen()).toBe(false);
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
test('open about dialog using menu', async () => {
|
|
97
|
+
await (await menuBar.openMenu('Help')).clickMenuItem('About');
|
|
98
|
+
const aboutDialog = new TheiaAboutDialog(app);
|
|
99
|
+
expect(await aboutDialog.isVisible()).toBe(true);
|
|
100
|
+
await aboutDialog.page.getByRole('button', { name: 'OK' }).click();
|
|
101
|
+
expect(await aboutDialog.isVisible()).toBe(false);
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
test('open file via file menu and cancel', async () => {
|
|
105
|
+
const openFileEntry = app.isElectron ? 'Open File...' : 'Open...';
|
|
106
|
+
await (await menuBar.openMenu('File')).clickMenuItem(openFileEntry);
|
|
107
|
+
const fileDialog = await app.page.waitForSelector('div[class="dialogBlock"]');
|
|
108
|
+
expect(await fileDialog.isVisible()).toBe(true);
|
|
109
|
+
await app.page.locator('#theia-dialog-shell').getByRole('button', { name: 'Cancel' }).click();
|
|
110
|
+
expect(await fileDialog.isVisible()).toBe(false);
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
test('Create file via New File menu and cancel', async () => {
|
|
114
|
+
const openFileEntry = 'New File...';
|
|
115
|
+
await (await menuBar.openMenu('File')).clickMenuItem(openFileEntry);
|
|
116
|
+
const quickPick = app.page.getByPlaceholder('Select File Type or Enter');
|
|
117
|
+
// type file name and press enter
|
|
118
|
+
await quickPick.fill('test.txt');
|
|
119
|
+
await quickPick.press('Enter');
|
|
120
|
+
|
|
121
|
+
// check file dialog is opened and accept with "Create File" button
|
|
122
|
+
const fileDialog = await app.page.waitForSelector('div[class="dialogBlock"]');
|
|
123
|
+
expect(await fileDialog.isVisible()).toBe(true);
|
|
124
|
+
await app.page.locator('#theia-dialog-shell').getByRole('button', { name: 'Create File' }).click();
|
|
125
|
+
expect(await fileDialog.isVisible()).toBe(false);
|
|
126
|
+
|
|
127
|
+
// check file in workspace exists
|
|
128
|
+
const explorer = await app.openView(TheiaExplorerView);
|
|
129
|
+
await explorer.refresh();
|
|
130
|
+
await explorer.waitForVisibleFileNodes();
|
|
131
|
+
expect(await explorer.existsFileNode('test.txt')).toBe(true);
|
|
132
|
+
});
|
|
133
|
+
});
|
|
@@ -1,85 +1,85 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2023 EclipseSource and others.
|
|
3
|
-
//
|
|
4
|
-
// This program and the accompanying materials are made available under the
|
|
5
|
-
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
-
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
-
//
|
|
8
|
-
// This Source Code may also be made available under the following Secondary
|
|
9
|
-
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
-
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
-
// with the GNU Classpath Exception which is available at
|
|
12
|
-
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
-
//
|
|
14
|
-
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
-
// *****************************************************************************
|
|
16
|
-
|
|
17
|
-
import { expect, test } from '@playwright/test';
|
|
18
|
-
import { TheiaOutputViewChannel } from '../theia-output-channel';
|
|
19
|
-
import { TheiaApp } from '../theia-app';
|
|
20
|
-
import { TheiaAppLoader } from '../theia-app-loader';
|
|
21
|
-
import { TheiaOutputView } from '../theia-output-view';
|
|
22
|
-
|
|
23
|
-
let app: TheiaApp; let outputView: TheiaOutputView; let testChannel: TheiaOutputViewChannel;
|
|
24
|
-
test.describe('Theia Output View', () => {
|
|
25
|
-
|
|
26
|
-
test.beforeAll(async ({ playwright, browser }) => {
|
|
27
|
-
app = await TheiaAppLoader.load({ playwright, browser });
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
test.afterAll(async () => {
|
|
31
|
-
await app.page.close();
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
test('should open the output view and check if is visible and active', async () => {
|
|
35
|
-
outputView = await app.openView(TheiaOutputView);
|
|
36
|
-
expect(await outputView.isTabVisible()).toBe(true);
|
|
37
|
-
expect(await outputView.isDisplayed()).toBe(true);
|
|
38
|
-
expect(await outputView.isActive()).toBe(true);
|
|
39
|
-
});
|
|
40
|
-
test('should be opened at the bottom and have the title "Output"', async () => {
|
|
41
|
-
expect(await outputView.isInSidePanel()).toBe(false);
|
|
42
|
-
expect(await outputView.side()).toBe('bottom');
|
|
43
|
-
expect(await outputView.title()).toBe('Output');
|
|
44
|
-
});
|
|
45
|
-
test('should be closable', async () => {
|
|
46
|
-
expect(await outputView.isClosable()).toBe(true);
|
|
47
|
-
await outputView.close();
|
|
48
|
-
expect(await outputView.isTabVisible()).toBe(false);
|
|
49
|
-
expect(await outputView.isDisplayed()).toBe(false);
|
|
50
|
-
expect(await outputView.isActive()).toBe(false);
|
|
51
|
-
});
|
|
52
|
-
test('should select a test output channel', async () => {
|
|
53
|
-
outputView = await app.openView(TheiaOutputView);
|
|
54
|
-
expect(await outputView.isTabVisible()).toBe(true);
|
|
55
|
-
expect(await outputView.isDisplayed()).toBe(true);
|
|
56
|
-
expect(await outputView.isActive()).toBe(true);
|
|
57
|
-
|
|
58
|
-
const testChannelName = 'API Sample: my test channel';
|
|
59
|
-
expect(await outputView.selectOutputChannel(testChannelName)).toBe(true);
|
|
60
|
-
});
|
|
61
|
-
test('should check if the output view of the test output channel', async () => {
|
|
62
|
-
const testChannelName = 'API Sample: my test channel';
|
|
63
|
-
expect(await outputView.isOutputChannelSelected(testChannelName));
|
|
64
|
-
const channel = await outputView.getOutputChannel(testChannelName);
|
|
65
|
-
expect(channel).toBeDefined;
|
|
66
|
-
testChannel = channel!;
|
|
67
|
-
expect(await testChannel!.isDisplayed()).toBe(true);
|
|
68
|
-
});
|
|
69
|
-
test('should check if the output view test channel shows the test output', async () => {
|
|
70
|
-
expect(await testChannel.numberOfLines()).toBe(5);
|
|
71
|
-
expect(await testChannel.textContentOfLineByLineNumber(1)).toMatch('hello info1');
|
|
72
|
-
expect(await testChannel.maxSeverityOfLineByLineNumber(1)).toMatch('info');
|
|
73
|
-
expect(await testChannel.textContentOfLineByLineNumber(2)).toMatch('hello info2');
|
|
74
|
-
expect(await testChannel.maxSeverityOfLineByLineNumber(2)).toMatch('info');
|
|
75
|
-
expect(await testChannel.textContentOfLineByLineNumber(3)).toMatch('hello error');
|
|
76
|
-
expect(await testChannel.maxSeverityOfLineByLineNumber(3)).toMatch('error');
|
|
77
|
-
expect(await testChannel.textContentOfLineByLineNumber(4)).toMatch('hello warning');
|
|
78
|
-
expect(await testChannel.maxSeverityOfLineByLineNumber(4)).toMatch('warning');
|
|
79
|
-
expect(await testChannel.textContentOfLineByLineNumber(5)).toMatch(
|
|
80
|
-
'inlineInfo1 inlineWarning inlineError inlineInfo2'
|
|
81
|
-
);
|
|
82
|
-
expect(await testChannel.maxSeverityOfLineByLineNumber(5)).toMatch('error');
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
});
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2023 EclipseSource and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { expect, test } from '@playwright/test';
|
|
18
|
+
import { TheiaOutputViewChannel } from '../theia-output-channel';
|
|
19
|
+
import { TheiaApp } from '../theia-app';
|
|
20
|
+
import { TheiaAppLoader } from '../theia-app-loader';
|
|
21
|
+
import { TheiaOutputView } from '../theia-output-view';
|
|
22
|
+
|
|
23
|
+
let app: TheiaApp; let outputView: TheiaOutputView; let testChannel: TheiaOutputViewChannel;
|
|
24
|
+
test.describe('Theia Output View', () => {
|
|
25
|
+
|
|
26
|
+
test.beforeAll(async ({ playwright, browser }) => {
|
|
27
|
+
app = await TheiaAppLoader.load({ playwright, browser });
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test.afterAll(async () => {
|
|
31
|
+
await app.page.close();
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
test('should open the output view and check if is visible and active', async () => {
|
|
35
|
+
outputView = await app.openView(TheiaOutputView);
|
|
36
|
+
expect(await outputView.isTabVisible()).toBe(true);
|
|
37
|
+
expect(await outputView.isDisplayed()).toBe(true);
|
|
38
|
+
expect(await outputView.isActive()).toBe(true);
|
|
39
|
+
});
|
|
40
|
+
test('should be opened at the bottom and have the title "Output"', async () => {
|
|
41
|
+
expect(await outputView.isInSidePanel()).toBe(false);
|
|
42
|
+
expect(await outputView.side()).toBe('bottom');
|
|
43
|
+
expect(await outputView.title()).toBe('Output');
|
|
44
|
+
});
|
|
45
|
+
test('should be closable', async () => {
|
|
46
|
+
expect(await outputView.isClosable()).toBe(true);
|
|
47
|
+
await outputView.close();
|
|
48
|
+
expect(await outputView.isTabVisible()).toBe(false);
|
|
49
|
+
expect(await outputView.isDisplayed()).toBe(false);
|
|
50
|
+
expect(await outputView.isActive()).toBe(false);
|
|
51
|
+
});
|
|
52
|
+
test('should select a test output channel', async () => {
|
|
53
|
+
outputView = await app.openView(TheiaOutputView);
|
|
54
|
+
expect(await outputView.isTabVisible()).toBe(true);
|
|
55
|
+
expect(await outputView.isDisplayed()).toBe(true);
|
|
56
|
+
expect(await outputView.isActive()).toBe(true);
|
|
57
|
+
|
|
58
|
+
const testChannelName = 'API Sample: my test channel';
|
|
59
|
+
expect(await outputView.selectOutputChannel(testChannelName)).toBe(true);
|
|
60
|
+
});
|
|
61
|
+
test('should check if the output view of the test output channel', async () => {
|
|
62
|
+
const testChannelName = 'API Sample: my test channel';
|
|
63
|
+
expect(await outputView.isOutputChannelSelected(testChannelName));
|
|
64
|
+
const channel = await outputView.getOutputChannel(testChannelName);
|
|
65
|
+
expect(channel).toBeDefined;
|
|
66
|
+
testChannel = channel!;
|
|
67
|
+
expect(await testChannel!.isDisplayed()).toBe(true);
|
|
68
|
+
});
|
|
69
|
+
test('should check if the output view test channel shows the test output', async () => {
|
|
70
|
+
expect(await testChannel.numberOfLines()).toBe(5);
|
|
71
|
+
expect(await testChannel.textContentOfLineByLineNumber(1)).toMatch('hello info1');
|
|
72
|
+
expect(await testChannel.maxSeverityOfLineByLineNumber(1)).toMatch('info');
|
|
73
|
+
expect(await testChannel.textContentOfLineByLineNumber(2)).toMatch('hello info2');
|
|
74
|
+
expect(await testChannel.maxSeverityOfLineByLineNumber(2)).toMatch('info');
|
|
75
|
+
expect(await testChannel.textContentOfLineByLineNumber(3)).toMatch('hello error');
|
|
76
|
+
expect(await testChannel.maxSeverityOfLineByLineNumber(3)).toMatch('error');
|
|
77
|
+
expect(await testChannel.textContentOfLineByLineNumber(4)).toMatch('hello warning');
|
|
78
|
+
expect(await testChannel.maxSeverityOfLineByLineNumber(4)).toMatch('warning');
|
|
79
|
+
expect(await testChannel.textContentOfLineByLineNumber(5)).toMatch(
|
|
80
|
+
'inlineInfo1 inlineWarning inlineError inlineInfo2'
|
|
81
|
+
);
|
|
82
|
+
expect(await testChannel.maxSeverityOfLineByLineNumber(5)).toMatch('error');
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
});
|