RemoteObject.webDriverValue Running test: PrimitiveValue testing expression: undefined Runtime.evaluate { type : undefined } Runtime.callFunctionOn { type : undefined } testing expression: null Runtime.evaluate { type : null } Runtime.callFunctionOn { type : null } testing expression: 'foo' Runtime.evaluate { type : string value : foo } Runtime.callFunctionOn { type : string value : foo } testing expression: true Runtime.evaluate { type : boolean value : true } Runtime.callFunctionOn { type : boolean value : true } testing expression: false Runtime.evaluate { type : boolean value : false } Runtime.callFunctionOn { type : boolean value : false } Running test: Number testing expression: 123 Runtime.evaluate { type : number value : 123 } Runtime.callFunctionOn { type : number value : 123 } testing expression: 0.56 Runtime.evaluate { type : number value : 0.56 } Runtime.callFunctionOn { type : number value : 0.56 } testing expression: -0 Runtime.evaluate { type : number value : -0 } Runtime.callFunctionOn { type : number value : -0 } testing expression: +Infinity Runtime.evaluate { type : number value : Infinity } Runtime.callFunctionOn { type : number value : Infinity } testing expression: -Infinity Runtime.evaluate { type : number value : -Infinity } Runtime.callFunctionOn { type : number value : -Infinity } testing expression: NaN Runtime.evaluate { type : number value : NaN } Runtime.callFunctionOn { type : number value : NaN } Running test: BigInt testing expression: 123n Runtime.evaluate { type : bigint value : 123 } Runtime.callFunctionOn { type : bigint value : 123 } testing expression: 1234567890n Runtime.evaluate { type : bigint value : 1234567890 } Runtime.callFunctionOn { type : bigint value : 1234567890 } Running test: Symbol testing expression: Symbol('foo') Runtime.evaluate { type : symbol } Runtime.callFunctionOn { type : symbol } Running test: Function testing expression: function qwe(){} Runtime.evaluate { type : function } Runtime.callFunctionOn { type : function } testing expression: ()=>{} Runtime.evaluate { type : function } Runtime.callFunctionOn { type : function } Running test: Array testing expression: [1,2,undefined] Runtime.evaluate { type : array value : [ [0] : { type : number value : 1 } [1] : { type : number value : 2 } [2] : { type : undefined } ] } Runtime.callFunctionOn { type : array value : [ [0] : { type : number value : 1 } [1] : { type : number value : 2 } [2] : { type : undefined } ] } testing expression: new Array(1,2,undefined) Runtime.evaluate { type : array value : [ [0] : { type : number value : 1 } [1] : { type : number value : 2 } [2] : { type : undefined } ] } Runtime.callFunctionOn { type : array value : [ [0] : { type : number value : 1 } [1] : { type : number value : 2 } [2] : { type : undefined } ] } Running test: RegExp testing expression: new RegExp('ab+c') Runtime.evaluate { type : regexp value : { pattern : ab+c } } Runtime.callFunctionOn { type : regexp value : { pattern : ab+c } } testing expression: new RegExp('ab+c', 'ig') Runtime.evaluate { type : regexp value : { flags : gi pattern : ab+c } } Runtime.callFunctionOn { type : regexp value : { flags : gi pattern : ab+c } } Running test: Date testing expression: new Date('Thu Apr 07 2022 16:17:18 GMT') Runtime.evaluate { type : date value : 2022-04-07T16:17:18.000Z } Runtime.callFunctionOn { type : date value : 2022-04-07T16:17:18.000Z } testing expression: new Date('Thu Apr 07 2022 16:17:18 GMT+1100') Runtime.evaluate { type : date value : 2022-04-07T05:17:18.000Z } Runtime.callFunctionOn { type : date value : 2022-04-07T05:17:18.000Z } testing expression: new Date('Thu Apr 07 2022 16:17:18 GMT-1100') Runtime.evaluate { type : date value : 2022-04-08T03:17:18.000Z } Runtime.callFunctionOn { type : date value : 2022-04-08T03:17:18.000Z } Running test: Error testing expression: new Error() Runtime.evaluate { type : error } Runtime.callFunctionOn { type : error } testing expression: new Error('qwe') Runtime.evaluate { type : error } Runtime.callFunctionOn { type : error } Running test: Map testing expression: new Map([['keyString1', {valueObject1: 1}], [{keyObject2: 2}, 'valueString2'], ['keyString3', new Array()]]) Runtime.evaluate { type : map value : [ [0] : [ [0] : keyString1 [1] : { type : object } ] [1] : [ [0] : { type : object } [1] : { type : string value : valueString2 } ] [2] : [ [0] : keyString3 [1] : { type : array } ] ] } Runtime.callFunctionOn { type : map value : [ [0] : [ [0] : keyString1 [1] : { type : object } ] [1] : [ [0] : { type : object } [1] : { type : string value : valueString2 } ] [2] : [ [0] : keyString3 [1] : { type : array } ] ] } Running test: WeakMap testing expression: new WeakMap([[{valueObject1: 1}, 'keyString1'],[{valueObject2: 2}, 'keyString2']]) Runtime.evaluate { type : weakmap } Runtime.callFunctionOn { type : weakmap } Running test: Set testing expression: new Set([{valueObject1: 1}, 'valueString2', new Array(), undefined]) Runtime.evaluate { type : set value : [ [0] : { type : object } [1] : { type : string value : valueString2 } [2] : { type : array } [3] : { type : undefined } ] } Runtime.callFunctionOn { type : set value : [ [0] : { type : object } [1] : { type : string value : valueString2 } [2] : { type : array } [3] : { type : undefined } ] } Running test: Weakset testing expression: new WeakSet([{valueObject1: 1}, {valueObject2: 2}]) Runtime.evaluate { type : weakset } Runtime.callFunctionOn { type : weakset } Running test: Proxy testing expression: new Proxy({}, ()=>{}) Runtime.evaluate { type : proxy } Runtime.callFunctionOn { type : proxy } Running test: Promise testing expression: new Promise(()=>{}) Runtime.evaluate { type : promise } Runtime.callFunctionOn { type : promise } Running test: Typedarray testing expression: new Uint16Array() Runtime.evaluate { type : typedarray } Runtime.callFunctionOn { type : typedarray } Running test: ArrayBuffer testing expression: new ArrayBuffer() Runtime.evaluate { type : arraybuffer } Runtime.callFunctionOn { type : arraybuffer } Running test: Duplicate testing expression: (()=>{const foo={a: []}; const bar=[1,2]; const result={1: foo, 2: foo, 3: bar, 4: bar}; result.self=result; return result; })() Runtime.evaluate { type : object value : [ [0] : [ [0] : { type : number value : 1 } [1] : { type : object weakLocalObjectReference : 1 } ] [1] : [ [0] : { type : number value : 2 } [1] : { type : object weakLocalObjectReference : 1 } ] [2] : [ [0] : { type : number value : 3 } [1] : { type : array weakLocalObjectReference : 2 } ] [3] : [ [0] : { type : number value : 4 } [1] : { type : array weakLocalObjectReference : 2 } ] [4] : [ [0] : self [1] : { type : object weakLocalObjectReference : 3 } ] ] weakLocalObjectReference : 3 } Runtime.callFunctionOn { type : object value : [ [0] : [ [0] : { type : number value : 1 } [1] : { type : object weakLocalObjectReference : 1 } ] [1] : [ [0] : { type : number value : 2 } [1] : { type : object weakLocalObjectReference : 1 } ] [2] : [ [0] : { type : number value : 3 } [1] : { type : array weakLocalObjectReference : 2 } ] [3] : [ [0] : { type : number value : 4 } [1] : { type : array weakLocalObjectReference : 2 } ] [4] : [ [0] : self [1] : { type : object weakLocalObjectReference : 3 } ] ] weakLocalObjectReference : 3 } Running test: Object testing expression: {nullKey: null, stringKey: 'foo',boolKey: true,numberKey: 123,bigintKey: 123n,symbolKey: Symbol('foo'),functionKey: () => {},arrayKey:[1],undefinedKey:undefined} Runtime.evaluate { type : object value : [ [0] : [ [0] : nullKey [1] : { type : null } ] [1] : [ [0] : stringKey [1] : { type : string value : foo } ] [2] : [ [0] : boolKey [1] : { type : boolean value : true } ] [3] : [ [0] : numberKey [1] : { type : number value : 123 } ] [4] : [ [0] : bigintKey [1] : { type : bigint value : 123 } ] [5] : [ [0] : symbolKey [1] : { type : symbol } ] [6] : [ [0] : functionKey [1] : { type : function } ] [7] : [ [0] : arrayKey [1] : { type : array } ] [8] : [ [0] : undefinedKey [1] : { type : undefined } ] ] } Runtime.callFunctionOn { type : object value : [ [0] : [ [0] : nullKey [1] : { type : null } ] [1] : [ [0] : stringKey [1] : { type : string value : foo } ] [2] : [ [0] : boolKey [1] : { type : boolean value : true } ] [3] : [ [0] : numberKey [1] : { type : number value : 123 } ] [4] : [ [0] : bigintKey [1] : { type : bigint value : 123 } ] [5] : [ [0] : symbolKey [1] : { type : symbol } ] [6] : [ [0] : functionKey [1] : { type : function } ] [7] : [ [0] : arrayKey [1] : { type : array } ] [8] : [ [0] : undefinedKey [1] : { type : undefined } ] ] } testing expression: {key_level_1: {key_level_2: {key_level_3: 'value_level_3'}}} Runtime.evaluate { type : object value : [ [0] : [ [0] : key_level_1 [1] : { type : object } ] ] } Runtime.callFunctionOn { type : object value : [ [0] : [ [0] : key_level_1 [1] : { type : object } ] ] }