Commit Graph

30 Commits

Author SHA1 Message Date
Jackson Gardner
3c30e3cb20
Flutter Web Bootstrapping Improvements (#144434)
This makes several changes to flutter web app bootstrapping.
* The build now produces a `flutter_bootstrap.js` file.
  * By default, this file does the basic streamlined startup of a flutter app with the service worker settings and no user configuration.
  * The user can also put a `flutter_bootstrap.js` file in the `web` subdirectory in the project directory which can have whatever custom bootstrapping logic they'd like to write instead. This file is also templated, and can use any of the tokens  that can be used with the `index.html` (with the exception of `{{flutter_bootstrap_js}}`, see below).
* Introduced a few new templating tokens for `index.html`:
  * `{{flutter_js}}` => inlines the entirety of `flutter.js`
  * `{{flutter_service_worker_version}}` => replaced directly by the service worker version. This can be used instead of the script that sets the `serviceWorkerVersion` local variable that we used to have by default.
  * `{{flutter_bootstrap_js}}` => inlines the entirety of `flutter_bootstrap.js` (this token obviously doesn't apply to `flutter_bootstrap.js` itself).
* Changed `IndexHtml` to be called `WebTemplate` instead, since it is used for more than just the index.html now.
* We now emit warnings at build time for certain deprecated flows:
  * Warn on the old service worker version pattern (i.e.`(const|var) serviceWorkerVersion = null`) and recommends using `{{flutter_service_worker_version}}` token instead
  * Warn on use of `FlutterLoader.loadEntrypoint` and recommend using `FlutterLoader.load` instead
  * Warn on manual loading of `flutter_service_worker.js`.
* The default `index.html` on `flutter create` now uses an async script tag with `flutter_bootstrap.js`.
2024-03-12 22:41:26 +00:00
Jackson Gardner
5a9fa1e7bf
Dual compile reland (#143262)
This is an attempt at a reland of https://github.com/flutter/flutter/pull/141396

The main changes here that are different than the original PR is fixes to wire up the `flutter test` command properly with the web renderer.
2024-02-13 20:02:10 +00:00
Jackson Gardner
2efeeb47bc
Revert Dual Web Compile changes (#143175)
Dual Web Compile has had some issues where `flutter test` is not respecting the `--web-renderer` flag for some reason. I haven't gotten entirely to the bottom of the issue, but for now we need to rever these changes while I investigate. This reverts the following PRs:

https://github.com/flutter/flutter/pull/143128
https://github.com/flutter/flutter/pull/141396

While doing this revert, I had a few merge conflicts with https://github.com/flutter/flutter/pull/142760, and I tried to resolve the merge conflicts within the spirit of that PR's change, but @chingjun I might need your input on whether the imports I have modified are okay with regards to the change you were making.
2024-02-08 21:45:09 +00:00
Jackson Gardner
ba626dc83a
Wasm/JS Dual Compile with the flutter tool (#141396)
This implements dual compile via the newly available flutter.js bootstrapping APIs for intelligent build fallback.
* Users can now use the `FlutterLoader.load` API from flutter.js
* Flutter tool injects build info into the `index.html` of the user so that the bootstrapper knows which build variants are available to bootstrap
* The semantics of the `--wasm` flag for `flutter build web` have changed:
  - Instead of producing a separate `build/web_wasm` directory, the output goes to the `build/web` directory like a normal web build
  - Produces a dual build that contains two build variants: dart2wasm+skwasm and dart2js+CanvasKit. The dart2wasm+skwasm will only work on Chrome in a cross-origin isolated context, all other environments will fall back to dart2js+CanvasKit.
  - `--wasm` and `--web-renderer` are now mutually exclusive. Since there are multiple build variants with `--wasm`, the web renderer cannot be expressed via a single command-line flag. For now, we are hard coding what build variants are produced with the `--wasm` flag, but I plan on making this more customizable in the future.
* Build targets now can optionally provide a "build key" which can uniquely identify any specific parameterization of that build target. This way, the build target can invalidate itself by changing its build key. This works a bit better than just stuffing everything into the environment defines because (a) it doesn't invalidate the entire build, just the targets which are affected and (b) settings for multiple build variants don't translate well to the flat map of environment defines.
2024-02-02 01:52:28 +00:00
David Iglesias
703e12f524
[ci] Adds test for web hot restart with const App. (#141824)
This PR adds a test that reproduces the problem described in the linked issue: hot restart on the web seems to not update if the app being run is `const`.

The new test is expected to fail, until the `const` issue with hot restart in the web is resolved.

Expected failure mode is a 15s timeout in the following test:

```
02:31 +3 ~1 -1: Hot reload (index.html: Default) (with `const MyApp()`)): newly added code executes during hot restart [E]
  TimeoutException after 0:00:15.000000: Future not completed
  dart:async  _startMicrotaskLoop
  ...
```

(And then a bunch of output that I'm not 100% sure is intended :))

## Issues

* #141588
2024-01-25 01:49:08 +00:00
Christopher Fujino
6b7c60d69a
manual pub roll (#123071)
manual pub roll
2023-03-21 01:08:51 +00:00
Zachary Anderson
e6e99e2df5
Skip web hot restart tests (#123019)
Related https://github.com/flutter/flutter/issues/123018
2023-03-20 10:08:00 -07:00
Christopher Fujino
69921495eb
Revert "Fix hot restart flake" (#122855)
Landing revert on red to fix the build.
2023-03-16 22:40:42 -07:00
Anna Gringauze
62171dfe38
Fix hot restart flake (#122776) 2023-03-16 13:11:55 -07:00
Anna Gringauze
d76860ad60
Add printing on failure to web hotrestart tests (#122115) 2023-03-07 15:35:00 -08:00
Anna Gringauze
3292f89764
Update issue reference for skipped hot restart tests (#110881) 2022-09-02 14:38:24 -07:00
David Iglesias
9cb9f6bca4
[tool] Fix flutter.js regression with hot-reload on promise-based init. (#110805) 2022-09-01 22:25:16 +00:00
Jonah Williams
dfaec11ba5
migrate web integration tests to null safety (#106231) 2022-06-21 11:19:09 -07:00
Ian Hickson
f25b833f27
Enable avoid_print lint. (#91444) 2021-10-07 16:48:04 -07:00
Mouad Debbar
c2ea78d231
Revert "Enable avoid_print lint. (#91332)" (#91438)
This reverts commit cb378edc9e.
2021-10-07 16:16:17 -04:00
Ian Hickson
cb378edc9e
Enable avoid_print lint. (#91332) 2021-10-07 09:53:03 -07:00
Darren Austin
b08366ce7b
Updated skipped tests for flutter_tools. (#87925)
* Updated skipped tests for flutter_tools.

* Turned the flaky overall_experience test off as it was still failing on CI.
2021-08-10 22:22:08 -07:00
Zachary Anderson
10e53e9981
Skip "newly added code executes during hot restart - canvaskit" (#86885)
https://ci.chromium.org/ui/p/flutter/builders/prod/Windows%20web_tool_tests/2880/overview
2021-07-22 10:55:18 -07:00
Anna Gringauze
84c3b56877
Update dwds (and other packages) (#86832)
* Upgrade all packages

In particular, bring in dwds with latest fixes for flakes.

Closes: https://github.com/flutter/flutter/issues/85043
Related: https://github.com/flutter/flutter/issues/85575

* Re-enable fixed tests

* Disable failing test due to DDS issue
2021-07-21 21:47:10 -07:00
Jonah Williams
7a0b4669fc
[flutter_tools] switch web integration tests to use html (#85325) 2021-07-12 09:01:04 -07:00
LongCatIsLooong
1c92e84865
Skip flaky tests in web.shared (#85577) 2021-06-29 16:21:02 -07:00
Zachary Anderson
1cf2ce9552
Skip a flaky Windows/canvaskit test in hot_reload_web_test.dart (#85044)
* Update hot_reload_web_test.dart

For https://github.com/flutter/flutter/issues/85043

* Add missing import
2021-06-22 09:11:02 -07:00
Jenn Magder
2dbe1ec8fb
Move web tool test per-test timeout to shard (#78508) 2021-03-18 11:50:49 -07:00
Anna Gringauze
e8c3ce6bd1
Try fixing web tool tests on windows (#78386) 2021-03-17 22:13:13 -07:00
Jonah Williams
74bd7b6f6d
[flutter_tools] opt all flutter tool libraries and tests out of null safety. (#74832)
* opt out the flutter tool

* oops EOF

* fix import

* Update tool_backend.dart

* Update daemon_client.dart

* fix more
2021-01-27 15:17:53 -08:00
Jonah Williams
e8b87f7cd2
[flutter_tools] enable CK restart tests (#71598) 2020-12-02 13:10:54 -08:00
Jonah Williams
085ff127ae
[flutter_tools] skip ck restart on all platforms (#70853) 2020-11-19 12:24:22 -08:00
Anna Gringauze
d5b1cc5b9f
Disable failing test due to SDK issue (#70485)
* Disable failing test due to SDK issue

* Disable failing debugger and hot reload windows tests
2020-11-13 14:15:31 -08:00
Anna Gringauze
edf26e756d
Move web integration tool tests to web.shard (#70226)
* Move web integration tool tests to web.shard

Web integration tool tests depend on DDC changes in SDK. This change
moves them to a separate shard and subshard so CI bot configurations
can run them separately.

In particular, with will allow running those tests on dart CI flutter
HHH web bot instead of a non-web one, allowing early detection and easy
classification of issues caused by SDK changes as VM- or Web related.

* Enabled verbose mode for flaky web_tool_tests

* Split out the test changes to be commited first
2020-11-11 15:42:15 -08:00
Jonah Williams
a3f6ea6f38
[flutter_tools] split web integration tests into new shard (#69914) 2020-11-05 17:21:44 -08:00