Test console command line API via Runtime.evaluate.

Running test: bound testDir
dir(document.body), includeCommandLineAPI = true.
[
    [0] : {
        className : HTMLBodyElement
        description : body
        objectId : <string>
        subtype : node
        type : object
    }
]
dir(document.body), includeCommandLineAPI = false.
Expected ReferenceError: ReferenceError

Running test: bound test$
$("body"), includeCommandLineAPI = true.
{
    id : <number>
    result : {
        result : {
            className : HTMLBodyElement
            description : body
            objectId : <string>
            subtype : node
            type : object
        }
    }
    sessionId : <string>
}
$("body"), includeCommandLineAPI = false.
Expected ReferenceError: ReferenceError

Running test: bound test$$
$$("head"), includeCommandLineAPI = true.
{
    id : <number>
    result : {
        result : {
            className : Array
            description : Array(1)
            objectId : <string>
            subtype : array
            type : object
        }
    }
    sessionId : <string>
}
$$("head"), includeCommandLineAPI = false.
Expected ReferenceError: ReferenceError

Running test: bound testKeys
JSON.stringify(keys({"1": 123, "2":567})), includeCommandLineAPI = true.
{
    id : <number>
    result : {
        result : {
            type : string
            value : [1,2]
        }
    }
    sessionId : <string>
}
keys({"1": 123, "2":567}), includeCommandLineAPI = false.
Expected ReferenceError: ReferenceError

Running test: bound testValues
JSON.stringify(values({"1": 123, "2":567})), includeCommandLineAPI = true.
{
    id : <number>
    result : {
        result : {
            type : string
            value : [123,567]
        }
    }
    sessionId : <string>
}
values({"1": 123, "2":567}) includeCommandLineAPI = false.
Expected ReferenceError: ReferenceError

Running test: bound test$x
$x("//body"), includeCommandLineAPI = true.
{
    id : <number>
    result : {
        result : {
            className : Array
            description : Array(1)
            objectId : <string>
            subtype : array
            type : object
        }
    }
    sessionId : <string>
}
$x("//body") includeCommandLineAPI = false.
Expected ReferenceError: ReferenceError

Running test: bound test$_
set $_ to 405, includeCommandLineAPI = true.
{
    id : <number>
    result : {
        result : {
            description : 405
            type : number
            value : 405
        }
    }
    sessionId : <string>
}
evaluate $_, includeCommandLineAPI = false.
Expected ReferenceError: ReferenceError

Running test: bound test$0to$4
initial $0-$4 are undefined, includeCommandLineAPI = true.
$0 : undefined
$1 : undefined
$2 : undefined
$3 : undefined
$4 : undefined
evaluate $0, includeCommandLineAPI = true.
{
    id : <number>
    result : {
        result : {
            className : HTMLDocument
            description : #document
            objectId : <string>
            subtype : node
            type : object
        }
    }
    sessionId : <string>
}
evaluate $0, includeCommandLineAPI = false.
Expected ReferenceError: ReferenceError
assign $1, includeCommandLineAPI = true.
previous $0 should equal $1: true

Running test: bound testGetEventListeners
set & get eventListener for document.onclick
Includes click handler: true
evaluate eventListener, includeCommandLineAPI = false.
Expected ReferenceError: ReferenceError
eventListener with empty args, includeCommandLineAPI = true.
{
    id : <number>
    result : {
        result : {
            type : undefined
        }
    }
    sessionId : <string>
}
eventListener with invalid args, includeCommandLineAPI = false.
{
    id : <number>
    result : {
        result : {
            className : Object
            description : Object
            objectId : <string>
            type : object
        }
    }
    sessionId : <string>
}

