Labour's Kim Leadbeater has narrowly won the Batley and Spen by-election in a victory that has dented Prime Minister Boris Johnson's electoral surge in northern England.

Batley backs its 'local girl': Kim Leadbeater wins after voters avoid real politicians