Skip to content

Commit 40dca93

Browse files
committed
test(e2e): improve puppeteer argument flags (webpack#2127)
1 parent 1103b55 commit 40dca93

15 files changed

+421
-184
lines changed

jest.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ module.exports = {
88
testMatch: ['**/test/**/*.test.js'],
99
setupFilesAfterEnv: ['<rootDir>/setupTest.js'],
1010
globalSetup: '<rootDir>/globalSetupTest.js',
11+
testSequencer: '<rootDir>/test/testSequencer.js',
1112
};

lib/servers/SockJSServer.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ module.exports = class SockJSServer extends BaseServer {
4949
}
5050

5151
send(connection, message) {
52+
// prevent cases where the server is trying to send data while connection is closing
53+
if (connection.readyState !== 1) {
54+
return;
55+
}
56+
5257
connection.write(message);
5358
}
5459

lib/servers/WebsocketServer.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ module.exports = class WebsocketServer extends BaseServer {
2020
}
2121

2222
send(connection, message) {
23+
// prevent cases where the server is trying to send data while connection is closing
24+
if (connection.readyState !== 1) {
25+
return;
26+
}
27+
2328
connection.send(message);
2429
}
2530

test/e2e/Client.test.js

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
/**
2+
* @jest-environment node
3+
*/
4+
15
'use strict';
26

37
/* eslint-disable
@@ -9,6 +13,10 @@ const testServer = require('../helpers/test-server');
913
const reloadConfig = require('../fixtures/reload-config/webpack.config');
1014
const runBrowser = require('../helpers/run-browser');
1115
const port = require('../ports-map').Client;
16+
const {
17+
reloadReadyDelay,
18+
completeReloadDelay,
19+
} = require('../helpers/puppeteer-constants');
1220

1321
const cssFilePath = resolve(__dirname, '../fixtures/reload-config/main.css');
1422

@@ -53,7 +61,7 @@ describe('reload', () => {
5361
host: '0.0.0.0',
5462
inline: true,
5563
watchOptions: {
56-
poll: 500,
64+
poll: true,
5765
},
5866
},
5967
mode.options
@@ -91,27 +99,29 @@ describe('reload', () => {
9199
}
92100
req.continue();
93101
});
94-
fs.writeFileSync(
95-
cssFilePath,
96-
'body { background-color: rgb(255, 0, 0); }'
97-
);
98-
page.waitFor(10000).then(() => {
99-
page
100-
.evaluate(() => {
101-
const body = document.body;
102-
const bgColor = getComputedStyle(body)[
103-
'background-color'
104-
];
105-
return bgColor;
106-
})
107-
.then((color2) => {
108-
browser.close().then(() => {
109-
expect(color).toEqual('rgb(0, 0, 255)');
110-
expect(color2).toEqual('rgb(255, 0, 0)');
111-
expect(refreshed).toEqual(mode.shouldRefresh);
112-
done();
102+
page.waitFor(reloadReadyDelay).then(() => {
103+
fs.writeFileSync(
104+
cssFilePath,
105+
'body { background-color: rgb(255, 0, 0); }'
106+
);
107+
page.waitFor(completeReloadDelay).then(() => {
108+
page
109+
.evaluate(() => {
110+
const body = document.body;
111+
const bgColor = getComputedStyle(body)[
112+
'background-color'
113+
];
114+
return bgColor;
115+
})
116+
.then((color2) => {
117+
browser.close().then(() => {
118+
expect(color).toEqual('rgb(0, 0, 255)');
119+
expect(color2).toEqual('rgb(255, 0, 0)');
120+
expect(refreshed).toEqual(mode.shouldRefresh);
121+
done();
122+
});
113123
});
114-
});
124+
});
115125
});
116126
});
117127
});

test/e2e/ClientMode.test.js

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ const testServer = require('../helpers/test-server');
44
const config = require('../fixtures/client-config/webpack.config');
55
const runBrowser = require('../helpers/run-browser');
66
const port = require('../ports-map').ClientMode;
7+
const {
8+
initConsoleDelay,
9+
awaitServerCloseDelay,
10+
} = require('../helpers/puppeteer-constants');
711

812
describe('clientMode', () => {
913
const modes = [
@@ -54,17 +58,29 @@ describe('clientMode', () => {
5458
res.push(_text);
5559
});
5660

57-
setTimeout(() => {
61+
page.waitFor(initConsoleDelay).then(() => {
5862
testServer.close(() => {
5963
// make sure the client gets the close message
60-
setTimeout(() => {
64+
page.waitFor(awaitServerCloseDelay).then(() => {
6165
browser.close().then(() => {
66+
for (let i = res.length - 1; i >= 0; i--) {
67+
if (res[i] === '[WDS] Disconnected!') {
68+
break;
69+
} else if (
70+
res[i] === 'close' ||
71+
res[i].includes('net::ERR_CONNECTION_REFUSED')
72+
) {
73+
// remove additional logging for the now failing connection,
74+
// since this could be a variable number of error messages
75+
res.splice(i, 1);
76+
}
77+
}
6278
expect(res).toMatchSnapshot();
6379
done();
6480
});
65-
}, 1000);
81+
});
6682
});
67-
}, 3000);
83+
});
6884
});
6985
});
7086
});

0 commit comments

Comments
 (0)