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 14682728232..7959d915c50 100644 --- a/extensions/vscode-api-tests/src/singlefolder-tests/webview.test.ts +++ b/extensions/vscode-api-tests/src/singlefolder-tests/webview.test.ts @@ -16,7 +16,7 @@ const testDocument = join(vscode.workspace.rootPath || '', './bower.json'); suite('Webview tests', () => { const disposables: vscode.Disposable[] = []; - function _register(disposable: T) { + function _register(disposable: T) { disposables.push(disposable); return disposable; } @@ -33,20 +33,24 @@ suite('Webview tests', () => { }); test('webview communication', async () => { - const webview = _register(createWebviewWithBody(/*html*/` + const webview = vscode.window.createWebviewPanel(webviewId, 'title', { viewColumn: vscode.ViewColumn.One }, { enableScripts: true }); + const firstResponse = getMesssage(webview); + webview.webview.html = createHtmlDocumentWithBody(/*html*/ ` `)); + `); - const response = await sendRecieveMessage(webview, { value: 1 }); - assert.strictEqual(response.value, 2); + webview.webview.postMessage({ value: 1 }); + assert.strictEqual((await firstResponse).value, 2); }); test('webview preserves state when switching visibility', async () => { - const webview = _register(createWebviewWithBody(/*html*/ ` + const webview = vscode.window.createWebviewPanel(webviewId, 'title', { viewColumn: vscode.ViewColumn.One }, { enableScripts: true }); + const firstResponse = getMesssage(webview); + webview.webview.html = createHtmlDocumentWithBody(/*html*/ ` `)); + `); - const firstResponse = await sendRecieveMessage(webview, { type: 'add' }); - assert.strictEqual(firstResponse.value, 1); + webview.webview.postMessage({ type: 'add' }); + assert.strictEqual((await firstResponse).value, 1); // Swap away from the webview const doc = await vscode.workspace.openTextDocument(testDocument); @@ -82,6 +86,8 @@ suite('Webview tests', () => { test('webview should keep dom state state when retainContextWhenHidden is set', async () => { const webview = _register(vscode.window.createWebviewPanel(webviewId, 'title', { viewColumn: vscode.ViewColumn.One }, { enableScripts: true, retainContextWhenHidden: true })); + const firstResponse = getMesssage(webview); + webview.webview.html = createHtmlDocumentWithBody(/*html*/ ` `); - const firstResponse = await sendRecieveMessage(webview, { type: 'add' }); - assert.strictEqual(firstResponse.value, 1); + webview.webview.postMessage({ type: 'add' }); + assert.strictEqual((await firstResponse).value, 1); // Swap away from the webview const doc = await vscode.workspace.openTextDocument(testDocument); @@ -118,6 +124,8 @@ suite('Webview tests', () => { test('webview should preserve position when switching visibility with retainContextWhenHidden', async () => { const webview = _register(vscode.window.createWebviewPanel(webviewId, 'title', { viewColumn: vscode.ViewColumn.One }, { enableScripts: true, retainContextWhenHidden: true })); + const firstResponse = getMesssage(webview); + webview.webview.html = createHtmlDocumentWithBody(/*html*/` ${'

Header

'.repeat(200)} `); - const firstResponse = await getMesssage(webview); - assert.strictEqual(firstResponse.value, 100); + assert.strictEqual((await firstResponse).value, 100); // Swap away from the webview const doc = await vscode.workspace.openTextDocument(testDocument); @@ -153,12 +160,6 @@ suite('Webview tests', () => { }); }); -function createWebviewWithBody(body: string) { - const webview = vscode.window.createWebviewPanel(webviewId, 'title', { viewColumn: vscode.ViewColumn.One }, { enableScripts: true }); - webview.webview.html = createHtmlDocumentWithBody(body); - return webview; -} - function createHtmlDocumentWithBody(body: string): string { return /*html*/`