
In ngUpgradeLite, when a downgraded component [requests its downgraded module][1], the AngularJS injector is [temporarily stored][2] with the intention of grabbing it [once the module has been bootstrapped][3] (which also cleans up the [temporary injector reference][4]). In [some tests][5], bootstrapping a component might throw an error, which causes the test to fail immediatelly and move on to the next test. In slow browsers (e.g. on CI/Saucelabs), the (successful) bootstrapping of another downgraded module might not have been completed in time and thus the temporary injector reference not cleaned up. In such a case, if the following test (in our randomized test suite) happens to rely on the temporary injector reference's being initially unset (such as [this test][6]), it will fail. This might appear as a flake on CI, because it depends on a race condition and specific order of tests, so it usually goes away after a rerun. This commit fixes it by ensuring the temporary injector reference is manually cleaned up, when necessary. Jira issue: FW-939 [1]:f983e99fb2/packages/upgrade/src/common/downgrade_component.ts (L120)
[2]:f983e99fb2/packages/upgrade/src/static/downgrade_module.ts (L165)
[3]:f983e99fb2/packages/upgrade/src/static/downgrade_module.ts (L169)
[4]:f983e99fb2/packages/upgrade/src/static/angular1_providers.ts (L25)
[5]:f983e99fb2/packages/upgrade/test/static/integration/downgrade_module_spec.ts (L1331-L1381)
[6]:f983e99fb2/packages/upgrade/test/static/angular1_providers_spec.ts (L31-L45)
PR Close #28181
Angular
Angular is a development platform for building mobile and desktop web applications using Typescript/JavaScript and other languages.
Quickstart
Changelog
Learn about the latest improvements.
Want to help?
Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on our guidelines for contributing and then check out one of our issues in the hotlist: community-help.
Description
Languages
TypeScript
86.3%
JavaScript
8.5%
HTML
1.8%
Starlark
1.7%
CSS
1%
Other
0.6%