diff --git a/CHANGELOG.md b/CHANGELOG.md
index ca4fe3c..b24b833 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.6.2+2
+
+* Update `transformer_test` dep to `0.2.x`.
+
 ## 0.6.2+1
 
 * Add support for code_transformers `0.4.x`.
diff --git a/lib/src/mirror_loader.dart b/lib/src/mirror_loader.dart
index 4ca2004..11722c1 100644
--- a/lib/src/mirror_loader.dart
+++ b/lib/src/mirror_loader.dart
@@ -48,7 +48,6 @@
   Queue<Function> run() {
     var librariesSeen = new Set<LibraryMirror>();
     var queue = new Queue<Function>();
-    var libraries = currentMirrorSystem().libraries;
 
     _readLibraryDeclarations(_rootLibrary, librariesSeen, queue);
     return queue;
@@ -152,9 +151,6 @@
     return declarationList;
   }
 
-  String _declarationName(DeclarationMirror declaration) =>
-      MirrorSystem.getName(declaration.qualifiedName);
-
   /// Reads annotations on a [DeclarationMirror] and adds them to [_initQueue]
   /// if they are [Initializer]s.
   void _readAnnotations(DeclarationMirror declaration, Queue<Function> queue) {
diff --git a/lib/transformer.dart b/lib/transformer.dart
index c90155c..1c037cd 100644
--- a/lib/transformer.dart
+++ b/lib/transformer.dart
@@ -128,8 +128,6 @@
   // [entryPoint].
   void _replaceEntryWithBootstrap(Transform transform, dom.Document document,
       AssetId entryPoint, AssetId originalDartFile, AssetId newDartFile) {
-    var found = false;
-
     var scripts = _getScripts(document)
         .where((script) {
       var assetId = uriToAssetId(entryPoint, _getScriptAttribute(script),
diff --git a/pubspec.yaml b/pubspec.yaml
index 4c4fda9..fa3c6f8 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: initialize
-version: 0.6.2+1
+version: 0.6.2+2
 author: Polymer.dart Authors <web@dartlang.org>
 description: Generic building blocks for doing static initialization.
 homepage: https://github.com/dart-lang/initialize
@@ -15,7 +15,7 @@
   test_package:
     path: test_package
   test: '>=0.12.0 <0.13.0'
-  transformer_test: '>=0.1.0 <0.2.0'
+  transformer_test: '>=0.2.0 <0.3.0'
 environment:
   sdk: ">=1.9.0-dev.7.1 <2.0.0"
 transformers:
@@ -35,3 +35,5 @@
       - test/init_method_test.html
 - test/pub_serve:
     $include: test/**_test{.*,}.dart
+- $dart2js:
+    $include: test/*_test.initialize{.*,}.dart
diff --git a/test/cycle_a.dart b/test/cycle_a.dart
index 6bc6d84..301260e 100644
--- a/test/cycle_a.dart
+++ b/test/cycle_a.dart
@@ -4,7 +4,8 @@
 library initialize.test.cycle_a;
 
 import 'package:initialize/src/initialize_tracker.dart';
-import 'cycle_b.dart';
+import 'cycle_b.dart' as cycle_b;
 
+/// Uses [cycle_b].
 @initializeTracker
 class CycleA {}
diff --git a/test/init_method_test.dart b/test/init_method_test.dart
index 9d7836d..c976a52 100644
--- a/test/init_method_test.dart
+++ b/test/init_method_test.dart
@@ -15,7 +15,7 @@
 
 main() {
   // Run all initializers.
-  run().then((_) {
+  return run().then((_) {
     test('initMethod annotation invokes functions once', () {
       expect(calledFoo, 1);
       expect(calledBar, 1);
diff --git a/test/initializer_cycle_error_test.dart b/test/initializer_cycle_error_test.dart
index 7c4e531..365e64f 100644
--- a/test/initializer_cycle_error_test.dart
+++ b/test/initializer_cycle_error_test.dart
@@ -7,10 +7,11 @@
 @TestOn('!js')
 library initialize.initializer_cycle_error_test;
 
-import 'cycle_a.dart'; // Causes a cycle.
+import 'cycle_a.dart' as cycle_a; // Causes a cycle.
 import 'package:initialize/initialize.dart';
 import 'package:test/test.dart';
 
+/// Uses [cycle_a].
 main() {
   test('super class cycles are not supported', () {
     expect(run, throwsUnsupportedError);
diff --git a/test/initializer_parts_test.dart b/test/initializer_parts_test.dart
index e7779c6..5839b91 100644
--- a/test/initializer_parts_test.dart
+++ b/test/initializer_parts_test.dart
@@ -17,7 +17,7 @@
 
 main() {
   // Run all initializers.
-  run().then((_) {
+  return run().then((_) {
     test('parts', () {
       var expectedNames = [
         const LibraryIdentifier(#initialize.initializer_parts_test, null,
diff --git a/test/initializer_super_test.dart b/test/initializer_super_test.dart
index e8c95be..512ef51 100644
--- a/test/initializer_super_test.dart
+++ b/test/initializer_super_test.dart
@@ -13,7 +13,7 @@
 
 main() {
   // Run all initializers.
-  run().then((_) {
+  return run().then((_) {
     test('annotations are seen in post-order with superclasses first', () {
       var expectedNames = [A, C, B, E, D,];
       expect(InitializeTracker.seen, expectedNames);
diff --git a/test/initializer_test.dart b/test/initializer_test.dart
index 734b35c..579e9c9 100644
--- a/test/initializer_test.dart
+++ b/test/initializer_test.dart
@@ -11,12 +11,13 @@
 import 'foo/bar.dart';
 import 'package:initialize/src/initialize_tracker.dart';
 import 'package:initialize/initialize.dart';
-import 'package:test_package/foo.dart';
+import 'package:test_package/foo.dart' as test_foo;
 import 'package:test/test.dart';
 
+/// Uses [test_foo].
 main() {
   // Run all initializers.
-  run().then((_) {
+  return run().then((_) {
     test('annotations are seen in post-order with superclasses first', () {
       var expectedNames = [
         const LibraryIdentifier(#initialize.test.foo, null, 'foo.dart'),
