Tests audit formatters performing evals on content scripts in WebInspector Extensions API

 Started extension.
Running tests...
RUNNING TEST: extension_testAudits
 Extension audits
    Rule with details subtree (1)
      Test Formatters
           main world object
            whereAmI
            : 
            "main world"
            __proto__
            : 
            Object
            <
             span
             
              id
             ="
              test-element
             "
            >
           
           content script object
            whereAmI
            : 
            "brave new world"
            __proto__
            : 
            Object
            <
             span
             
              id
             ="
              test-element
             "
            >
           
category.onAuditStarted fired
All tests done.

