/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; // Test that keyframes are displayed for elements nested under a shadow-root. const TEST_URI = `data:text/html;charset=utf-8,
`; add_task(async function () { await addTab(TEST_URI); const { inspector, view } = await openRuleView(); info("Expand the shadow-root parent"); const divFront = await getNodeFront("div", inspector); await inspector.markup.expandNode(divFront); await waitForMultipleChildrenUpdates(inspector); const { markup } = inspector; const divContainer = markup.getContainer(divFront); info("Expand the shadow-root"); const shadowRootContainer = divContainer.getChildContainers()[0]; await expandContainer(inspector, shadowRootContainer); info("Retrieve the rules displayed for the span under the shadow root"); const spanContainer = shadowRootContainer.getChildContainers()[0]; const rules = await getKeyframeRules(spanContainer.node, inspector, view); is( convertTextPropsToString(rules.keyframeRules[0].textProps), "border: rgba(255,0,0,1) 2px dashed", "Keyframe blink (0%) property is correct" ); is( convertTextPropsToString(rules.keyframeRules[1].textProps), "border: rgba(255,0,0,0) 2px dashed", "Keyframe blink (100%) property is correct" ); }); function convertTextPropsToString(textProps) { return textProps.map(t => t.name + ": " + t.value).join("; "); } async function getKeyframeRules(selector, inspector, view) { await selectNode(selector, inspector); const elementStyle = view._elementStyle; const rules = { elementRules: elementStyle.rules.filter(rule => !rule.keyframes), keyframeRules: elementStyle.rules.filter(rule => rule.keyframes), }; return rules; }