On the topic of technical tests, the company I work for has a good approach. They'll set the technical test for you to do at home (the same one for everyone), then you submit it and they review it. Based on that, you have a phone interview in which you have to talk through what you did and why you did it, being asked questions about certain bits and your choices. They also talk through some other bits to try and gauge your knowledge. If you pass that stage, you then go on to a face to face interview.
Might not catch everyone who tries to cheat, but will help.
That sounds like a sane test. If someone does blatantly cheat, it will be immediately obvious during the interview afterwards.
At my company, we ask people to submit some choice prior work if possible. Then we look at that, and try to have a conversation about the tech. The bonus is that it respects the candidates time, and it is easier to get them talking when it's their own projects. The downside is that very few candidates have recent prior work publicly available.
Might not catch everyone who tries to cheat, but will help.