/* * Copyright (c) 2024, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include namespace Ladybird { class HeadlessWebView; enum class TestMode { Layout, Text, Ref, }; enum class TestResult { Pass, Fail, Skipped, Timeout, Crashed, }; static constexpr StringView test_result_to_string(TestResult result) { switch (result) { case TestResult::Pass: return "Pass"sv; case TestResult::Fail: return "Fail"sv; case TestResult::Skipped: return "Skipped"sv; case TestResult::Timeout: return "Timeout"sv; case TestResult::Crashed: return "Crashed"sv; } VERIFY_NOT_REACHED(); } struct Test { TestMode mode; ByteString input_path {}; ByteString expectation_path {}; UnixDateTime start_time {}; UnixDateTime end_time {}; String text {}; bool did_finish_test { false }; bool did_finish_loading { false }; RefPtr actual_screenshot {}; RefPtr expectation_screenshot {}; }; struct TestCompletion { Test& test; TestResult result; }; using TestPromise = Core::Promise; ErrorOr run_tests(Core::AnonymousBuffer const& theme, Web::DevicePixelSize window_size); void run_dump_test(HeadlessWebView&, Test&, URL::URL const&, int timeout_in_milliseconds); }