Julien you are right !!! 

The reason why we can't get the descriptor of document.hidden is because it is located in its ancestors. In this way, we just have to mockup `hidden` property in `document` directly in suiteSetup and delete it in suiteTeardown. After removing the reference of `document.hidden`

Then after out tests passed, other tests using `document.hidden` will look up the prototype chain to find the real one and will not be affected ! 

I have checked mdn about more details about mechanisms behind these functions, did I think right, Julien !?