From 1735994d28747c482f6aac920aa5c7009cb1c099 Mon Sep 17 00:00:00 2001 From: Bastien Caudan Date: Wed, 8 Jan 2020 16:46:21 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=8A[e2e]=20output=20server=20response?= =?UTF-8?q?=20in=20logs=20(#226)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * :loud_sound:[e2e] output server response in logs * :ok_hand: document implementation --- test/server/fake-backend.js | 12 +++++++++--- test/server/server.js | 15 ++++++++++++--- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/test/server/fake-backend.js b/test/server/fake-backend.js index e932aea4b6..c8af7aaca2 100644 --- a/test/server/fake-backend.js +++ b/test/server/fake-backend.js @@ -7,19 +7,19 @@ module.exports = (app) => { req.body.split('\n').forEach((log) => logs.push(JSON.parse(log))) res.send('ok') }) - app.get('/logs', (req, res) => res.send(logs)) + app.get('/logs', (req, res) => send(res, logs)) app.post('/rum', (req, res) => { req.body.split('\n').forEach((rumEvent) => rumEvents.push(JSON.parse(rumEvent))) res.send('ok') }) - app.get('/rum', (req, res) => res.send(rumEvents)) + app.get('/rum', (req, res) => send(res, rumEvents)) app.post('/monitoring', (req, res) => { monitoring.push(JSON.parse(req.body)) res.send('ok') }) - app.get('/monitoring', (req, res) => res.send(monitoring)) + app.get('/monitoring', (req, res) => send(res, monitoring)) app.get('/reset', (req, res) => { logs = [] @@ -36,3 +36,9 @@ module.exports = (app) => { res.send('ok') }) } + +function send(res, data) { + // add response content to res object for logging + res.body = JSON.stringify(data) + res.send(data) +} diff --git a/test/server/server.js b/test/server/server.js index d902aa2c23..b9c2d03fcb 100644 --- a/test/server/server.js +++ b/test/server/server.js @@ -23,7 +23,7 @@ if (process.env.ENV === 'development') { app.use(middleware(webpack(withBuildEnv(logsConfig(null, { mode: 'development' }))))) } else { // e2e tests - morgan.token('body', (req) => hasValidBody(req) && `\n${req.body}`) + morgan.token('body', (req, res) => extractBody(req, res)) const stream = fs.createWriteStream(path.join(__dirname, 'test-server.log')) app.use(morgan(':method :url :body', { stream })) app.use(express.static(path.join(__dirname, '../../packages/logs/bundle'))) @@ -53,6 +53,15 @@ function withBuildEnv(webpackConf) { return webpackConf } -function hasValidBody(req) { - return req.body && JSON.stringify(req.body) !== '{}' +function extractBody(req, res) { + if (isValidBody(req.body)) { + return `\n${req.body}` + } + if (isValidBody(res.body)) { + return `\n${res.body}` + } +} + +function isValidBody(body) { + return body && JSON.stringify(body) !== '{}' }