I've seen multiple style guides for Cucumber that recommend using "only one When" in each Scenario. But what if the test requires a sequence of time-ordered steps?
Here's a real-world example: many air conditioners implement "delay-on-break" before re-energizing the compressor, that is, it inhibits re-starting the compressor for five minutes AFTER it was last stopped.
How would you express that in Cucumber? Here's my somewhat mangled first take:
Given that the compressor relay is energized
When I turn off the air conditioner
Then the compressor relay should be de-energized
Then I make a note of the time
When I turn on the air conditioner
And I wait for three minutes
Then the compressor relay should be de-energized # delay-on-break is in effect
When I wait for two minutes
Then the compressor relay should be energized # delay-on-break time completes
What's a better Cucumber-esque to write this?
All the guides are recommendations, none of them is a rule of thumb.
Of course, you shouldn't write dozens of lines to explain every technical detail that is happening with the SUT, because it simply does not add any value to the scenario.
The main goal of BDD is not small scenarios with a couple of Given's, one When, and one Then keywords, but improving the communication and collaboration among stakeholders/co-workers, fostering a shared understanding of the desired behavior of SUT.
It should be like a common language between both tech (dev/qa) and non-tech (ba/managers/requestors/etc) team members.
If nobody (except ourselves) reads those scenarios, why should we worry about any style guides? :)
A good explanation of the BDD can be found in the ISTQB ATT Syllabus (section 2.1.2 here).
In the end, a lot of people write E2E tests in Gherkin, and it's really tough to do it with only 1 when/then pair.
Regarding the described scenario, if the team members can read and understand the expected behavior of the SUT - then it's totally fine.
I'd minimize it a bit, by removing those parts that don't really help in understanding the behavior, and changing 1st person to the 3rd person (to depersonalize the scenario):
Given the air conditioner is running
When the user turns off the air conditioner
Then the compressor relay should be de-energized
When the user turns on the air conditioner with a 3-minute delay
Then the compressor relay should be de-energized
When the user waits for 2 minutes
Then the compressor relay should be energized