blob: 68bf1a329a1268e58fb72c93ec4f3e03aa11ec85 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(async function() {
TestRunner.addResult(`Tests that adding a new rule works after switching nodes.\n`);
await TestRunner.loadModule('elements_test_runner');
await TestRunner.showPanel('elements');
await TestRunner.loadHTML(`
<div id="inspected" style="font-size: 12px">Text</div>
<div id="other" style="color:red"></div>
`);
ElementsTestRunner.selectNodeAndWaitForStyles('inspected', step1);
TestRunner.addSniffer(Workspace.UISourceCode.prototype, 'addRevision', onRevisionAdded);
var treeElement;
var hasResourceChanged;
var testFinished = false;
var revisionAdded = false;
var displayName = '';
function step1() {
// Click "Add new rule".
ElementsTestRunner.addNewRule('foo, div#inspected, bar', step2);
}
function step2() {
var section = ElementsTestRunner.firstMatchedStyleSection();
var newProperty = section.addNewBlankProperty();
newProperty.startEditing();
textInputController.insertText('color');
newProperty.nameElement.dispatchEvent(TestRunner.createKeyEvent('Tab'));
textInputController.insertText('maroon');
newProperty.valueElement.dispatchEvent(TestRunner.createKeyEvent('Tab'));
ElementsTestRunner.selectNodeAndWaitForStyles('other', step3);
}
function step3() {
// Click "Add new rule".
ElementsTestRunner.addNewRule(null, onRuleAdded);
function onRuleAdded() {
ElementsTestRunner.selectNodeAndWaitForStyles('inspected', step4);
}
}
async function step4() {
TestRunner.addResult('After adding new rule (inspected):');
await ElementsTestRunner.dumpSelectedElementStyles(true, false, true, true);
ElementsTestRunner.selectNodeAndWaitForStyles('other', step5);
}
async function step5() {
TestRunner.addResult('After adding new rule (other):');
await ElementsTestRunner.dumpSelectedElementStyles(true, false, true);
testFinished = true;
maybeCompleteTest();
}
function maybeCompleteTest() {
if (!testFinished || !revisionAdded)
return;
TestRunner.addResult('Revision added: ' + displayName);
TestRunner.completeTest();
}
function onRevisionAdded(revision) {
displayName = this.displayName();
revisionAdded = true;
maybeCompleteTest();
}
})();