diff --git a/src/TulsiEndToEndTests/ButtonsEndToEndTest.swift b/src/TulsiEndToEndTests/ButtonsEndToEndTest.swift
index e99fc0f..59be9e2 100644
--- a/src/TulsiEndToEndTests/ButtonsEndToEndTest.swift
+++ b/src/TulsiEndToEndTests/ButtonsEndToEndTest.swift
@@ -37,19 +37,6 @@
     testXcodeProject(xcodeProjectURL, scheme: "ButtonsTests")
   }
 
-  func testButtonsWithCanaryBazel() throws {
-    guard let canaryBazelURL = fakeBazelWorkspace.canaryBazelURL else {
-      XCTFail("Expected Bazel canary URL.")
-      return
-    }
-    XCTAssert(fileManager.fileExists(atPath: canaryBazelURL.path), "Bazel canary is missing.")
-
-    bazelURL = canaryBazelURL
-    let xcodeProjectURL = generateXcodeProject(tulsiProject: buttonsProjectPath,
-                                               config: "Buttons")
-    testXcodeProject(xcodeProjectURL, scheme: "ButtonsLogicTests")
-  }
-
   func testInvalidConfig() throws {
     let xcodeProjectURL = generateXcodeProject(tulsiProject: buttonsProjectPath,
                                                config: "InvalidConfig")
diff --git a/src/TulsiEndToEndTests/CanaryButtonsEndToEndTest.swift b/src/TulsiEndToEndTests/CanaryButtonsEndToEndTest.swift
new file mode 100644
index 0000000..99fe43d
--- /dev/null
+++ b/src/TulsiEndToEndTests/CanaryButtonsEndToEndTest.swift
@@ -0,0 +1,48 @@
+
+// Copyright 2016 The Tulsi Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import XCTest
+@testable import BazelIntegrationTestCase
+@testable import TulsiEndToEndTestBase
+
+
+// End to end test that generates the Buttons project and runs its unit tests. This variation of the
+// test uses the canary Bazel binary.
+class ButtonsEndToEndTest: TulsiEndToEndTest {
+  fileprivate let buttonsProjectPath = "third_party/tulsi/src/TulsiEndToEndTests/Resources/Buttons.tulsiproj"
+
+  override func setUp() {
+    super.setUp()
+
+    if (!copyDataToFakeWorkspace("third_party/tulsi/src/TulsiEndToEndTests/Resources")) {
+      XCTFail("Failed to copy Buttons files to fake execroot.")
+    }
+  }
+
+  func testButtonsWithCanaryBazel() throws {
+    guard let canaryBazelURL = fakeBazelWorkspace.canaryBazelURL else {
+      XCTFail("Expected Bazel canary URL.")
+      return
+    }
+    XCTAssert(fileManager.fileExists(atPath: canaryBazelURL.path), "Bazel canary is missing.")
+
+    bazelURL = canaryBazelURL
+    let xcodeProjectURL = generateXcodeProject(tulsiProject: buttonsProjectPath,
+                                               config: "Buttons")
+    XCTAssert(fileManager.fileExists(atPath: xcodeProjectURL.path), "Xcode project was not generated.")
+    testXcodeProject(xcodeProjectURL, scheme: "ButtonsLogicTests")
+  }
+}
+
