1 | "use strict";
|
2 |
|
3 | const service = require('../agent/routers/cliJsCode/service');
|
4 | const Promise = require('bluebird');
|
5 | const featureFlags = require('../commons/featureFlags');
|
6 | const logger = require('../commons/logger').getLogger('cli-js-step-playback');
|
7 |
|
8 | function 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 |
|
22 | module.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 | };
|