diff --git a/test/declaration_test.dart b/test/declaration_test.dart
index 709aa7b..61f04f5 100644
--- a/test/declaration_test.dart
+++ b/test/declaration_test.dart
@@ -889,7 +889,7 @@
 
   expect(stylesheet != null, true);
   expect(errors.isEmpty, true, reason: errors.toString());
-  expect(compactOuptut(stylesheet), generated);
+  expect(compactOutput(stylesheet), generated);
 
   // Check namespace directive compactly emitted.
   final input2 = '@namespace a url(http://www.example.org/a);';
@@ -899,7 +899,7 @@
 
   expect(stylesheet2 != null, true);
   expect(errors.isEmpty, true, reason: errors.toString());
-  expect(compactOuptut(stylesheet2), generated2);
+  expect(compactOutput(stylesheet2), generated2);
 }
 
 void testNotSelectors() {
diff --git a/test/escape_codes_test.dart b/test/escape_codes_test.dart
index af66469..9ed7496 100644
--- a/test/escape_codes_test.dart
+++ b/test/escape_codes_test.dart
@@ -15,13 +15,13 @@
       test('with trailing space', () {
         final selectorAst = selector(r'.\35 00px', errors: errors);
         expect(errors, isEmpty);
-        expect(compactOuptut(selectorAst), r'.\35 00px');
+        expect(compactOutput(selectorAst), r'.\35 00px');
       });
 
       test('in an attribute selector value', () {
         final selectorAst = selector(r'[elevation=\31]', errors: errors);
         expect(errors, isEmpty);
-        expect(compactOuptut(selectorAst), r'[elevation=\31]');
+        expect(compactOutput(selectorAst), r'[elevation=\31]');
       });
     });
   });
diff --git a/test/selector_test.dart b/test/selector_test.dart
index df52be6..ed01a35 100644
--- a/test/selector_test.dart
+++ b/test/selector_test.dart
@@ -14,50 +14,50 @@
   var errors = <Message>[];
   var selectorAst = selector('#div .foo', errors: errors);
   expect(errors.isEmpty, true, reason: errors.toString());
-  expect('#div .foo', compactOuptut(selectorAst));
+  expect('#div .foo', compactOutput(selectorAst));
 
   // Valid selectors for class names.
   selectorAst = selector('.foo', errors: errors..clear());
   expect(errors.isEmpty, true, reason: errors.toString());
-  expect('.foo', compactOuptut(selectorAst));
+  expect('.foo', compactOutput(selectorAst));
 
   selectorAst = selector('.foobar .xyzzy', errors: errors..clear());
   expect(errors.isEmpty, true, reason: errors.toString());
-  expect('.foobar .xyzzy', compactOuptut(selectorAst));
+  expect('.foobar .xyzzy', compactOutput(selectorAst));
 
   selectorAst = selector('.foobar .a-story .xyzzy', errors: errors..clear());
   expect(errors.isEmpty, true, reason: errors.toString());
-  expect('.foobar .a-story .xyzzy', compactOuptut(selectorAst));
+  expect('.foobar .a-story .xyzzy', compactOutput(selectorAst));
 
   selectorAst =
       selector('.foobar .xyzzy .a-story .b-story', errors: errors..clear());
   expect(errors.isEmpty, true, reason: errors.toString());
-  expect('.foobar .xyzzy .a-story .b-story', compactOuptut(selectorAst));
+  expect('.foobar .xyzzy .a-story .b-story', compactOutput(selectorAst));
 
   // Valid selectors for element IDs.
   selectorAst = selector('#id1', errors: errors..clear());
   expect(errors.isEmpty, true, reason: errors.toString());
-  expect('#id1', compactOuptut(selectorAst));
+  expect('#id1', compactOutput(selectorAst));
 
   selectorAst = selector('#id-number-3', errors: errors..clear());
   expect(errors.isEmpty, true, reason: errors.toString());
-  expect('#id-number-3', compactOuptut(selectorAst));
+  expect('#id-number-3', compactOutput(selectorAst));
 
   selectorAst = selector('#_privateId', errors: errors..clear());
   expect(errors.isEmpty, true, reason: errors.toString());
-  expect('#_privateId', compactOuptut(selectorAst));
+  expect('#_privateId', compactOutput(selectorAst));
 
   selectorAst = selector(':host', errors: errors..clear());
   expect(errors.isEmpty, true, reason: errors.toString());
-  expect(compactOuptut(selectorAst), ':host');
+  expect(compactOutput(selectorAst), ':host');
 
   selectorAst = selector(':host(.foo)', errors: errors..clear());
   expect(errors.isEmpty, true, reason: errors.toString());
-  expect(compactOuptut(selectorAst), ':host(.foo)');
+  expect(compactOutput(selectorAst), ':host(.foo)');
 
   selectorAst = selector(':host-context(.foo)', errors: errors..clear());
   expect(errors.isEmpty, true, reason: errors.toString());
-  expect(compactOuptut(selectorAst), ':host-context(.foo)');
+  expect(compactOutput(selectorAst), ':host-context(.foo)');
 }
 
 // TODO(terry): Move this failure case to a failure_test.dart when the analyzer
diff --git a/test/testing.dart b/test/testing.dart
index 471697e..5c8cc55 100644
--- a/test/testing.dart
+++ b/test/testing.dart
@@ -67,7 +67,7 @@
 /// Helper function to emit compact (non-pretty printed) CSS for suite test
 /// comparsions.  Spaces, new lines, etc. are reduced for easier comparsions of
 /// expected suite test results.
-String compactOuptut(StyleSheet ss) {
+String compactOutput(StyleSheet ss) {
   walkTree(ss);
   return (_emitCss..visitTree(ss, pretty: false)).toString();
 }
