diff --git a/packages/playwright-core/src/protocol/serializers.ts b/packages/playwright-core/src/protocol/serializers.ts index 3e4134d62c36e..d43747237f760 100644 --- a/packages/playwright-core/src/protocol/serializers.ts +++ b/packages/playwright-core/src/protocol/serializers.ts @@ -75,10 +75,6 @@ function innerParseSerializedValue(value: SerializedValue, handles: any[] | unde return BigInt(value.bi); if (value.r !== undefined) return new RegExp(value.r.p, value.r.f); - if (value.m !== undefined) - return new Map(innerParseSerializedValue(value.m, handles, refs)); - if (value.se !== undefined) - return new Set(innerParseSerializedValue(value.se, handles, refs)); if (value.a !== undefined) { const result: any[] = []; @@ -149,10 +145,6 @@ function innerSerializeValue(value: any, handleSerializer: (value: any) => Handl } return { s: `${error.name}: ${error.message}\n${error.stack}` }; } - if (isMap(value)) - return { m: innerSerializeValue(Array.from(value), handleSerializer, visitorInfo) }; - if (isSet(value)) - return { se: innerSerializeValue(Array.from(value), handleSerializer, visitorInfo) }; if (isDate(value)) return { d: value.toJSON() }; if (isURL(value)) @@ -183,14 +175,6 @@ function innerSerializeValue(value: any, handleSerializer: (value: any) => Handl throw new Error('Unexpected value'); } -function isMap(obj: any): obj is Map { - return obj instanceof Map || Object.prototype.toString.call(obj) === '[object Map]'; -} - -function isSet(obj: any): obj is Set { - return obj instanceof Set || Object.prototype.toString.call(obj) === '[object Set]'; -} - function isRegExp(obj: any): obj is RegExp { return obj instanceof RegExp || Object.prototype.toString.call(obj) === '[object RegExp]'; } diff --git a/packages/playwright-core/src/protocol/validator.ts b/packages/playwright-core/src/protocol/validator.ts index ddb477f310ef8..95210bda5510d 100644 --- a/packages/playwright-core/src/protocol/validator.ts +++ b/packages/playwright-core/src/protocol/validator.ts @@ -58,8 +58,6 @@ scheme.SerializedValue = tObject({ d: tOptional(tString), u: tOptional(tString), bi: tOptional(tString), - m: tOptional(tType('SerializedValue')), - se: tOptional(tType('SerializedValue')), r: tOptional(tObject({ p: tString, f: tString, diff --git a/packages/playwright-core/src/server/isomorphic/utilityScriptSerializers.ts b/packages/playwright-core/src/server/isomorphic/utilityScriptSerializers.ts index 0a49410110b8d..6ba427eb2b439 100644 --- a/packages/playwright-core/src/server/isomorphic/utilityScriptSerializers.ts +++ b/packages/playwright-core/src/server/isomorphic/utilityScriptSerializers.ts @@ -20,8 +20,6 @@ export type SerializedValue = { d: string } | { u: string } | { bi: string } | - { m: SerializedValue } | - { se: SerializedValue } | { r: { p: string, f: string} } | { a: SerializedValue[], id: number } | { o: { k: string, v: SerializedValue }[], id: number } | @@ -37,14 +35,6 @@ type VisitorInfo = { export function source() { - function isMap(obj: any): obj is Map { - return obj instanceof Map || Object.prototype.toString.call(obj) === '[object Map]'; - } - - function isSet(obj: any): obj is Set { - return obj instanceof Set || Object.prototype.toString.call(obj) === '[object Set]'; - } - function isRegExp(obj: any): obj is RegExp { try { return obj instanceof RegExp || Object.prototype.toString.call(obj) === '[object RegExp]'; @@ -104,10 +94,6 @@ export function source() { return new URL(value.u); if ('bi' in value) return BigInt(value.bi); - if ('m' in value) - return new Map(parseEvaluationResultValue(value.m)); - if ('se' in value) - return new Set(parseEvaluationResultValue(value.se)); if ('r' in value) return new RegExp(value.r.p, value.r.f); if ('a' in value) { @@ -177,11 +163,6 @@ export function source() { if (typeof value === 'bigint') return { bi: value.toString() }; - if (isMap(value)) - return { m: serialize(Array.from(value), handleSerializer, visitorInfo) }; - if (isSet(value)) - return { se: serialize(Array.from(value), handleSerializer, visitorInfo) }; - if (isError(value)) { const error = value; if (error.stack?.startsWith(error.name + ': ' + error.message)) { diff --git a/packages/protocol/src/channels.ts b/packages/protocol/src/channels.ts index bd8ab7ce541b0..508352808f9c8 100644 --- a/packages/protocol/src/channels.ts +++ b/packages/protocol/src/channels.ts @@ -180,8 +180,6 @@ export type SerializedValue = { d?: string, u?: string, bi?: string, - m?: SerializedValue, - se?: SerializedValue, r?: { p: string, f: string, diff --git a/packages/protocol/src/protocol.yml b/packages/protocol/src/protocol.yml index 486890e60d7b9..f3648892eb50b 100644 --- a/packages/protocol/src/protocol.yml +++ b/packages/protocol/src/protocol.yml @@ -82,10 +82,6 @@ SerializedValue: u: string? # String representation of BigInt. bi: string? - # JS representation of Map: [[key1, value1], [key2, value2], ...]. - m: SerializedValue? - # JS representation of Set: [item1, item2, ...]. - se: SerializedValue? # Regular expression pattern and flags. r: type: object? diff --git a/tests/page/page-evaluate.spec.ts b/tests/page/page-evaluate.spec.ts index 2f3d7f18d9767..db1120d6fe6b4 100644 --- a/tests/page/page-evaluate.spec.ts +++ b/tests/page/page-evaluate.spec.ts @@ -99,14 +99,9 @@ it('should transfer bigint', async ({ page }) => { expect(await page.evaluate(a => a, 17n)).toBe(17n); }); -it('should transfer maps', async ({ page }) => { - expect(await page.evaluate(() => new Map([[1, { test: 42n }]]))).toEqual(new Map([[1, { test: 42n }]])); - expect(await page.evaluate(a => a, new Map([[1, { test: 17n }]]))).toEqual(new Map([[1, { test: 17n }]])); -}); - -it('should transfer sets', async ({ page }) => { - expect(await page.evaluate(() => new Set([1, { test: 42n }]))).toEqual(new Set([1, { test: 42n }])); - expect(await page.evaluate(a => a, new Set([1, { test: 17n }]))).toEqual(new Set([1, { test: 17n }])); +it('should transfer maps as empty objects', async ({ page }) => { + const result = await page.evaluate(a => a.x.constructor.name + ' ' + JSON.stringify(a.x), { x: new Map([[1, 2]]) }); + expect(result).toBe('Object {}'); }); it('should modify global environment', async ({ page }) => {