diff --git a/src/browser/tests/net/fetch.html b/src/browser/tests/net/fetch.html
index 2d8c6266..a545a452 100644
--- a/src/browser/tests/net/fetch.html
+++ b/src/browser/tests/net/fetch.html
@@ -180,6 +180,13 @@
testing.expectEqual(true, response.body !== null);
testing.expectEqual(true, response.body instanceof ReadableStream);
+
+ const buf = await response.arrayBuffer()
+ restore();
+
+ const uint8array = new Uint8Array(buf);
+ const decoder = new TextDecoder('utf-8');
+ testing.expectEqual('1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890', decoder.decode(uint8array));
});
diff --git a/src/browser/webapi/net/Response.zig b/src/browser/webapi/net/Response.zig
index d8c67e53..a293d04d 100644
--- a/src/browser/webapi/net/Response.zig
+++ b/src/browser/webapi/net/Response.zig
@@ -145,6 +145,10 @@ pub fn getJson(self: *Response, page: *Page) !js.Promise {
return local.resolvePromise(try value.persist());
}
+pub fn arrayBuffer(self: *const Response, page: *Page) !js.Promise {
+ return page.js.local.?.resolvePromise(js.ArrayBuffer{ .values = self._body orelse "" });
+}
+
pub const JsApi = struct {
pub const bridge = js.Bridge(Response);
@@ -167,6 +171,7 @@ pub const JsApi = struct {
pub const body = bridge.accessor(Response.getBody, null, .{});
pub const url = bridge.accessor(Response.getURL, null, .{});
pub const redirected = bridge.accessor(Response.isRedirected, null, .{});
+ pub const arrayBuffer = bridge.function(Response.arrayBuffer, .{});
};
const testing = @import("../../../testing.zig");