Path: blob/main/test/smoke/src/areas/terminal/terminal-persistence.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 Persistence', () => {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});2425describe('detach/attach', () => {26// https://github.com/microsoft/vscode/issues/13779927it('should support basic reconnection', async () => {28await terminal.createTerminal();29// TODO: Handle passing in an actual regex, not string30await terminal.assertTerminalGroups([31[{ name: '.*' }]32]);3334// Get the terminal name35await terminal.assertTerminalGroups([36[{ name: '.*' }]37]);38const name = (await terminal.getTerminalGroups())[0][0].name!;3940// Detach41await terminal.runCommand(TerminalCommandId.DetachSession);42await terminal.assertTerminalViewHidden();4344// Attach45await terminal.runCommandWithValue(TerminalCommandIdWithValue.AttachToSession, name);46await terminal.assertTerminalGroups([47[{ name }]48]);49});5051it.skip('should persist buffer content', async () => {52await terminal.createTerminal();53// TODO: Handle passing in an actual regex, not string54await terminal.assertTerminalGroups([55[{ name: '.*' }]56]);5758// Get the terminal name59await terminal.assertTerminalGroups([60[{ name: '.*' }]61]);62const name = (await terminal.getTerminalGroups())[0][0].name!;6364// Write in terminal65await terminal.runCommandInTerminal('echo terminal_test_content');66await terminal.waitForTerminalText(buffer => buffer.some(e => e.includes('terminal_test_content')));6768// Detach69await terminal.runCommand(TerminalCommandId.DetachSession);70await terminal.assertTerminalViewHidden();7172// Attach73await terminal.runCommandWithValue(TerminalCommandIdWithValue.AttachToSession, name);74await terminal.assertTerminalGroups([75[{ name }]76]);77// There can be line wrapping, so remove newlines and carriage returns #21646478await terminal.waitForTerminalText(buffer => buffer.some(e => e.replaceAll(/[\r\n]/g, '').includes('terminal_test_content')));79});80});81});82}838485