diff --git a/test/capabilities.spec.js b/test/capabilities.spec.js index 1b6fae9d86..6ae15ce2ac 100644 --- a/test/capabilities.spec.js +++ b/test/capabilities.spec.js @@ -21,4 +21,16 @@ describe('Capabilities', function() { await page.goto(server.PREFIX + '/wasm/table2.html'); expect(await page.evaluate(() => loadTable())).toBe('42, 83'); }); + + it('WebSocket should work', async({page, server}) => { + const value = await page.evaluate((port) => { + let cb; + const result = new Promise(f => cb = f); + const ws = new WebSocket('ws://localhost:' + port + '/ws'); + ws.addEventListener('message', data => { ws.close(); cb(data.data); }); + ws.addEventListener('error', error => cb('Error')); + return result; + }, server.PORT); + expect(value).toBe('incoming'); + }); }); diff --git a/test/ignorehttpserrors.spec.js b/test/ignorehttpserrors.spec.js index 04438bc5b7..a1eea7fd6f 100644 --- a/test/ignorehttpserrors.spec.js +++ b/test/ignorehttpserrors.spec.js @@ -15,7 +15,7 @@ * limitations under the License. */ -const {FFOX, CHROMIUM, WEBKIT} = require('./utils').testOptions(browserType); +const {FFOX, CHROMIUM, WEBKIT, MAC} = require('./utils').testOptions(browserType); describe('ignoreHTTPSErrors', function() { it('should work', async({browser, httpsServer}) => { @@ -60,4 +60,32 @@ describe('ignoreHTTPSErrors', function() { expect(await page.frames()[1].evaluate('2 + 3')).toBe(5); await context.close(); }); + it.fail(WEBKIT && MAC)('should work with WebSocket', async({browser, httpsServer}) => { + const context = await browser.newContext({ ignoreHTTPSErrors: true }); + const page = await context.newPage(); + const value = await page.evaluate(endpoint => { + let cb; + const result = new Promise(f => cb = f); + const ws = new WebSocket(endpoint); + ws.addEventListener('message', data => { ws.close(); cb(data.data); }); + ws.addEventListener('error', error => cb('Error')); + return result; + }, httpsServer.PREFIX.replace(/https/, 'wss') + '/ws'); + expect(value).toBe('incoming'); + await context.close(); + }); + it('should fail with WebSocket if not ignored', async({browser, httpsServer}) => { + const context = await browser.newContext(); + const page = await context.newPage(); + const value = await page.evaluate(endpoint => { + let cb; + const result = new Promise(f => cb = f); + const ws = new WebSocket(endpoint); + ws.addEventListener('message', data => { ws.close(); cb(data.data); }); + ws.addEventListener('error', error => cb('Error')); + return result; + }, httpsServer.PREFIX.replace(/https/, 'wss') + '/ws'); + expect(value).toBe('Error'); + await context.close(); + }); });