Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/test/monaco/esm-check/esm-check.js
3520 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
//@ts-check
7
8
const fs = require('fs');
9
const path = require('path');
10
const util = require('../../../build/lib/util');
11
const playwright = require('@playwright/test');
12
const yaserver = require('yaserver');
13
const http = require('http');
14
15
const DEBUG_TESTS = false;
16
const SRC_DIR = path.join(__dirname, '../../../out-monaco-editor-core/esm');
17
const DST_DIR = path.join(__dirname, './out');
18
const PORT = 8562;
19
20
run();
21
22
async function run() {
23
await extractSourcesWithoutCSS();
24
const server = await startServer();
25
26
const browser = await playwright['chromium'].launch({
27
headless: !DEBUG_TESTS,
28
devtools: DEBUG_TESTS
29
// slowMo: DEBUG_TESTS ? 2000 : 0
30
});
31
32
const page = await browser.newPage({
33
viewport: {
34
width: 800,
35
height: 600
36
}
37
});
38
page.on('pageerror', (e) => {
39
console.error(`[esm-check] A page error occurred:`);
40
console.error(e);
41
process.exit(1);
42
});
43
44
const URL = `http://127.0.0.1:${PORT}/index.html`;
45
console.log(`[esm-check] Navigating to ${URL}`);
46
const response = await page.goto(URL);
47
if (!response) {
48
console.error(`[esm-check] Missing response.`);
49
process.exit(1);
50
}
51
if (response.status() !== 200) {
52
console.error(`[esm-check] Response status ${response.status()} is not 200 .`);
53
process.exit(1);
54
}
55
console.log(`[esm-check] All appears good.`);
56
57
await page.close();
58
await browser.close();
59
60
server.close();
61
}
62
63
/**
64
* @returns {Promise<http.Server>}
65
*/
66
async function startServer() {
67
const staticServer = await yaserver.createServer({ rootDir: __dirname });
68
return new Promise((resolve, reject) => {
69
const server = http.createServer((request, response) => {
70
return staticServer.handle(request, response);
71
});
72
server.listen(PORT, '127.0.0.1', () => {
73
resolve(server);
74
});
75
});
76
}
77
78
async function extractSourcesWithoutCSS() {
79
await util.rimraf(DST_DIR);
80
81
const files = util.rreddir(SRC_DIR);
82
for (const file of files) {
83
const srcFilename = path.join(SRC_DIR, file);
84
if (!/\.js$/.test(srcFilename)) {
85
continue;
86
}
87
88
const dstFilename = path.join(DST_DIR, file);
89
90
let contents = fs.readFileSync(srcFilename).toString();
91
contents = contents.replace(/import '[^']+\.css';/g, '');
92
93
util.ensureDir(path.dirname(dstFilename));
94
fs.writeFileSync(dstFilename, contents);
95
}
96
}
97
98