Path: blob/main/test/smoke/src/areas/terminal/terminal-tabs.test.ts
3520 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { Application, Terminal, TerminalCommandId, TerminalCommandIdWithValue, SettingsEditor } from '../../../../automation';6import { setTerminalTestSettings } from './terminal-helpers';78export function setup(options?: { skipSuite: boolean }) {9(options?.skipSuite ? describe.skip : describe)('Terminal Tabs', () => {10// Acquire automation API11let terminal: Terminal;12let settingsEditor: SettingsEditor;1314before(async function () {15const app = this.app as Application;16terminal = app.workbench.terminal;17settingsEditor = app.workbench.settingsEditor;18await setTerminalTestSettings(app);19});2021after(async function () {22await settingsEditor.clearUserSettings();23});2425it('clicking the plus button should create a terminal and display the tabs view showing no split decorations', async () => {26await terminal.createTerminal();27await terminal.clickPlusButton();28await terminal.assertTerminalGroups([[{}], [{}]]);29});3031it('should rename the single tab', async () => {32await terminal.createTerminal();33const name = 'my terminal name';34await terminal.runCommandWithValue(TerminalCommandIdWithValue.Rename, name);35await terminal.assertSingleTab({ name });36});3738// DEBT: Flaky https://github.com/microsoft/vscode/issues/21656439it.skip('should reset the tab name to the default value when no name is provided', async () => {40await terminal.createTerminal();41const defaultName = await terminal.getSingleTabName();42const name = 'my terminal name';43await terminal.runCommandWithValue(TerminalCommandIdWithValue.Rename, name);44await terminal.assertSingleTab({ name });45await terminal.runCommandWithValue(TerminalCommandIdWithValue.Rename, undefined);46await terminal.assertSingleTab({ name: defaultName });47});4849it('should rename the tab in the tabs list', async () => {50await terminal.createTerminal();51await terminal.runCommand(TerminalCommandId.Split);52const name = 'my terminal name';53await terminal.runCommandWithValue(TerminalCommandIdWithValue.Rename, name);54await terminal.assertTerminalGroups([[{}, { name }]]);55});5657it('should create a split terminal when single tab is alt clicked', async () => {58await terminal.createTerminal();59const page = await terminal.getPage();60page.keyboard.down('Alt');61await terminal.clickSingleTab();62page.keyboard.up('Alt');63await terminal.assertTerminalGroups([[{}, {}]]);64});6566it('should do nothing when join tabs is run with only one terminal', async () => {67await terminal.runCommand(TerminalCommandId.Show);68await terminal.runCommand(TerminalCommandId.Join);69await terminal.assertTerminalGroups([[{}]]);70});7172it('should do nothing when join tabs is run with only split terminals', async () => {73await terminal.runCommand(TerminalCommandId.Show);74await terminal.runCommand(TerminalCommandId.Split);75await terminal.runCommand(TerminalCommandId.Join);76await terminal.assertTerminalGroups([[{}], [{}]]);77});7879it('should join tabs when more than one non-split terminal', async () => {80await terminal.runCommand(TerminalCommandId.Show);81await terminal.createTerminal();82await terminal.runCommand(TerminalCommandId.Join);83await terminal.assertTerminalGroups([[{}, {}]]);84});8586it('should do nothing when unsplit tabs called with no splits', async () => {87await terminal.runCommand(TerminalCommandId.Show);88await terminal.createTerminal();89await terminal.assertTerminalGroups([[{}], [{}]]);90await terminal.runCommand(TerminalCommandId.Unsplit);91await terminal.assertTerminalGroups([[{}], [{}]]);92});9394it('should unsplit tabs', async () => {95await terminal.runCommand(TerminalCommandId.Show);96await terminal.runCommand(TerminalCommandId.Split);97await terminal.assertTerminalGroups([[{}, {}]]);98await terminal.runCommand(TerminalCommandId.Unsplit);99await terminal.assertTerminalGroups([[{}], [{}]]);100});101102it('should move the terminal to the editor area', async () => {103await terminal.runCommand(TerminalCommandId.Show);104await terminal.assertSingleTab({});105await terminal.runCommand(TerminalCommandId.MoveToEditor);106await terminal.assertEditorGroupCount(1);107});108});109}110111112