Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/test/sanity/src/serverWeb.test.ts
5222 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 { TestContext } from './context.js';
7
import { UITest } from './uiTest.js';
8
9
export function setup(context: TestContext) {
10
context.test('server-web-alpine-arm64', ['alpine', 'arm64', 'browser'], async () => {
11
const dir = await context.downloadAndUnpack('server-alpine-arm64-web');
12
const entryPoint = context.getServerEntryPoint(dir);
13
await testServer(entryPoint);
14
});
15
16
context.test('server-web-alpine-x64', ['alpine', 'x64', 'browser'], async () => {
17
const dir = await context.downloadAndUnpack('server-linux-alpine-web');
18
const entryPoint = context.getServerEntryPoint(dir);
19
await testServer(entryPoint);
20
});
21
22
context.test('server-web-darwin-arm64', ['darwin', 'arm64', 'browser'], async () => {
23
const dir = await context.downloadAndUnpack('server-darwin-arm64-web');
24
context.validateAllCodesignSignatures(dir);
25
const entryPoint = context.getServerEntryPoint(dir);
26
await testServer(entryPoint);
27
});
28
29
context.test('server-web-darwin-x64', ['darwin', 'x64', 'browser'], async () => {
30
const dir = await context.downloadAndUnpack('server-darwin-web');
31
context.validateAllCodesignSignatures(dir);
32
const entryPoint = context.getServerEntryPoint(dir);
33
await testServer(entryPoint);
34
});
35
36
context.test('server-web-linux-arm64', ['linux', 'arm64', 'browser'], async () => {
37
const dir = await context.downloadAndUnpack('server-linux-arm64-web');
38
const entryPoint = context.getServerEntryPoint(dir);
39
await testServer(entryPoint);
40
});
41
42
context.test('server-web-linux-armhf', ['linux', 'arm32', 'browser'], async () => {
43
const dir = await context.downloadAndUnpack('server-linux-armhf-web');
44
const entryPoint = context.getServerEntryPoint(dir);
45
await testServer(entryPoint);
46
});
47
48
context.test('server-web-linux-x64', ['linux', 'x64', 'browser'], async () => {
49
const dir = await context.downloadAndUnpack('server-linux-x64-web');
50
const entryPoint = context.getServerEntryPoint(dir);
51
await testServer(entryPoint);
52
});
53
54
context.test('server-web-win32-arm64', ['windows', 'arm64', 'browser'], async () => {
55
const dir = await context.downloadAndUnpack('server-win32-arm64-web');
56
context.validateAllAuthenticodeSignatures(dir);
57
const entryPoint = context.getServerEntryPoint(dir);
58
await testServer(entryPoint);
59
});
60
61
context.test('server-web-win32-x64', ['windows', 'x64', 'browser'], async () => {
62
const dir = await context.downloadAndUnpack('server-win32-x64-web');
63
context.validateAllAuthenticodeSignatures(dir);
64
const entryPoint = context.getServerEntryPoint(dir);
65
await testServer(entryPoint);
66
});
67
68
async function testServer(entryPoint: string) {
69
if (context.options.downloadOnly) {
70
return;
71
}
72
73
const token = context.getRandomToken();
74
const test = new UITest(context);
75
await context.runCliApp('Server', entryPoint,
76
[
77
'--accept-server-license-terms',
78
'--port', context.getUniquePort(),
79
'--connection-token', token,
80
'--server-data-dir', context.createTempDir(),
81
'--extensions-dir', test.extensionsDir,
82
'--user-data-dir', test.userDataDir
83
],
84
async (line) => {
85
const port = /Extension host agent listening on (\d+)/.exec(line)?.[1];
86
if (!port) {
87
return false;
88
}
89
90
const url = context.getWebServerUrl(port, token, test.workspaceDir).toString();
91
const browser = await context.launchBrowser();
92
const page = await context.getPage(browser.newPage());
93
94
context.log(`Navigating to ${url}`);
95
await page.goto(url, { waitUntil: 'networkidle' });
96
97
context.log('Waiting for the workbench to load');
98
await page.waitForSelector('.monaco-workbench');
99
100
await test.run(page);
101
102
context.log('Closing browser');
103
await browser.close();
104
105
test.validate();
106
return true;
107
}
108
);
109
}
110
}
111
112