Tests that Runtime.evaluate works with awaitPromise flag.

Running test: testResolvedPromise
{
    id : <messageId>
    result : {
        result : {
            description : 239
            type : number
            value : 239
        }
    }
}

Running test: testRejectedPromise
{
    id : <messageId>
    result : {
        exceptionDetails : {
            columnNumber : 0
            exception : {
                description : 239
                type : number
                value : 239
            }
            exceptionId : <exceptionId>
            lineNumber : 0
            text : Uncaught (in promise)
        }
        result : {
            description : 239
            type : number
            value : 239
        }
    }
}

Running test: testRejectedPromiseWithError
{
    id : <messageId>
    result : {
        exceptionDetails : {
            columnNumber : 11
            exception : {
                className : Error
                description : Error: MyError     at foo (<anonymous>:13:11)     at throwError (<anonymous>:15:3)
                objectId : <objectId>
                subtype : error
                type : object
            }
            exceptionId : <exceptionId>
            lineNumber : 13
            scriptId : <scriptId>
            stackTrace : {
                callFrames : [
                    [0] : {
                        columnNumber : 10
                        functionName : foo
                        lineNumber : 12
                        scriptId : <scriptId>
                        url :
                    }
                    [1] : {
                        columnNumber : 2
                        functionName : throwError
                        lineNumber : 14
                        scriptId : <scriptId>
                        url :
                    }
                ]
            }
            text : Uncaught (in promise) Error: MyError
        }
        result : {
            className : Error
            description : Error: MyError     at foo (<anonymous>:13:11)     at throwError (<anonymous>:15:3)
            objectId : <objectId>
            subtype : error
            type : object
        }
    }
}

Running test: testRejectedPromiseWithSyntaxError
{
    id : <messageId>
    result : {
        exceptionDetails : {
            columnNumber : 5
            exception : {
                className : SyntaxError
                description : SyntaxError: Unexpected token '}'     at foo (<anonymous>:21:5)     at throwSyntaxError (<anonymous>:23:3)
                objectId : <objectId>
                subtype : error
                type : object
            }
            exceptionId : <exceptionId>
            lineNumber : 21
            scriptId : <scriptId>
            stackTrace : {
                callFrames : [
                    [0] : {
                        columnNumber : 4
                        functionName : foo
                        lineNumber : 20
                        scriptId : <scriptId>
                        url :
                    }
                    [1] : {
                        columnNumber : 2
                        functionName : throwSyntaxError
                        lineNumber : 22
                        scriptId : <scriptId>
                        url :
                    }
                ]
            }
            text : Uncaught (in promise) SyntaxError: Unexpected token '}'
        }
        result : {
            className : SyntaxError
            description : SyntaxError: Unexpected token '}'     at foo (<anonymous>:21:5)     at throwSyntaxError (<anonymous>:23:3)
            objectId : <objectId>
            subtype : error
            type : object
        }
    }
}

Running test: testPrimitiveValueInsteadOfPromise
{
    id : <messageId>
    result : {
        result : {
            type : boolean
            value : true
        }
    }
}

Running test: testObjectInsteadOfPromise
{
    id : <messageId>
    result : {
        result : {
            type : object
            value : {
            }
        }
    }
}

Running test: testPendingPromise
{
    id : <messageId>
    result : {
        result : {
            type : object
            value : {
                a : 239
            }
        }
    }
}

Running test: testExceptionInEvaluate
{
    id : <messageId>
    result : {
        exceptionDetails : {
            columnNumber : 0
            exception : {
                description : 239
                type : number
                value : 239
            }
            exceptionId : <exceptionId>
            lineNumber : 0
            scriptId : <scriptId>
            text : Uncaught
        }
        result : {
            description : 239
            type : number
            value : 239
        }
    }
}

Running test: testThenableJob
{
    id : <messageId>
    result : {
        result : {
            description : 42
            type : number
            value : 42
        }
    }
}

Running test: testLastEvaluatedResult
{
    id : <messageId>
    result : {
        result : {
            description : 42
            type : number
            value : 42
        }
    }
}
{
    id : <messageId>
    result : {
        result : {
            description : 42
            type : number
            value : 42
        }
    }
}

Running test: testRuntimeDisable
Resolving promise..
{
    id : <messageId>
    result : {
        result : {
            className : Object
            description : Object
            objectId : <objectId>
            type : object
        }
    }
}
Promise resolved

Running test: testImmediatelyResolvedAfterAfterContextDestroyed
Destroying context..
{
    error : {
        code : -32000
        message : Execution context was destroyed.
    }
    id : <messageId>
}
Context destroyed
Triggering weak callback..