JO Swinson has insisted the Liberal Democrats are ready for a snap election after reducing Boris Johnson’s working majority to just one following a high-profile by-election victory.

The Liberal Democrats won the Brecon and Radnorshire poll by a margin of 1,425, swinging the vote nearly 12 per cent from the Tories.

It is the quickest by-election defeat for any Prime Minister in the post-war period, and was seen as Mr Johnson’s first electoral test.

Ms Swinson, the leader of the Lib Dems and MP for East Dunbartonshire, told The Herald the party is on “an election footing”.

She said: “We’re ready for that. We are up for it. Bring it on, I would say.

“I don’t know when it will come – whether it’s going to be weeks, whether it’s going to be months. It doesn’t feel like this parliament is going to go to 2022.

“But whenever it comes, I’m absolutely ready to take the fight to Boris Johnson and Jeremy Corbyn.”

She said the victory represented “one more vote in parliament to try to stop Brexit”.

The mid-Wales by-election was sparked after Tory MP Chris Davies admitted submitting false invoices for expenses and was ousted in a recall petition.

He was selected by the Tories to fight to reclaim the seat, but secured 39% of the vote to the Lib Dems’ 43%.

The Brexit Party received 10% of the share, while fourth-placed Labour narrowly avoided losing its deposit by securing just over 5%.

The defeat will add to Mr Johnson’s challenges in steering Brexit through Westminster and may increase the chances of a snap general election.

An electoral pact saw Plaid Cymru and the Green Party stand aside to boost the chances of a pro-EU MP being elected, and Ms Swinson predicted further alliances in future.

In a celebratory appearance on Friday morning, she said: “This by-election victory shows that the people of Brecon and Radnorshire not only have a first class MP in Jane Dodds but they have shown the people of Britain that we can do better than the choice on offer between Boris Johnson and Jeremy Corbyn.”

She added: “I will fight to keep our country in the European Union, and we now have in Parliament one more MP who will fight to make that happen.”

However, the combined pro-Brexit vote – taking into account both the Tories and the Brexit party – amounted to 49%.

Mr Davies won the seat from the Lib Dems in 2015 and secured a majority of 8,038 in the 2017 general election.

But this was overhauled with a swing to the Lib Dems of 11.96%. The loss leaves Mr Johnson with the support of 319 MPs, including the DUP which props up his majority, while opposition parties now have 318. The picture is made more complicated by Brexit rebels on both sides.

Mr Davies’ recall came after he pleaded guilty in March to submitting two false expenses invoices for nine photographs costing £700 to decorate his new office.

He was fined £1,500, ordered to pay £2,500 towards legal costs and told to carry out 50 hours of community service.

In his losing speech, Mr Davies thanked his team and family.