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
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.