Main content starts here with enough words to satisfy readability.
Second paragraph for signal.
",
url: "https://example.com/article",
extractMode: "text",
config: {},
});
expect(result).toBeNull();
});
it("continues when a plugin extractor throws", async () => {
resolvePluginWebContentExtractorsMock.mockReturnValue([
{
id: "broken",
pluginId: "broken-plugin",
label: "Broken",
extract: vi.fn().mockRejectedValue(new Error("boom")),
},
{
id: "readability",
pluginId: "web-readability",
label: "Readability",
extract: vi.fn().mockResolvedValue({
text: "fallback text",
}),
},
]);
const result = await extractReadableContent({
html: "