Will this automation actually fire?
Paste the automation — the YAML straight out of the automation editor, an entry from
automations.yaml, or a script. Everything above the run button happens in your
browser: a real YAML reader, forty checks, and a dry run you drive yourself. Nothing is uploaded
until you run a lane.
Both examples ship with a saved model reply for every lane, so you can see the whole thing without signing in and without spending a credit.
What this does, and what it does not
The reader is a real YAML parser written against Home Assistant's own loader, not a keyword
search — and the reason it exists rather than a library is one specific behaviour. Home
Assistant reads YAML through a PyYAML-derived loader, and PyYAML implements YAML
1.1 scalar resolution. Under those rules the unquoted plain scalar
on is the boolean true. So to: on does not test for the string
that a switch actually reports; it tests for True, never matches, and the automation
silently never runs. Nothing appears in the log, because nothing is wrong with the file. A
JavaScript YAML library implementing YAML 1.2 resolves on to the string
"on" and would report no problem at all. The same rule turns an unquoted
7:30:00 into the integer 27000, because PyYAML's integer resolver
accepts base-60 digits.
The dry run then executes the automation against a world you describe. Actions change that world
as they run, so light.turn_on really does set the light to on for every
later step, the clock advances through each delay, and a choose takes
the branch it would actually take. Templates are evaluated by a small recursive-descent parser
over a Jinja subset — states(), is_state(),
state_attr(), now(), the common filters, comparisons and boolean
operators. There is no eval anywhere in this page and no string is ever executed:
a page that ran a pasted template as JavaScript would be indefensible, and the platform's
scanner blocks it besides.
What it does not do: it does not connect to your instance, it does not know which entities you
really have, and it cannot evaluate a {% %} block, a device or zone trigger, or a
filter it has not implemented. Every one of those is listed as not evaluated rather than assumed
true, because a simulator that quietly assumes the condition passed produces a confident wrong
answer, which is worse than no answer. The model lanes are a review of the text you pasted, not
a test against your hardware — the only real proof is reloading it and watching the trace
in Home Assistant itself.
Nothing to hand? Load the
,
a pre-2024 porch light with an unquoted to: on, or the
. Then replay a saved
model reply for
,
,
or
— each one a real reply, replayed from the bundle, with no run and no charge.