Basic Interface test for PerformanceObserver APIs.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PerformanceObserver
PASS PerformanceObserver is defined.
PASS PerformanceObserver.prototype.observe is defined.
PASS PerformanceObserver.prototype.disconnect is defined.
PASS PerformanceObserver() threw exception TypeError: Constructor requires 'new' operator.
PASS new PerformanceObserver() threw exception TypeError: Not enough arguments.
PASS new PerformanceObserver(1) threw exception TypeError: Argument 1 ('callback') to the PerformanceObserver constructor must be a function.
PASS observer = new PerformanceObserver(function() {}) did not throw exception.
PASS observer.observe() threw exception TypeError: Not enough arguments.
PASS observer.observe("mark") threw exception TypeError: Type error.
PASS observer.observe({}) threw exception TypeError: Member PerformanceObserverInit.entryTypes is required and must be an instance of sequence.
PASS observer.observe({entryTypes:"mark"}) threw exception TypeError: Value is not a sequence.
PASS observer.observe({entryTypes:[]}) threw exception TypeError: entryTypes cannot be an empty list.
PASS observer.observe({entryTypes:["not-real"]}) threw exception TypeError: entryTypes contained only unsupported types.
PASS observer.observe({entryTypes:["mark"]}) did not throw exception.
PASS observer.observe({entryTypes:["mark", "not-real"]}) did not throw exception.
PASS observer.observe({entryTypes:["mark", "measure"]}) did not throw exception.
PASS observer.disconnect() did not throw exception.
PASS observer.disconnect() did not throw exception.

PerformanceObserverEntryList
PASS PerformanceObserverEntryList is defined.
PASS PerformanceObserverEntryList.prototype.getEntries is defined.
PASS PerformanceObserverEntryList.prototype.getEntriesByType is defined.
PASS PerformanceObserverEntryList.prototype.getEntriesByName is defined.
PASS new PerformanceObserverEntryList() threw exception TypeError: function is not a constructor (evaluating 'new PerformanceObserverEntryList()').
PASS successfullyParsed is true

TEST COMPLETE

