Browser Diagnostics JavaScript ECMAScript runtime

JavaScript Test

Run a quick ECMAScript and runtime feature smoke test in-page.

Interactive tool

Run the test

Runs in your browser

Runs a quick in-page smoke test of common language and runtime features. Syntax probes use safe Function constructors where needed.

Results

    Press Run to start.

    Permission status

    Checked in your browser. DeviceHub does not store permission grants.

    • Special permission Not required

    Live results

    Metrics update as you run the test. Nothing is uploaded.

    Loading

    Waiting for interactive tool output…

    Device information

    Labels and capability details reported by your browser.

    No device details yet.

    Description

    About JavaScript Test

    Introduction

    The DeviceHub JavaScript Test is a free online ECMAScript and runtime smoke suite that runs in-page probes showing whether baseline language features and common runtime behaviors execute in your current engine, without downloading Test262, JetStream, or vendor benchmark installers. Developers validating locked-down kiosks, teachers confirming lab images still parse modern syntax, support distinguishing JavaScript disabled globally from one site broken, and QA checking embedded WebViews use a quick green/red checklist. DeviceHub is honest: this is pragmatic smoke coverage, not exhaustive standards conformance, not a synthetic benchmark score, and not a replacement for your application unit tests. Pair with Browser Features for Web API matrices, Browser Information for engine identity beside failures, and User Agent when legacy sniffers still argue about engines instead of capabilities. ATM vendors and signage players with ancient embedded engines discover optional chaining failures here before deploying template updates nationwide. Dynamic import probes when listed catch bundler targets misaligned with runtime engines on POS WebViews. Retail POS WebViews stuck on old Chromium forks may fail optional chaining while still loading jQuery sites, syntax smoke isolates engine age from site-specific bugs. Hermes or JavaScriptCore embedded shells may pass syntax yet fail upcoming Web API tools, continue to Browser Features after syntax passes. Optional chaining failures on POS WebViews signal engine age before blaming site-specific JavaScript bundles. Syntax smoke passing while Browser Features shows missing APIs means language OK but Web APIs stripped, continue matrix next. RegExp lookbehind rows when included catch older WebKit builds shipping without ES2018 RegExp features. Import maps and bare specifier resolution are not validated here, module graph failures need separate reproduction on staging.

    What this tool does

    Selected checks evaluate modern syntax availability, core built-ins, and runtime behaviors the page lists, reporting pass or fail per row with plain-language labels. The tool cannot enable JavaScript in browser settings for you, if scripting were fully blocked globally, this interactive page would not load, which itself signals total blocks via settings UI rather than engine age. Failures usually indicate old engines, restricted WebViews, or broken environments from proxies injecting bad scripts. Rows may include typeof Symbol, async function parsing, and selected well-known symbol behaviors where listed on the page. Passing syntax rows does not guarantee webpack output runs, build pipeline issues remain separate. Hermes or JavaScriptCore embedded shells may pass syntax yet fail upcoming Web API tools, continue to Browser Features after syntax passes. Passing syntax rows does not validate webpack output, build transpilation may hide engine gaps until runtime hits untranspiled deps. Kiosk global JS disabled blocks page load entirely, if this page loads, total JS off is unlikely though partial blocks exist. WeakRef and FinalizationRegistry probes signal advanced GC APIs, failures on embedded signage engines drive firmware upgrades. Error.cause property support when checked helps Node-parity debugging in isomorphic SSR bundles running in browser.

    When to use it

    Use JavaScript Test after unusual script errors on multiple unrelated sites, when provisioning classroom browsers, when embedded WebViews misbehave before deep API debugging, and when baseline JS health is unknown. Prefer Browser Features when missing Web APIs, not language syntax, is the symptom. Run on kiosk hardware after OS image updates before pushing new menu board bundles. BigInt rows when included expose older embedded shells still shipping pre-BigInt engines. Hermes or JavaScriptCore embedded shells may pass syntax yet fail upcoming Web API tools, continue to Browser Features after syntax passes. Signage players stuck on old embedded shells fail optional chaining rows while still rendering legacy jQuery homepages, syntax smoke clarifies engine age. Hermes React Native differs from mobile Safari, failures on embedded shells need platform labels in tickets. Minifiers are not exercised here, failures are native engine parsing/eval, not terser configuration debates. Top-level await in modules is not identical to async function syntax, separate rows prevent mis-routed engine tickets.

    How it works

    Probes execute entirely inside the tab JavaScript engine as ordinary script evaluation guarded by try/catch where needed. Results reflect the active profile including extensions that monkey-patch builtins, rare but possible. Secure HTTPS hosts DeviceHub. Typed permissions stay none; smoke tests do not invoke camera or USB APIs unless explicitly listed as runtime checks. WASM or GPU claims appear only on rows the smoke list includes, absence of a row means not tested, not unsupported. Hermes or JavaScriptCore embedded shells may pass syntax yet fail upcoming Web API tools, continue to Browser Features after syntax passes. BigInt rows when included catch older shells still shipping pre-BigInt engines on signage players. Teachers provisioning lab images run smoke before semester starts when county images lag current Chrome stable. Proxy and Reflect rows catch hardened kiosk builds stripping meta-programming despite otherwise modern syntax passing.

    Step-by-step instructions

    1. Open JavaScript Test over HTTPS with scripts allowed for the DeviceHub origin in enterprise allowlists if applicable. Run smoke before and after browser update on beta channels to isolate regressions quickly.
    2. Wait for listed probes to finish and read the summary of passed versus failed checks. If only one row fails, cite that row name in ticket title for faster routing to engine owners.
    3. If modern features fail, open Browser Information in the same profile to capture engine version context for the ticket. Compare embedded WebView smoke to system browser smoke on the same device when apps wrap content.
    4. Retest in a mainstream desktop browser to separate WebView limits from OS-wide policy blocks. Disable user-script extensions that monkey-patch builtins before declaring engine missing features.
    5. Continue to Browser Features when failures involve missing Web APIs rather than ECMAScript syntax rows. If page fails to load entirely, investigate global JS block before interpreting partial row failures.
    6. Record which specific rows failed, support teams fix faster with “optional chaining fails” than with vague “JS broken.” Continue to Browser Features when syntax passes but Web APIs fail in production stacks.

    Common problems

    Content blockers rarely disable all JS on first-party tools but can break individual checks. Extremely old IE-mode narratives are out of scope for modern DeviceHub pages. Users blaming the site when global JS is off need browser settings guidance outside the page. Corporate proxies that inject broken shim scripts can fail probes without meaning the engine lacks features. Passing every row here does not guarantee your bundler output runs, build tooling may transpile differently than these native probes. Hermes or JavaScriptCore embedded shells may pass syntax yet fail upcoming Web API tools, continue to Browser Features after syntax passes. Minifiers do not run here, failures are engine-native parsing/eval behavior, not webpack configuration. Dynamic import rows verify module graphs separately from script tags, failures pinpoint ESM support gaps. ATM embedded engines failing async function rows need firmware upgrades, not DeviceHub server fixes. Structured clone error objects in postMessage paths differ from syntax smoke, production bugs may need separate repro.

    Privacy explanation

    Smoke outcomes compute locally. DeviceHub does not upload probe results to render the UI. No mic or camera permission is requested. Closing the tab stops further script execution from this page. Failed probe names in tickets reveal engine age facts, not personal data. Hermes or JavaScriptCore embedded shells may pass syntax yet fail upcoming Web API tools, continue to Browser Features after syntax passes. Corporate proxy injected shims breaking probes indicate network middleboxes, not missing ECMAScript features. ” Corporate proxy injected shims breaking probes indicate network middleboxes, not missing ECMAScript features. ” Record which specific syntax rows fail, optional chaining versus BigInt narrows engine upgrade paths faster than “JS broken.” Nullish coalescing assignment and logical assignment operators when probed catch mid-tier embedded engines lagging desktop Chrome.

    Runtime principles

    Built for the browser

    What happens when you run this test — without downloads or accounts.

    1. 01

      Runs in your browser

      JavaScript Test uses standard web APIs — no install, extension, or desktop app required.

    2. 02

      Reads what the browser allows

      Results come from events and capability signals the web platform exposes for this session.

    3. 03

      Private by default

      Input and diagnostic values stay in your browser session for display — nothing is sold as media.

    Compatibility

    Supported browsers

    Expected support for modern engines. Individual APIs may still vary by device.

    • Chrome

      supported

      Latest stable

    • Firefox

      supported

      Latest stable

    • Safari

      supported

      Latest stable

    • Edge

      supported

      Latest stable

    Devices

    Supported devices

    Hardware and form factors this browser test is designed to exercise.

    • Desktop browsers

      Chrome, Firefox, Safari, and Edge on Windows, macOS, Linux.

    • Laptops

      Reports identity and feature signals for the active session.

    • Phones & tablets

      Mobile browsers with web platform capability probes.

    Privacy

    Your data stays with you

    JavaScript Test is built privacy-first. Diagnostics run in your browser session whenever web APIs allow.

    Read our privacy policy

    Troubleshooting

    Common problems

    Quick fixes before you dig into FAQs.

    Some modern syntax checks fail
    You may be on an older engine, a restricted WebView, or a mode that disables parts of JS. Update the browser or retest in desktop Chrome/Firefox/Edge.
    The page itself would not load if JS were fully off
    This smoke test assumes JavaScript is enabled enough to run the page. Use browser settings UI to confirm JS is not blocked globally.
    Corporate proxy injects broken scripts
    Try a clean profile or another network. Injected scripts can break feature tests without meaning the engine lacks syntax.

    FAQ

    Frequently asked questions

    Structured answers for users and FAQ rich results.

    Browse FAQs
    Is this a full ECMAScript conformance suite?
    No. It is a quick in-page language and runtime smoke test, not Test262 or a performance benchmark.
    The page loaded, does that mean JS is fully on?
    Interactive probes need scripting enabled for this origin. Global “disable JavaScript” settings are confirmed in browser UI if the page cannot run.
    Modern checks fail on my kiosk, why?
    Old engines, locked WebViews, or broken injected scripts can fail probes. Retest in desktop Chrome, Firefox, or Edge.
    Do I need permissions?
    No. Runtime smoke tests do not request microphone or camera access.
    How does this differ from Browser Features?
    JavaScript Test focuses on language/runtime smoke. Browser Features probes Web API presence on window and navigator.
    Are probe results uploaded?
    No. Outcomes stay local to your session display.

    Newsletter

    Updates coming soon

    A lightweight email digest for new tools and release notes is planned. No signup form is live yet — check Release Notes for product updates.

    Release notes

    Need another diagnostic after JavaScript Test?

    Explore related DeviceHub tools that pair well with this test.