UNPKG

html-e2e

Version:

Tools for e2e functional testing through HTMl views

72 lines (58 loc) 1.59 kB
const express = require('express') const getPort = require('get-port') module.exports = async function () { let settedBody, htmlFile, apiData, apiResponseTime const app = express() const port = await getPort() app.get('/', (req, res) => { if (settedBody) res.send(`<html><head></head><body>${settedBody}</body></html>`) else if (htmlFile) res.sendFile(__dirname + '/' + htmlFile + '.html') else res.sendFile(__dirname + '/testView.html') }) async function wait (milliseconds) { return new Promise(function (resolve) { setTimeout(function () { resolve() }, milliseconds) }) } app.get('/api/data', async (req, res) => { if (apiResponseTime) await wait(apiResponseTime) if (apiData) res.json({ data: apiData }) else res.json({ data: 'defaultApiData' }) }) let server return new Promise(function (resolve, reject) { const url = `http://localhost:${port}` server = app.listen(port, () => { resolve(Object.freeze({ url, close, setBody, setHtmlFile, setApiData, setApiResponseTime })) }) }) function setBody (body) { settedBody = body } function setHtmlFile (filePath) { htmlFile = filePath } function setApiData (data) { apiData = data } function setApiResponseTime (milliseconds) { apiResponseTime = milliseconds } async function close () { return new Promise(function (resolve, reject) { server.close(function (err) { if (err) reject(err) resolve() }) }) } }