Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/sessions/test/web.test.factory.ts
13389 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { IWorkbench, IWorkbenchConstructionOptions } from '../../workbench/browser/web.api.js';
7
import { TestSessionsBrowserMain } from './web.test.js';
8
import { IDisposable, toDisposable } from '../../base/common/lifecycle.js';
9
import { mark } from '../../base/common/performance.js';
10
import { DeferredPromise } from '../../base/common/async.js';
11
12
const workbenchPromise = new DeferredPromise<IWorkbench>();
13
14
/**
15
* Creates the Sessions workbench with mock services for E2E testing.
16
*/
17
export function create(domElement: HTMLElement, options: IWorkbenchConstructionOptions): IDisposable {
18
19
mark('code/didLoadWorkbenchMain');
20
21
let instantiatedWorkbench: IWorkbench | undefined = undefined;
22
new TestSessionsBrowserMain(domElement, options).open().then(workbench => {
23
instantiatedWorkbench = workbench;
24
workbenchPromise.complete(workbench);
25
});
26
27
return toDisposable(() => {
28
if (instantiatedWorkbench) {
29
instantiatedWorkbench.shutdown();
30
} else {
31
workbenchPromise.p.then(w => w.shutdown());
32
}
33
});
34
}
35
36