Its hard to say for sure, but there is a good chance that this is due to how the pubsub emulator works; the emulator is not fully featured and its possible that Beam is not able to get correct watermark information [1] from the emulator. Could you try this with a normal pubsub topic?
[1] https://cloud.google.com/dataflow/docs/concepts/streaming-pipelines#watermarks