1
+ // @see https://www.browserstack.com/automate/capabilities
2
+ const customLaunchers = {
3
+ modern : {
4
+ bs_chrome_latest : {
5
+ base : "BrowserStack" ,
6
+ os : "Windows" ,
7
+ os_version : "10" ,
8
+ browser : "Chrome" ,
9
+ browser_version : "latest" ,
10
+ } ,
11
+ bs_firefox_latest : {
12
+ base : "BrowserStack" ,
13
+ os : "Windows" ,
14
+ os_version : "10" ,
15
+ browser : "Firefox" ,
16
+ browser_version : "latest" ,
17
+ } ,
18
+ bs_edge_latest : {
19
+ base : "BrowserStack" ,
20
+ os : "Windows" ,
21
+ os_version : "10" ,
22
+ browser : "Edge" ,
23
+ browser_version : "latest" ,
24
+ } ,
25
+ bs_opera_latest : {
26
+ base : "BrowserStack" ,
27
+ os : "Windows" ,
28
+ os_version : "10" ,
29
+ browser : "Opera" ,
30
+ browser_version : "latest" ,
31
+ } ,
32
+ // Safari 13 is very important to be listed here, as while it does have an RO implementation,
33
+ // it does not support different box sizes, only content-box.
34
+ bs_safari_13 : {
35
+ base : "BrowserStack" ,
36
+ os : "OS X" ,
37
+ os_version : "Catalina" ,
38
+ browser : "Safari" ,
39
+ browser_version : "13.0" ,
40
+ } ,
41
+ bs_ios_14 : {
42
+ base : "BrowserStack" ,
43
+ device : "iPhone 11" ,
44
+ os : "ios" ,
45
+ os_version : "14" ,
46
+ } ,
47
+ bs_samsung : {
48
+ base : "BrowserStack" ,
49
+ device : "Samsung Galaxy Note 10" ,
50
+ os : "Android" ,
51
+ os_version : "9.0" ,
52
+ } ,
53
+ } ,
54
+ legacy : {
55
+ bs_ios_11 : {
56
+ base : "BrowserStack" ,
57
+ device : "iPhone X" ,
58
+ os : "ios" ,
59
+ os_version : "11" ,
60
+ } ,
61
+ bs_ie_11 : {
62
+ base : "BrowserStack" ,
63
+ os : "Windows" ,
64
+ os_version : "10" ,
65
+ browser : "IE" ,
66
+ browser_version : "11.0" ,
67
+ } ,
68
+ } ,
69
+ } ;
70
+
1
71
module . exports = function ( karmaConfig ) {
2
- const { useBrowserStack, runIeTests } = karmaConfig ;
3
- const { BS_USERNAME , BS_ACCESS_KEY } = process . env ;
72
+ const { BS_USERNAME , BS_ACCESS_KEY , KARMA_BROWSERS } = process . env ;
73
+
74
+ const browsers =
75
+ KARMA_BROWSERS === "modern"
76
+ ? Object . keys ( customLaunchers . modern )
77
+ : KARMA_BROWSERS === "legacy"
78
+ ? Object . keys ( customLaunchers . legacy )
79
+ : KARMA_BROWSERS
80
+ ? KARMA_BROWSERS . split ( "," ) . map ( ( val ) => val . trim ( ) )
81
+ : [ "ChromeHeadless" ] ;
82
+
83
+ const useBrowserStack = browsers [ 0 ] . startsWith ( "bs_" ) ;
84
+
85
+ const polyfilledRun = browsers . reduce (
86
+ ( carry , browser ) =>
87
+ carry || Object . keys ( customLaunchers . legacy ) . includes ( browser ) ,
88
+ false
89
+ ) ;
4
90
5
91
let testFilePattern = "tests/*.tsx" ;
6
- // const testFilePattern = "tests/basic.tsx";
7
- // const testFilePattern = "tests/testing-lib.tsx";
92
+ // let testFilePattern = "tests/basic.tsx";
93
+ // let testFilePattern = "tests/testing-lib.tsx";
8
94
9
95
let transpileExcludePattern = / n o d e _ m o d u l e s / ;
10
96
let presetEndModules = false ;
11
97
let transformRuntimeUseESModules = true ;
12
- if ( useBrowserStack && runIeTests ) {
98
+ if ( polyfilledRun ) {
13
99
// IE runs a special set of (polyfilled) tests
14
100
testFilePattern = "tests/ie/*.tsx" ;
15
101
// Processing everything (including node_modules) for IE11 to make sure 3rd
@@ -32,7 +118,20 @@ module.exports = function (karmaConfig) {
32
118
preprocessors : {
33
119
[ testFilePattern ] : [ "webpack" , "sourcemap" ] ,
34
120
} ,
35
-
121
+ ...( useBrowserStack && {
122
+ browserStack : {
123
+ username : BS_USERNAME ,
124
+ accessKey : BS_ACCESS_KEY ,
125
+ project : "use-resize-observer" ,
126
+ } ,
127
+ } ) ,
128
+ // @see https://karma-runner.github.io/5.2/config/files.html
129
+ autoWatch : ! useBrowserStack ,
130
+ browsers,
131
+ customLaunchers : {
132
+ ...customLaunchers . modern ,
133
+ ...customLaunchers . legacy ,
134
+ } ,
36
135
webpack : {
37
136
mode : "development" ,
38
137
devtool : "inline-source-map" ,
@@ -69,61 +168,5 @@ module.exports = function (karmaConfig) {
69
168
} ,
70
169
} ;
71
170
72
- if ( useBrowserStack ) {
73
- Object . assign ( config , {
74
- browserStack : {
75
- username : BS_USERNAME ,
76
- accessKey : BS_ACCESS_KEY ,
77
- project : "use-resize-observer" ,
78
- } ,
79
- browsers : [ "bs_chrome" , "bs_firefox" , "bs_safari" ] ,
80
- // @see https://www.browserstack.com/automate/capabilities
81
- customLaunchers : {
82
- bs_chrome : {
83
- base : "BrowserStack" ,
84
- os : "Windows" ,
85
- os_version : "10" ,
86
- browser : "Chrome" ,
87
- browser_version : "latest" ,
88
- } ,
89
- bs_firefox : {
90
- base : "BrowserStack" ,
91
- os : "Windows" ,
92
- os_version : "10" ,
93
- browser : "Firefox" ,
94
- browser_version : "latest" ,
95
- } ,
96
- bs_safari : {
97
- base : "BrowserStack" ,
98
- os : "OS X" ,
99
- os_version : "Catalina" ,
100
- browser : "Safari" ,
101
- browser_version : "13.0" ,
102
- } ,
103
- } ,
104
- } ) ;
105
-
106
- if ( runIeTests ) {
107
- Object . assign ( config , {
108
- browsers : [ "bs_ie" ] ,
109
- customLaunchers : {
110
- bs_ie : {
111
- base : "BrowserStack" ,
112
- os : "Windows" ,
113
- os_version : "10" ,
114
- browser : "IE" ,
115
- browser_version : "11.0" ,
116
- } ,
117
- } ,
118
- } ) ;
119
- }
120
- } else {
121
- Object . assign ( config , {
122
- browsers : ( process . env . KARMA_BROWSERS || "ChromeHeadless" ) . split ( "," ) ,
123
- // @see https://karma-runner.github.io/5.2/config/files.html
124
- autoWatch : true ,
125
- } ) ;
126
- }
127
-
128
171
karmaConfig . set ( config ) ;
129
172
} ;
0 commit comments