From edbc7327855314d8ead724c65c2b1bbebd87e438 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 25 May 2023 19:43:37 +0200 Subject: [PATCH] Ladybird+Tests/LibWeb: Add very basic text-only test harness This allows us to create "text tests" in addition to "layout tests". Text tests work the same as layout tests, but dump the document content as text and exit upon receiving the window "load" event. --- Ladybird/CMakeLists.txt | 6 ++++++ Tests/LibWeb/Text/expected/basic.txt | 2 ++ Tests/LibWeb/Text/input/basic.html | 9 +++++++++ Tests/LibWeb/Text/text_test.sh | 28 ++++++++++++++++++++++++++++ 4 files changed, 45 insertions(+) create mode 100644 Tests/LibWeb/Text/expected/basic.txt create mode 100644 Tests/LibWeb/Text/input/basic.html create mode 100755 Tests/LibWeb/Text/text_test.sh diff --git a/Ladybird/CMakeLists.txt b/Ladybird/CMakeLists.txt index abc669e233..2809669283 100644 --- a/Ladybird/CMakeLists.txt +++ b/Ladybird/CMakeLists.txt @@ -170,4 +170,10 @@ if (BUILD_TESTING) COMMAND ${SERENITY_SOURCE_DIR}/Tests/LibWeb/Layout/layout_test.sh ${CMAKE_CURRENT_BINARY_DIR} ) set_tests_properties(Layout PROPERTIES ENVIRONMENT QT_QPA_PLATFORM=offscreen) + + add_test( + NAME LibWebText + COMMAND ${SERENITY_SOURCE_DIR}/Tests/LibWeb/Text/text_test.sh ${CMAKE_CURRENT_BINARY_DIR} + ) +set_tests_properties(LibWebText PROPERTIES ENVIRONMENT QT_QPA_PLATFORM=offscreen) endif() diff --git a/Tests/LibWeb/Text/expected/basic.txt b/Tests/LibWeb/Text/expected/basic.txt new file mode 100644 index 0000000000..15fe1aea8e --- /dev/null +++ b/Tests/LibWeb/Text/expected/basic.txt @@ -0,0 +1,2 @@ +Well hello +friends! diff --git a/Tests/LibWeb/Text/input/basic.html b/Tests/LibWeb/Text/input/basic.html new file mode 100644 index 0000000000..5b2bc34098 --- /dev/null +++ b/Tests/LibWeb/Text/input/basic.html @@ -0,0 +1,9 @@ +
diff --git a/Tests/LibWeb/Text/text_test.sh b/Tests/LibWeb/Text/text_test.sh new file mode 100755 index 0000000000..5a661bf036 --- /dev/null +++ b/Tests/LibWeb/Text/text_test.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +set -eo pipefail + +SCRIPT_DIR="$(cd -P -- "$(dirname -- "${0}")" && pwd -P)" +LADYBIRD_BUILD_DIR="${1}" + +if [[ -z "${LADYBIRD_BUILD_DIR}" ]] ; then + echo "Provide path to the Ladybird build directory" + exit 1 +fi + +BROWSER_BINARY="./headless-browser" + +find "${SCRIPT_DIR}/input/" -type f -name "*.html" -print0 | while IFS= read -r -d '' input_html_path; do + input_html_file=${input_html_path/${SCRIPT_DIR}"/input/"/} + input_html_file=${input_html_file/".html"/} + + output_text_dump=$(cd "${LADYBIRD_BUILD_DIR}"; timeout 300s "${BROWSER_BINARY}" --dump-text "${input_html_path}") + expected_text_dump_path="${SCRIPT_DIR}/expected/${input_html_file}.txt" + + if cmp <(echo "${output_text_dump}") "${expected_text_dump_path}"; then + echo "${input_html_file} PASSED" + else + echo "${input_html_file} FAILED" + diff -u "${expected_text_dump_path}" <(echo "${output_text_dump}") + fi +done