I think the "but for" test is fine and so I don't mind that the Court says it is the one we are generally supposed to use ("primary" and "basic"). I tend to agree that things get confusing after that.
But it seems to me that there is a more basic problem with the decision. At least from how the sympathetic SCC describes things, the trial judge seems to have applied the "but for" test to the plaintiff's conduct, not the defendant's (full disclosure: I haven't read the trial decision). The defendant poured water into the gas tank of his zamboni, which caused his injury. His claim was that the design made it easy to mistake the two tanks.
The Court of Appeal found, correctly, that the trial judge had applied a “but for” test in determining causation, stating, “the thrust of the reasoning is that ‘but for’ the Appellant putting or leaving the hose in the gasoline tank, the explosion would not have occurred” (Emphasis added.)
But of course Mr. Hanke wouldn't have been injured if he hadn't put water in the gas tank. That was his whole case. The causation issue --on a strict "but for" basis -- was whether he would have put water in the gas tank if the vehicle design had distinguished them more.
Leaving aside the causation issue, the Court of Appeal seems to be right that the trial judge effectively repealed
Or am I missing something?