From a1fa1a3d261f5cee1e8dd2e7a67132f465054d83 Mon Sep 17 00:00:00 2001 From: Mouad Debbar Date: Wed, 22 Jan 2020 14:58:46 -0800 Subject: [PATCH] [web] Wire the "--start-paused" flag correctly for web (#49310) --- .../lib/src/test/flutter_web_platform.dart | 9 +++++-- .../flutter_tools/lib/src/test/runner.dart | 3 +++ .../commands.shard/hermetic/test_test.dart | 25 +++++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/packages/flutter_tools/lib/src/test/flutter_web_platform.dart b/packages/flutter_tools/lib/src/test/flutter_web_platform.dart index c638f67f0a..661ebbf48e 100644 --- a/packages/flutter_tools/lib/src/test/flutter_web_platform.dart +++ b/packages/flutter_tools/lib/src/test/flutter_web_platform.dart @@ -83,12 +83,13 @@ class FlutterWebPlatform extends PlatformPlugin { FlutterProject flutterProject, String shellPath, bool updateGoldens = false, + bool pauseAfterLoad = false, }) async { final shelf_io.IOServer server = shelf_io.IOServer(await HttpMultiServer.loopback(0)); return FlutterWebPlatform._( server, - Configuration.current, + Configuration.current.change(pauseAfterLoad: pauseAfterLoad), root, flutterProject: flutterProject, shellPath: shellPath, @@ -339,6 +340,7 @@ class FlutterWebPlatform extends PlatformPlugin { browser, hostUrl, completer.future, + headless: !_config.pauseAfterLoad, ); // Store null values for browsers that error out so we know not to load them @@ -587,6 +589,8 @@ class BrowserManager { /// [future]. If [debug] is true, starts the browser in debug mode, with its /// debugger interfaces on and detected. /// + /// The browser will start in headless mode if [headless] is true. + /// /// The [settings] indicate how to invoke this browser's executable. /// /// Returns the browser manager, or throws an [ApplicationException] if a @@ -596,9 +600,10 @@ class BrowserManager { Uri url, Future future, { bool debug = false, + bool headless = true, }) async { final Chrome chrome = - await chromeLauncher.launch(url.toString(), headless: true); + await chromeLauncher.launch(url.toString(), headless: headless); final Completer completer = Completer(); diff --git a/packages/flutter_tools/lib/src/test/runner.dart b/packages/flutter_tools/lib/src/test/runner.dart index 490cf50428..1577d1c207 100644 --- a/packages/flutter_tools/lib/src/test/runner.dart +++ b/packages/flutter_tools/lib/src/test/runner.dart @@ -56,6 +56,8 @@ Future runTests( final List testArgs = [ if (!globals.terminal.supportsColor) '--no-color', + if (startPaused) + '--pause-after-load', if (machine) ...['-r', 'json'] else @@ -96,6 +98,7 @@ Future runTests( updateGoldens: updateGoldens, shellPath: shellPath, flutterProject: flutterProject, + pauseAfterLoad: startPaused, ); }, ); diff --git a/packages/flutter_tools/test/commands.shard/hermetic/test_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/test_test.dart index 30ccfff55e..b8145cf73f 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/test_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/test_test.dart @@ -48,6 +48,31 @@ void main() { ProcessManager: () => FakeProcessManager.any(), Cache: () => FakeCache(), }); + + testUsingContext('Pipes start-paused to package:test', + () async { + final FakePackageTest fakePackageTest = FakePackageTest(); + + final TestCommand testCommand = TestCommand(testWrapper: fakePackageTest); + final CommandRunner commandRunner = + createTestCommandRunner(testCommand); + + await commandRunner.run(const [ + 'test', + '--no-pub', + '--start-paused', + '--', + 'test/fake_test.dart', + ]); + expect( + fakePackageTest.lastArgs, + contains('--pause-after-load'), + ); + }, overrides: { + FileSystem: () => fs, + ProcessManager: () => FakeProcessManager.any(), + Cache: () => FakeCache(), + }); } class FakePackageTest implements TestWrapper {