import { describe, it, expect } from 'vitest'import { ELEMENT_KEY } from 'webdriver'import stringify from 'safe-stable-stringify'import { deserialize } from '../../../src/utils/bidi/index.js'import { LocalValue } from '../../../src/utils/bidi/value.js'describe('LocalValue', () => {const value = LocalValue.getArgument([undefined,'string',123,NaN,Infinity,-Infinity,-0,BigInt(9007199254740991),new Map([[1, 2]]),new Set([1, new Map([['string', true]]), 3, new Map([[1, 2]])]),/foobar/,{ foo: 'bar', nested: new Map([['this', 'works']]) },{ [ELEMENT_KEY]: 'foobar' }])it('should be able to serialize it', () => {const values = stringify(value.asMap(), null, 2)expect(values).toMatchInlineSnapshot(`"{"type": "array","value": [{"type": "undefined"},{"type": "string","value": "string"},{"type": "number","value": 123},{"type": "number","value": "NaN"},{"type": "number","value": "Infinity"},{"type": "number","value": "-Infinity"},{"type": "number","value": "-0"},{"type": "bigint","value": 9007199254740991},{"type": "map","value": [[{"type": "number","value": 1},{"type": "number","value": 2}]]},{"type": "set","value": [{"type": "number","value": 1},{"type": "map","value": [["string",{"type": "boolean","value": true}]]},{"type": "number","value": 3},{"type": "map","value": [[{"type": "number","value": 1},{"type": "number","value": 2}]]}]},{"type": "regexp","value": {"flags": "","pattern": "foobar"}},{"type": "object","value": [["foo",{"type": "string","value": "bar"}],["nested",{"type": "map","value": [["this",{"type": "string","value": "works"}]]}]]},{"sharedId": "foobar"}]}"`)})it('should be able to deserialize it', () => {expect(deserialize(value.asMap() as any)).toMatchInlineSnapshot(`[undefined,"string",123,NaN,Infinity,-Infinity,-0,9007199254740991n,Map {1 => 2,},Set {1,Map {"string" => true,},3,Map {1 => 2,},},/foobar/,{"foo": "bar","nested": Map {"this" => "works",},},undefined,]`)expect(deserialize({sharedId: 'f.44C98D3D1D8C6C82E24E94E038744493.d.123615DE0B294C5077D7F1903A856E6A.e.9',type: 'node',value: {attributes: {},childNodeCount: 9,localName: 'body',namespaceURI: 'http://www.w3.org/1999/xhtml',nodeType: 1,shadowRoot: null}})).toEqual({[ELEMENT_KEY]: 'f.44C98D3D1D8C6C82E24E94E038744493.d.123615DE0B294C5077D7F1903A856E6A.e.9'})})it('should resolve references', () => {expect(deserialize({type: 'array',value: [{type: 'object',value: [['id',{type: 'string',value: '__button1'}] as any,['properties',{internalId: '8f3ed8d7-b8f7-4f8c-a958-49a94e85d18c',type: 'array',value: [{type: 'number',value: 1},{type: 'number',value: 2},{type: 'number',value: 3}]}]]},{type: 'object',value: [['id',{type: 'string',value: '__button2'}],['properties',{internalId: '8f3ed8d7-b8f7-4f8c-a958-49a94e85d18c',type: 'array'}]]}]})).toMatchInlineSnapshot(`[{"id": "__button1","properties": [1,2,3,],},{"id": "__button2","properties": [1,2,3,],},]`)})})