Testing the MacOSInlineMediaControls constructor.

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


PASS mediaControls.element.localName is "div"
FAIL mediaControls.element.className should be media-controls mac inline. Was media-controls inline mac.
PASS mediaControls.layoutTraits is an instance of MacOSLayoutTraits
PASS mediaControls.layoutTraits.isFullscreen is false

Controls bar
FAIL mediaControls.controlsBar.children.length should be 4. Threw exception TypeError: undefined is not an object (evaluating 'mediaControls.controlsBar.children')
FAIL mediaControls.controlsBar.children[1] is not an instance of ButtonsContainer
FAIL mediaControls.controlsBar.children[2] is not an instance of ButtonsContainer
FAIL mediaControls.controlsBar.children[3] is not an instance of LayoutNode

Left container
FAIL mediaControls.controlsBar.children[1].buttons should be [object Object],[object Object]. Threw exception TypeError: undefined is not an object (evaluating 'mediaControls.controlsBar.children')
FAIL mediaControls.controlsBar.children[1].element.className should be buttons-container left. Threw exception TypeError: undefined is not an object (evaluating 'mediaControls.controlsBar.children')
FAIL mediaControls.controlsBar.children[1].leftMargin should be 24. Threw exception TypeError: undefined is not an object (evaluating 'mediaControls.controlsBar.children')
FAIL mediaControls.controlsBar.children[1].rightMargin should be 24. Threw exception TypeError: undefined is not an object (evaluating 'mediaControls.controlsBar.children')
FAIL mediaControls.controlsBar.children[1].buttonMargin should be 24. Threw exception TypeError: undefined is not an object (evaluating 'mediaControls.controlsBar.children')

Right container
FAIL mediaControls.controlsBar.children[2].buttons should be [object Object],[object Object],[object Object],[object Object],[object Object]. Threw exception TypeError: undefined is not an object (evaluating 'mediaControls.controlsBar.children')
FAIL mediaControls.controlsBar.children[2].element.className should be buttons-container right. Threw exception TypeError: undefined is not an object (evaluating 'mediaControls.controlsBar.children')
FAIL mediaControls.controlsBar.children[2].leftMargin should be 24. Threw exception TypeError: undefined is not an object (evaluating 'mediaControls.controlsBar.children')
FAIL mediaControls.controlsBar.children[2].rightMargin should be 24. Threw exception TypeError: undefined is not an object (evaluating 'mediaControls.controlsBar.children')
FAIL mediaControls.controlsBar.children[2].buttonMargin should be 24. Threw exception TypeError: undefined is not an object (evaluating 'mediaControls.controlsBar.children')

Volume slider
FAIL mediaControls.controlsBar.children[3].element.className should be volume-slider-container. Threw exception TypeError: undefined is not an object (evaluating 'mediaControls.controlsBar.children')
FAIL mediaControls.controlsBar.children[3].children.slice(-1) should be [object Object]. Threw exception TypeError: undefined is not an object (evaluating 'mediaControls.controlsBar.children')
FAIL mediaControls.controlsBar.children[3].visible should be false. Threw exception TypeError: undefined is not an object (evaluating 'mediaControls.controlsBar.children')
PASS mediaControls.volumeSlider.width is 60
PASS accessibilityController.accessibleElementById('groupping-label').description is "AXDescription: Video Controls"
PASS accessibilityController.accessibleElementById('groupping-label').description is "AXDescription: Audio Controls"

PASS successfullyParsed is true

TEST COMPLETE

