diff --git a/tests/array_spread/__snapshots__/jsfmt.spec.js.snap b/tests/array_spread/__snapshots__/jsfmt.spec.js.snap
index f9fb0f62..12ef0c6e 100644
--- a/tests/array_spread/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/array_spread/__snapshots__/jsfmt.spec.js.snap
@@ -2,7 +2,7 @@
exports[`multiple.js 1`] = `
====================================options=====================================
-parsers: ["flow", "typescript"]
+parsers: ["babel", "flow", "typescript"]
printWidth: 80
| printWidth
=====================================input======================================
diff --git a/tests/array_spread/jsfmt.spec.js b/tests/array_spread/jsfmt.spec.js
index a842e134..eb85eda6 100644
--- a/tests/array_spread/jsfmt.spec.js
+++ b/tests/array_spread/jsfmt.spec.js
@@ -1 +1 @@
-run_spec(__dirname, ["flow", "typescript"]);
+run_spec(__dirname, ["babel", "flow", "typescript"]);
diff --git a/tests/es6modules/__snapshots__/jsfmt.spec.js.snap b/tests/es6modules/__snapshots__/jsfmt.spec.js.snap
index 44ea1bf0..4788c1e6 100644
--- a/tests/es6modules/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/es6modules/__snapshots__/jsfmt.spec.js.snap
@@ -2,21 +2,7 @@
exports[`export_default_arrow_expression.js 1`] = `
====================================options=====================================
-parsers: ["flow"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-export default () => {};
-
-=====================================output=====================================
-export default () => {};
-
-================================================================================
-`;
-
-exports[`export_default_arrow_expression.js 2`] = `
-====================================options=====================================
-parsers: ["babel", "typescript"]
+parsers: ["babel", "flow", "typescript"]
printWidth: 80
| printWidth
=====================================input======================================
@@ -30,21 +16,7 @@ export default () => {};
exports[`export_default_call_expression.js 1`] = `
====================================options=====================================
-parsers: ["flow"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-export default foo()
-
-=====================================output=====================================
-export default foo();
-
-================================================================================
-`;
-
-exports[`export_default_call_expression.js 2`] = `
-====================================options=====================================
-parsers: ["babel", "typescript"]
+parsers: ["babel", "flow", "typescript"]
printWidth: 80
| printWidth
=====================================input======================================
@@ -58,21 +30,7 @@ export default foo();
exports[`export_default_class_declaration.js 1`] = `
====================================options=====================================
-parsers: ["flow"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-export default class Foo {}
-
-=====================================output=====================================
-export default class Foo {}
-
-================================================================================
-`;
-
-exports[`export_default_class_declaration.js 2`] = `
-====================================options=====================================
-parsers: ["babel", "typescript"]
+parsers: ["babel", "flow", "typescript"]
printWidth: 80
| printWidth
=====================================input======================================
@@ -86,21 +44,7 @@ export default class Foo {}
exports[`export_default_class_expression.js 1`] = `
====================================options=====================================
-parsers: ["flow"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-export default (class foobar {})
-
-=====================================output=====================================
-export default (class foobar {});
-
-================================================================================
-`;
-
-exports[`export_default_class_expression.js 2`] = `
-====================================options=====================================
-parsers: ["babel", "typescript"]
+parsers: ["babel", "flow", "typescript"]
printWidth: 80
| printWidth
=====================================input======================================
@@ -114,21 +58,7 @@ export default (class foobar {});
exports[`export_default_function_declaration.js 1`] = `
====================================options=====================================
-parsers: ["flow"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-export default function() {}
-
-=====================================output=====================================
-export default function() {}
-
-================================================================================
-`;
-
-exports[`export_default_function_declaration.js 2`] = `
-====================================options=====================================
-parsers: ["babel", "typescript"]
+parsers: ["babel", "flow", "typescript"]
printWidth: 80
| printWidth
=====================================input======================================
@@ -142,21 +72,7 @@ export default function() {}
exports[`export_default_function_declaration_async.js 1`] = `
====================================options=====================================
-parsers: ["flow"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-export default async function foo() {}
-
-=====================================output=====================================
-export default async function foo() {}
-
-================================================================================
-`;
-
-exports[`export_default_function_declaration_async.js 2`] = `
-====================================options=====================================
-parsers: ["babel", "typescript"]
+parsers: ["babel", "flow", "typescript"]
printWidth: 80
| printWidth
=====================================input======================================
@@ -170,21 +86,7 @@ export default async function foo() {}
exports[`export_default_function_declaration_named.js 1`] = `
====================================options=====================================
-parsers: ["flow"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-export default function f(){}
-
-=====================================output=====================================
-export default function f() {}
-
-================================================================================
-`;
-
-exports[`export_default_function_declaration_named.js 2`] = `
-====================================options=====================================
-parsers: ["babel", "typescript"]
+parsers: ["babel", "flow", "typescript"]
printWidth: 80
| printWidth
=====================================input======================================
@@ -198,21 +100,7 @@ export default function f() {}
exports[`export_default_function_expression.js 1`] = `
====================================options=====================================
-parsers: ["flow"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-export default (function() {});
-
-=====================================output=====================================
-export default (function() {});
-
-================================================================================
-`;
-
-exports[`export_default_function_expression.js 2`] = `
-====================================options=====================================
-parsers: ["babel", "typescript"]
+parsers: ["babel", "flow", "typescript"]
printWidth: 80
| printWidth
=====================================input======================================
@@ -226,21 +114,7 @@ export default (function() {});
exports[`export_default_function_expression_named.js 1`] = `
====================================options=====================================
-parsers: ["flow"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-export default (function f(){})
-
-=====================================output=====================================
-export default (function f() {});
-
-================================================================================
-`;
-
-exports[`export_default_function_expression_named.js 2`] = `
-====================================options=====================================
-parsers: ["babel", "typescript"]
+parsers: ["babel", "flow", "typescript"]
printWidth: 80
| printWidth
=====================================input======================================
@@ -254,21 +128,7 @@ export default (function f() {});
exports[`export_default_new_expression.js 1`] = `
====================================options=====================================
-parsers: ["flow"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-export default new Foo();
-
-=====================================output=====================================
-export default new Foo();
-
-================================================================================
-`;
-
-exports[`export_default_new_expression.js 2`] = `
-====================================options=====================================
-parsers: ["babel", "typescript"]
+parsers: ["babel", "flow", "typescript"]
printWidth: 80
| printWidth
=====================================input======================================
diff --git a/tests/es6modules/jsfmt.spec.js b/tests/es6modules/jsfmt.spec.js
index 9d2f08ad..eb85eda6 100644
--- a/tests/es6modules/jsfmt.spec.js
+++ b/tests/es6modules/jsfmt.spec.js
@@ -1,3 +1 @@
-run_spec(__dirname, ["flow"]);
-// FIXME export_default_function_declaration_async.js flow != babel output
-run_spec(__dirname, ["babel", "typescript"]);
+run_spec(__dirname, ["babel", "flow", "typescript"]);
diff --git a/tests/jsx_escape/__snapshots__/jsfmt.spec.js.snap b/tests/jsx_escape/__snapshots__/jsfmt.spec.js.snap
index b43f585d..881ea7cd 100644
--- a/tests/jsx_escape/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/jsx_escape/__snapshots__/jsfmt.spec.js.snap
@@ -2,21 +2,7 @@
exports[`escape.js 1`] = `
====================================options=====================================
-parsers: ["flow"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-
<
-
-=====================================output=====================================
-<
;
-
-================================================================================
-`;
-
-exports[`escape.js 2`] = `
-====================================options=====================================
-parsers: ["babel"]
+parsers: ["babel", "flow", "typescript"]
printWidth: 80
| printWidth
=====================================input======================================
@@ -30,41 +16,7 @@ printWidth: 80
exports[`nbsp.js 1`] = `
====================================options=====================================
-parsers: ["flow"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-many_nbsp =
-single_nbsp =
-nbsp_with_newline =
-
-
-
-
-many_raw_nbsp =
-many_raw_spaces =
-
-
-amp = foo & bar
-raw_amp = foo & bar
-
-=====================================output=====================================
-many_nbsp =
;
-single_nbsp =
;
-nbsp_with_newline =
;
-
-many_raw_nbsp =
;
-many_raw_spaces =
;
-
-amp = foo & bar;
-raw_amp = foo & bar;
-
-================================================================================
-`;
-
-exports[`nbsp.js 2`] = `
-====================================options=====================================
-parsers: ["babel"]
+parsers: ["babel", "flow", "typescript"]
printWidth: 80
| printWidth
=====================================input======================================
diff --git a/tests/jsx_escape/jsfmt.spec.js b/tests/jsx_escape/jsfmt.spec.js
index 52f49c4f..eb85eda6 100644
--- a/tests/jsx_escape/jsfmt.spec.js
+++ b/tests/jsx_escape/jsfmt.spec.js
@@ -1,3 +1 @@
-run_spec(__dirname, ["flow"]);
-// FIXME nbsp.js flow != babel output, waiting for: https://github.com/babel/babylon/pull/344
-run_spec(__dirname, ["babel"]);
+run_spec(__dirname, ["babel", "flow", "typescript"]);
diff --git a/tests/no-semi/__snapshots__/jsfmt.spec.js.snap b/tests/no-semi/__snapshots__/jsfmt.spec.js.snap
index e0278222..c4d85ea5 100644
--- a/tests/no-semi/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/no-semi/__snapshots__/jsfmt.spec.js.snap
@@ -36,42 +36,7 @@ x;
exports[`comments.js 2`] = `
====================================options=====================================
-parsers: ["flow"]
-printWidth: 80
-semi: false
- | printWidth
-=====================================input======================================
-let error = new Error(response.statusText);
-// comment
-(error: any).response = response
-
-x;
-
-/* comment */ (error: any).response = response
-
-x;
-
-(error: any).response = response; /* comment */
-
-=====================================output=====================================
-let error = new Error(response.statusText)
-// comment
-;(error: any).response = response
-
-x
-
-/* comment */ ;(error: any).response = response
-
-x
-
-;(error: any).response = response /* comment */
-
-================================================================================
-`;
-
-exports[`comments.js 3`] = `
-====================================options=====================================
-parsers: ["babel"]
+parsers: ["babel", "flow"]
printWidth: 80
semi: false
| printWidth
@@ -191,93 +156,7 @@ interface E {
exports[`flow-interfaces.js 2`] = `
====================================options=====================================
-parsers: ["flow"]
-printWidth: 80
-semi: false
- | printWidth
-=====================================input======================================
-declare class A {
- one: boolean;
- two: { three: string }
- | number;
-}
-
-// NOTE: Flow and Babel both fail to apply ASI here
-// declare class B {
-// one: boolean
-// two: { three: string }
-// | number
-// }
-
-declare interface C {
- one: boolean;
- two: { three: string }
- | number;
-}
-
-// NOTE: Flow and Babel both fail to apply ASI here
-// declare interface D {
-// one: boolean
-// two: { three: string }
-// | number
-// }
-
-interface E {
- one: boolean;
- two: { three: string }
- | number;
-}
-
-// NOTE: Flow and Babel both fail to apply ASI here
-// interface F {
-// one: boolean
-// two: { three: string }
-// | number
-// }
-
-=====================================output=====================================
-declare class A {
- one: boolean;
- two: { three: string } | number;
-}
-
-// NOTE: Flow and Babel both fail to apply ASI here
-// declare class B {
-// one: boolean
-// two: { three: string }
-// | number
-// }
-
-declare interface C {
- one: boolean;
- two: { three: string } | number;
-}
-
-// NOTE: Flow and Babel both fail to apply ASI here
-// declare interface D {
-// one: boolean
-// two: { three: string }
-// | number
-// }
-
-interface E {
- one: boolean;
- two: { three: string } | number;
-}
-
-// NOTE: Flow and Babel both fail to apply ASI here
-// interface F {
-// one: boolean
-// two: { three: string }
-// | number
-// }
-
-================================================================================
-`;
-
-exports[`flow-interfaces.js 3`] = `
-====================================options=====================================
-parsers: ["babel"]
+parsers: ["babel", "flow"]
printWidth: 80
semi: false
| printWidth
@@ -391,36 +270,7 @@ var c = a.e;
exports[`issue2006.js 2`] = `
====================================options=====================================
-parsers: ["flow"]
-printWidth: 80
-semi: false
- | printWidth
-=====================================input======================================
-switch (n) {
- case 11:
- var c = a.e;
- (i.a += Ga(c.e)), F(i, c.i, 0);
-}
-
-var c = a.e;
-(i.a += Ga(c.e)), F(i, c.i, 0);
-
-=====================================output=====================================
-switch (n) {
- case 11:
- var c = a.e
- ;(i.a += Ga(c.e)), F(i, c.i, 0)
-}
-
-var c = a.e
-;(i.a += Ga(c.e)), F(i, c.i, 0)
-
-================================================================================
-`;
-
-exports[`issue2006.js 3`] = `
-====================================options=====================================
-parsers: ["babel"]
+parsers: ["babel", "flow"]
printWidth: 80
semi: false
| printWidth
@@ -799,358 +649,7 @@ aReallyLongLine012345678901234567890123456789012345678901234567890123456789 *
exports[`no-semi.js 2`] = `
====================================options=====================================
-parsers: ["flow"]
-printWidth: 80
-semi: false
- | printWidth
-=====================================input======================================
-
-// with preexisting semi
-
-x; [1, 2, 3].forEach(fn)
-x; [a, b, ...c] = [1, 2]
-x; /r/i.test('r')
-x; +1
-x; - 1
-x; ('h' + 'i').repeat(10)
-x; (1, 2)
-x; (() => {})()
-x; ({ a: 1 }).entries()
-x; ({ a: 1 }).entries()
-x;
-x; \`string\`
-x; (x, y) => x
-
-// doesn't have to be preceded by a semicolon
-
-class X {} [1, 2, 3].forEach(fn)
-
-// TODO: upgrade parser
-// class A {
-// async; // The semicolon is *not* necessary
-// x(){}
-// }
-// class B {
-// static; // The semicolon *is* necessary
-// x(){}
-// }
-
-class C1 {
- get; // The semicolon *is* necessary
- x(){}
-}
-class C2 {
- get = () => {}; // The semicolon is *not* necessary
- x(){}
-}
-class C3 {
- set; // The semicolon *is* necessary
- x(){}
-}
-class C4 {
- set = () => {}; // The semicolon is *not* necessary
- x(){}
-}
-
-
-// don't semicolon if it doesn't start statement
-
-if (true) (() => {})()
-
-class A {
- a = 0;
- [b](){}
-
- c = 0;
- *d(){}
-
- e = 0;
- [f] = 0
-
- // none of the semicolons above this comment can be omitted.
- // none of the semicolons below this comment are necessary.
-
- q() {};
- [h](){}
-
- p() {};
- *i(){}
-
- a = 1;
- get ['y']() {}
-
- a = 1;
- static ['y']() {}
-
- a = 1;
- set ['z'](z) {}
-
- a = 1;
- async ['a']() {}
-
- a = 1;
- async *g() {}
-
- a = 0;
- b = 1;
-}
-
-// being first/last shouldn't break things
-class G1 {
- x = 1
-}
-class G2 {
- x() {}
-}
-class G3 {
- *x() {}
-}
-class G4 {
- [x] = 1
-}
-
-// check indentation
-
-if (true) {
- x; (() => {})()
-}
-
-// flow
-
-(x: void);
-(y: void)
-
-// check statement clauses
-
-do break; while (false)
-if (true) do break; while (false)
-
-if (true) 1; else 2
-for (;;) ;
-for (x of y) ;
-
-debugger
-
-// check that it doesn't break non-ASI
-
-1
-- 1
-
-1
-+ 1
-
-1
-/ 1
-
-arr
-[0]
-
-fn
-(x)
-
-!1
-
-1
-< 1
-
-tag
-\`string\`
-
-x; x => x
-
-x; (a || b).c++
-
-x; ++(a || b).c
-
-while (false)
- (function(){}())
-
-aReallyLongLine012345678901234567890123456789012345678901234567890123456789 *
- (b + c)
-
-=====================================output=====================================
-// with preexisting semi
-
-x
-;[1, 2, 3].forEach(fn)
-x
-;[a, b, ...c] = [1, 2]
-x
-;/r/i.test("r")
-x
-;+1
-x
-;-1
-x
-;("h" + "i").repeat(10)
-x
-1, 2
-x
-;(() => {})()
-x
-;({ a: 1 }.entries())
-x
-;({ a: 1 }.entries())
-x
-;
-x
-;\`string\`
-x
-;(x, y) => x
-
-// doesn't have to be preceded by a semicolon
-
-class X {}
-;[1, 2, 3].forEach(fn)
-
-// TODO: upgrade parser
-// class A {
-// async; // The semicolon is *not* necessary
-// x(){}
-// }
-// class B {
-// static; // The semicolon *is* necessary
-// x(){}
-// }
-
-class C1 {
- get; // The semicolon *is* necessary
- x() {}
-}
-class C2 {
- get = () => {} // The semicolon is *not* necessary
- x() {}
-}
-class C3 {
- set; // The semicolon *is* necessary
- x() {}
-}
-class C4 {
- set = () => {} // The semicolon is *not* necessary
- x() {}
-}
-
-// don't semicolon if it doesn't start statement
-
-if (true) (() => {})()
-
-class A {
- a = 0;
- [b]() {}
-
- c = 0;
- *d() {}
-
- e = 0;
- [f] = 0
-
- // none of the semicolons above this comment can be omitted.
- // none of the semicolons below this comment are necessary.
-
- q() {}
- [h]() {}
-
- p() {}
- *i() {}
-
- a = 1
- get ["y"]() {}
-
- a = 1
- static ["y"]() {}
-
- a = 1
- set ["z"](z) {}
-
- a = 1
- async ["a"]() {}
-
- a = 1
- async *g() {}
-
- a = 0
- b = 1
-}
-
-// being first/last shouldn't break things
-class G1 {
- x = 1
-}
-class G2 {
- x() {}
-}
-class G3 {
- *x() {}
-}
-class G4 {
- [x] = 1
-}
-
-// check indentation
-
-if (true) {
- x
- ;(() => {})()
-}
-
-// flow
-
-;(x: void)
-;(y: void)
-
-// check statement clauses
-
-do break
-while (false)
-if (true)
- do break
- while (false)
-
-if (true) 1
-else 2
-for (;;);
-for (x of y);
-
-debugger
-
-// check that it doesn't break non-ASI
-
-1 - 1
-
-1 + 1
-
-1 / 1
-
-arr[0]
-
-fn(x)
-
-!1
-
-1 < 1
-
-tag\`string\`
-
-x
-x => x
-
-x
-;(a || b).c++
-
-x
-++(a || b).c
-
-while (false) (function() {})()
-
-aReallyLongLine012345678901234567890123456789012345678901234567890123456789 *
- (b + c)
-
-================================================================================
-`;
-
-exports[`no-semi.js 3`] = `
-====================================options=====================================
-parsers: ["babel"]
+parsers: ["babel", "flow"]
printWidth: 80
semi: false
| printWidth
diff --git a/tests/no-semi/jsfmt.spec.js b/tests/no-semi/jsfmt.spec.js
index 4adcd58f..83f146c8 100644
--- a/tests/no-semi/jsfmt.spec.js
+++ b/tests/no-semi/jsfmt.spec.js
@@ -1,3 +1,2 @@
run_spec(__dirname, ["flow"]);
-run_spec(__dirname, ["flow"], { semi: false });
-run_spec(__dirname, ["babel"], { semi: false });
+run_spec(__dirname, ["babel", "flow"], { semi: false });