All codes
Every validator finding carries a code. This is the full list, by area of the widget.
Files and size
Section titled “Files and size”file_missing: error. One of the widget’s four files is missing.file_not_allowed: error. There is a file that is not part of the widget.size_exceeded: error. The widget is too big: 300 KB at most across the four files (and 64 KB formanifest.json).
manifest.json
Section titled “manifest.json”manifest_invalid_json: error.manifest.jsonis not valid JSON.manifest_not_object: error.manifest.jsonmust be an object.manifest_missing_strings: error.stringswith the widget texts in Spanish is missing.manifest_invalid_strings: error.stringsmust be an object of texts per language, and each language an object of texts.translation_missing_language: warning. A language instringslacks texts that exist in Spanish.manifest_invalid_events: error.eventsmust be a list of event names.manifest_invalid_event: error. An event ineventsdoes not have theSource.Typeshape.manifest_unknown_event: error. An event ineventsdoes not exist.manifest_event_without_example: warning. A declared event has no example in the simulator, so it cannot be tested.manifest_invalid_actions: error.actionsmust be a list of Streamer.bot action names.manifest_invalid_send_message: error.sendMessagemust betrueorfalse.manifest_invalid_designs: error.designsmust be a list of designs, each with itsvalue.manifest_invalid_number: error. A number inqueueorstatusis not valid: it must be 0 or more.manifest_invalid_size: error.sizeorsceneis not a valid size.
Menu and parameters
Section titled “Menu and parameters”menu_unknown_field_type: error. A menu field has an unknown type.menu_invalid_parameter: error. A parameter name is not valid.menu_duplicate_parameter: error. A parameter appears twice in the menu.menu_reserved_parameter: error. That parameter name is reserved:widget.jsreads it as part of the connection or the design.menu_invalid_default: error. A menu field’s default value does not fit its type.menu_font_size_range: warning. A font size works better as a number than as a slider.menu_platforms_field: error. The platforms field must be theplatformsparameter with theplatformstype.menu_asset_default: error. The default value of a file field is not inassets, or is not of the field’s type.parameter_not_declared: error. The code reads a parameter that is not in the menu.parameter_unused: warning. A menu parameter is not used in the code.
Events, actions and texts
Section titled “Events, actions and texts”event_unknown: error. TheWidget.onevent does not exist.event_not_declared: error. You listen to an event that is not ineventsin the manifest.event_invalid: error. AWidget.onevent does not have theSource.Typeshape.event_unused: warning. An event declared in the manifest is not used in the code.action_not_declared: error. You use a Streamer.bot action that is not inactionsin the manifest.action_not_verifiable: warning. The actiondoActionuses cannot be checked, because the name is computed.send_message_not_declared: error. You callsendMessagewithout declaring it in the manifest.translation_missing: error.Widget.tuses a text that does not exist instrings.es.
index.html
Section titled “index.html”html_parse: warning. The HTML cannot be read.html_document_structure: warning. The HTML has<html>,<head>or<body>.html_forbidden_element: error. There is a tag that is not allowed in a widget.html_event_handler_attribute: error. Anon…=attribute (likeonclick) is not allowed.html_javascript_url: error. Ajavascript:URL is not allowed.html_external_url: error. A URL points to a host that is not allowed.
style.css
Section titled “style.css”css_import: error.@importis not allowed.css_external_url: error. Aurl()points to a host that is not allowed.
script.js
Section titled “script.js”js_syntax: error. There is a syntax error inscript.js.js_widget_redeclared: error. You redeclareWidget, which is the SDK.js_forbidden_eval: error.evalandFunctionare not allowed: they run text as code.js_forbidden_worker: error. Widgets do not use workers:Worker,SharedWorker,WebAssembly,importScriptsornavigator.serviceWorker.js_forbidden_network: error.fetch,XMLHttpRequest,WebSocket,EventSource,RTCPeerConnection,StreamerbotClientandnavigator.sendBeaconare not allowed: the connection goes only throughwidget.js.js_forbidden_html: error.innerHTML,outerHTML,srcdoc,insertAdjacentHTML,createContextualFragment,DOMParseranddocument.writeare not allowed: they turn text into HTML.js_forbidden_window_access: error.parent,top,opener,framesanddocument.cookieare not allowed: the widget does not touch its containing window or its cookies.js_forbidden_navigation: error.open,location.assignandlocation.replaceare not allowed: the widget does not navigate to other pages or open windows.js_storage: warning.localStorage,sessionStorageandindexedDBare not recommended: they fail in the Studio preview and OBS reloads the widget, so stored data does not always survive.js_constructor_escape: error..constructoris used to escape the widget sandbox.js_dynamic_global_access: error. Globals are accessed dynamically, likewindow[name].js_event_handler_attribute: error. Anon…=attribute is assigned by hand, likeelement.setAttribute("onclick", …).js_javascript_url: error. Ajavascript:URL is not allowed.js_external_url: warning. A URL in the code points outside the allowed hosts.
Your own files
Section titled “Your own files”manifest_invalid_assets: error.assetsmust be a list of file names.manifest_too_many_assets: error.assetsallows up to 30 files.manifest_invalid_asset_name: error. A name inassetsis not the name of a file in your library.asset_not_found: warning or error. A file inassetsis not in your library.asset_not_declared: error. The code asks for a file that is not inassets.asset_unused: warning. A file inassetsis used by neitherscript.jsnor the menu.design_asset_missing: error. The design uses a file that is no longer in your library.
Alerts and visual editor
Section titled “Alerts and visual editor”generated_block_changed: error. The generated part of a file is not the one the design produces.generated_block_broken: warning or error. A file’s⟦estudio⟧mark was broken.alerts_invalid: error. The alerts design (alerts) has a problem.alerts_too_large: error. The alerts design takes up more than allowed.alerts_without_design: error.WidgetAlerts.start()is called with no alerts design in the manifest.alerts_not_started: warning. The manifest hasalerts, butscript.jsdoes not callWidgetAlerts.start().runtime_alert_not_shown: error. When an event arrived, the alert it belongs to did not show.runtime_alert_wrong_variant: error. A different variant than the one matching the amount appeared.
Run test
Section titled “Run test”runtime_load_error: error. The widget failed to load.runtime_error: error. The widget threw an error while running.runtime_event_error: error. The widget threw an error while receiving an event.runtime_not_connected: error. The widget never connected to Streamer.bot.runtime_not_authenticated: error. With a password, the widget did not authenticate with Streamer.bot.runtime_no_reconnect: error. After Streamer.bot went down, the widget did not reconnect.runtime_no_subscription: error. The widget does not subscribe to any event.runtime_event_never_subscribed: warning. An event is declared, but the widget never subscribes to it.runtime_undeclared_subscription: error. The widget subscribes to an event that is not ineventsin the manifest.runtime_undeclared_request: error. The widget asked Streamer.bot for something without declaring it (an action or a message).runtime_no_visible_change: warning. Nothing changes on screen when an event arrives.runtime_injection: error. A message with HTML turned into page elements.runtime_lang_not_applied: error. Picking another language did not change the page’s language.runtime_design_not_applied: error. Picking another design did not change the page’s design.runtime_timeout: error. The test run took too long and was stopped (20 seconds).runtime_memory: error. The widget used too much memory and was stopped.runtime_crashed: error. The test run crashed.