--inject-script: testable injected scripts

This commit is contained in:
Halil Durak
2026-05-11 15:24:28 +03:00
parent 3c7c08f822
commit 5faaf3dc15
2 changed files with 22 additions and 2 deletions

View File

@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<script src="./testing.js"></script>
</head>
<body>
<script id=inject-script-runs>
testing.expectEqual(true, window.__injected);
testing.expectEqual(42, window.__injectValue);
</script>
</body>
</html>

View File

@@ -338,12 +338,20 @@ pub var test_notification: *Notification = undefined;
pub var test_session: *Session = undefined;
const WEB_API_TEST_ROOT = "src/browser/tests/";
const HtmlRunnerOpts = struct {};
const HtmlRunnerOpts = struct {
inject_script: ?[]const u8 = null,
};
pub fn htmlRunner(comptime path: []const u8, opts: HtmlRunnerOpts) !void {
_ = opts;
defer reset();
var inject_scripts: [1][]const u8 = undefined;
if (opts.inject_script) |script| {
inject_scripts[0] = script;
test_session.inject_scripts = inject_scripts[0..1];
}
defer test_session.inject_scripts = &.{};
const root = try std.fs.path.joinZ(arena_allocator, &.{ WEB_API_TEST_ROOT, path });
const stat = std.fs.cwd().statFile(root) catch |err| {
std.debug.print("Failed to stat file: '{s}'", .{root});