blob: c165821d99e1db75f19539d6ec2ea08941701b0e [file] [log] [blame]
(async function(testRunner) {
var {page, session, dp} = await testRunner.startHTML(`
<link rel='stylesheet' href='${testRunner.url('resources/set-media-text.css')}'/>`, 'Tests CSS.setMediaText method.');
var CSSHelper = await testRunner.loadScript('../resources/css-helper.js');
var cssHelper = new CSSHelper(testRunner, dp);
dp.DOM.enable();
dp.CSS.enable();
var event = await dp.CSS.onceStyleSheetAdded();
var styleSheetId = event.params.header.styleSheetId;
var setMediaText = cssHelper.setMediaText.bind(cssHelper, styleSheetId, false);
var verifyProtocolError = cssHelper.setMediaText.bind(cssHelper, styleSheetId, true);
var response = await dp.CSS.getStyleSheetText({styleSheetId});
testRunner.log('==== Initial style sheet text ====');
testRunner.log(response.result.text);
var firstMediaRange = {
startLine: 0,
startColumn: 7,
endLine: 0,
endColumn: 67
};
var secondMediaRange = {
startLine: 6,
startColumn: 8,
endLine: 8,
endColumn: 23
};
testRunner.runTestSuite([
async function testSimpleEdit() {
await setMediaText({
range: firstMediaRange,
text: 'all and (min-height: 20px)'
});
await dp.DOM.undo();
},
async function testComplexToSimpleEdit() {
await setMediaText({
range: secondMediaRange,
text: 'all'
});
await dp.DOM.undo();
},
async function testSimpleToComplexEdit() {
await setMediaText({
range: firstMediaRange,
text: 'all and (min-height: 20px), (max-width: 10px), handheld and (min-monochrome: 8)'
});
await dp.DOM.undo();
},
async function testInvalidParameters() {
await verifyProtocolError({
range: { startLine: 'three', startColumn: 0, endLine: 4, endColumn: 0 },
text: 'no matter what is here'
});
},
async function testInvalidText() {
await verifyProtocolError({
range: firstMediaRange,
text: 'something /* is wrong here'
});
},
async function testInvalidText2() {
await verifyProtocolError({
range: firstMediaRange,
text: 'something { is { wrong: here} }'
});
},
async function testInvalidText3() {
await verifyProtocolError({
range: firstMediaRange,
text: 'something { wrong'
});
},
async function testEditSequentially() {
var newText = 'screen';
var oldLength = firstMediaRange.endColumn - firstMediaRange.startColumn;
var lengthDelta = newText.length - oldLength;
await setMediaText({
range: firstMediaRange,
text: newText
});
var range = {
startLine: firstMediaRange.startLine,
startColumn: firstMediaRange.startColumn,
endLine: firstMediaRange.endLine,
endColumn: firstMediaRange.endColumn + lengthDelta
};
await setMediaText({
range: range,
text: 'all,\nhandheld and (min-height: 20px),\n(min-width: 100px) and (max-width: 200px)'
});
await dp.DOM.undo();
},
async function testSimpleAfterSequentially() {
await setMediaText({
range: firstMediaRange,
text: 'all and (min-height: 20px)'
});
await dp.DOM.undo();
}
]);
})