si entiendo correctamente en caso de duplicado, ¿desea eliminar el "FALLO" y no el "PASO"? en este caso puede tener la siguiente consulta:
delete t2 from my_table1 as t1, my_table1 as t2 where
t1.TestCase = t2.TestCase and t2.id != t1.id and t2.Result='FAIL';
pero, ¿qué quiere hacer cuando todos los duplicados tienen "FALLO" en el resultado de su columna? Con la consulta anterior, ambos serán eliminados. ¿Quieres quedarte con uno en este caso?