| (async function(testRunner) { |
| var {page, session, dp} = await testRunner.startHTML(` |
| <style> |
| #modifyRule { |
| box-sizing: border-box; |
| } |
| |
| #modifyRule { |
| height: 100%; |
| } |
| |
| #modifyRule { |
| width: 100%; |
| } |
| </style> |
| <article id='modifyRule'></article> |
| `, 'The test verifies that CSS.stopRuleUsageTracking doesn\'t crash when used concurrently with the CSSOM modifications.'); |
| |
| var CSSHelper = await testRunner.loadScript('../resources/css-helper.js'); |
| var cssHelper = new CSSHelper(testRunner, dp); |
| |
| await dp.DOM.enable(); |
| await dp.CSS.enable(); |
| var documentNodeId = await cssHelper.requestDocumentNodeId(); |
| |
| await dp.CSS.startRuleUsageTracking(); |
| |
| session.evaluate(`document.styleSheets[0].rules[0].style.setProperty('color', 'red')`); |
| session.evaluate(`document.styleSheets[0].rules[2].style.setProperty('color', 'blue')`); |
| session.evaluate(`document.styleSheets[0].rules[1].style.setProperty('color', 'green')`); |
| |
| var response = await dp.CSS.stopRuleUsageTracking(); |
| |
| var rules = response.result.ruleUsage; |
| var usedLines = rules.filter(rule => rule.used); |
| var unusedLines = rules.filter(rule => !rule.used); |
| |
| usedLines.sort(); |
| unusedLines.sort(); |
| testRunner.log('=== Size of array: ' + rules.length); |
| testRunner.log(' Number of used Rules: ' + usedLines.length); |
| for(var line of usedLines) |
| testRunner.log(line.range.startLine); |
| |
| testRunner.log(' Number of unused Rules: ' + unusedLines.length); |
| for(var line of unusedLines) |
| testRunner.log(line.range.startLine); |
| |
| testRunner.completeTest(); |
| }) |