This is a testharness.js-based test.
Found 90 tests; 48 PASS, 42 FAIL, 0 TIMEOUT, 0 NOTRUN.
PASS Basic sanity-checking (cross-origin)
PASS Basic sanity-checking (same-origin + document.domain)
PASS Basic sanity-checking (cross-site)
FAIL Only certain properties are accessible cross-origin (cross-origin) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
FAIL Only certain properties are accessible cross-origin (same-origin + document.domain) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
FAIL Only certain properties are accessible cross-origin (cross-site) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
FAIL Only certain properties are usable as cross-origin this objects (cross-origin) promise_test: Unhandled rejection with value: object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame."
FAIL Only certain properties are usable as cross-origin this objects (same-origin + document.domain) promise_test: Unhandled rejection with value: object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame."
FAIL Only certain properties are usable as cross-origin this objects (cross-site) promise_test: Unhandled rejection with value: object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame."
PASS [[GetPrototypeOf]] should return null (cross-origin)
PASS [[GetPrototypeOf]] should return null (same-origin + document.domain)
PASS [[GetPrototypeOf]] should return null (cross-site)
FAIL [[SetPrototypeOf]] should return false (cross-origin) assert_throws_js: proto setter |call| on cross-origin Window function "function() { protoSetter.call(win, new Object()); }" threw object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame." ("SecurityError") expected instance of function "function TypeError() { [native code] }" ("TypeError")
FAIL [[SetPrototypeOf]] should return false (same-origin + document.domain) assert_throws_js: proto setter |call| on cross-origin Window function "function() { protoSetter.call(win, new Object()); }" threw object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame." ("SecurityError") expected instance of function "function TypeError() { [native code] }" ("TypeError")
FAIL [[SetPrototypeOf]] should return false (cross-site) assert_throws_js: proto setter |call| on cross-origin Window function "function() { protoSetter.call(win, new Object()); }" threw object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame." ("SecurityError") expected instance of function "function TypeError() { [native code] }" ("TypeError")
PASS [[IsExtensible]] should return true for cross-origin objects (cross-origin)
PASS [[IsExtensible]] should return true for cross-origin objects (same-origin + document.domain)
PASS [[IsExtensible]] should return true for cross-origin objects (cross-site)
FAIL [[PreventExtensions]] should throw for cross-origin objects (cross-origin) assert_throws_js: preventExtensions on cross-origin Window should throw function "function() { Object.preventExtensions(win) }" threw object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame." ("SecurityError") expected instance of function "function TypeError() { [native code] }" ("TypeError")
FAIL [[PreventExtensions]] should throw for cross-origin objects (same-origin + document.domain) assert_throws_js: preventExtensions on cross-origin Window should throw function "function() { Object.preventExtensions(win) }" threw object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame." ("SecurityError") expected instance of function "function TypeError() { [native code] }" ("TypeError")
FAIL [[PreventExtensions]] should throw for cross-origin objects (cross-site) assert_throws_js: preventExtensions on cross-origin Window should throw function "function() { Object.preventExtensions(win) }" threw object "SecurityError: Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame." ("SecurityError") expected instance of function "function TypeError() { [native code] }" ("TypeError")
FAIL [[GetOwnProperty]] - Properties on cross-origin objects should be reported |own| (cross-origin) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
FAIL [[GetOwnProperty]] - Properties on cross-origin objects should be reported |own| (same-origin + document.domain) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
FAIL [[GetOwnProperty]] - Properties on cross-origin objects should be reported |own| (cross-site) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
FAIL [[GetOwnProperty]] - Property descriptors for cross-origin properties should be set up correctly (cross-origin) assert_equals: property descriptor for 0 should be enumerable expected true but got false
FAIL [[GetOwnProperty]] - Property descriptors for cross-origin properties should be set up correctly (same-origin + document.domain) assert_equals: property descriptor for 0 should be enumerable expected true but got false
FAIL [[GetOwnProperty]] - Property descriptors for cross-origin properties should be set up correctly (cross-site) assert_equals: property descriptor for 0 should be enumerable expected true but got false
PASS [[GetOwnProperty]] - Subframe named 'then' should shadow the default 'then' value (cross-origin)
PASS [[GetOwnProperty]] - Subframe named 'then' should shadow the default 'then' value (same-origin + document.domain)
PASS [[GetOwnProperty]] - Subframe named 'then' should shadow the default 'then' value (cross-site)
PASS [[GetOwnProperty]] - Subframes should be visible cross-origin only if their names don't match the names of cross-origin-exposed IDL properties (cross-origin)
PASS [[GetOwnProperty]] - Subframes should be visible cross-origin only if their names don't match the names of cross-origin-exposed IDL properties (same-origin + document.domain)
PASS [[GetOwnProperty]] - Subframes should be visible cross-origin only if their names don't match the names of cross-origin-exposed IDL properties (cross-site)
PASS [[GetOwnProperty]] - Should be able to get a property descriptor for an indexed property only if it corresponds to a child window. (cross-origin)
PASS [[GetOwnProperty]] - Should be able to get a property descriptor for an indexed property only if it corresponds to a child window. (same-origin + document.domain)
PASS [[GetOwnProperty]] - Should be able to get a property descriptor for an indexed property only if it corresponds to a child window. (cross-site)
PASS [[Delete]] Should throw on cross-origin objects (cross-origin)
PASS [[Delete]] Should throw on cross-origin objects (same-origin + document.domain)
PASS [[Delete]] Should throw on cross-origin objects (cross-site)
PASS [[DefineOwnProperty]] Should throw for cross-origin objects (cross-origin)
PASS [[DefineOwnProperty]] Should throw for cross-origin objects (same-origin + document.domain)
PASS [[DefineOwnProperty]] Should throw for cross-origin objects (cross-site)
FAIL Can only enumerate safelisted enumerable properties (cross-origin) assert_equals: Enumerate all enumerable safelisted cross-origin Window properties expected 2 but got 0
FAIL Can only enumerate safelisted enumerable properties (same-origin + document.domain) assert_equals: Enumerate all enumerable safelisted cross-origin Window properties expected 2 but got 0
FAIL Can only enumerate safelisted enumerable properties (cross-site) assert_equals: Enumerate all enumerable safelisted cross-origin Window properties expected 2 but got 0
FAIL [[OwnPropertyKeys]] should return all properties from cross-origin objects (cross-origin) assert_array_equals: Object.getOwnPropertyNames() gives the right answer for cross-origin Window lengths differ, expected array ["0", "1", "blur", "close", "closed", "focus", "frames", "length", "location", "opener", "parent", "postMessage", "self", "then", "top", "window"] length 16, got ["blur", "close", "closed", "focus", "frames", "length", "location", "opener", "parent", "postMessage", "self", "top", "window"] length 13
FAIL [[OwnPropertyKeys]] should return all properties from cross-origin objects (same-origin + document.domain) assert_array_equals: Object.getOwnPropertyNames() gives the right answer for cross-origin Window lengths differ, expected array ["0", "1", "blur", "close", "closed", "focus", "frames", "length", "location", "opener", "parent", "postMessage", "self", "then", "top", "window"] length 16, got ["blur", "close", "closed", "focus", "frames", "length", "location", "opener", "parent", "postMessage", "self", "top", "window"] length 13
FAIL [[OwnPropertyKeys]] should return all properties from cross-origin objects (cross-site) assert_array_equals: Object.getOwnPropertyNames() gives the right answer for cross-origin Window lengths differ, expected array ["0", "1", "blur", "close", "closed", "focus", "frames", "length", "location", "opener", "parent", "postMessage", "self", "then", "top", "window"] length 16, got ["blur", "close", "closed", "focus", "frames", "length", "location", "opener", "parent", "postMessage", "self", "top", "window"] length 13
FAIL [[OwnPropertyKeys]] should return the right symbol-named properties for cross-origin objects (cross-origin) assert_array_equals: Object.getOwnPropertySymbols() should return the three symbol-named properties that are exposed on a cross-origin Window lengths differ, expected array [symbol "Symbol(Symbol.toStringTag)", symbol "Symbol(Symbol.hasInstance)", symbol "Symbol(Symbol.isConcatSpreadable)"] length 3, got [] length 0
FAIL [[OwnPropertyKeys]] should return the right symbol-named properties for cross-origin objects (same-origin + document.domain) assert_array_equals: Object.getOwnPropertySymbols() should return the three symbol-named properties that are exposed on a cross-origin Window lengths differ, expected array [symbol "Symbol(Symbol.toStringTag)", symbol "Symbol(Symbol.hasInstance)", symbol "Symbol(Symbol.isConcatSpreadable)"] length 3, got [] length 0
FAIL [[OwnPropertyKeys]] should return the right symbol-named properties for cross-origin objects (cross-site) assert_array_equals: Object.getOwnPropertySymbols() should return the three symbol-named properties that are exposed on a cross-origin Window lengths differ, expected array [symbol "Symbol(Symbol.toStringTag)", symbol "Symbol(Symbol.hasInstance)", symbol "Symbol(Symbol.isConcatSpreadable)"] length 3, got [] length 0
FAIL [[OwnPropertyKeys]] should place the symbols after the property names after the subframe indices (cross-origin) assert_equals: 'then' property should be added to the end of the string list if not there expected "then" but got "close"
FAIL [[OwnPropertyKeys]] should place the symbols after the property names after the subframe indices (same-origin + document.domain) assert_equals: 'then' property should be added to the end of the string list if not there expected "then" but got "close"
FAIL [[OwnPropertyKeys]] should place the symbols after the property names after the subframe indices (cross-site) assert_equals: 'then' property should be added to the end of the string list if not there expected "then" but got "close"
FAIL [[OwnPropertyKeys]] should not reorder where 'then' appears if it's a named subframe, nor add another copy of 'then' (cross-origin) assert_equals: expected "then" but got "postMessage"
FAIL [[OwnPropertyKeys]] should not reorder where 'then' appears if it's a named subframe, nor add another copy of 'then' (same-origin + document.domain) assert_equals: expected "then" but got "postMessage"
FAIL [[OwnPropertyKeys]] should not reorder where 'then' appears if it's a named subframe, nor add another copy of 'then' (cross-site) assert_equals: expected "then" but got "postMessage"
PASS A and B jointly observe the same identity for cross-origin Window and Location (cross-origin)
PASS A and B jointly observe the same identity for cross-origin Window and Location (same-origin + document.domain)
PASS A and B jointly observe the same identity for cross-origin Window and Location (cross-site)
PASS Cross-origin functions get local Function.prototype (cross-origin)
PASS Cross-origin functions get local Function.prototype (same-origin + document.domain)
PASS Cross-origin functions get local Function.prototype (cross-site)
FAIL Cross-origin Window accessors get local Function.prototype (cross-origin) Cannot read property 'name' of undefined
FAIL Cross-origin Window accessors get local Function.prototype (same-origin + document.domain) Cannot read property 'name' of undefined
FAIL Cross-origin Window accessors get local Function.prototype (cross-site) Cannot read property 'name' of undefined
PASS Same-origin observers get different functions for cross-origin objects (cross-origin)
PASS Same-origin observers get different functions for cross-origin objects (same-origin + document.domain)
PASS Same-origin observers get different functions for cross-origin objects (cross-site)
FAIL Same-origin observers get different accessors for cross-origin Window (cross-origin) assert_not_equals: different Window accessors per-incumbent script settings object got disallowed value undefined
FAIL Same-origin observers get different accessors for cross-origin Window (same-origin + document.domain) assert_not_equals: different Window accessors per-incumbent script settings object got disallowed value undefined
FAIL Same-origin observers get different accessors for cross-origin Window (cross-site) assert_not_equals: different Window accessors per-incumbent script settings object got disallowed value undefined
FAIL Same-origin observers get different accessors for cross-origin Location (cross-origin) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
FAIL Same-origin observers get different accessors for cross-origin Location (same-origin + document.domain) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
FAIL Same-origin observers get different accessors for cross-origin Location (cross-site) Blocked a frame with origin "http://web-platform.test:8001" from accessing a cross-origin frame.
PASS {}.toString.call() does the right thing on cross-origin objects (cross-origin)
PASS {}.toString.call() does the right thing on cross-origin objects (same-origin + document.domain)
PASS {}.toString.call() does the right thing on cross-origin objects (cross-site)
PASS Resolving a promise with a cross-origin window without a 'then' subframe should work (cross-origin)
PASS Resolving a promise with a cross-origin window without a 'then' subframe should work (same-origin + document.domain)
PASS Resolving a promise with a cross-origin window without a 'then' subframe should work (cross-site)
PASS Resolving a promise with a cross-origin window with a 'then' subframe should work (cross-origin)
PASS Resolving a promise with a cross-origin window with a 'then' subframe should work (same-origin + document.domain)
PASS Resolving a promise with a cross-origin window with a 'then' subframe should work (cross-site)
PASS Resolving a promise with a cross-origin location should work (cross-origin)
PASS Resolving a promise with a cross-origin location should work (same-origin + document.domain)
PASS Resolving a promise with a cross-origin location should work (cross-site)
PASS LegacyLenientThis behavior (cross-origin)
PASS LegacyLenientThis behavior (same-origin + document.domain)
PASS LegacyLenientThis behavior (cross-site)
Harness: the test ran to completion.

