mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-28 04:04:55 +08:00
ci(cypress): create cypress dashboard (#8401)
Co-authored-by: PiX <69745008+pixincreate@users.noreply.github.com> Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
81
cypress-tests/scripts/serve-dashboard.js
Normal file
81
cypress-tests/scripts/serve-dashboard.js
Normal file
@ -0,0 +1,81 @@
|
||||
#!/usr/bin/env node
|
||||
/* eslint-disable no-console */
|
||||
|
||||
import fs from "fs";
|
||||
import http from "http";
|
||||
import path, { dirname } from "path";
|
||||
import { fileURLToPath } from "url";
|
||||
|
||||
// Get the directory of the current module
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
|
||||
// Define the port
|
||||
const PORT = process.env.PORT || 3333;
|
||||
|
||||
// MIME types
|
||||
const mimeTypes = {
|
||||
".html": "text/html",
|
||||
".js": "text/javascript",
|
||||
".css": "text/css",
|
||||
".json": "application/json",
|
||||
".png": "image/png",
|
||||
".jpg": "image/jpg",
|
||||
".gif": "image/gif",
|
||||
".svg": "image/svg+xml",
|
||||
".ico": "image/x-icon",
|
||||
};
|
||||
|
||||
// Create server
|
||||
const server = http.createServer((req, res) => {
|
||||
// Parse URL
|
||||
let filePath = path.join(__dirname, "..", req.url);
|
||||
|
||||
// Default to index.html for root
|
||||
if (req.url === "/") {
|
||||
filePath = path.join(__dirname, "..", "dashboard", "index.html");
|
||||
}
|
||||
|
||||
// Check if path is a directory and append index.html
|
||||
if (fs.existsSync(filePath) && fs.statSync(filePath).isDirectory()) {
|
||||
filePath = path.join(filePath, "index.html");
|
||||
}
|
||||
|
||||
// Get file extension
|
||||
const extname = String(path.extname(filePath)).toLowerCase();
|
||||
const contentType = mimeTypes[extname] || "application/octet-stream";
|
||||
|
||||
// Read and serve the file
|
||||
fs.readFile(filePath, (error, content) => {
|
||||
if (error) {
|
||||
if (error.code === "ENOENT") {
|
||||
res.writeHead(404, { "Content-Type": "text/html" });
|
||||
res.end("<h1>404 - File Not Found</h1>", "utf-8");
|
||||
} else {
|
||||
res.writeHead(500);
|
||||
res.end(`Server Error: ${error.code}`, "utf-8");
|
||||
}
|
||||
} else {
|
||||
res.writeHead(200, { "Content-Type": contentType });
|
||||
res.end(content, "utf-8");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Start server
|
||||
server.listen(PORT, () => {
|
||||
console.log(`\n🚀 Dashboard server running at http://localhost:${PORT}/`);
|
||||
console.log(
|
||||
`📊 Open http://localhost:${PORT}/dashboard/ to view the dashboard`
|
||||
);
|
||||
console.log("\nPress Ctrl+C to stop the server\n");
|
||||
});
|
||||
|
||||
// Handle graceful shutdown
|
||||
process.on("SIGINT", () => {
|
||||
console.log("\n\nShutting down server...");
|
||||
server.close(() => {
|
||||
console.log("Server closed");
|
||||
process.exit(0);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user