I have some JavaScript files in my directory. So, instead of loading scripts using <script>
tag I am loading the scripts using import statement. While doing like this sometimes error is occurring while evaluating the variable in the imported file.
Error occured ReferenceError: navTimeData2 is not defined
This failure can happen randomly on any variable from navTimeData1 to navTimeData6.
I am using the below function to import the files based on the path in the JSON File.
JSON File Content
var scriptsDetail = {
"Performance Evaluation": {
"ScriptsDetail": [
{
"Build - Environment": "Build_001",
"TestScriptName": "HCIS01_QuickRegistration",
"Perf Metrics Detail": [
{
"Run ID": "Run_Build_001_1",
"Navigation Time Report": "../../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-1/HCIS01_QuickRegistration_NavigationTime.js",
"Paint Time Report": "../../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-1/HCIS01_QuickRegistration_PaintTime.js",
"Long Task Report": "../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-1/HCIS01_QuickRegistration_LongTask.js",
"LCP Report": "../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-1/HCIS01_QuickRegistration_LCP.js"
},
{
"Run ID": "Run_Build_001_2",
"Navigation Time Report": "../../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-2/HCIS01_QuickRegistration_NavigationTime.js",
"Paint Time Report": "../../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-2/HCIS01_QuickRegistration_PaintTime.js",
"Long Task Report": "../../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-2/HCIS01_QuickRegistration_LongTask.js",
"LCP Report": "../../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-2/HCIS01_QuickRegistration_LCP.js"
},
{
"Run ID": "Run_Build_001_3",
"Navigation Time Report": "../../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-3/HCIS01_QuickRegistration_NavigationTime.js",
"Paint Time Report": "../../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-3/HCIS01_QuickRegistration_PaintTime.js",
"Long Task Report": "../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-3/HCIS01_QuickRegistration_LongTask.js",
"LCP Report": "../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-3/HCIS01_QuickRegistration_LCP.js"
},
{
"Run ID": "Run_Build_001_4",
"Navigation Time Report": "../../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-4/HCIS01_QuickRegistration_NavigationTime.js",
"Paint Time Report": "../../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-4/HCIS01_QuickRegistration_PaintTime.js",
"Long Task Report": "../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-4/HCIS01_QuickRegistration_LongTask.js",
"LCP Report": "../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-4/HCIS01_QuickRegistration_LCP.js"
},
{
"Run ID": "Run_Build_001_5",
"Navigation Time Report": "../../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-5/HCIS01_QuickRegistration_NavigationTime.js",
"Paint Time Report": "../../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-5/HCIS01_QuickRegistration_PaintTime.js",
"Long Task Report": "../../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-5/HCIS01_QuickRegistration_LongTask.js",
"LCP Report": "../../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-5/HCIS01_QuickRegistration_LCP.js"
},
{
"Run ID": "Run_Build_001_6",
"Navigation Time Report": "../../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-6/HCIS01_QuickRegistration_NavigationTime.js",
"Paint Time Report": "../../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-6/HCIS01_QuickRegistration_PaintTime.js",
"Long Task Report": "../../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-6/HCIS01_QuickRegistration_LongTask.js",
"LCP Report": "../../../PerMetrics/HCIS01_QuickRegistration/Run_Build_001-6/HCIS01_QuickRegistration_LCP.js"
},
]
var scriptsData = this.scriptsDetail['Performance Evaluation']['ScriptsDetail'];
scriptsData.forEach((script)=>{
let data = script['Perf Metrics Detail']
var iter=0
const navigationReports = [];
for (const item of data) {
navigationReports.push({
"Run ID": item["Run ID"],
"Navigation Time Report": item["Navigation Time Report"]
});
}
let navTimeReportArray=null;
const importPromises = navigationReports.map((navReport)=>{
return import(navReport['Navigation Time Report']).then((module) => {
iter+=1
console.log(iter)
var navTimeDataVar = eval("navTimeData"+iter);
if(navTimeReportArray===null){
navTimeReportArray = navTimeDataVar
}
else {
navTimeReportArray = navTimeReportArray.concat(navTimeDataVar)
}
//Process_NavTimeData(script['Transaction Detail'],script['Test Script Name'])
}).catch((err)=>{
console.log("Error occured", err);
})
})``
JavaScript sample content is as below. The files are placed inside the path mentioned in the JSON file.
window.navTimeData2=[
{
"unloadEventStart": 0,
"unloadEventEnd": 0,
"domInteractive": 4383.0999999940395,
"domContentLoadedEventStart": 4389,
"domContentLoadedEventEnd": 4392.0999999940395,
"domComplete": 4392.5999999940395,
"loadEventStart": 4392.699999988079,
"loadEventEnd": 4394.399999976158,
"type": "navigate",
"redirectCount": 0,
"criticalCHRestart": 0,
"activationStart": 0,
"toJSON": {},
"initiatorType": "navigation",
"nextHopProtocol": "http/1.1",
"deliveryType": "",
"workerStart": 0,
"redirectStart": 0,
"redirectEnd": 0,
"fetchStart": 3.199999988079071,
"domainLookupStart": 3.199999988079071,
"domainLookupEnd": 3.199999988079071,
"connectStart": 3.199999988079071,
"connectEnd": 3.199999988079071,
"secureConnectionStart": 0,
"requestStart": 7.399999976158142,
"responseStart": 32.29999998211861,
"responseEnd": 402.09999999403954,
"transferSize": 73860,
"encodedBodySize": 73560,
"decodedBodySize": 73560,
"serverTiming": [],
"responseStatus": 200,
"firstInterimResponseStart": 0,
"renderBlockingStatus": "non-blocking",
"entryType": "navigation",
"startTime": 0,
"duration": 4394.399999976158,
"TransactionName": "HCIS_Login",
"TransactionStartTime": "09/05/2024 00:09:37.698",
"transactionEndTime": "09/05/2024 00:09:37.706",
"RunID": "Run_Build_001-6",
"ScriptID": "HCIS01_QuickRegistration",
"resourceName": "/menu.jsp"
}
]