diff --git a/extensions/vscode-api-tests/src/singlefolder-tests/webview.test.ts b/extensions/vscode-api-tests/src/singlefolder-tests/webview.test.ts
index e785f1d4afbe1ac8ec959f8da01c636d5199ac7b..df8af33f6b2c945084cae48c47cdb47bc9362c9a 100644
--- a/extensions/vscode-api-tests/src/singlefolder-tests/webview.test.ts
+++ b/extensions/vscode-api-tests/src/singlefolder-tests/webview.test.ts
@@ -7,7 +7,7 @@ import 'mocha';
import * as assert from 'assert';
import * as vscode from 'vscode';
import { join } from 'path';
-import { closeAllEditors, disposeAll, conditionalTest } from '../utils';
+import { closeAllEditors, disposeAll, conditionalTest, delay } from '../utils';
const webviewId = 'myWebview';
@@ -332,7 +332,27 @@ suite('Webview tests', () => {
webview.webview.postMessage({ value: 1 });
await firstResponse;
assert.strictEqual(webview.viewColumn, vscode.ViewColumn.One);
+ });
+
+ test('webview can copy text from webview', async () => {
+ const expectedText = `webview text from: ${Date.now()}!`;
+
+ const webview = _register(vscode.window.createWebviewPanel(webviewId, 'title', { viewColumn: vscode.ViewColumn.One }, { enableScripts: true, retainContextWhenHidden: true }));
+ const ready = getMesssage(webview);
+
+
+ webview.webview.html = createHtmlDocumentWithBody(/*html*/`
+ ${expectedText}
+ `);
+ await ready;
+ await vscode.commands.executeCommand('editor.action.webvieweditor.copy');
+ await delay(200); // Make sure copy has time to reach webview
+ assert.strictEqual(await vscode.env.clipboard.readText(), expectedText);
});
});