Finish porting `action` helper

(minus tests relying on the `with` helper)