diff --git a/Tests/JavaScriptKitTests/StressTests.swift b/Tests/JavaScriptKitTests/StressTests.swift new file mode 100644 index 00000000..73b302fd --- /dev/null +++ b/Tests/JavaScriptKitTests/StressTests.swift @@ -0,0 +1,261 @@ +import JavaScriptKit +import XCTest + +final class StressTests: XCTestCase { + + func testJSObjectMemoryExhaustion() async throws { + guard let gc = JSObject.global.gc.function else { + throw XCTSkip("Missing --expose-gc flag") + } + + // Push JSObject allocation to stress memory management + // This tests reference counting and cleanup under heavy load + let maxIterations = 25_000 + var objects: [JSObject] = [] + var lastSuccessfulCount = 0 + + do { + for i in 0..