

{
    "$schema": "https://files-apicasystem-com.s3-eu-west-1.amazonaws.com/schemas/url-xi-schema-v1-0.json",
    "name": "Ticketmonster Home Page",
    "description": "Simple Scenario for the TM home page",
    "baseURL": "http://ticketmonster.apicasystem.com",
    "envPrefix":"TMHOME",
    
    "scripts": [
        {
            "name": "After Test",
            "scope": "after",
            "script": [
                "var t=timings;",
                "if(t) logger.debug('test',t)",
                "else logger.error('No timings defined in test')"

            ] 
           
        }
    ],
    "variables": [
        {
            "key": "dummyInput",
            "type":"string",
            "value":"foo",
            "usage": "input"
        },
        {
            "key": "webSite",
            "type":"url",
            "value":"http://webcode.me",
            "usage": "input"
        },
        {
            "key": "arrSize",
            "type":"number",
            "value":5,
            "usage": "input"
        },

        {
            "key": "metric1",
            "type":"number",
            "value":3.14,
            "usage": "metric"
        },
        {
            "key": "Header1",
            "type": "header",
            "usage": "input",
            "value":"Kalle-Anka"
        }
    ],
    "steps": [
        {
            "name": "Home page",
            "onRequestError":"nextRequest",
            "scripts": [
                {
                    "name": "run Axios request",
                    "async": true,
                    "scope": "before",
                    "options": {
                       
                    },
                    "script": [
                        "const webSite=uxs.getVar('webSite')",                      
                        "//const ret=await uxs.request({url:webSite});",
                        "//logger.info('Request call Status=%d',ret.status);"
                    ] 
                },
                {
                    "name": "AfterStep",
                    "scope": "after",
                    "script": [  
                        "const arrSize=uxs.getVar('arrSize')",
                        "expect(arrSize,`The number ${arrSize} must be above 2`).to.be.above(2);"
                    ] 
                   
                },
                {
                    "name": "After all",
                    "scope": "afterEach",
                    "script": [
                        "var t=timings;",
                        "if(t) logger.debug(t)",
                        "else logger.error('No timings defined')"

                    ] 
                   
                }
            ],
            "requests": [
                {
                    "name":"Root Page",
                    "config": {
                        "url": "/"
                    },
                   
                    "assertions": [
                        {
                            "description": "Dummy input should be foo or bar",
                            "failStep": true,
                            "expression": "['foo','bar'].find(element => element === value)",
                            "value": "{{dummyInput}}",
                            "type": "javaScript"
                        }
                    ]

                },
                {
                    "name":"TM Home HTML",
                    "config": {
                        "url": "/ticket-monster"
                    },
                    "message":"The custom message download time={{$timings.downloadTime}}, nothing={{nothing}}",
                    "scripts": [
                        {
                            "name": "AfterRequest",
                            "scope": "after",
                            "script": [
                                "const arrSize=uxs.getVar('arrSize')",
                                "expect(arrSize,`The number ${arrSize} must be above 1`).to.be.above(1);"
        
                            ] 
                           
                        }
                    ],
                    "assertions": [
                        
                        {
                            "description": "Validate response time",
                            "failStep": true,
                            "expression": "value < 1000",
                            "value": "{{$durationMs}}",
                            "type": "javaScript",
                            "reportFailOnly": false

                        },
                        {
                            "description": "Validate dns time",
                            "failStep": false,
                            "expression": "value < 5",
                            "value": "{{$timings.dnsTime}}",
                            "type": "javaScript",
                            "reportFailOnly": false

                        },
                        {
                            "description": "Secure handshake should be 0",
                            "failStep": true,
                            "expression": "value <= 0",
                            "value": "{{$timings.secureHandshake}}",
                            "type": "javaScript",
                            "reportFailOnly": false

                        }

                    ]
                }
            ]
        }
    ]
}