UNPKG

1.53 kBJavaScriptView Raw
1"use strict";
2
3const service = require('../agent/routers/cliJsCode/service');
4const Promise = require('bluebird');
5const featureFlags = require('../commons/featureFlags');
6const logger = require('../commons/logger').getLogger('cli-js-step-playback');
7
8function isExceedingMaxResultSize(data, project) {
9 try {
10 const shouldEnforceMaxSize = project.defaults.enforceMaximumJsResultSize;
11 const maximumJsResultSize = featureFlags.flags.maximumJsResultSize.getValue();
12 const dataSizeExceeded = JSON.stringify(data).length > maximumJsResultSize;
13 if(!shouldEnforceMaxSize) {
14 return false;
15 }
16 return dataSizeExceeded;
17 } catch (e) {
18 return false;
19 }
20}
21
22module.exports.run = (browser, step, projectData) => {
23 const {code, stepId, incomingParams, context, testResultId, retryIndex, stepResultId, runTimeout, fileDataUrl, s3filepath} = step.data;
24 return service.runCodeWithPackages(code, stepId, incomingParams, context, testResultId, retryIndex, stepResultId, runTimeout, fileDataUrl, s3filepath)
25 .then(data => {
26 if (data && isExceedingMaxResultSize({result: data.result, tstConsoleLogs: data.tstConsoleLogs}, projectData)) {
27 return {
28 code: 'js-result-max-size-exceeded',
29 success: false,
30 };
31 }
32 return {data, success: true};
33 })
34 .catch(Promise.TimeoutError, () => Promise.reject(new Error("Timeout while running action")));
35};