Back to Playground

All Scenarios

Every test scenario on one page. Trigger them individually or all at once.

Console Errors

9 scenarios
TypeError: Property of Undefined
Console
Accesses a property on null — the most common JS runtime error.

Console error: TypeError with stack trace

ReferenceError: Undefined Variable
Console
References a variable that was never declared — common typo/import error.

Console error: ReferenceError with variable name

RangeError: Stack Overflow
Console
Infinite recursion causing a stack overflow. Tests stack trace truncation (2000 char limit).

Console error: RangeError, stack truncated at 2000 chars

SyntaxError via eval()
Console
Evaluates malformed JavaScript — a parse-time error.

Console error: SyntaxError with parse details

Unhandled Promise Rejection
Console
A promise rejected without a .catch() — captured via the unhandledrejection event.

Console error: "Unhandled rejection:" prefix with rejection reason

Async Error (setTimeout)
Console
An error thrown inside setTimeout escapes try/catch and is caught by the global error handler.

Console error: caught by window error event listener

console.warn()
Console
A deprecation warning logged via console.warn — captured with level "warn".

Console event: level "warn" with message

console.log with Large Object
Console
Logs a large serialized object — tests the 1000 character message truncation.

Console event: message truncated at 1000 chars

console.error with Multiple Args
Console
Passes multiple arguments to console.error — all get serialized and joined.

Console error: all arguments joined in message

Network Issues

14 scenarios
HTTP 400 Bad Request
Network
Server rejects the request due to invalid input.

Network event: status 400, error body in responseBody

HTTP 401 Unauthorized
Network
Request missing or invalid authentication credentials.

Network event: status 401

HTTP 403 Forbidden
Network
Authenticated but not authorized to access the resource.

Network event: status 403

HTTP 404 Not Found
Network
The requested resource does not exist on the server.

Network event: status 404

HTTP 500 Internal Server Error
Network
An unhandled exception occurred on the server.

Network event: status 500, error message in responseBody

HTTP 503 Service Unavailable
Network
Server is temporarily overloaded or in maintenance mode.

Network event: status 503

Slow Response (3 seconds)
Network
A delayed server response — tests that timing is captured accurately.

Network event: timing ~3000ms, status 200

Large Response (>5000 chars)
Network
Response body exceeds the 5000 character capture limit — tests truncation.

Network event: responseBody truncated with "...[truncated]"

Malformed JSON Response
Network
Server returns Content-Type: application/json with invalid JSON body.

Network event: responseBody is raw invalid JSON string

POST with JSON Body
Network
Sends a POST request with a JSON payload — tests requestBody capture.

Network event: method POST, requestBody contains JSON

XHR GET Request
Network
Uses XMLHttpRequest instead of fetch — tests the XHR interception path.

Network event captured via XHR intercept

Network Failure (Connection Refused)
Network
Fetches from a port with nothing listening — triggers a network error.

Network event: status 0, error field populated

Redirect Chain (3 hops)
Network
Server responds with 302 redirects through 3 hops before returning 200.

Network event for final 200 response after redirects

Custom Request & Response Headers
Network
Sends custom request headers and receives custom response headers.

Network event: requestHeaders and responseHeaders contain custom values

Resource Failures

5 scenarios
Broken Image (404)
ConsoleNetwork
An <img> tag with a src that returns 404 — triggers an error event on the element.

Network 404 + console error for failed image load

Failed Stylesheet (500)
ConsoleNetwork
A <link> stylesheet that returns a server error — the CSS fails to load.

Network 500 for CSS + console error

Missing Script (404)
ConsoleNetwork
A <script> tag loading a non-existent JS file — triggers a load error.

Network 404 + script error event in console

Slow Loading Image
Network
An image that takes 3 seconds to load — tests timing capture for resource requests.

Network event with ~3000ms timing for image request

Oversized API Response
Network
A response with 50KB of data — tests body truncation in network capture.

Network event: response body truncated at 5000 chars

Clicks & Input

9 scenarios
Simple Button Click
Click
A plain button with text content — captures selector, text, and coordinates.

Click event: selector, text, x/y coordinates

Click on Nested Element
Click
Click fires on a deeply nested <strong> inside a button — tests CSS selector depth.

Click event: deep CSS selector path to inner element

Icon-Only Button (No Text)
Click
A button with only an SVG icon — text should be captured as empty string "".

Click event: text is ""

Click on Dynamic Element
Click
Creates a new element at runtime then clicks it — tests capture of dynamically added DOM.

Click event for dynamically created element

Text Input
Input
An <input type="text"> with a name attribute — captures label, value, and inputType.

Input event: inputType "text", label from name, value

Email Input (aria-label)
Input
An email input with an aria-label — tests label priority (aria-label first).

Input event: inputType "email", label from aria-label "Email address"

Textarea Input
Input
A <textarea> with a placeholder — tests label detection from placeholder.

Input event: label from placeholder, value captured

Password Field (Should NOT Capture)
Input
A password input — PlayLog skips these for privacy. No input event should appear.

NO input event captured (privacy filter)

Checkbox Toggle
Input
A checkbox input — captures value "on" when checked.

Input event: inputType "checkbox", value "on"

Navigation

4 scenarios
history.pushState()
Navigation
Pushes a new URL onto the history stack — detected by MutationObserver.

Navigation event: from current URL, to URL with ?test=push

history.replaceState()
Navigation
Replaces the current history entry with a new URL — quieter than pushState.

Navigation event: URL change detected by MutationObserver

Hash Navigation
Navigation
Changes location.hash — fires a hashchange and may be detected as navigation.

Navigation event: to URL with #test-section

Back Button (popstate)
Navigation
Pushes a state then goes back — tests the popstate event listener.

Navigation event via popstate (back button)

Scroll Events

4 scenarios
Scroll Down >80px
Scroll
Scrolls the window down 500px — exceeds the 80px threshold to trigger capture.

Scroll event: direction "down", deltaY > 80, scrollY ~500

Scroll Up
Scroll
Scrolls down first, then back to top — captures upward scroll.

Scroll event: direction "up"

Horizontal Scroll
Scroll
Scrolls a wide container horizontally — tests horizontal direction detection.

Scroll event: direction "right" or "left"

Small Scroll <80px (No Capture)
Scroll
A tiny scroll that stays below the 80px threshold — should NOT produce an event.

NO scroll event (delta below 80px threshold)