Revision ba8e46597435a827670f10b971b2c58f7033b180 authored by Andrew Scott on 06 March 2024, 20:42:26 UTC, committed by Andrew Scott on 06 March 2024, 23:43:16 UTC
When the `ApplicationRef` refreshes attached views, it will continue to do so while there is still one marked for check after the refresh completes. BREAKING CHANGE: When Angular runs change detection, it will continue to refresh any views attached to `ApplicationRef` that are still marked for check after one round completes. In rare cases, this can result in infinite loops when certain patterns continue to mark views for check using `ChangeDetectorRef.detectChanges`. This will be surfaced as a runtime error with the `NG0103` code. PR Close #54734
1 parent d9c0a16
browser-providers.conf.js
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
// Unique place to configure the browsers which are used in the different CI jobs in Sauce Labs (SL)
// If the target is set to null, then the browser is not run anywhere during CI.
// If a category becomes empty (e.g. BS and required), then the corresponding job must be commented
// out in the CI configuration.
const config = {
'Android11': {unitTest: {target: 'SL', required: true}},
'Android12': {unitTest: {target: 'SL', required: true}},
};
/** Whether browsers should be remotely acquired in debug mode. */
const debugMode = false;
// Specific platform configuration can be found at:
// https://saucelabs.com/platform/platform-configurator
const customLaunchers = {
'SL_ANDROID11': {
base: 'SauceLabs',
browserName: 'Chrome',
platformName: 'Android',
platformVersion: '11.0',
deviceName: 'Google Pixel 3a GoogleAPI Emulator',
appiumVersion: '1.20.2',
extendedDebugging: debugMode,
},
'SL_ANDROID12': {
base: 'SauceLabs',
browserName: 'Chrome',
platformName: 'Android',
platformVersion: '12.0',
deviceName: 'Google Pixel 4a (5G) GoogleAPI Emulator',
appiumVersion: '1.22.1',
extendedDebugging: debugMode,
},
};
const sauceAliases = {
'CI_REQUIRED': buildConfiguration('unitTest', 'SL', true),
'CI_OPTIONAL': buildConfiguration('unitTest', 'SL', false)
};
module.exports = {
customLaunchers : customLaunchers,
sauceAliases : sauceAliases,
};
function buildConfiguration(type, target, required) {
return Object.keys(config)
.filter((item) => {
const conf = config[item][type];
return conf.required === required && conf.target === target;
})
.map((item) => target + '_' + item.toUpperCase());
}
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...