browser_rules_keyframes-rule_01.js (3180B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 // Test that keyframe rules and gutters are displayed correctly in the 7 // rule view. 8 9 const TEST_URI = URL_ROOT + "doc_keyframeanimation.html"; 10 11 add_task(async function () { 12 await addTab(TEST_URI); 13 const { inspector, view } = await openRuleView(); 14 await testPacman(inspector, view); 15 await testBoxy(inspector, view); 16 await testMoxy(inspector, view); 17 }); 18 19 async function testPacman(inspector, view) { 20 info("Test content and gutter in the keyframes rule of #pacman"); 21 22 await assertKeyframeRules("#pacman", inspector, view, { 23 elementRulesNb: 2, 24 keyframeRulesNb: 2, 25 keyframesRules: ["pacman", "pacman"], 26 keyframeRules: ["100%", "100%"], 27 }); 28 29 assertGutters(view, { 30 guttersNbs: 2, 31 gutterHeading: ["Keyframes pacman", "Keyframes pacman"], 32 }); 33 } 34 35 async function testBoxy(inspector, view) { 36 info("Test content and gutter in the keyframes rule of #boxy"); 37 38 await assertKeyframeRules("#boxy", inspector, view, { 39 elementRulesNb: 3, 40 keyframeRulesNb: 3, 41 keyframesRules: ["boxy", "boxy", "boxy"], 42 keyframeRules: ["10%", "20%", "100%"], 43 }); 44 45 assertGutters(view, { 46 guttersNbs: 1, 47 gutterHeading: ["Keyframes boxy"], 48 }); 49 } 50 51 async function testMoxy(inspector, view) { 52 info("Test content and gutter in the keyframes rule of #moxy"); 53 54 await assertKeyframeRules("#moxy", inspector, view, { 55 elementRulesNb: 3, 56 keyframeRulesNb: 4, 57 keyframesRules: ["boxy", "boxy", "boxy", "moxy"], 58 keyframeRules: ["10%", "20%", "100%", "100%"], 59 }); 60 61 assertGutters(view, { 62 guttersNbs: 2, 63 gutterHeading: ["Keyframes boxy", "Keyframes moxy"], 64 }); 65 } 66 67 async function assertKeyframeRules(selector, inspector, view, expected) { 68 await selectNode(selector, inspector); 69 const elementStyle = view._elementStyle; 70 71 const rules = { 72 elementRules: elementStyle.rules.filter(rule => !rule.keyframes), 73 keyframeRules: elementStyle.rules.filter(rule => rule.keyframes), 74 }; 75 76 is( 77 rules.elementRules.length, 78 expected.elementRulesNb, 79 selector + " has the correct number of non keyframe element rules" 80 ); 81 is( 82 rules.keyframeRules.length, 83 expected.keyframeRulesNb, 84 selector + " has the correct number of keyframe rules" 85 ); 86 87 let i = 0; 88 for (const keyframeRule of rules.keyframeRules) { 89 Assert.equal( 90 keyframeRule.keyframes.name, 91 expected.keyframesRules[i], 92 keyframeRule.keyframes.name + " has the correct keyframes name" 93 ); 94 Assert.equal( 95 keyframeRule.domRule.keyText, 96 expected.keyframeRules[i], 97 keyframeRule.domRule.keyText + " selector heading is correct" 98 ); 99 i++; 100 } 101 } 102 103 function assertGutters(view, expected) { 104 const gutters = view.element.querySelectorAll(".ruleview-header"); 105 106 is( 107 gutters.length, 108 expected.guttersNbs, 109 "There are " + gutters.length + " gutter headings" 110 ); 111 112 let i = 0; 113 for (const gutter of gutters) { 114 is( 115 gutter.textContent, 116 expected.gutterHeading[i], 117 "Correct " + gutter.textContent + " gutter headings" 118 ); 119 i++; 120 } 121 122 return gutters; 123 }