Skip to content

Commit

Permalink
more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
nornagon committed Nov 29, 2018
1 parent 5911c1c commit cfdca61
Showing 1 changed file with 76 additions and 15 deletions.
91 changes: 76 additions & 15 deletions spec/api-web-contents-spec.js
Expand Up @@ -41,16 +41,29 @@ describe('webContents module', () => {

describe('loadURL() promise API', () => {
it('resolves when done loading', async () => {
await w.loadURL('about:blank')
// assert: no timeout, no exception.
await expect(w.loadURL('about:blank')).to.eventually.be.fulfilled
})

it('resolves when done loading a file URL', async () => {
await w.loadFile(path.join(fixtures, 'pages', 'base-page.html'))
// assert: no timeout, no exception.
await expect(w.loadFile(path.join(fixtures, 'pages', 'base-page.html'))).to.eventually.be.fulfilled
})

it('rejects when failing to load a file URL', async () => {
await expect(w.loadURL('file:non-existent')).to.eventually.be.rejected
.and.have.property('code', 'ERR_FILE_NOT_FOUND')
})

it('rejects when loading fails due to DNS not resolved', async () => {
await expect(w.loadURL('https://err.name.not.resolved')).to.eventually.be.rejected
.and.have.property('code', 'ERR_NAME_NOT_RESOLVED')
})

it('rejects when navigation is cancelled due to a bad scheme', async () => {
await expect(w.loadURL('bad-scheme://foo')).to.eventually.be.rejected
.and.have.property('code', 'ERR_FAILED')
})

it('sets appropriate error information on rejection', async () => {
let err
try {
await w.loadURL('file:non-existent')
Expand All @@ -63,17 +76,65 @@ describe('webContents module', () => {
expect(err.url).to.eql(process.platform === 'win32' ? 'file://non-existent/' : 'file:///non-existent')
})

it('rejects when loading fails due to DNS not resolved', async () => {
let err
try {
await w.loadURL('https://err.name.not.resolved')
} catch (e) {
err = e
}
expect(err).not.to.be.undefined()
expect(err.code).to.eql('ERR_NAME_NOT_RESOLVED')
expect(err.errno).to.eql(-105)
expect(err.url).to.eql('https://err.name.not.resolved/')
it('rejects if the load is aborted', async () => {
const s = http.createServer((req, res) => { /* never complete the request */ })
await new Promise(resolve => s.listen(0, '127.0.0.1', resolve))
const { port } = s.address()
const p = expect(w.loadURL(`http://127.0.0.1:${port}`)).to.eventually.be.rejectedWith(Error, /ERR_ABORTED/)
// load a different file before the first load completes, causing the
// first load to be aborted.
await w.loadFile(path.join(fixtures, 'pages', 'base-page.html'))
await p
s.close()
})

it("doesn't reject when a subframe fails to load", async () => {
let resp = null
const s = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/html' })
res.write('<iframe src="http://err.name.not.resolved"></iframe>')
resp = res
// don't end the response yet
})
await new Promise(resolve => s.listen(0, '127.0.0.1', resolve))
const { port } = s.address()
const p = new Promise(resolve => {
w.webContents.on('did-fail-load', (event, errorCode, errorDescription, validatedURL, isMainFrame, frameProcessId, frameRoutingId) => {
if (!isMainFrame) {
resolve()
}
})
})
const main = w.loadURL(`http://127.0.0.1:${port}`)
await p
resp.end()
await main
s.close()
})

it("doesn't resolve when a subframe loads", async () => {
let resp = null
const s = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/html' })
res.write('<iframe src="data:text/html,hi"></iframe>')
resp = res
// don't end the response yet
})
await new Promise(resolve => s.listen(0, '127.0.0.1', resolve))
const { port } = s.address()
const p = new Promise(resolve => {
w.webContents.on('did-frame-finish-load', (event, errorCode, errorDescription, validatedURL, isMainFrame, frameProcessId, frameRoutingId) => {
if (!isMainFrame) {
resolve()
}
})
})
const main = w.loadURL(`http://127.0.0.1:${port}`)
await p
resp.destroy() // cause the main request to fail
await expect(main).to.eventually.be.rejected
.and.have.property('errno', -355) // ERR_INCOMPLETE_CHUNKED_ENCODING
s.close()
})
})

Expand Down

0 comments on commit cfdca61

Please sign in to comment.