hostedat.ditto.moe โ 2026-05-04
Completed in 9.6s ยท View JSON
| Category | Pass | Fail | Total | Rate | |
|---|---|---|---|---|---|
| โ | web-apis | 37 | 0 | 37 | 100% |
| โ | fetch | 11 | 0 | 11 | 100% |
| โ | crypto | 31 | 0 | 31 | 100% |
| โ | kv | 10 | 0 | 10 | 100% |
| โ | d1 | 9 | 0 | 9 | 100% |
| โ | cache | 6 | 0 | 6 | 100% |
| โ | do | 9 | 0 | 9 | 100% |
| โ | storage | 15 | 0 | 15 | 100% |
| โ | htmlrewriter | 10 | 0 | 10 | 100% |
| โ | compression | 9 | 0 | 9 | 100% |
| โ | websocket | 7 | 0 | 7 | 100% |
| โ | streams | 10 | 0 | 10 | 100% |
| โ | tcp | 6 | 0 | 6 | 100% |
| โ | eventsource | 3 | 0 | 3 | 100% |
| โ | textstreams | 3 | 0 | 3 | 100% |
| โ | messagechannel | 4 | 0 | 4 | 100% |
| โ | blob | 11 | 0 | 11 | 100% |
| โ | misc | 14 | 0 | 14 | 100% |
| โ | env | 4 | 0 | 4 | 100% |
| โ | ctx | 4 | 0 | 4 | 100% |
| โ | routing | 6 | 0 | 6 | 100% |
| โ | json-api | 7 | 0 | 7 | 100% |
| โ | auth | 6 | 0 | 6 | 100% |
| โ | workflows | 6 | 0 | 6 | 100% |
| โ | concurrent | 5 | 0 | 5 | 100% |
| โ | errors | 6 | 0 | 6 | 100% |
| โ | binary | 7 | 0 | 7 | 100% |
| โ | edge-cases | 8 | 0 | 8 | 100% |
| Test | Result | |
|---|---|---|
| โ | Request constructor | PASS |
| โ | Request with init | PASS |
| โ | Request headers | PASS |
| โ | Request text() | PASS |
| โ | Request json() | PASS |
| โ | Request arrayBuffer() | PASS |
| โ | Request clone() | PASS |
| โ | Response constructor | PASS |
| โ | Response.json() | PASS |
| โ | Response.redirect() | PASS |
| โ | Response with status | PASS |
| โ | Response text() | PASS |
| โ | Headers constructor | PASS |
| โ | Headers case insensitive | PASS |
| โ | Headers has() | PASS |
| โ | Headers delete() | PASS |
| โ | Headers append() | PASS |
| โ | Headers forEach() | PASS |
| โ | Headers entries() | PASS |
| โ | Headers keys() | PASS |
| โ | Headers values() | PASS |
| โ | URL constructor | PASS |
| โ | URL properties | PASS |
| โ | URL with base | PASS |
| โ | URL toString() | PASS |
| โ | URLSearchParams constructor | PASS |
| โ | URLSearchParams get() | PASS |
| โ | URLSearchParams getAll() | PASS |
| โ | URLSearchParams has() | PASS |
| โ | URLSearchParams set() | PASS |
| โ | URLSearchParams append() | PASS |
| โ | URLSearchParams delete() | PASS |
| โ | URLSearchParams toString() | PASS |
| โ | URLSearchParams forEach() | PASS |
| โ | URLSearchParams entries() | PASS |
| โ | URLSearchParams keys() | PASS |
| โ | URLSearchParams values() | PASS |
| Test | Result | |
|---|---|---|
| โ | Basic GET request | PASS |
| โ | POST with JSON body | PASS |
| โ | POST with headers | PASS |
| โ | Response text() | PASS |
| โ | Response json() | PASS |
| โ | Response arrayBuffer() | PASS |
| โ | Redirect following | PASS |
| โ | Error handling invalid URL | PASS |
| โ | AbortController integration | PASS |
| โ | AbortSignal.timeout() | PASS |
| โ | AbortSignal.abort() | PASS |
| Test | Result | |
|---|---|---|
| โ | crypto.randomUUID() | PASS |
| โ | crypto.getRandomValues() | PASS |
| โ | SHA-256 digest | PASS |
| โ | SHA-1 digest | PASS |
| โ | SHA-384 digest | PASS |
| โ | SHA-512 digest | PASS |
| โ | HMAC generateKey | PASS |
| โ | HMAC sign/verify | PASS |
| โ | AES-GCM generateKey | PASS |
| โ | AES-GCM encrypt/decrypt | PASS |
| โ | AES-CBC encrypt/decrypt | PASS |
| โ | AES-CTR encrypt/decrypt | PASS |
| โ | AES-KW wrapKey/unwrapKey | PASS |
| โ | ECDSA P-256 generateKey | PASS |
| โ | ECDSA P-256 sign/verify | PASS |
| โ | ECDSA P-384 generateKey | PASS |
| โ | ECDH P-256 generateKey | PASS |
| โ | ECDH P-256 deriveBits | PASS |
| โ | X25519 generateKey | PASS |
| โ | X25519 deriveBits | PASS |
| โ | Ed25519 generateKey | PASS |
| โ | Ed25519 sign/verify | PASS |
| โ | RSA-OAEP generateKey | PASS |
| โ | RSA-OAEP encrypt/decrypt | PASS |
| โ | RSASSA-PKCS1-v1_5 generateKey | PASS |
| โ | RSASSA-PKCS1-v1_5 sign/verify | PASS |
| โ | HKDF deriveBits | PASS |
| โ | PBKDF2 deriveBits | PASS |
| โ | importKey/exportKey raw | PASS |
| โ | importKey/exportKey JWK | PASS |
| โ | DigestStream SHA-256 | PASS |
| Test | Result | |
|---|---|---|
| โ | KV put/get string | PASS |
| โ | KV put/get with metadata | PASS |
| โ | KV put with TTL | PASS |
| โ | KV get expired key returns null | PASS |
| โ | KV delete key | PASS |
| โ | KV list with prefix | PASS |
| โ | KV list with limit | PASS |
| โ | KV metadata roundtrip | PASS |
| โ | KV overwrite existing key | PASS |
| โ | KV cleanup test keys | PASS |
| Test | Result | |
|---|---|---|
| โ | D1 exec CREATE TABLE | PASS |
| โ | D1 prepare().bind().run() INSERT | PASS |
| โ | D1 prepare().bind().first() SELECT | PASS |
| โ | D1 prepare().bind().all() SELECT | PASS |
| โ | D1 prepare().raw() array format | PASS |
| โ | D1 batch multiple statements | PASS |
| โ | D1 meta information | PASS |
| โ | D1 error handling invalid SQL | PASS |
| โ | D1 cleanup test table | PASS |
| Test | Result | |
|---|---|---|
| โ | caches.default put/match | PASS |
| โ | caches.default delete | PASS |
| โ | caches.open named cache | PASS |
| โ | Cache-Control max-age TTL | PASS |
| โ | Match returns undefined for missing | PASS |
| โ | Delete returns boolean | PASS |
| Test | Result | |
|---|---|---|
| โ | DO idFromName deterministic | PASS |
| โ | DO idFromString from hex | PASS |
| โ | DO newUniqueId random | PASS |
| โ | DO get stub โ storage.put/get | PASS |
| โ | DO storage.put/get bulk | PASS |
| โ | DO storage.delete single | PASS |
| โ | DO storage.delete multiple | PASS |
| โ | DO storage.deleteAll | PASS |
| โ | DO storage.list with options | PASS |
| Test | Result | |
|---|---|---|
| โ | Storage put string body | PASS |
| โ | Storage get text() | PASS |
| โ | Storage put ArrayBuffer body | PASS |
| โ | Storage get arrayBuffer() | PASS |
| โ | Storage put with httpMetadata | PASS |
| โ | Storage put with customMetadata | PASS |
| โ | Storage get json() | PASS |
| โ | Storage get returns null for missing | PASS |
| โ | Storage head metadata only | PASS |
| โ | Storage list objects | PASS |
| โ | Storage list with limit | PASS |
| โ | Storage createSignedUrl | PASS |
| โ | Storage publicUrl (bucket is public) | PASS |
| โ | Storage delete single key | PASS |
| โ | Storage delete array of keys | PASS |
| Test | Result | |
|---|---|---|
| โ | HTMLRewriter on(selector) element handler | PASS |
| โ | HTMLRewriter getAttribute/setAttribute | PASS |
| โ | HTMLRewriter removeAttribute | PASS |
| โ | HTMLRewriter hasAttribute | PASS |
| โ | HTMLRewriter prepend/append | PASS |
| โ | HTMLRewriter remove element | PASS |
| โ | HTMLRewriter tagName read | PASS |
| โ | HTMLRewriter comments handler | PASS |
| โ | HTMLRewriter text handler | PASS |
| โ | HTMLRewriter chained transformations | PASS |
| Test | Result | |
|---|---|---|
| โ | CompressionStream gzip | PASS |
| โ | DecompressionStream gzip | PASS |
| โ | Gzip roundtrip | PASS |
| โ | CompressionStream deflate | PASS |
| โ | DecompressionStream deflate | PASS |
| โ | Deflate roundtrip | PASS |
| โ | CompressionStream brotli | PASS |
| โ | DecompressionStream brotli | PASS |
| โ | Brotli roundtrip | PASS |
| Test | Result | |
|---|---|---|
| โ | WebSocketPair creation | PASS |
| โ | Object.values() iteration | PASS |
| โ | server.accept() | PASS |
| โ | server.send() โ client receives | PASS |
| โ | client.send() โ server receives | PASS |
| โ | close event | PASS |
| โ | Return 101 with webSocket in Response | PASS |
| Test | Result | |
|---|---|---|
| โ | ReadableStream constructor | PASS |
| โ | ReadableStream getReader/read | PASS |
| โ | ReadableStream cancel | PASS |
| โ | WritableStream constructor | PASS |
| โ | TransformStream readable/writable | PASS |
| โ | Pipe readable.pipeThrough | PASS |
| โ | ReadableStream.from() | PASS |
| โ | FixedLengthStream | PASS |
| โ | BYOB Reader | PASS |
| โ | Symbol.asyncIterator on ReadableStream | PASS |
| Test | Result | |
|---|---|---|
| โ | connect() to external host | PASS |
| โ | Write data | PASS |
| โ | Read response | PASS |
| โ | socket.opened promise | PASS |
| โ | socket.closed promise | PASS |
| โ | TLS connection | PASS |
| Test | Result | |
|---|---|---|
| โ | EventSource constructor exists | PASS |
| โ | EventSource readyState property | PASS |
| โ | EventSource close() method | PASS |
| Test | Result | |
|---|---|---|
| โ | TextEncoderStream | PASS |
| โ | TextDecoderStream | PASS |
| โ | IdentityTransformStream | PASS |
| Test | Result | |
|---|---|---|
| โ | MessageChannel creation | PASS |
| โ | port1/port2 exist | PASS |
| โ | postMessage โ onmessage | PASS |
| โ | structured clone of data | PASS |
| Test | Result | |
|---|---|---|
| โ | Blob constructor | PASS |
| โ | Blob text() | PASS |
| โ | Blob size and type | PASS |
| โ | File constructor | PASS |
| โ | File name and lastModified | PASS |
| โ | FormData constructor | PASS |
| โ | FormData append/get | PASS |
| โ | FormData getAll | PASS |
| โ | FormData has | PASS |
| โ | FormData delete | PASS |
| โ | FormData entries | PASS |
| Test | Result | |
|---|---|---|
| โ | structuredClone object | PASS |
| โ | structuredClone array | PASS |
| โ | structuredClone nested | PASS |
| โ | performance.now() returns number | PASS |
| โ | performance.now() increases | PASS |
| โ | navigator.userAgent | PASS |
| โ | queueMicrotask fires callback | PASS |
| โ | atob/btoa roundtrip | PASS |
| โ | TextEncoder/TextDecoder roundtrip | PASS |
| โ | setTimeout/clearTimeout | PASS |
| โ | setInterval/clearInterval | PASS |
| โ | URLPattern exists | PASS |
| โ | URLPattern test | PASS |
| โ | URLPattern exec named groups | PASS |
| Test | Result | |
|---|---|---|
| โ | Plain env var accessible | PASS |
| โ | Secret env var accessible | PASS |
| โ | ASSETS binding fetch | PASS |
| โ | All bindings present on env object | PASS |
| Test | Result | |
|---|---|---|
| โ | ctx.waitUntil exists | PASS |
| โ | ctx.passThroughOnException exists | PASS |
| โ | ctx.waitUntil no-op behavior | PASS |
| โ | ctx.passThroughOnException no-op behavior | PASS |
| Test | Result | |
|---|---|---|
| โ | Method + path matching (GET vs POST) | PASS |
| โ | Query parameter extraction and handling | PASS |
| โ | CORS preflight response | PASS |
| โ | Path parameter extraction patterns | PASS |
| โ | Trailing slash normalization | PASS |
| โ | Content-Type negotiation (JSON vs HTML) | PASS |
| Test | Result | |
|---|---|---|
| โ | Parse POST JSON body and validate fields | PASS |
| โ | Return 400 for invalid JSON | PASS |
| โ | Return 400 for missing required fields | PASS |
| โ | Return 404 with JSON error body | PASS |
| โ | Return 201 with Location header | PASS |
| โ | Handle empty body gracefully | PASS |
| โ | Large JSON body parsing (10KB+) | PASS |
| Test | Result | |
|---|---|---|
| โ | Parse Bearer token from Authorization header | PASS |
| โ | Reject missing Authorization with 401 | PASS |
| โ | Reject invalid token format with 401 | PASS |
| โ | Cookie parsing | PASS |
| โ | HMAC-based token verification | PASS |
| โ | Constant-time token comparison | PASS |
| Test | Result | |
|---|---|---|
| โ | Read-modify-write cycle on KV | PASS |
| โ | D1 insert then KV cache | PASS |
| โ | Fetch external API then store in KV | PASS |
| โ | Storage put then get then serve with content-type | PASS |
| โ | D1 batch insert + select | PASS |
| โ | Durable Object as counter | PASS |
| Test | Result | |
|---|---|---|
| โ | Promise.all with 3 KV reads | PASS |
| โ | Promise.all with KV + D1 + fetch | PASS |
| โ | Promise.allSettled with one failing | PASS |
| โ | Two writes to same KV key | PASS |
| โ | Parallel storage put operations | PASS |
| Test | Result | |
|---|---|---|
| โ | fetch to non-existent domain catches error | PASS |
| โ | D1 query on non-existent table catches error | PASS |
| โ | KV get handles missing keys gracefully | PASS |
| โ | Malformed URL construction catches TypeError | PASS |
| โ | Stack trace available in caught errors | PASS |
| โ | Response after error can still return HTTP response | PASS |
| Test | Result | |
|---|---|---|
| โ | Serve image bytes from Storage with correct Content-Type | PASS |
| โ | Unicode in KV keys and values | PASS |
| โ | Base64 encode/decode roundtrip | PASS |
| โ | ArrayBuffer to Blob to Response chain | PASS |
| โ | SQL injection-safe via bind params | PASS |
| โ | UTF-8 multibyte handling (emoji, CJK) | PASS |
| โ | Binary KV value via base64 encoding | PASS |
| Test | Result | |
|---|---|---|
| โ | Empty string KV value | PASS |
| โ | Empty response body (204 No Content) | PASS |
| โ | Very large KV value (~500KB) | PASS |
| โ | Many headers in response (20+) | PASS |
| โ | Deeply nested JSON structuredClone | PASS |
| โ | URL with all special components | PASS |
| โ | Response with multiple Set-Cookie headers | PASS |
| โ | Request with duplicate headers | PASS |