test: add Intl polyfill and run Intl tests in all browsers (#10471)
This commit is contained in:

committed by
Martin Probst

parent
562c8263dc
commit
1b5e2b5129
@ -23,7 +23,8 @@ export function main() {
|
||||
isWebkit: true,
|
||||
isIOS7: false,
|
||||
isSlow: false,
|
||||
isChromeDesktop: true
|
||||
isChromeDesktop: true,
|
||||
isOldChrome: false
|
||||
},
|
||||
{
|
||||
name: 'Chrome mobile',
|
||||
@ -35,7 +36,8 @@ export function main() {
|
||||
isWebkit: true,
|
||||
isIOS7: false,
|
||||
isSlow: false,
|
||||
isChromeDesktop: false
|
||||
isChromeDesktop: false,
|
||||
isOldChrome: false
|
||||
},
|
||||
{
|
||||
name: 'Firefox',
|
||||
@ -47,7 +49,8 @@ export function main() {
|
||||
isWebkit: false,
|
||||
isIOS7: false,
|
||||
isSlow: false,
|
||||
isChromeDesktop: false
|
||||
isChromeDesktop: false,
|
||||
isOldChrome: false
|
||||
},
|
||||
{
|
||||
name: 'IE9',
|
||||
@ -59,7 +62,8 @@ export function main() {
|
||||
isWebkit: false,
|
||||
isIOS7: false,
|
||||
isSlow: true,
|
||||
isChromeDesktop: false
|
||||
isChromeDesktop: false,
|
||||
isOldChrome: false
|
||||
},
|
||||
{
|
||||
name: 'IE10',
|
||||
@ -71,7 +75,8 @@ export function main() {
|
||||
isWebkit: false,
|
||||
isIOS7: false,
|
||||
isSlow: true,
|
||||
isChromeDesktop: false
|
||||
isChromeDesktop: false,
|
||||
isOldChrome: false
|
||||
},
|
||||
{
|
||||
name: 'IE11',
|
||||
@ -83,7 +88,8 @@ export function main() {
|
||||
isWebkit: false,
|
||||
isIOS7: false,
|
||||
isSlow: true,
|
||||
isChromeDesktop: false
|
||||
isChromeDesktop: false,
|
||||
isOldChrome: false
|
||||
},
|
||||
{
|
||||
name: 'IEMobile',
|
||||
@ -95,7 +101,8 @@ export function main() {
|
||||
isWebkit: false,
|
||||
isIOS7: false,
|
||||
isSlow: true,
|
||||
isChromeDesktop: false
|
||||
isChromeDesktop: false,
|
||||
isOldChrome: false
|
||||
},
|
||||
{
|
||||
name: 'Edge',
|
||||
@ -107,7 +114,8 @@ export function main() {
|
||||
isWebkit: false,
|
||||
isIOS7: false,
|
||||
isSlow: false,
|
||||
isChromeDesktop: false
|
||||
isChromeDesktop: false,
|
||||
isOldChrome: false
|
||||
},
|
||||
{
|
||||
name: 'Android4.1',
|
||||
@ -119,7 +127,8 @@ export function main() {
|
||||
isWebkit: true,
|
||||
isIOS7: false,
|
||||
isSlow: true,
|
||||
isChromeDesktop: false
|
||||
isChromeDesktop: false,
|
||||
isOldChrome: false
|
||||
},
|
||||
{
|
||||
name: 'Android4.2',
|
||||
@ -131,7 +140,8 @@ export function main() {
|
||||
isWebkit: true,
|
||||
isIOS7: false,
|
||||
isSlow: true,
|
||||
isChromeDesktop: false
|
||||
isChromeDesktop: false,
|
||||
isOldChrome: false
|
||||
},
|
||||
{
|
||||
name: 'Android4.3',
|
||||
@ -143,7 +153,8 @@ export function main() {
|
||||
isWebkit: true,
|
||||
isIOS7: false,
|
||||
isSlow: true,
|
||||
isChromeDesktop: false
|
||||
isChromeDesktop: false,
|
||||
isOldChrome: false
|
||||
},
|
||||
{
|
||||
name: 'Android4.4',
|
||||
@ -155,7 +166,8 @@ export function main() {
|
||||
isWebkit: true,
|
||||
isIOS7: false,
|
||||
isSlow: false,
|
||||
isChromeDesktop: false
|
||||
isChromeDesktop: false,
|
||||
isOldChrome: true
|
||||
},
|
||||
{
|
||||
name: 'Safari7',
|
||||
@ -167,7 +179,8 @@ export function main() {
|
||||
isWebkit: true,
|
||||
isIOS7: false,
|
||||
isSlow: false,
|
||||
isChromeDesktop: false
|
||||
isChromeDesktop: false,
|
||||
isOldChrome: false
|
||||
},
|
||||
{
|
||||
name: 'Safari8',
|
||||
@ -179,7 +192,8 @@ export function main() {
|
||||
isWebkit: true,
|
||||
isIOS7: false,
|
||||
isSlow: false,
|
||||
isChromeDesktop: false
|
||||
isChromeDesktop: false,
|
||||
isOldChrome: false
|
||||
},
|
||||
{
|
||||
name: 'iOS7',
|
||||
@ -191,7 +205,8 @@ export function main() {
|
||||
isWebkit: true,
|
||||
isIOS7: true,
|
||||
isSlow: true,
|
||||
isChromeDesktop: false
|
||||
isChromeDesktop: false,
|
||||
isOldChrome: false
|
||||
},
|
||||
{
|
||||
name: 'iOS8',
|
||||
@ -203,7 +218,8 @@ export function main() {
|
||||
isWebkit: true,
|
||||
isIOS7: false,
|
||||
isSlow: false,
|
||||
isChromeDesktop: false
|
||||
isChromeDesktop: false,
|
||||
isOldChrome: false
|
||||
}
|
||||
];
|
||||
|
||||
@ -218,6 +234,7 @@ export function main() {
|
||||
expect(bd.isIOS7).toBe(StringMapWrapper.get(browser, 'isIOS7'));
|
||||
expect(bd.isSlow).toBe(StringMapWrapper.get(browser, 'isSlow'));
|
||||
expect(bd.isChromeDesktop).toBe(StringMapWrapper.get(browser, 'isChromeDesktop'));
|
||||
expect(bd.isOldChrome).toBe(StringMapWrapper.get(browser, 'isOldChrome'));
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -50,15 +50,25 @@ export class BrowserDetection {
|
||||
|
||||
get isSlow(): boolean { return this.isAndroid || this.isIE || this.isIOS7; }
|
||||
|
||||
// The Intl API is only properly supported in recent Chrome and Opera.
|
||||
// Note: Edge is disguised as Chrome 42, so checking the "Edge" part is needed,
|
||||
// see https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx
|
||||
get supportsIntlApi(): boolean { return !!(<any>global).Intl; }
|
||||
// The Intl API is only natively supported in Chrome, Firefox, IE11 and Edge.
|
||||
// This detector is needed in tests to make the difference between:
|
||||
// 1) IE11/Edge: they have a native Intl API, but with some discrepancies
|
||||
// 2) IE9/IE10: they use the polyfill, and so no discrepancies
|
||||
get supportsNativeIntlApi(): boolean {
|
||||
return !!(<any>global).Intl && (<any>global).Intl !== (<any>global).IntlPolyfill;
|
||||
}
|
||||
|
||||
get isChromeDesktop(): boolean {
|
||||
return this._ua.indexOf('Chrome') > -1 && this._ua.indexOf('Mobile Safari') == -1 &&
|
||||
this._ua.indexOf('Edge') == -1;
|
||||
}
|
||||
|
||||
// "Old Chrome" means Chrome 3X, where there are some discrepancies in the Intl API.
|
||||
// Android 4.4 and 5.X have such browsers by default (respectively 30 and 39).
|
||||
get isOldChrome(): boolean {
|
||||
return this._ua.indexOf('Chrome') > -1 && this._ua.indexOf('Chrome/3') > -1 &&
|
||||
this._ua.indexOf('Edge') == -1;
|
||||
}
|
||||
}
|
||||
|
||||
BrowserDetection.setup();
|
||||
|
Reference in New Issue
Block a user