diff --git a/spec/fixtures/pages/history-replace.html b/spec/fixtures/pages/history-replace.html new file mode 100644 index 000000000000..a10feefd2b6c --- /dev/null +++ b/spec/fixtures/pages/history-replace.html @@ -0,0 +1,10 @@ + + + + + diff --git a/spec/webview-spec.js b/spec/webview-spec.js index 01374baf806a..340c15146950 100644 --- a/spec/webview-spec.js +++ b/spec/webview-spec.js @@ -623,6 +623,53 @@ describe(' tag', function () { }) }) + describe('.goForward()', function () { + it('should work after a replaced history entry', function (done) { + var loadCount = 1 + var listener = function (e) { + if (loadCount === 1) { + assert.equal(e.channel, 'history') + assert.equal(e.args[0], 1) + assert(!webview.canGoBack()) + assert(!webview.canGoForward()) + } else if (loadCount === 2) { + assert.equal(e.channel, 'history') + assert.equal(e.args[0], 2) + assert(!webview.canGoBack()) + assert(webview.canGoForward()) + webview.removeEventListener('ipc-message', listener) + } + } + + var loadListener = function (e) { + if (loadCount === 1) { + webview.src = 'file://' + fixtures + '/pages/base-page.html' + } else if (loadCount === 2) { + assert(webview.canGoBack()) + assert(!webview.canGoForward()) + + webview.goBack() + } else if (loadCount === 3) { + webview.goForward() + } else if (loadCount === 4) { + assert(webview.canGoBack()) + assert(!webview.canGoForward()) + + webview.removeEventListener('did-finish-load', loadListener) + done() + } + + loadCount++ + } + + webview.addEventListener('ipc-message', listener) + webview.addEventListener('did-finish-load', loadListener) + webview.setAttribute('nodeintegration', 'on') + webview.src = 'file://' + fixtures + '/pages/history-replace.html' + document.body.appendChild(webview) + }) + }) + describe('.clearHistory()', function () { it('should clear the navigation history', function (done) { var listener = function (e) {