Skip to content

Commit

Permalink
Fix --web-header flag for flutter drive (flutter#159039)
Browse files Browse the repository at this point in the history
<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This PR makes sure that `--web-header` flag works together with the
`flutter drive` command. Currently the flag is correctly parsed but it
is not properly propagated and ends up being unused when running the web
server for tests.

I have validated the fix by following the steps to reproduce from:
flutter#159037.

#### Before the fix

No custom HTTP header in test run:
![Screenshot 2024-11-16 at 22 21
36](https://github.com/user-attachments/assets/b3d4e34b-fe2b-4d32-8b0a-2d55e5d23f69)

#### After the fix

Correct HTTP headers in test run:
![Screenshot 2024-11-16 at 22 13
43](https://github.com/user-attachments/assets/b74a41de-69c5-4968-82c0-a08d29a3252d)


Fixes flutter#159037

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
  • Loading branch information
dtscalac authored Nov 21, 2024
1 parent d7f5547 commit 728cedc
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
2 changes: 2 additions & 0 deletions packages/flutter_tools/lib/src/drive/web_driver_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ class WebDriverService extends DriverService {
hostname: debuggingOptions.hostname,
webRenderer: debuggingOptions.webRenderer,
webUseWasm: debuggingOptions.webUseWasm,
webHeaders: debuggingOptions.webHeaders,
)
: DebuggingOptions.enabled(
buildInfo,
Expand All @@ -86,6 +87,7 @@ class WebDriverService extends DriverService {
disablePortPublication: debuggingOptions.disablePortPublication,
webRenderer: debuggingOptions.webRenderer,
webUseWasm: debuggingOptions.webUseWasm,
webHeaders: debuggingOptions.webHeaders,
),
stayResident: true,
flutterProject: FlutterProject.current(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,17 @@ void main() {
WebRunnerFactory: () => FakeWebRunnerFactory(),
});

testUsingContext('WebDriverService starts an app with provided web headers', () async {
final WebDriverService service = setUpDriverService();
final FakeDevice device = FakeDevice();
final Map<String, String> webHeaders = <String, String>{'test-header': 'test-value'};
await service.start(BuildInfo.profile, device, DebuggingOptions.enabled(BuildInfo.profile, webHeaders: webHeaders, ipv6: true));
await service.stop();
expect(FakeResidentRunner.instance.debuggingOptions.webHeaders, equals(webHeaders));
}, overrides: <Type, Generator>{
WebRunnerFactory: () => FakeWebRunnerFactory(),
});

testUsingContext('WebDriverService will throw when an invalid launch url is provided', () async {
final WebDriverService service = setUpDriverService();
final FakeDevice device = FakeDevice();
Expand Down Expand Up @@ -310,7 +321,7 @@ class FakeWebRunnerFactory implements WebRunnerFactory {
bool? stayResident,
FlutterProject? flutterProject,
bool? ipv6,
DebuggingOptions? debuggingOptions,
required DebuggingOptions debuggingOptions,
UrlTunneller? urlTunneller,
Logger? logger,
FileSystem? fileSystem,
Expand All @@ -322,20 +333,24 @@ class FakeWebRunnerFactory implements WebRunnerFactory {
expect(stayResident, isTrue);
return FakeResidentRunner(
doResolveToError: doResolveToError,
debuggingOptions: debuggingOptions,
);
}
}

class FakeResidentRunner extends Fake implements ResidentRunner {
FakeResidentRunner({
required this.doResolveToError,
required this.debuggingOptions,
}) {
instance = this;
}

static late FakeResidentRunner instance;

final bool doResolveToError;
@override
final DebuggingOptions debuggingOptions;
final Completer<int> _exitCompleter = Completer<int>();
final List<String> callLog = <String>[];

Expand Down

0 comments on commit 728cedc

Please sign in to comment.