@wdio/static-server-service
Version:
A WebdriverIO service that can serve your static websites
51 lines (49 loc) • 1.53 kB
JavaScript
// src/launcher.ts
import fs from "node:fs";
import { join, resolve } from "node:path";
import { promisify } from "node:util";
import express from "express";
import morgan from "morgan";
import logger from "@wdio/logger";
var log = logger("@wdio/static-server-service");
var DEFAULT_LOG_NAME = "wdio-static-server-service.log";
var StaticServerLauncher = class {
_folders;
_port;
_middleware;
_server;
constructor({ folders, port = 4567, middleware = [] }) {
this._folders = folders ? Array.isArray(folders) ? folders : [folders] : null;
this._port = port;
this._middleware = middleware;
}
async onPrepare({ outputDir }) {
if (!this._folders) {
return;
}
this._server = express();
if (outputDir) {
const file = join(outputDir, DEFAULT_LOG_NAME);
const stream = fs.createWriteStream(file);
this._server.use(morgan("tiny", { stream }));
}
this._folders.forEach((folder) => {
log.info("Mounting folder `%s` at `%s`", resolve(folder.path), folder.mount);
this._server.use(folder.mount, express.static(folder.path));
});
this._middleware.forEach(
(ware) => this._server.use(ware.mount, ware.middleware)
);
const listen = promisify(this._server.listen.bind(this._server));
await listen(this._port);
log.info(`Static server running at http://localhost:${this._port}`);
}
};
// src/index.ts
var StaticServerService = class {
};
var launcher = StaticServerLauncher;
export {
StaticServerService as default,
launcher
};