@@ -2066,6 +2066,134 @@ describe("web socket server URL", () => {
2066
2066
await server . stop ( ) ;
2067
2067
} ) ;
2068
2068
2069
+ it ( `should work with "server: 'https'" option ("${ webSocketServer } ")` , async ( ) => {
2070
+ const hostname = "127.0.0.1" ;
2071
+ const compiler = webpack ( config ) ;
2072
+ const devServerOptions = {
2073
+ webSocketServer,
2074
+ port : port1 ,
2075
+ server : "https" ,
2076
+ } ;
2077
+ const server = new Server ( devServerOptions , compiler ) ;
2078
+
2079
+ await server . start ( ) ;
2080
+
2081
+ const { page, browser } = await runBrowser ( ) ;
2082
+
2083
+ const pageErrors = [ ] ;
2084
+ const consoleMessages = [ ] ;
2085
+
2086
+ page
2087
+ . on ( "console" , ( message ) => {
2088
+ consoleMessages . push ( message ) ;
2089
+ } )
2090
+ . on ( "pageerror" , ( error ) => {
2091
+ pageErrors . push ( error ) ;
2092
+ } ) ;
2093
+
2094
+ const webSocketRequests = [ ] ;
2095
+
2096
+ if ( webSocketServer === "ws" ) {
2097
+ const client = page . _client ;
2098
+
2099
+ client . on ( "Network.webSocketCreated" , ( test ) => {
2100
+ webSocketRequests . push ( test ) ;
2101
+ } ) ;
2102
+ } else {
2103
+ page . on ( "request" , ( request ) => {
2104
+ if ( / \/ w s \/ / . test ( request . url ( ) ) ) {
2105
+ webSocketRequests . push ( { url : request . url ( ) } ) ;
2106
+ }
2107
+ } ) ;
2108
+ }
2109
+
2110
+ await page . goto ( `https://${ hostname } :${ port1 } /` , {
2111
+ waitUntil : "networkidle0" ,
2112
+ } ) ;
2113
+
2114
+ const webSocketRequest = webSocketRequests [ 0 ] ;
2115
+
2116
+ if ( webSocketServer === "ws" ) {
2117
+ expect ( webSocketRequest . url ) . toContain ( `wss://${ hostname } :${ port1 } /ws` ) ;
2118
+ } else {
2119
+ expect ( webSocketRequest . url ) . toContain (
2120
+ `https://${ hostname } :${ port1 } /ws`
2121
+ ) ;
2122
+ }
2123
+
2124
+ expect ( consoleMessages . map ( ( message ) => message . text ( ) ) ) . toMatchSnapshot (
2125
+ "console messages"
2126
+ ) ;
2127
+ expect ( pageErrors ) . toMatchSnapshot ( "page errors" ) ;
2128
+
2129
+ await browser . close ( ) ;
2130
+ await server . stop ( ) ;
2131
+ } ) ;
2132
+
2133
+ it ( `should work with "server: 'spdy'" option ("${ webSocketServer } ")` , async ( ) => {
2134
+ const hostname = "127.0.0.1" ;
2135
+ const compiler = webpack ( config ) ;
2136
+ const devServerOptions = {
2137
+ webSocketServer,
2138
+ port : port1 ,
2139
+ server : "spdy" ,
2140
+ } ;
2141
+ const server = new Server ( devServerOptions , compiler ) ;
2142
+
2143
+ await server . start ( ) ;
2144
+
2145
+ const { page, browser } = await runBrowser ( ) ;
2146
+
2147
+ const pageErrors = [ ] ;
2148
+ const consoleMessages = [ ] ;
2149
+
2150
+ page
2151
+ . on ( "console" , ( message ) => {
2152
+ consoleMessages . push ( message ) ;
2153
+ } )
2154
+ . on ( "pageerror" , ( error ) => {
2155
+ pageErrors . push ( error ) ;
2156
+ } ) ;
2157
+
2158
+ const webSocketRequests = [ ] ;
2159
+
2160
+ if ( webSocketServer === "ws" ) {
2161
+ const client = page . _client ;
2162
+
2163
+ client . on ( "Network.webSocketCreated" , ( test ) => {
2164
+ webSocketRequests . push ( test ) ;
2165
+ } ) ;
2166
+ } else {
2167
+ page . on ( "request" , ( request ) => {
2168
+ if ( / \/ w s \/ / . test ( request . url ( ) ) ) {
2169
+ webSocketRequests . push ( { url : request . url ( ) } ) ;
2170
+ }
2171
+ } ) ;
2172
+ }
2173
+
2174
+ await page . goto ( `https://${ hostname } :${ port1 } /` , {
2175
+ waitUntil : "networkidle0" ,
2176
+ } ) ;
2177
+
2178
+ const webSocketRequest = webSocketRequests [ 0 ] ;
2179
+
2180
+ if ( webSocketServer === "ws" ) {
2181
+ expect ( webSocketRequest . url ) . toContain ( `wss://${ hostname } :${ port1 } /ws` ) ;
2182
+ } else {
2183
+ expect ( webSocketRequest . url ) . toContain (
2184
+ `https://${ hostname } :${ port1 } /ws`
2185
+ ) ;
2186
+ }
2187
+
2188
+ expect ( consoleMessages . map ( ( message ) => message . text ( ) ) ) . toMatchSnapshot (
2189
+ "console messages"
2190
+ ) ;
2191
+ expect ( pageErrors ) . toMatchSnapshot ( "page errors" ) ;
2192
+
2193
+ await browser . close ( ) ;
2194
+ await server . stop ( ) ;
2195
+ } ) ;
2196
+
2069
2197
it ( `should work when "port" option is "auto" ("${ webSocketServer } ")` , async ( ) => {
2070
2198
process . env . WEBPACK_DEV_SERVER_BASE_PORT = 50000 ;
2071
2199
0 commit comments