Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/test/sanity/src/desktop.test.ts
4772 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 path from 'path';
7
import { _electron } from 'playwright';
8
import { TestContext } from './context';
9
import { UITest } from './uiTest';
10
11
export function setup(context: TestContext) {
12
describe('Desktop', () => {
13
if (context.platform === 'darwin-x64') {
14
it('desktop-darwin-x64', async () => {
15
const dir = await context.downloadAndUnpack('darwin');
16
context.validateAllCodesignSignatures(dir);
17
const entryPoint = context.installMacApp(dir);
18
await testDesktopApp(entryPoint);
19
});
20
}
21
22
if (context.platform === 'darwin-arm64') {
23
it('desktop-darwin-arm64', async () => {
24
const dir = await context.downloadAndUnpack('darwin-arm64');
25
context.validateAllCodesignSignatures(dir);
26
const entryPoint = context.installMacApp(dir);
27
await testDesktopApp(entryPoint);
28
});
29
}
30
31
if (context.platform === 'darwin-arm64' || context.platform === 'darwin-x64') {
32
it('desktop-darwin-universal', async () => {
33
const dir = await context.downloadAndUnpack('darwin-universal');
34
context.validateAllCodesignSignatures(dir);
35
const entryPoint = context.installMacApp(dir);
36
await testDesktopApp(entryPoint, { universal: true });
37
});
38
}
39
40
if (context.platform === 'linux-arm64') {
41
it('desktop-linux-arm64', async () => {
42
const dir = await context.downloadAndUnpack('linux-arm64');
43
const entryPoint = context.getEntryPoint('desktop', dir);
44
await testDesktopApp(entryPoint);
45
});
46
}
47
48
if (context.platform === 'linux-arm') {
49
it('desktop-linux-armhf', async () => {
50
const dir = await context.downloadAndUnpack('linux-armhf');
51
const entryPoint = context.getEntryPoint('desktop', dir);
52
await testDesktopApp(entryPoint);
53
});
54
}
55
56
if (context.platform === 'linux-arm64') {
57
it('desktop-linux-deb-arm64', async () => {
58
const packagePath = await context.downloadTarget('linux-deb-arm64');
59
const entryPoint = context.installDeb(packagePath);
60
await testDesktopApp(entryPoint);
61
});
62
}
63
64
if (context.platform === 'linux-arm') {
65
it('desktop-linux-deb-armhf', async () => {
66
const packagePath = await context.downloadTarget('linux-deb-armhf');
67
const entryPoint = context.installDeb(packagePath);
68
await testDesktopApp(entryPoint);
69
});
70
}
71
72
if (context.platform === 'linux-x64') {
73
it('desktop-linux-deb-x64', async () => {
74
const packagePath = await context.downloadTarget('linux-deb-x64');
75
const entryPoint = context.installDeb(packagePath);
76
await testDesktopApp(entryPoint);
77
});
78
}
79
80
if (context.platform === 'linux-arm64') {
81
it('desktop-linux-rpm-arm64', async () => {
82
const packagePath = await context.downloadTarget('linux-rpm-arm64');
83
const entryPoint = context.installRpm(packagePath);
84
await testDesktopApp(entryPoint);
85
});
86
}
87
88
if (context.platform === 'linux-arm') {
89
it('desktop-linux-rpm-armhf', async () => {
90
const packagePath = await context.downloadTarget('linux-rpm-armhf');
91
const entryPoint = context.installRpm(packagePath);
92
await testDesktopApp(entryPoint);
93
});
94
}
95
96
if (context.platform === 'linux-x64') {
97
it('desktop-linux-rpm-x64', async () => {
98
const packagePath = await context.downloadTarget('linux-rpm-x64');
99
const entryPoint = context.installRpm(packagePath);
100
await testDesktopApp(entryPoint);
101
});
102
}
103
104
if (context.platform === 'linux-x64') {
105
it('desktop-linux-snap-x64', async () => {
106
const packagePath = await context.downloadTarget('linux-snap-x64');
107
const entryPoint = context.installSnap(packagePath);
108
await testDesktopApp(entryPoint);
109
});
110
}
111
112
if (context.platform === 'linux-x64') {
113
it('desktop-linux-x64', async () => {
114
const dir = await context.downloadAndUnpack('linux-x64');
115
const entryPoint = context.getEntryPoint('desktop', dir);
116
await testDesktopApp(entryPoint);
117
});
118
}
119
120
if (context.platform === 'win32-arm64') {
121
it('desktop-win32-arm64', async () => {
122
const packagePath = await context.downloadTarget('win32-arm64');
123
context.validateAuthenticodeSignature(packagePath);
124
const entryPoint = context.installWindowsApp('system', packagePath);
125
context.validateAllAuthenticodeSignatures(path.dirname(entryPoint));
126
await testDesktopApp(entryPoint);
127
await context.uninstallWindowsApp('system');
128
});
129
}
130
131
if (context.platform === 'win32-arm64') {
132
it('desktop-win32-arm64-archive', async () => {
133
const dir = await context.downloadAndUnpack('win32-arm64-archive');
134
context.validateAllAuthenticodeSignatures(dir);
135
const entryPoint = context.getEntryPoint('desktop', dir);
136
await testDesktopApp(entryPoint);
137
});
138
}
139
140
if (context.platform === 'win32-arm64') {
141
it('desktop-win32-arm64-user', async () => {
142
const packagePath = await context.downloadTarget('win32-arm64-user');
143
context.validateAuthenticodeSignature(packagePath);
144
const entryPoint = context.installWindowsApp('user', packagePath);
145
context.validateAllAuthenticodeSignatures(path.dirname(entryPoint));
146
await testDesktopApp(entryPoint);
147
await context.uninstallWindowsApp('user');
148
});
149
}
150
151
if (context.platform === 'win32-x64') {
152
it('desktop-win32-x64', async () => {
153
const packagePath = await context.downloadTarget('win32-x64');
154
context.validateAuthenticodeSignature(packagePath);
155
const entryPoint = context.installWindowsApp('system', packagePath);
156
context.validateAllAuthenticodeSignatures(path.dirname(entryPoint));
157
await testDesktopApp(entryPoint);
158
await context.uninstallWindowsApp('system');
159
});
160
}
161
162
if (context.platform === 'win32-x64') {
163
it('desktop-win32-x64-archive', async () => {
164
const dir = await context.downloadAndUnpack('win32-x64-archive');
165
context.validateAllAuthenticodeSignatures(dir);
166
const entryPoint = context.getEntryPoint('desktop', dir);
167
await testDesktopApp(entryPoint);
168
});
169
}
170
171
if (context.platform === 'win32-x64') {
172
it('desktop-win32-x64-user', async () => {
173
const packagePath = await context.downloadTarget('win32-x64-user');
174
context.validateAuthenticodeSignature(packagePath);
175
const entryPoint = context.installWindowsApp('user', packagePath);
176
context.validateAllAuthenticodeSignatures(path.dirname(entryPoint));
177
await testDesktopApp(entryPoint);
178
await context.uninstallWindowsApp('user');
179
});
180
}
181
182
async function testDesktopApp(entryPoint: string, options?: { universal?: boolean }) {
183
const test = new UITest(context);
184
const args = [
185
'--extensions-dir', test.extensionsDir,
186
'--user-data-dir', test.userDataDir,
187
test.workspaceDir
188
];
189
190
// Ensure correct architecture preference for universal binary on x64 Mac.
191
const env = {
192
...process.env,
193
ARCHPREFERENCE: options?.universal && context.platform === 'darwin-x64' ? 'x86_64' : undefined
194
};
195
196
context.log(`Starting VS Code ${entryPoint} with args ${args.join(' ')}`);
197
const app = await _electron.launch({ executablePath: entryPoint, args, env: env as Record<string, string> });
198
const window = await app.firstWindow();
199
200
await test.run(window);
201
202
context.log('Closing the application');
203
await app.close();
204
205
test.validate();
206
}
207
});
208
}
209
210