Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/test/smoke/src/areas/terminal/terminal-tabs.test.ts
3520 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { Application, Terminal, TerminalCommandId, TerminalCommandIdWithValue, SettingsEditor } from '../../../../automation';
7
import { setTerminalTestSettings } from './terminal-helpers';
8
9
export function setup(options?: { skipSuite: boolean }) {
10
(options?.skipSuite ? describe.skip : describe)('Terminal Tabs', () => {
11
// Acquire automation API
12
let terminal: Terminal;
13
let settingsEditor: SettingsEditor;
14
15
before(async function () {
16
const app = this.app as Application;
17
terminal = app.workbench.terminal;
18
settingsEditor = app.workbench.settingsEditor;
19
await setTerminalTestSettings(app);
20
});
21
22
after(async function () {
23
await settingsEditor.clearUserSettings();
24
});
25
26
it('clicking the plus button should create a terminal and display the tabs view showing no split decorations', async () => {
27
await terminal.createTerminal();
28
await terminal.clickPlusButton();
29
await terminal.assertTerminalGroups([[{}], [{}]]);
30
});
31
32
it('should rename the single tab', async () => {
33
await terminal.createTerminal();
34
const name = 'my terminal name';
35
await terminal.runCommandWithValue(TerminalCommandIdWithValue.Rename, name);
36
await terminal.assertSingleTab({ name });
37
});
38
39
// DEBT: Flaky https://github.com/microsoft/vscode/issues/216564
40
it.skip('should reset the tab name to the default value when no name is provided', async () => {
41
await terminal.createTerminal();
42
const defaultName = await terminal.getSingleTabName();
43
const name = 'my terminal name';
44
await terminal.runCommandWithValue(TerminalCommandIdWithValue.Rename, name);
45
await terminal.assertSingleTab({ name });
46
await terminal.runCommandWithValue(TerminalCommandIdWithValue.Rename, undefined);
47
await terminal.assertSingleTab({ name: defaultName });
48
});
49
50
it('should rename the tab in the tabs list', async () => {
51
await terminal.createTerminal();
52
await terminal.runCommand(TerminalCommandId.Split);
53
const name = 'my terminal name';
54
await terminal.runCommandWithValue(TerminalCommandIdWithValue.Rename, name);
55
await terminal.assertTerminalGroups([[{}, { name }]]);
56
});
57
58
it('should create a split terminal when single tab is alt clicked', async () => {
59
await terminal.createTerminal();
60
const page = await terminal.getPage();
61
page.keyboard.down('Alt');
62
await terminal.clickSingleTab();
63
page.keyboard.up('Alt');
64
await terminal.assertTerminalGroups([[{}, {}]]);
65
});
66
67
it('should do nothing when join tabs is run with only one terminal', async () => {
68
await terminal.runCommand(TerminalCommandId.Show);
69
await terminal.runCommand(TerminalCommandId.Join);
70
await terminal.assertTerminalGroups([[{}]]);
71
});
72
73
it('should do nothing when join tabs is run with only split terminals', async () => {
74
await terminal.runCommand(TerminalCommandId.Show);
75
await terminal.runCommand(TerminalCommandId.Split);
76
await terminal.runCommand(TerminalCommandId.Join);
77
await terminal.assertTerminalGroups([[{}], [{}]]);
78
});
79
80
it('should join tabs when more than one non-split terminal', async () => {
81
await terminal.runCommand(TerminalCommandId.Show);
82
await terminal.createTerminal();
83
await terminal.runCommand(TerminalCommandId.Join);
84
await terminal.assertTerminalGroups([[{}, {}]]);
85
});
86
87
it('should do nothing when unsplit tabs called with no splits', async () => {
88
await terminal.runCommand(TerminalCommandId.Show);
89
await terminal.createTerminal();
90
await terminal.assertTerminalGroups([[{}], [{}]]);
91
await terminal.runCommand(TerminalCommandId.Unsplit);
92
await terminal.assertTerminalGroups([[{}], [{}]]);
93
});
94
95
it('should unsplit tabs', async () => {
96
await terminal.runCommand(TerminalCommandId.Show);
97
await terminal.runCommand(TerminalCommandId.Split);
98
await terminal.assertTerminalGroups([[{}, {}]]);
99
await terminal.runCommand(TerminalCommandId.Unsplit);
100
await terminal.assertTerminalGroups([[{}], [{}]]);
101
});
102
103
it('should move the terminal to the editor area', async () => {
104
await terminal.runCommand(TerminalCommandId.Show);
105
await terminal.assertSingleTab({});
106
await terminal.runCommand(TerminalCommandId.MoveToEditor);
107
await terminal.assertEditorGroupCount(1);
108
});
109
});
110
}
111
112