mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 08:07:44 +00:00
WebContent+headless-browser: Use document.body.innerText for text tests
This should be less fickle than the "select all & copy selected text" trick we were doing earlier.
This commit is contained in:
parent
58c1cb80bb
commit
097b5e4803
4 changed files with 19 additions and 4 deletions
|
@ -636,6 +636,16 @@ Messages::WebContentServer::DumpLayoutTreeResponse ConnectionFromClient::dump_la
|
||||||
return builder.to_deprecated_string();
|
return builder.to_deprecated_string();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Messages::WebContentServer::DumpTextResponse ConnectionFromClient::dump_text()
|
||||||
|
{
|
||||||
|
auto* document = page().top_level_browsing_context().active_document();
|
||||||
|
if (!document)
|
||||||
|
return DeprecatedString { "(no DOM tree)" };
|
||||||
|
if (!document->body())
|
||||||
|
return DeprecatedString { "(no body)" };
|
||||||
|
return document->body()->inner_text();
|
||||||
|
}
|
||||||
|
|
||||||
void ConnectionFromClient::set_content_filters(Vector<String> const& filters)
|
void ConnectionFromClient::set_content_filters(Vector<String> const& filters)
|
||||||
{
|
{
|
||||||
Web::ContentFilter::the().set_patterns(filters).release_value_but_fixme_should_propagate_errors();
|
Web::ContentFilter::the().set_patterns(filters).release_value_but_fixme_should_propagate_errors();
|
||||||
|
|
|
@ -74,6 +74,7 @@ private:
|
||||||
virtual void inspect_accessibility_tree() override;
|
virtual void inspect_accessibility_tree() override;
|
||||||
virtual Messages::WebContentServer::GetHoveredNodeIdResponse get_hovered_node_id() override;
|
virtual Messages::WebContentServer::GetHoveredNodeIdResponse get_hovered_node_id() override;
|
||||||
virtual Messages::WebContentServer::DumpLayoutTreeResponse dump_layout_tree() override;
|
virtual Messages::WebContentServer::DumpLayoutTreeResponse dump_layout_tree() override;
|
||||||
|
virtual Messages::WebContentServer::DumpTextResponse dump_text() override;
|
||||||
virtual void set_content_filters(Vector<String> const&) override;
|
virtual void set_content_filters(Vector<String> const&) override;
|
||||||
virtual void set_autoplay_allowed_on_all_websites() override;
|
virtual void set_autoplay_allowed_on_all_websites() override;
|
||||||
virtual void set_autoplay_allowlist(Vector<String> const& allowlist) override;
|
virtual void set_autoplay_allowlist(Vector<String> const& allowlist) override;
|
||||||
|
|
|
@ -50,6 +50,7 @@ endpoint WebContentServer
|
||||||
run_javascript(DeprecatedString js_source) =|
|
run_javascript(DeprecatedString js_source) =|
|
||||||
|
|
||||||
dump_layout_tree() => (DeprecatedString dump)
|
dump_layout_tree() => (DeprecatedString dump)
|
||||||
|
dump_text() => (DeprecatedString dump)
|
||||||
|
|
||||||
get_selected_text() => (DeprecatedString selection)
|
get_selected_text() => (DeprecatedString selection)
|
||||||
select_all() =|
|
select_all() =|
|
||||||
|
|
|
@ -80,6 +80,11 @@ public:
|
||||||
return String::from_deprecated_string(client().dump_layout_tree());
|
return String::from_deprecated_string(client().dump_layout_tree());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ErrorOr<String> dump_text()
|
||||||
|
{
|
||||||
|
return String::from_deprecated_string(client().dump_text());
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HeadlessWebContentView() = default;
|
HeadlessWebContentView() = default;
|
||||||
|
|
||||||
|
@ -191,8 +196,7 @@ static ErrorOr<String> run_one_test(HeadlessWebContentView& view, StringView inp
|
||||||
};
|
};
|
||||||
} else if (mode == TestMode::Text) {
|
} else if (mode == TestMode::Text) {
|
||||||
view.on_load_finish = [&](auto const&) {
|
view.on_load_finish = [&](auto const&) {
|
||||||
view.select_all();
|
result = view.dump_text().release_value_but_fixme_should_propagate_errors();
|
||||||
result = String::from_utf8(view.selected_text()).release_value_but_fixme_should_propagate_errors();
|
|
||||||
loop.quit(0);
|
loop.quit(0);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -384,8 +388,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
};
|
};
|
||||||
} else if (dump_text) {
|
} else if (dump_text) {
|
||||||
view->on_load_finish = [&](auto const&) {
|
view->on_load_finish = [&](auto const&) {
|
||||||
view->select_all();
|
auto text = view->dump_text().release_value_but_fixme_should_propagate_errors();
|
||||||
auto text = view->selected_text();
|
|
||||||
|
|
||||||
out("{}", text);
|
out("{}", text);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue