browser_computed_pseudo-element.js (2868B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 // Tests that pseudoelements are displayed correctly in the rule view. 7 8 const TEST_URI = URL_ROOT + "doc_pseudoelement.html"; 9 10 add_task(async function () { 11 await addTab(TEST_URI); 12 const { inspector, view } = await openComputedView(); 13 await testTopLeft(inspector, view); 14 }); 15 16 async function testTopLeft(inspector, view) { 17 const node = await getNodeFront("#topleft", inspector.markup); 18 await selectNode(node, inspector); 19 const float = getComputedViewPropertyValue(view, "float"); 20 is(float, "left", "The computed view shows the correct float"); 21 22 const children = await inspector.markup.walker.children(node); 23 is(children.nodes.length, 3, "Element has correct number of children"); 24 25 const beforeElement = children.nodes[0]; 26 await selectNode(beforeElement, inspector); 27 28 info("check `top` property on #topleft::before"); 29 await checkMatchedSelectorForProperty(view, { 30 property: "top", 31 expectedComputedValue: "0px", 32 expectedMatchedSelectors: [ 33 { 34 selector: ".topleft::before", 35 value: "0px", 36 }, 37 { 38 selector: ":where(.topleft)::before", 39 value: "10px", 40 }, 41 ], 42 }); 43 44 info("check `left` property on #topleft::before"); 45 await checkMatchedSelectorForProperty(view, { 46 property: "left", 47 expectedComputedValue: "0px", 48 expectedMatchedSelectors: [ 49 { 50 selector: ".topleft::before", 51 value: "0px", 52 }, 53 { 54 selector: ":where(.topleft)::before", 55 value: "20px", 56 }, 57 ], 58 }); 59 60 info("check `color` property on #topleft::before"); 61 await checkMatchedSelectorForProperty(view, { 62 property: "color", 63 expectedComputedValue: "rgb(0, 255, 0)", 64 expectedMatchedSelectors: [ 65 { 66 selector: ":where(.topleft)::before", 67 value: "lime", 68 }, 69 { 70 selector: ".topleft", 71 value: "blue", 72 match: false, 73 }, 74 { 75 selector: "body", 76 value: "rgb(51, 51, 51)", 77 match: false, 78 }, 79 { 80 selector: ":root", 81 value: "canvastext", 82 match: false, 83 }, 84 ], 85 }); 86 87 const afterElement = children.nodes.at(-1); 88 await selectNode(afterElement, inspector); 89 90 info("check `top` property on #topleft::after"); 91 await checkMatchedSelectorForProperty(view, { 92 property: "top", 93 expectedComputedValue: "96px", 94 expectedMatchedSelectors: [ 95 { 96 selector: ".box::after", 97 value: "50%", 98 }, 99 ], 100 }); 101 102 info("check `left` property on #topleft::after"); 103 await checkMatchedSelectorForProperty(view, { 104 property: "left", 105 expectedComputedValue: "96px", 106 expectedMatchedSelectors: [ 107 { 108 selector: ".box::after", 109 value: "50%", 110 }, 111 ], 112 }); 113 }