Because if you click an automation’s Run Action button, it skips the automation’s trigger and simply executes the automation’s action. You said “It does trigger after 7 seconds” so that can’t be the result of using Run Action because the trigger isn’t used.
Check the history to see if the outputs are indeed just On and Off.
And nothing like Unavailable or something else pops up.
If that’s the case your from: 'off' might be getting in the way since the state wouldn’t be off, but something else.
Not sure if you even need the from: 'off' since I assume you want it set up to only run 7 seconds regardless of how it’s turned on.
Personally I’d leave either the to or from state blank.