diff --git a/src/vs/platform/terminal/common/terminal.ts b/src/vs/platform/terminal/common/terminal.ts index 32247de9d605b..c3d3657b6a9ce 100644 --- a/src/vs/platform/terminal/common/terminal.ts +++ b/src/vs/platform/terminal/common/terminal.ts @@ -557,7 +557,6 @@ export interface IShellLaunchConfigDto { export interface ITerminalProcessOptions { shellIntegration: { enabled: boolean; - showWelcome: boolean; }; windowsEnableConpty: boolean; } diff --git a/src/vs/platform/terminal/node/terminalEnvironment.ts b/src/vs/platform/terminal/node/terminalEnvironment.ts index d24ddc465c75c..c901fe50832a3 100644 --- a/src/vs/platform/terminal/node/terminalEnvironment.ts +++ b/src/vs/platform/terminal/node/terminalEnvironment.ts @@ -131,9 +131,8 @@ export function getShellIntegrationInjection( return undefined; } if (newArgs) { - const additionalArgs = options.showWelcome ? '' : ' -HideWelcome'; newArgs = [...newArgs]; // Shallow clone the array to avoid setting the default array - newArgs[newArgs.length - 1] = format(newArgs[newArgs.length - 1], appRoot, additionalArgs); + newArgs[newArgs.length - 1] = format(newArgs[newArgs.length - 1], appRoot, ''); } return { newArgs }; } @@ -156,9 +155,6 @@ export function getShellIntegrationInjection( } newArgs = [...newArgs]; // Shallow clone the array to avoid setting the default array newArgs[newArgs.length - 1] = format(newArgs[newArgs.length - 1], appRoot); - if (!options.showWelcome) { - envMixin['VSCODE_SHELL_HIDE_WELCOME'] = '1'; - } return { newArgs, envMixin }; } case 'pwsh': { @@ -170,9 +166,8 @@ export function getShellIntegrationInjection( if (!newArgs) { return undefined; } - const additionalArgs = options.showWelcome ? '' : ' -HideWelcome'; newArgs = [...newArgs]; // Shallow clone the array to avoid setting the default array - newArgs[newArgs.length - 1] = format(newArgs[newArgs.length - 1], appRoot, additionalArgs); + newArgs[newArgs.length - 1] = format(newArgs[newArgs.length - 1], appRoot, ''); return { newArgs }; } case 'zsh': { @@ -208,9 +203,6 @@ export function getShellIntegrationInjection( source: path.join(appRoot, 'out/vs/workbench/contrib/terminal/browser/media/shellIntegration-login.zsh'), dest: path.join(zdotdir, '.zlogin') }); - if (!options.showWelcome) { - envMixin['VSCODE_SHELL_HIDE_WELCOME'] = '1'; - } return { newArgs, envMixin, filesToCopy }; } } diff --git a/src/vs/platform/terminal/test/node/terminalEnvironment.test.ts b/src/vs/platform/terminal/test/node/terminalEnvironment.test.ts index 6a22827d3cc5b..07b224644dd1e 100644 --- a/src/vs/platform/terminal/test/node/terminalEnvironment.test.ts +++ b/src/vs/platform/terminal/test/node/terminalEnvironment.test.ts @@ -8,8 +8,8 @@ import { NullLogService } from 'vs/platform/log/common/log'; import { ITerminalProcessOptions } from 'vs/platform/terminal/common/terminal'; import { getShellIntegrationInjection, IShellIntegrationConfigInjection } from 'vs/platform/terminal/node/terminalEnvironment'; -const enabledProcessOptions: ITerminalProcessOptions['shellIntegration'] = { enabled: true, showWelcome: true }; -const disabledProcessOptions: ITerminalProcessOptions['shellIntegration'] = { enabled: false, showWelcome: true }; +const enabledProcessOptions: ITerminalProcessOptions['shellIntegration'] = { enabled: true }; +const disabledProcessOptions: ITerminalProcessOptions['shellIntegration'] = { enabled: false }; const pwshExe = process.platform === 'win32' ? 'pwsh.exe' : 'pwsh'; const repoRoot = process.platform === 'win32' ? process.cwd()[0].toLowerCase() + process.cwd().substring(1) : process.cwd(); const logService = new NullLogService(); diff --git a/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts b/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts index 15d0dd806e6bd..d56a7fe620e15 100644 --- a/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts +++ b/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts @@ -22,7 +22,6 @@ import { TerminalLink } from 'vs/workbench/contrib/terminal/browser/links/termin import { TerminalLinkDetectorAdapter } from 'vs/workbench/contrib/terminal/browser/links/terminalLinkDetectorAdapter'; import { TerminalLocalFileLinkOpener, TerminalLocalFolderInWorkspaceLinkOpener, TerminalLocalFolderOutsideWorkspaceLinkOpener, TerminalSearchLinkOpener, TerminalUrlLinkOpener } from 'vs/workbench/contrib/terminal/browser/links/terminalLinkOpeners'; import { lineAndColumnClause, TerminalLocalLinkDetector, unixLocalLinkClause, winDrivePrefix, winLocalLinkClause } from 'vs/workbench/contrib/terminal/browser/links/terminalLocalLinkDetector'; -import { TerminalShellIntegrationLinkDetector } from 'vs/workbench/contrib/terminal/browser/links/terminalShellIntegrationLinkDetector'; import { TerminalUriLinkDetector } from 'vs/workbench/contrib/terminal/browser/links/terminalUriLinkDetector'; import { TerminalWordLinkDetector } from 'vs/workbench/contrib/terminal/browser/links/terminalWordLinkDetector'; import { ITerminalExternalLinkProvider, TerminalLinkQuickPickEvent } from 'vs/workbench/contrib/terminal/browser/terminal'; @@ -75,7 +74,6 @@ export class TerminalLinkManager extends DisposableStore { if (this._configurationService.getValue(TERMINAL_CONFIG_SECTION).enableFileLinks) { this._setupLinkDetector(TerminalLocalLinkDetector.id, this._instantiationService.createInstance(TerminalLocalLinkDetector, this._xterm, capabilities, this._processManager.os || OS, this._resolvePath.bind(this))); } - this._setupLinkDetector(TerminalShellIntegrationLinkDetector.id, this._instantiationService.createInstance(TerminalShellIntegrationLinkDetector, this._xterm)); this._setupLinkDetector(TerminalWordLinkDetector.id, this._instantiationService.createInstance(TerminalWordLinkDetector, this._xterm)); capabilities.get(TerminalCapability.CwdDetection)?.onDidChangeCwd(cwd => { diff --git a/src/vs/workbench/contrib/terminal/browser/links/terminalShellIntegrationLinkDetector.ts b/src/vs/workbench/contrib/terminal/browser/links/terminalShellIntegrationLinkDetector.ts deleted file mode 100644 index c43e00e3f62f6..0000000000000 --- a/src/vs/workbench/contrib/terminal/browser/links/terminalShellIntegrationLinkDetector.ts +++ /dev/null @@ -1,70 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { Schemas } from 'vs/base/common/network'; -import { URI } from 'vs/base/common/uri'; -import { localize } from 'vs/nls'; -import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { TerminalSettingId } from 'vs/platform/terminal/common/terminal'; -import { ITerminalSimpleLink, ITerminalLinkDetector, TerminalBuiltinLinkType } from 'vs/workbench/contrib/terminal/browser/links/links'; -import { terminalStrings } from 'vs/workbench/contrib/terminal/common/terminalStrings'; -import { IBufferCell, IBufferLine, Terminal } from 'xterm'; - -// This is intentionally not localized currently as it must match the text in the shell script -const linkText = 'Shell integration activated'; -const linkCodes = new Uint8Array(linkText.split('').map(e => e.charCodeAt(0))); - -export class TerminalShellIntegrationLinkDetector implements ITerminalLinkDetector { - static id = 'shellintegration'; - - constructor( - readonly xterm: Terminal, - @IConfigurationService private readonly _configurationService: IConfigurationService - ) { - } - - detect(lines: IBufferLine[], startLine: number, endLine: number): ITerminalSimpleLink[] { - if (this._matches(lines)) { - return [{ - text: linkText, - type: TerminalBuiltinLinkType.Url, - label: localize('learn', 'Learn about shell integration'), - uri: URI.from({ - scheme: Schemas.https, - path: 'aka.ms/vscode-shell-integration' - }), - bufferRange: { - start: { x: 1, y: startLine + 1 }, - end: { x: linkText.length % this.xterm.cols, y: startLine + Math.floor(linkText.length / this.xterm.cols) + 1 } - }, - actions: [{ - label: terminalStrings.doNotShowAgain, - commandId: '', - run: () => this._hideMessage() - }] - }]; - } - - return []; - } - - private _matches(lines: IBufferLine[]): boolean { - if (lines.length < linkCodes.length) { - return false; - } - let cell: IBufferCell | undefined; - for (let i = 0; i < linkCodes.length; i++) { - cell = lines[Math.floor(i / this.xterm.cols)].getCell(i % this.xterm.cols, cell); - if (cell?.getCode() !== linkCodes[i]) { - return false; - } - } - return true; - } - - private async _hideMessage() { - await this._configurationService.updateValue(TerminalSettingId.ShellIntegrationShowWelcome, false); - } -} diff --git a/src/vs/workbench/contrib/terminal/browser/media/shellIntegration-bash.sh b/src/vs/workbench/contrib/terminal/browser/media/shellIntegration-bash.sh index 0c5d62458d598..e4a0fa342c663 100755 --- a/src/vs/workbench/contrib/terminal/browser/media/shellIntegration-bash.sh +++ b/src/vs/workbench/contrib/terminal/browser/media/shellIntegration-bash.sh @@ -25,8 +25,7 @@ else fi if [[ "$PROMPT_COMMAND" =~ .*(' '.*\;)|(\;.*' ').* ]]; then - builtin echo -e "\033[1;33mShell integration cannot be activated due to complex PROMPT_COMMAND: $PROMPT_COMMAND\033[0m" - VSCODE_SHELL_HIDE_WELCOME="" + VSCODE_SHELL_INTEGRATION="" builtin return fi @@ -142,8 +141,3 @@ else fi trap '__vsc_preexec' DEBUG -if [ -z "$VSCODE_SHELL_HIDE_WELCOME" ]; then - builtin echo -e "\033[1;32mShell integration activated\033[0m" -else - VSCODE_SHELL_HIDE_WELCOME="" -fi diff --git a/src/vs/workbench/contrib/terminal/browser/media/shellIntegration-rc.zsh b/src/vs/workbench/contrib/terminal/browser/media/shellIntegration-rc.zsh index 8c014a34c5d0c..e1f6a34d67542 100644 --- a/src/vs/workbench/contrib/terminal/browser/media/shellIntegration-rc.zsh +++ b/src/vs/workbench/contrib/terminal/browser/media/shellIntegration-rc.zsh @@ -104,10 +104,3 @@ __vsc_preexec() { } add-zsh-hook precmd __vsc_precmd add-zsh-hook preexec __vsc_preexec - -# Show the welcome message -if [ -z "${VSCODE_SHELL_HIDE_WELCOME-}" ]; then - builtin echo "\033[1;32mShell integration activated\033[0m" -else - VSCODE_SHELL_HIDE_WELCOME="" -fi diff --git a/src/vs/workbench/contrib/terminal/browser/media/shellIntegration.ps1 b/src/vs/workbench/contrib/terminal/browser/media/shellIntegration.ps1 index 9405b77223f33..83b347b25d800 100644 --- a/src/vs/workbench/contrib/terminal/browser/media/shellIntegration.ps1 +++ b/src/vs/workbench/contrib/terminal/browser/media/shellIntegration.ps1 @@ -3,11 +3,6 @@ # Licensed under the MIT License. See License.txt in the project root for license information. # --------------------------------------------------------------------------------------------- -param( - [Parameter(HelpMessage="Hides the shell integration welcome message")] - [switch] $HideWelcome = $False -) - $Global:__VSCodeOriginalPrompt = $function:Prompt $Global:__LastHistoryId = -1 @@ -72,8 +67,3 @@ if (Get-Module -Name PSReadLine) { # Set IsWindows property [Console]::Write("`e]633;P;IsWindows=$($IsWindows)`a") - -# Show the welcome message -if ($HideWelcome -eq $False) { - Write-Host "`e[1mShell integration activated`e[0m" -ForegroundColor Green -} diff --git a/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts b/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts index 6c09333437c70..2a5080e8115f8 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts @@ -249,8 +249,7 @@ export class TerminalProcessManager extends Disposable implements ITerminalProce }); const options: ITerminalProcessOptions = { shellIntegration: { - enabled: this._configurationService.getValue(TerminalSettingId.ShellIntegrationEnabled), - showWelcome: this._configurationService.getValue(TerminalSettingId.ShellIntegrationShowWelcome), + enabled: this._configurationService.getValue(TerminalSettingId.ShellIntegrationEnabled) }, windowsEnableConpty: this._configHelper.config.windowsEnableConpty && !isScreenReaderModeEnabled }; @@ -436,8 +435,7 @@ export class TerminalProcessManager extends Disposable implements ITerminalProce const options: ITerminalProcessOptions = { shellIntegration: { - enabled: this._configurationService.getValue(TerminalSettingId.ShellIntegrationEnabled), - showWelcome: this._configurationService.getValue(TerminalSettingId.ShellIntegrationShowWelcome), + enabled: this._configurationService.getValue(TerminalSettingId.ShellIntegrationEnabled) }, windowsEnableConpty: this._configHelper.config.windowsEnableConpty && !isScreenReaderModeEnabled }; diff --git a/src/vs/workbench/contrib/terminal/browser/terminalTabsList.ts b/src/vs/workbench/contrib/terminal/browser/terminalTabsList.ts index 5cf171158444b..868644fc9184f 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalTabsList.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalTabsList.ts @@ -308,7 +308,7 @@ class TerminalTabsRenderer implements IListRenderer 0) { - shellIntegrationString += `${markdown ? '\n\n---\n\n' : '\n\n'} ${localize('shellIntegration.enabled', "Shell integration is enabled")}`; - for (const capability of shellIntegrationCapabilities) { - shellIntegrationString += `\n- ${getCapabilityName(capability)}`; - } + shellIntegrationString += `${markdown ? '\n\n---\n\n' : '\n\n'} ${localize('shellIntegration.enabled', "Shell integration activated")}`; + } else { + shellIntegrationString += `${markdown ? '\n\n---\n\n' : '\n\n'} ${localize('shellIntegration.activationFailed', "Shell integration failed to activate")}`; } return shellIntegrationString; } diff --git a/src/vs/workbench/contrib/terminal/browser/terminalView.ts b/src/vs/workbench/contrib/terminal/browser/terminalView.ts index 03cb3ead66363..5001d7bd3765a 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalView.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalView.ts @@ -373,12 +373,13 @@ class SingleTerminalTabActionViewItem extends MenuEntryActionViewItem { @IThemeService private readonly _themeService: IThemeService, @IContextMenuService private readonly _contextMenuService: IContextMenuService, @ICommandService private readonly _commandService: ICommandService, + @IConfigurationService configurationService: IConfigurationService ) { super(new MenuItemAction( { id: action.id, title: getSingleTabLabel(_terminalGroupService.activeInstance, _terminalService.configHelper.config.tabs.separator), - tooltip: getSingleTabTooltip(_terminalGroupService.activeInstance, _terminalService.configHelper.config.tabs.separator) + tooltip: getSingleTabTooltip(_terminalGroupService.activeInstance, _terminalService.configHelper.config.tabs.separator, configurationService) }, { id: TerminalCommandId.Split, @@ -399,12 +400,12 @@ class SingleTerminalTabActionViewItem extends MenuEntryActionViewItem { this._register(this._terminalService.onDidChangeInstanceColor(e => this.updateLabel(e))); this._register(this._terminalService.onDidChangeInstanceTitle(e => { if (e === this._terminalGroupService.activeInstance) { - this._action.tooltip = getSingleTabTooltip(e, this._terminalService.configHelper.config.tabs.separator); + this._action.tooltip = getSingleTabTooltip(e, this._terminalService.configHelper.config.tabs.separator, configurationService); this.updateLabel(); } })); this._register(this._terminalService.onDidChangeInstanceCapability(e => { - this._action.tooltip = getSingleTabTooltip(e, this._terminalService.configHelper.config.tabs.separator); + this._action.tooltip = getSingleTabTooltip(e, this._terminalService.configHelper.config.tabs.separator, configurationService); this.updateLabel(e); })); @@ -529,11 +530,11 @@ function getSingleTabLabel(instance: ITerminalInstance | undefined, separator: s return `${label} $(${primaryStatus.icon.id})`; } -function getSingleTabTooltip(instance: ITerminalInstance | undefined, separator: string): string { +function getSingleTabTooltip(instance: ITerminalInstance | undefined, separator: string, configurationService: IConfigurationService): string { if (!instance) { return ''; } - const shellIntegrationString = getShellIntegrationTooltip(instance); + const shellIntegrationString = getShellIntegrationTooltip(instance, false, configurationService); const title = getSingleTabTitle(instance, separator); return shellIntegrationString ? title + shellIntegrationString : title; } diff --git a/src/vs/workbench/contrib/terminal/browser/xterm/decorationAddon.ts b/src/vs/workbench/contrib/terminal/browser/xterm/decorationAddon.ts index 3f07b624fa7c7..efaa21a930cab 100644 --- a/src/vs/workbench/contrib/terminal/browser/xterm/decorationAddon.ts +++ b/src/vs/workbench/contrib/terminal/browser/xterm/decorationAddon.ts @@ -23,6 +23,7 @@ import { toolbarHoverBackground } from 'vs/platform/theme/common/colorRegistry'; import { TerminalSettingId } from 'vs/platform/terminal/common/terminal'; import { TERMINAL_COMMAND_DECORATION_DEFAULT_BACKGROUND_COLOR, TERMINAL_COMMAND_DECORATION_ERROR_BACKGROUND_COLOR, TERMINAL_COMMAND_DECORATION_SUCCESS_BACKGROUND_COLOR } from 'vs/workbench/contrib/terminal/common/terminalColorRegistry'; import { Color } from 'vs/base/common/color'; +import { IOpenerService } from 'vs/platform/opener/common/opener'; const enum DecorationSelector { CommandDecoration = 'terminal-command-decoration', @@ -58,7 +59,8 @@ export class DecorationAddon extends Disposable implements ITerminalAddon { @IContextMenuService private readonly _contextMenuService: IContextMenuService, @IHoverService private readonly _hoverService: IHoverService, @IConfigurationService private readonly _configurationService: IConfigurationService, - @IThemeService private readonly _themeService: IThemeService + @IThemeService private readonly _themeService: IThemeService, + @IOpenerService private readonly _openerService: IOpenerService ) { super(); this._register(toDisposable(() => this.clearDecorations(true))); @@ -324,6 +326,10 @@ export class DecorationAddon extends Disposable implements ITerminalAddon { class: 'rerun-command', tooltip: 'Rerun Command', dispose: () => { }, id: 'terminal.rerunCommand', label: localize("terminal.rerunCommand", 'Rerun Command'), enabled: true, run: () => this._onDidRequestRunCommand.fire({ command }) }); + actions.push({ + class: 'how-does-this-work', tooltip: 'How does this work?', dispose: () => { }, id: 'terminal.howDoesThisWork', label: localize("terminal.howDoesThisWork", 'How does this work?'), enabled: true, + run: () => this._openerService.open('https://code.visualstudio.com/docs/editor/integrated-terminal#_shell-integration') + }); return actions; } } diff --git a/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts b/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts index 3ddae516bb0a3..8cb77e7d24b2d 100644 --- a/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts +++ b/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts @@ -534,7 +534,7 @@ const terminalConfiguration: IConfigurationNode = { }, [TerminalSettingId.ShellIntegrationEnabled]: { restricted: true, - markdownDescription: localize('terminal.integrated.shellIntegration.enabled', "Enable the experimental shell integration feature which will turn on certain features like enhanced command tracking and current working directory detection. Shell integration works by injecting a script that is run when the shell is initialized which lets the terminal gain additional insights into what is happening within the terminal, the script injection may not work if you have custom arguments defined in the terminal profile.\n\nSupported shells:\n\n- Linux/macOS: bash, pwsh, zsh\n - Windows: pwsh\n\nThis setting applies only when terminals are created, you will need to restart terminals for the setting to take effect."), + markdownDescription: localize('terminal.integrated.shellIntegration.enabled', "Enable features like enhanced command tracking and current working directory detection. \n\nShell integration works by injecting the shell with a startup script. The script gives VSCode insight into what is happening within the terminal.\n\nSupported shells:\n\n- Linux/macOS: bash, pwsh, zsh\n - Windows: pwsh\n\nThis setting applies only when terminals are created, so you will need to restart your terminals for it to take effect.\n\n Note that the script injection may not work if you have custom arguments defined in the terminal profile, a [complex bash `PROMPT_COMMAND`](https://code.visualstudio.com/docs/editor/integrated-terminal#_complex-bash-promptcommand), or other unsupported setup."), type: 'boolean', default: false }, @@ -544,12 +544,6 @@ const terminalConfiguration: IConfigurationNode = { type: 'boolean', default: true }, - [TerminalSettingId.ShellIntegrationShowWelcome]: { - restricted: true, - markdownDescription: localize('terminal.integrated.shellIntegration.showWelcome', "Whether to show the shell integration activated welcome message in the terminal when the feature is enabled."), - type: 'boolean', - default: true - }, [TerminalSettingId.ShellIntegrationCommandHistory]: { restricted: true, markdownDescription: localize('terminal.integrated.shellIntegration.history', "Controls the number of recently used commands to keep in the terminal command history. Set to 0 to disable terminal command history."), diff --git a/test/automation/src/terminal.ts b/test/automation/src/terminal.ts index cd8f5968dea38..9823f825936c6 100644 --- a/test/automation/src/terminal.ts +++ b/test/automation/src/terminal.ts @@ -155,10 +155,6 @@ export class Terminal { } } - async assertShellIntegrationActivated(): Promise { - await this.waitForTerminalText(buffer => buffer.some(e => e.includes('Shell integration activated'))); - } - async getTerminalGroups(): Promise { const tabCount = (await this.code.waitForElements(Selector.Tabs, true)).length; const groups: TerminalGroup[] = []; diff --git a/test/smoke/src/areas/terminal/terminal-shellIntegration.test.ts b/test/smoke/src/areas/terminal/terminal-shellIntegration.test.ts index 176efb250b5bd..04b2831e28e08 100644 --- a/test/smoke/src/areas/terminal/terminal-shellIntegration.test.ts +++ b/test/smoke/src/areas/terminal/terminal-shellIntegration.test.ts @@ -19,28 +19,19 @@ export function setup() { }); describe('Shell integration', function () { - describe('Activation', function () { - it('should activate shell integration on creation of a terminal', async () => { - await terminal.createTerminal(); - await terminal.assertShellIntegrationActivated(); - }); - }); (process.platform === 'win32' ? describe.skip : describe)('Decorations', function () { describe('Should show default icons', function () { it('Placeholder', async () => { await terminal.createTerminal(); - await terminal.assertShellIntegrationActivated(); await terminal.assertCommandDecorations({ placeholder: 1, success: 0, error: 0 }); }); it('Success', async () => { await terminal.createTerminal(); - await terminal.assertShellIntegrationActivated(); await terminal.runCommandInTerminal(`ls`); await terminal.assertCommandDecorations({ placeholder: 1, success: 1, error: 0 }); }); it('Error', async () => { await terminal.createTerminal(); - await terminal.assertShellIntegrationActivated(); await terminal.runCommandInTerminal(`fsdkfsjdlfksjdkf`); await terminal.assertCommandDecorations({ placeholder: 1, success: 0, error: 1 }); }); @@ -48,7 +39,6 @@ export function setup() { describe('Custom configuration', function () { it('Should update and show custom icons', async () => { await terminal.createTerminal(); - await terminal.assertShellIntegrationActivated(); await terminal.assertCommandDecorations({ placeholder: 1, success: 0, error: 0 }); await terminal.runCommandInTerminal(`ls`); await terminal.runCommandInTerminal(`fsdkfsjdlfksjdkf`);