/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ // Tests that the inspect command works as it should const TEST_URI = "http://example.com/browser/devtools/client/commandline/"+ "test/browser_cmd_pagemod_export.html"; function test() { return Task.spawn(spawnTest).then(finish, helpers.handleError); } function* spawnTest() { let options = yield helpers.openTab(TEST_URI); yield helpers.openToolbar(options); const documentElement = options.document.documentElement; const initialHtml = documentElement.innerHTML; function resetContent() { options.document.documentElement.innerHTML = initialHtml; } // Test exporting HTML let oldOpen = options.window.open; let openURL = ""; options.window.open = function(url) { // The URL is a data: URL that contains the document source openURL = decodeURIComponent(url); }; yield helpers.audit(options, [ { setup: 'export html', skipIf: true, check: { input: 'export html', hints: ' [destination]', markup: 'VVVVVVVVVVV', status: 'VALID', }, exec: { output: '' }, post: function() { isnot(openURL.indexOf(''), -1, "export html works: "); isnot(openURL.indexOf("
#'), -1, "export html works:
"); } }, { setup: 'export html stdout', check: { input: 'export html stdout', hints: '', markup: 'VVVVVVVVVVVVVVVVVV', status: 'VALID', args: { destination: { value: "stdout" } }, }, exec: { output: [ //, /
#/
]
}
}
]);
options.window.open = oldOpen;
oldOpen = undefined;
// Test 'pagemod replace'
yield helpers.audit(options, [
{
setup: 'pagemod replace',
check: {
input: 'pagemod replace',
hints: ' .foOBarclass'), -1,
".someclass changed to .foOBarclass");
isnot(html.indexOf(' #foOBarid'), -1,
"#someid changed to #foOBarid");
resetContent();
}
},
{
setup: 'pagemod replace some foobar --contentOnly',
exec: {
output: /^[^:]+: 13\. [^:]+: 2\. [^:]+: 0\.\s*$/
},
post: function() {
let html = documentElement.innerHTML;
isnot(html.indexOf(' .foobarclass'), -1,
".someclass changed to .foobarclass (content only)");
isnot(html.indexOf(' #foobarid'), -1,
"#someid changed to #foobarid (content only)");
resetContent();
}
},
{
setup: 'pagemod replace some foobar --attrOnly',
exec: {
output: /^[^:]+: 13\. [^:]+: 0\. [^:]+: 2\.\s*$/
},
post: function() {
let html = documentElement.innerHTML;
isnot(html.indexOf(' #someid'), -1,
"#someid changed to #foobarid (attr only)");
resetContent();
}
},
{
setup: 'pagemod replace some foobar --root head',
exec: {
output: /^[^:]+: 2\. [^:]+: 0\. [^:]+: 0\.\s*$/
},
post: function() {
is(documentElement.innerHTML, initialHtml, "nothing changed");
}
},
{
setup: 'pagemod replace some foobar --selector .someclass,div,span',
exec: {
output: /^[^:]+: 4\. [^:]+: 1\. [^:]+: 1\.\s*$/
},
post: function() {
let html = documentElement.innerHTML;
isnot(html.indexOf(' #someid'), -1,
"#someid did not change");
resetContent();
}
},
]);
// Test 'pagemod remove element'
yield helpers.audit(options, [
{
setup: 'pagemod remove',
check: {
input: 'pagemod remove',
hints: ' attribute',
markup: 'IIIIIIIVIIIIII',
status: 'ERROR'
},
},
{
setup: 'pagemod remove element',
check: {
input: 'pagemod remove element',
hints: ' '), -1, "p.someclass removed");
is(html.indexOf(' '), -1, "p#someid removed");
is(html.indexOf(" "), -1, " wrapping removed");
isnot(html.indexOf(""), -1, " not removed");
resetContent();
}
},
{
setup: 'pagemod remove element p head',
exec: {
output: /^[^:]+: 0\. [^:]+: 0\.\s*$/
},
post: function() {
is(documentElement.innerHTML, initialHtml, "nothing changed in the page");
}
},
{
setup: 'pagemod remove element p --ifEmptyOnly',
exec: {
output: /^[^:]+: 3\. [^:]+: 0\.\s*$/
},
post: function() {
is(documentElement.innerHTML, initialHtml, "nothing changed in the page");
}
},
{
setup: 'pagemod remove element meta,title --ifEmptyOnly',
exec: {
output: /^[^:]+: 2\. [^:]+: 1\.\s*$/
},
post: function() {
let html = documentElement.innerHTML;
is(html.indexOf(" removed");
isnot(html.indexOf(" '), -1, "p.someclass removed");
is(html.indexOf(' '), -1, "p#someid removed");
is(html.indexOf(" "), -1, " wrapping removed");
isnot(html.indexOf(".someclass"), -1, ".someclass still exists");
isnot(html.indexOf("#someid"), -1, "#someid still exists");
isnot(html.indexOf("p"), -1, " still exists");
resetContent();
}
},
]);
// Test 'pagemod remove attribute'
yield helpers.audit(options, [
{
setup: 'pagemod remove attribute',
check: {
input: 'pagemod remove attribute',
hints: ' #someid'), -1,
"p#someid attribute removed");
isnot(documentElement.innerHTML.indexOf(" #someid"), -1,
"p with someid content still exists");
resetContent();
}
},
{
setup: 'pagemod remove attribute Class p',
exec: {
output: /^[^:]+: 3\. [^:]+: 0\.\s*$/
},
post: function() {
is(documentElement.innerHTML, initialHtml, "nothing changed in the page");
}
},
{
setup: 'pagemod remove attribute Class p --ignoreCase',
exec: {
output: /^[^:]+: 3\. [^:]+: 1\.\s*$/
},
post: function() {
is(documentElement.innerHTML.indexOf(' .someclass'), -1,
"p.someclass attribute removed");
isnot(documentElement.innerHTML.indexOf(" .someclass"), -1,
"p with someclass content still exists");
resetContent();
}
},
]);
// Shutdown
yield helpers.closeToolbar(options);
yield helpers.closeTab(options);
}