fune/devtools/client/inspector/boxmodel/test/browser_boxmodel_properties.js
2017-03-01 08:58:12 -04:00

120 lines
2.7 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
// Test that the box model properties list displays the right values
// and that it updates when the node's style is changed.
const TEST_URI = `
<style type='text/css'>
div {
box-sizing: border-box;
display: block;
float: left;
line-height: 20px;
position: relative;
z-index: 2;
height: 100px;
width: 100px;
border: 10px solid black;
padding: 20px;
margin: 30px auto;
}
</style>
<div>Test Node</div>
`;
const res1 = [
{
property: "box-sizing",
value: "border-box"
},
{
property: "display",
value: "block"
},
{
property: "float",
value: "left"
},
{
property: "line-height",
value: "20px"
},
{
property: "position",
value: "relative"
},
{
property: "z-index",
value: 2
},
];
const res2 = [
{
property: "box-sizing",
value: "content-box"
},
{
property: "display",
value: "block"
},
{
property: "float",
value: "right"
},
{
property: "line-height",
value: "10px"
},
{
property: "position",
value: "static"
},
{
property: "z-index",
value: 5
},
];
add_task(function* () {
yield addTab("data:text/html;charset=utf-8," + encodeURIComponent(TEST_URI));
let { inspector, boxmodel, testActor } = yield openLayoutView();
yield selectNode("div", inspector);
yield testInitialValues(inspector, boxmodel);
yield testChangingValues(inspector, boxmodel, testActor);
});
function* testInitialValues(inspector, boxmodel) {
info("Test that the initial values of the box model are correct");
let doc = boxmodel.document;
for (let { property, value } of res1) {
let elt = doc.querySelector(getPropertySelector(property));
is(elt.textContent, value, property + " has the right value.");
}
}
function* testChangingValues(inspector, boxmodel, testActor) {
info("Test that changing the document updates the box model");
let doc = boxmodel.document;
let onUpdated = waitForUpdate(inspector);
yield testActor.setAttribute("div", "style",
"box-sizing:content-box;float:right;" +
"line-height:10px;position:static;z-index:5;");
yield onUpdated;
for (let { property, value } of res2) {
let elt = doc.querySelector(getPropertySelector(property));
is(elt.textContent, value, property + " has the right value after style update.");
}
}
function getPropertySelector(propertyName) {
return `.boxmodel-properties-wrapper .property-view` +
`[data-property-name=${propertyName}] .property-value`;
}