fix obs popup issues
This commit is contained in:
@@ -1,43 +1,5 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { createHash } from "node:crypto";
|
||||
import { createServer } from "node:http";
|
||||
import { createServer as createNetServer } from "node:net";
|
||||
|
||||
async function freePort() {
|
||||
const server = createNetServer();
|
||||
await new Promise((resolve, reject) => { server.once("error", reject); server.listen(0, "127.0.0.1", resolve); });
|
||||
const port = server.address().port;
|
||||
await new Promise(resolve => server.close(resolve));
|
||||
return port;
|
||||
}
|
||||
|
||||
// Accepts the WebSocket upgrade handshake so the frontend's real decoder-connect path
|
||||
// (src/decoder_runtime.js) reaches `connected: true` without a physical AMMC decoder.
|
||||
// No frames are sent or parsed: this scenario only needs an established socket, not lap data.
|
||||
async function startFakeDecoder() {
|
||||
const port = await freePort();
|
||||
const server = createServer();
|
||||
// The upgraded sockets are intentionally left open (no decoder frames needed for this
|
||||
// scenario), so server.close() alone would wait forever for them to end; track and
|
||||
// destroy them explicitly instead. closeAllConnections() does not reach upgraded sockets.
|
||||
const sockets = new Set();
|
||||
server.on("upgrade", (req, socket) => {
|
||||
sockets.add(socket);
|
||||
socket.on("close", () => sockets.delete(socket));
|
||||
const key = req.headers["sec-websocket-key"];
|
||||
if (!key) { socket.destroy(); return; }
|
||||
const accept = createHash("sha1").update(key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11").digest("base64");
|
||||
socket.write(["HTTP/1.1 101 Switching Protocols", "Upgrade: websocket", "Connection: Upgrade", `Sec-WebSocket-Accept: ${accept}`, "", ""].join("\r\n"));
|
||||
});
|
||||
await new Promise((resolve, reject) => { server.once("error", reject); server.listen(port, "127.0.0.1", resolve); });
|
||||
return {
|
||||
port,
|
||||
close: () => new Promise(resolve => {
|
||||
for (const socket of sockets) socket.destroy();
|
||||
server.close(() => resolve());
|
||||
}),
|
||||
};
|
||||
}
|
||||
import { startFakeDecoder } from "./browser_fake_decoder.js";
|
||||
|
||||
export async function runRaceDaySmoke({ evaluate, navigate, fill, savedState, waitFor, pause, base, dialogs = [] }) {
|
||||
const click = id => evaluate(`document.getElementById(${JSON.stringify(id)}).click()`);
|
||||
|
||||
Reference in New Issue
Block a user