You establish in the previous three tests, that the named own properties must be exposed on the named properties object, unless the implementation exposes them redundantly at each prototype along the chain (in which case all these tests would pass, but I'm not sure if that's what's wanted). Rather, you should validate through a negative test, that the instance "window" and Window.prototype do not have own properties defined for these named properties (rather than the while-loop that find the first occurance of a property descriptor for f1).

Something like:

<code>assert_false(Object.getOwnPropertyDescriptor(window, "f1"), "named property not exposed on window instance");<br>
assert_false(Object.getOwnPropertyDescriptor(Window.prototype, "f1"), "named property not exposed on Window.prototype");</code>