+1 to everything @searls just said.

I feel cucumber sets the stage for the dev to start with the abstraction. Which is different than rspec/test-unit/minitest/insert-your-awesome-assertion-framework-here. Instead of DRYing up redundant steps, I'd ask a few questions: 

1) Is this test too focused? Does it make sense to combine a few integration tests that have the same setup? Should some of these edge cases be broken into multiple functional tests or unit tests instead?

2) Can I cheat? Instead of pulling away 3-4 lines for "A user logs in" can I just set the cookie and move on (for the tests that don't care about that flow).

I like laser-focused unit/functional tests. Not so much for the integrations.