diff --git a/packages/fluttium_cli/lib/src/commands/test_command/test_command.dart b/packages/fluttium_cli/lib/src/commands/test_command/test_command.dart index 6c4d03bf..da94959e 100644 --- a/packages/fluttium_cli/lib/src/commands/test_command/test_command.dart +++ b/packages/fluttium_cli/lib/src/commands/test_command/test_command.dart @@ -96,6 +96,11 @@ Multiple defines can be passed by repeating "--dart-define" multiple times.''', 'compact': 'A single line that updates dynamically.', 'pretty': 'A nicely formatted output that works nicely with --watch.', }, + ) + ..addOption( + 'web-port', + help: + '''The port number for serving the web application. Must be between 1024 and 65535. Defaults to null if not provided.''', ); } @@ -128,6 +133,8 @@ Multiple defines can be passed by repeating "--dart-define" multiple times.''', List get _dartDefines => results['dart-define'] as List; + String? get _webPort => results['web-port'] as String?; + /// The file of the flow to run. File get _userFlowFile { if (results.rest.isEmpty || results.rest.first.isEmpty) { @@ -294,6 +301,7 @@ Either adjust the constraint in the Fluttium configuration or update the CLI to flavor: _flavor, dartDefines: [...fluttium.driver.dartDefines, ..._dartDefines], deviceId: results['device-id'] as String?, + webPort: _webPort, ), ); diff --git a/packages/fluttium_driver/lib/src/fluttium_driver.dart b/packages/fluttium_driver/lib/src/fluttium_driver.dart index 0bf46393..7b4a88b2 100644 --- a/packages/fluttium_driver/lib/src/fluttium_driver.dart +++ b/packages/fluttium_driver/lib/src/fluttium_driver.dart @@ -371,6 +371,10 @@ class FluttiumDriver { if (configuration.deviceId != null) ...['-d', configuration.deviceId!], if (configuration.flavor != null) ...['--flavor', configuration.flavor!], ...configuration.dartDefines.expand((e) => ['--dart-define', e]), + if (configuration.webPort != null) ...[ + '--web-port', + configuration.webPort! + ], ]; _logger.detail('Running command: ${commandArgs.join(' ')}'); diff --git a/packages/fluttium_interfaces/lib/src/fluttium/driver_configuration.dart b/packages/fluttium_interfaces/lib/src/fluttium/driver_configuration.dart index 9ed84306..3df90659 100644 --- a/packages/fluttium_interfaces/lib/src/fluttium/driver_configuration.dart +++ b/packages/fluttium_interfaces/lib/src/fluttium/driver_configuration.dart @@ -10,6 +10,7 @@ class DriverConfiguration extends Equatable { this.flavor, this.dartDefines = const [], this.deviceId, + this.webPort, }); /// {@macro driver_configuration} @@ -26,6 +27,7 @@ class DriverConfiguration extends Equatable { []) .cast(), deviceId: json['deviceId']?.toString(), + webPort: json['webPort'] as String?, ); } @@ -45,8 +47,11 @@ class DriverConfiguration extends Equatable { /// The device id to use for the driver. final String? deviceId; + /// The port to use for the web application. + final String? webPort; + @override - List get props => [target, flavor, dartDefines, deviceId]; + List get props => [target, flavor, dartDefines, deviceId, webPort]; /// Copy the configuration to a new instance with optional overrides. DriverConfiguration copyWith({ @@ -55,12 +60,14 @@ class DriverConfiguration extends Equatable { @Deprecated('Use `target` instead') String? mainEntry, String? flavor, List? dartDefines, + String? webPort, }) { return DriverConfiguration( deviceId: deviceId ?? this.deviceId, target: target ?? mainEntry ?? this.target, flavor: flavor ?? this.flavor, dartDefines: dartDefines ?? this.dartDefines, + webPort: webPort ?? this.webPort, ); } }