mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
75 lines
1.9 KiB
TypeScript
75 lines
1.9 KiB
TypeScript
/**
|
|
* @file
|
|
* @copyright 2021 Aleksej Komarov
|
|
* @license MIT
|
|
*/
|
|
|
|
import 'tgui/styles/main.scss';
|
|
|
|
import { setupGlobalEvents } from 'tgui/events';
|
|
|
|
import Benchmark from './lib/benchmark';
|
|
|
|
const sendMessage = (obj: any) => {
|
|
const req = new XMLHttpRequest();
|
|
req.open('POST', `/message`, false);
|
|
req.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
|
|
// req.timeout = 250;
|
|
req.send(JSON.stringify(obj));
|
|
};
|
|
|
|
const setupApp = async () => {
|
|
// Delay setup
|
|
if (document.readyState === 'loading') {
|
|
document.addEventListener('DOMContentLoaded', setupApp);
|
|
return;
|
|
}
|
|
|
|
setupGlobalEvents({
|
|
ignoreWindowFocus: true,
|
|
});
|
|
|
|
const requireTest = require.context('./tests', false, /\.test\./);
|
|
|
|
for (const file of requireTest.keys()) {
|
|
sendMessage({ type: 'suite-start', file });
|
|
try {
|
|
const tests = requireTest(file);
|
|
await new Promise<void>((resolve) => {
|
|
const suite = new Benchmark.Suite(file, {
|
|
onCycle(e) {
|
|
sendMessage({
|
|
type: 'suite-cycle',
|
|
message: String(e.target),
|
|
});
|
|
},
|
|
onComplete() {
|
|
// This message is somewhat useless, but leaving it here in case
|
|
// someone has an idea how to show more useful data.
|
|
// sendMessage({
|
|
// type: 'suite-complete',
|
|
// message: 'Fastest is ' + this.filter('fastest').map('name'),
|
|
// });
|
|
resolve();
|
|
},
|
|
onError(e) {
|
|
sendMessage({ type: 'error', e });
|
|
resolve();
|
|
},
|
|
});
|
|
for (const [name, fn] of Object.entries(tests)) {
|
|
if (typeof fn === 'function') {
|
|
suite.add(name, fn);
|
|
}
|
|
}
|
|
suite.run();
|
|
});
|
|
} catch (error) {
|
|
sendMessage({ type: 'error', error });
|
|
}
|
|
}
|
|
sendMessage({ type: 'finished' });
|
|
};
|
|
|
|
setupApp();
|