Skip to content

Conversation

@bkonyi
Copy link
Contributor

@bkonyi bkonyi commented Aug 12, 2025

Currently only outputs a single event with information about where the widget preview environment is served from:

[{"event":"widget_preview.started","params":{"url":"http://localhost:61383"}}]

Fixes #173545

Currently only outputs a single event with information about where the
widget preview environment is served from:

`[{"event":"widget_preview.started","params":{"url":"http://localhost:61383"}}]`

Fixes #173545
@github-actions github-actions bot added the tool Affects the "flutter" command-line tool. See also t: labels. label Aug 12, 2025
@bkonyi bkonyi requested review from DanTup and jyameo August 12, 2025 21:30
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds a --machine mode to the widget-preview command, allowing it to output structured JSON events. The changes involve adding a new WidgetPreviewMachineAwareLogger to handle the conditional logging, updating the command to accept the --machine flag, and adding an integration test for the new mode.

My review focuses on the implementation of WidgetPreviewMachineAwareLogger. I've found a critical syntax error that would prevent compilation and suggested a refactoring to simplify the class and improve maintainability by better leveraging its superclass.

Copy link
Contributor

@DanTup DanTup left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some nits that you're free to ignore, but lgtm - thanks!

bool useWebServer = false,
}) async {
expect(expectedEvents, isNotEmpty);
var i = 0;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: given the distance to where this variable is used is more than a few lines, maybe make the name more descriptive?


group('flutter widget-preview start --machine', () {
testWithoutContext('launches in browser', () async {
await runWidgetPreviewMachineMode(expectedEvents: launchEvents);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It might be worth checking the event definitely has a valid URL in the args.

Copy link
Contributor

@jyameo jyameo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm!

@bkonyi bkonyi added the autosubmit Merge PR when tree becomes green via auto submit App label Aug 13, 2025
@auto-submit auto-submit bot added this pull request to the merge queue Aug 13, 2025
Merged via the queue into master with commit f8e8a8d Aug 13, 2025
148 checks passed
@auto-submit auto-submit bot deleted the widget_preview_machine branch August 13, 2025 20:48
@flutter-dashboard flutter-dashboard bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Aug 13, 2025
@LongCatIsLooong
Copy link
Contributor

The tree is red on this PR and it doesn't look like a flake:

flutter/packages/flutter_tools/lib/src/commands/widget_preview.dart:261:34: Error: The getter 'FlutterGlobalOptions' isn't defined for the type 'WidgetPreviewStartCommand'.
 - 'WidgetPreviewStartCommand' is from 'package:flutter_tools/src/commands/widget_preview.dart' ('flutter/packages/flutter_tools/lib/src/commands/widget_preview.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'FlutterGlobalOptions'.
    final bool machine = boolArg(FlutterGlobalOptions.kMachineFlag);
                                 ^^^^^^^^^^^^^^^^^^^^

@DanTup
Copy link
Contributor

DanTup commented Aug 13, 2025

I think because the other change (1eb2f68) removed the import for ../runner/flutter_command_runner.dart. (Edit: I see a fix in the queue - #173731)

I thought the merge queue would've prevented this kind of issue by running the bots on each change based on the parent they'll be merged with? Does it not work that way?

@bkonyi
Copy link
Contributor Author

bkonyi commented Aug 13, 2025 via email

@DanTup
Copy link
Contributor

DanTup commented Aug 14, 2025

I thought this was what the merge queue was intended to solve, but I found

https://github.com/flutter/flutter/blob/master/docs/infra/merge_queue.md

At this time, no additional tests will run in the merge queue. A PR that passes presubmit checks will be allowed to land on the target branch immediately.

I guess that explains why it wasn't caught, though it makes me wonder why the queue is so slow if it's not running tests 🤔

@bkonyi
Copy link
Contributor Author

bkonyi commented Aug 14, 2025

I thought this was what the merge queue was intended to solve, but I found

https://github.com/flutter/flutter/blob/master/docs/infra/merge_queue.md

At this time, no additional tests will run in the merge queue. A PR that passes presubmit checks will be allowed to land on the target branch immediately.

I guess that explains why it wasn't caught, though it makes me wonder why the queue is so slow if it's not running tests 🤔

We definitely run some checks... I think? @jtmcdole, is the merge queue documentation up to date?

engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 14, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 14, 2025
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Aug 14, 2025
flutter/flutter@34c2a3b...f4334d2

2025-08-14 [email protected] Roll Dart SDK from 9b4691f35139 to 214a7f829913 (2 revisions) (flutter/flutter#173769)
2025-08-14 [email protected] Roll Skia from b3e86773dae1 to dca5f05fee87 (4 revisions) (flutter/flutter#173763)
2025-08-14 [email protected] Roll Dart SDK from 73153bdc1459 to 9b4691f35139 (3 revisions) (flutter/flutter#173755)
2025-08-14 [email protected] Roll Skia from 5852eddfd404 to b3e86773dae1 (1 revision) (flutter/flutter#173750)
2025-08-14 [email protected] Allow empty initial time when using text input mode in showTimePicker dialog (flutter/flutter#172847)
2025-08-13 [email protected] Roll Skia from 525e2bf80559 to 5852eddfd404 (2 revisions) (flutter/flutter#173740)
2025-08-13 [email protected] [web] Popping a nameless route should preserve the correct route name (flutter/flutter#173652)
2025-08-13 [email protected] Make sure that a ChoiceChip doesn't crash in 0x0 environment (flutter/flutter#173322)
2025-08-13 [email protected] [ Tool ] Fix missing import for widget_preview.dart (flutter/flutter#173731)
2025-08-13 [email protected] Roll Skia from f7fdda3cd0e6 to 525e2bf80559 (7 revisions) (flutter/flutter#173727)
2025-08-13 [email protected] Do not include `:unittests` unless `enable_unittests` (flutter/flutter#173729)
2025-08-13 [email protected] Roll Packages from 08a9b2c to 6cb9113 (1 revision) (flutter/flutter#173726)
2025-08-13 [email protected] fix: selected date decorator renders outside PageView in `DatePickerDialog` dialog (flutter/flutter#171718)
2025-08-13 [email protected] [ Widget Preview ] Add `--machine` mode (flutter/flutter#173654)
2025-08-13 [email protected] Make sure that a Chip doesn't crash in 0x0 environment (flutter/flutter#173245)
2025-08-13 [email protected] feat: Cupertino sheet implement upward stretch on full sheet (flutter/flutter#168547)
2025-08-13 [email protected] Fix visual overlap of transparent routes barrier when using FadeForwardsPageTransitionsBuilder (flutter/flutter#167032)
2025-08-13 [email protected] Fix `ChipThemeData` lerp for `BorderSide` (flutter/flutter#173160)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC [email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
SydneyBao pushed a commit to SydneyBao/flutter that referenced this pull request Aug 14, 2025
Currently only outputs a single event with information about where the
widget preview environment is served from:


`[{"event":"widget_preview.started","params":{"url":"http://localhost:61383"}}]`

Fixes flutter#173545
ksokolovskyi pushed a commit to ksokolovskyi/flutter that referenced this pull request Aug 19, 2025
Currently only outputs a single event with information about where the
widget preview environment is served from:


`[{"event":"widget_preview.started","params":{"url":"http://localhost:61383"}}]`

Fixes flutter#173545
WillBLogical pushed a commit to WillBLogical/packages that referenced this pull request Aug 20, 2025
…r#9807)

flutter/flutter@34c2a3b...f4334d2

2025-08-14 [email protected] Roll Dart SDK from 9b4691f35139 to 214a7f829913 (2 revisions) (flutter/flutter#173769)
2025-08-14 [email protected] Roll Skia from b3e86773dae1 to dca5f05fee87 (4 revisions) (flutter/flutter#173763)
2025-08-14 [email protected] Roll Dart SDK from 73153bdc1459 to 9b4691f35139 (3 revisions) (flutter/flutter#173755)
2025-08-14 [email protected] Roll Skia from 5852eddfd404 to b3e86773dae1 (1 revision) (flutter/flutter#173750)
2025-08-14 [email protected] Allow empty initial time when using text input mode in showTimePicker dialog (flutter/flutter#172847)
2025-08-13 [email protected] Roll Skia from 525e2bf80559 to 5852eddfd404 (2 revisions) (flutter/flutter#173740)
2025-08-13 [email protected] [web] Popping a nameless route should preserve the correct route name (flutter/flutter#173652)
2025-08-13 [email protected] Make sure that a ChoiceChip doesn't crash in 0x0 environment (flutter/flutter#173322)
2025-08-13 [email protected] [ Tool ] Fix missing import for widget_preview.dart (flutter/flutter#173731)
2025-08-13 [email protected] Roll Skia from f7fdda3cd0e6 to 525e2bf80559 (7 revisions) (flutter/flutter#173727)
2025-08-13 [email protected] Do not include `:unittests` unless `enable_unittests` (flutter/flutter#173729)
2025-08-13 [email protected] Roll Packages from 08a9b2c to 6cb9113 (1 revision) (flutter/flutter#173726)
2025-08-13 [email protected] fix: selected date decorator renders outside PageView in `DatePickerDialog` dialog (flutter/flutter#171718)
2025-08-13 [email protected] [ Widget Preview ] Add `--machine` mode (flutter/flutter#173654)
2025-08-13 [email protected] Make sure that a Chip doesn't crash in 0x0 environment (flutter/flutter#173245)
2025-08-13 [email protected] feat: Cupertino sheet implement upward stretch on full sheet (flutter/flutter#168547)
2025-08-13 [email protected] Fix visual overlap of transparent routes barrier when using FadeForwardsPageTransitionsBuilder (flutter/flutter#167032)
2025-08-13 [email protected] Fix `ChipThemeData` lerp for `BorderSide` (flutter/flutter#173160)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC [email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
mboetger pushed a commit to mboetger/flutter that referenced this pull request Sep 18, 2025
Currently only outputs a single event with information about where the
widget preview environment is served from:


`[{"event":"widget_preview.started","params":{"url":"http://localhost:61383"}}]`

Fixes flutter#173545
korca0220 pushed a commit to korca0220/flutter that referenced this pull request Sep 22, 2025
Currently only outputs a single event with information about where the
widget preview environment is served from:


`[{"event":"widget_preview.started","params":{"url":"http://localhost:61383"}}]`

Fixes flutter#173545
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 12, 2025
lucaantonelli pushed a commit to lucaantonelli/flutter that referenced this pull request Nov 21, 2025
Currently only outputs a single event with information about where the
widget preview environment is served from:


`[{"event":"widget_preview.started","params":{"url":"http://localhost:61383"}}]`

Fixes flutter#173545
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

tool Affects the "flutter" command-line tool. See also t: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support some kind of --machine or --json mode for flutter widget-preview start

4 participants