/* Any copyright is dedicated to the Public Domain.
https://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
/**
* Tests basic headless content extraction. The page is loaded in the background and
* the content is extracted.
*/
add_task(async function test_headless_extraction() {
const { PageExtractorParent } = ChromeUtils.importESModule(
"resource://gre/actors/PageExtractorParent.sys.mjs"
);
const { url, serverClosed } = serveOnce(`
Headless Document
This is a headless document
`);
const text = await PageExtractorParent.getHeadlessExtractor(
url,
async pageExtractor => pageExtractor.getText()
);
is(text, "This is a headless document", "The page's content is extracted");
await serverClosed;
});
/**
* Test what happens on a 404 page.
*/
add_task(async function test_headless_extraction_404() {
const { PageExtractorParent } = ChromeUtils.importESModule(
"resource://gre/actors/PageExtractorParent.sys.mjs"
);
const { url, serverClosed } = serveOnce(
`
404 not found
404 page not found.
`,
404
);
const text = await PageExtractorParent.getHeadlessExtractor(
url,
async pageExtractor => pageExtractor.getText()
);
is(
text,
"404 page not found.",
"The page's content is extracted even if it's a 404"
);
await serverClosed;
});
/**
* Test page extraction on a restricted page.
*/
add_task(async function test_headless_extraction_about_blank() {
const { PageExtractorParent } = ChromeUtils.importESModule(
"resource://gre/actors/PageExtractorParent.sys.mjs"
);
await Assert.rejects(
PageExtractorParent.getHeadlessExtractor("about:blank", () => {}),
/about: pages are not supported/,
"PageExtractor fails on about: pages."
);
});
/**
* Test page extraction on a file URL.
*/
add_task(async function test_headless_extraction_about_blank() {
const { PageExtractorParent } = ChromeUtils.importESModule(
"resource://gre/actors/PageExtractorParent.sys.mjs"
);
await Assert.rejects(
PageExtractorParent.getHeadlessExtractor(
"file:///NeverGonnaGiveYouUp.mp4",
() => {}
),
/file: pages are not supported/,
"PageExtractor fails on file: URLs."
);
});